git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 1.9.5.x5
[linux-2.6.git]
/
include
/
asm-mips
/
stackframe.h
diff --git
a/include/asm-mips/stackframe.h
b/include/asm-mips/stackframe.h
index
53a441c
..
86283c2
100644
(file)
--- a/
include/asm-mips/stackframe.h
+++ b/
include/asm-mips/stackframe.h
@@
-64,15
+64,21
@@
addu k1, k0
LONG_L k1, %lo(kernelsp)(k1)
#endif
addu k1, k0
LONG_L k1, %lo(kernelsp)(k1)
#endif
-#if
def CONFIG_MIPS64
+#if
defined(CONFIG_MIPS64) && !defined(CONFIG_BUILD_ELF64)
MFC0 k1, CP0_CONTEXT
dsra k1, 23
lui k0, %hi(pgd_current)
MFC0 k1, CP0_CONTEXT
dsra k1, 23
lui k0, %hi(pgd_current)
-
daddiu
k0, %lo(pgd_current)
+
addiu
k0, %lo(pgd_current)
dsubu k1, k0
lui k0, %hi(kernelsp)
daddu k1, k0
LONG_L k1, %lo(kernelsp)(k1)
dsubu k1, k0
lui k0, %hi(kernelsp)
daddu k1, k0
LONG_L k1, %lo(kernelsp)(k1)
+#endif
+#if defined(CONFIG_MIPS64) && defined(CONFIG_BUILD_ELF64)
+ MFC0 k1, CP0_CONTEXT
+ dsrl k1, 23
+ dsll k1, k1, 3
+ LONG_L k1, kernelsp(k1)
#endif
.endm
#endif
.endm
@@
-83,12
+89,17
@@
sll \temp, 2
LONG_S \stackp, kernelsp(\temp)
#endif
sll \temp, 2
LONG_S \stackp, kernelsp(\temp)
#endif
-#if
def CONFIG_MIPS64
+#if
defined(CONFIG_MIPS64) && !defined(CONFIG_BUILD_ELF64)
lw \temp, TI_CPU(gp)
dsll \temp, 3
lui \temp2, %hi(kernelsp)
daddu \temp, \temp2
LONG_S \stackp, %lo(kernelsp)(\temp)
lw \temp, TI_CPU(gp)
dsll \temp, 3
lui \temp2, %hi(kernelsp)
daddu \temp, \temp2
LONG_S \stackp, %lo(kernelsp)(\temp)
+#endif
+#if defined(CONFIG_MIPS64) && defined(CONFIG_BUILD_ELF64)
+ lw \temp, TI_CPU(gp)
+ dsll \temp, 3
+ LONG_S \stackp, kernelsp(\temp)
#endif
.endm
#else
#endif
.endm
#else
@@
-104,6
+115,7
@@
.macro SAVE_SOME
.set push
.macro SAVE_SOME
.set push
+ .set noat
.set reorder
mfc0 k0, CP0_STATUS
sll k0, 3 /* extract cu0 bit */
.set reorder
mfc0 k0, CP0_STATUS
sll k0, 3 /* extract cu0 bit */
@@
-278,16
+290,16
@@
.macro RESTORE_ALL
RESTORE_TEMP
.macro RESTORE_ALL
RESTORE_TEMP
- RESTORE_AT
RESTORE_STATIC
RESTORE_STATIC
+ RESTORE_AT
RESTORE_SOME
RESTORE_SP
.endm
.macro RESTORE_ALL_AND_RET
RESTORE_TEMP
RESTORE_SOME
RESTORE_SP
.endm
.macro RESTORE_ALL_AND_RET
RESTORE_TEMP
- RESTORE_AT
RESTORE_STATIC
RESTORE_STATIC
+ RESTORE_AT
RESTORE_SOME
RESTORE_SP_AND_RET
.endm
RESTORE_SOME
RESTORE_SP_AND_RET
.endm