diff -Nau cvs-/include/asm-mips/stackframe.h ip28/include/asm-mips/stackframe.h --- cvs-/include/asm-mips/stackframe.h Tue Apr 19 21:26:28 2005 +++ ip28/include/asm-mips/stackframe.h Tue Apr 26 23:48:41 2005 @@ -107,12 +107,37 @@ .endm #else .macro get_saved_sp /* Uniprocessor variation */ +# ifdef CONFIG_XKPHYS_KERNEL + /* + * Beware! + * 1) This is called, before $at is saved, so the + * assembler MUST NOT use $at. + * 2) k1 and any implicitely used k0 are not saved. Thus + * this MUST NOT be called with interrupts enabled. + * (applies as well to the ckseg version below) + */ + .set push + .set noat + dla k1, kernelsp + LONG_L k1, (k1) + .set pop +# else lui k1, %hi(kernelsp) LONG_L k1, %lo(kernelsp)(k1) +# endif .endm .macro set_saved_sp stackp temp temp2 + /* + * Beware! This is called with interrupts enabled, so + * make sure the assembler generated code-sequence only + * uses registers ($at), that will be saved/restored + * (especially true for elf64-.. format). + */ + /* .set push */ + /* .set at */ LONG_S \stackp, kernelsp + /* .set pop */ .endm #endif @@ -349,1 +374,5 @@ #endif /* _ASM_STACKFRAME_H */ +/* + * Revision 1.37, Tue Apr 19 21:26:28 2005 + * May 2004 pf - xkphys kernel addresses + */