]> err.no Git - linux-2.6/blobdiff - include/asm-mips/stackframe.h
Merge branch 'upstream'
[linux-2.6] / include / asm-mips / stackframe.h
index 7b5e64600bc894e980180a33d710fa2e4e9d2fdc..2acf3e844f0001951dcad3ed848eccdde9cba824 100644 (file)
                mfc0    k0, CP0_CONTEXT
                lui     k1, %hi(kernelsp)
                srl     k0, k0, 23
-               sll     k0, k0, 2
                addu    k1, k0
                LONG_L  k1, %lo(kernelsp)(k1)
 #endif
-#if defined(CONFIG_64BIT) && !defined(CONFIG_BUILD_ELF64)
-               MFC0    k1, CP0_CONTEXT
-               dsra    k1, 23
-               lui     k0, %hi(pgd_current)
-               addiu   k0, %lo(pgd_current)
-               dsubu   k1, k0
-               lui     k0, %hi(kernelsp)
-               daddu   k1, k0
-               LONG_L  k1, %lo(kernelsp)(k1)
-#endif
-#if defined(CONFIG_64BIT) && defined(CONFIG_BUILD_ELF64)
+#ifdef CONFIG_64BIT
                MFC0    k1, CP0_CONTEXT
+               lui     k0, %highest(kernelsp)
                dsrl    k1, 23
-               dsll    k1, k1, 3
-               LONG_L  k1, kernelsp(k1)
+               daddiu  k0, %higher(kernelsp)
+               dsll    k0, k0, 16
+               daddiu  k0, %hi(kernelsp)
+               dsll    k0, k0, 16
+               daddu   k1, k1, k0
+               LONG_L  k1, %lo(kernelsp)(k1)
 #endif
                .endm
 
 #ifdef CONFIG_32BIT
                mfc0    \temp, CP0_CONTEXT
                srl     \temp, 23
-               sll     \temp, 2
-               LONG_S  \stackp, kernelsp(\temp)
 #endif
-#if defined(CONFIG_64BIT) && !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)
+#ifdef CONFIG_64BIT
+               MFC0    \temp, CP0_CONTEXT
+               dsrl    \temp, 23
 #endif
-#if defined(CONFIG_64BIT) && defined(CONFIG_BUILD_ELF64)
-               lw      \temp, TI_CPU(gp)
-               dsll    \temp, 3
                LONG_S  \stackp, kernelsp(\temp)
-#endif
                .endm
 #else
                .macro  get_saved_sp    /* Uniprocessor variation */
+#ifdef CONFIG_64BIT
+               lui     k1, %highest(kernelsp)
+               daddiu  k1, %higher(kernelsp)
+               dsll    k1, k1, 16
+               daddiu  k1, %hi(kernelsp)
+               dsll    k1, k1, 16
+#else
                lui     k1, %hi(kernelsp)
+#endif
                LONG_L  k1, %lo(kernelsp)(k1)
                .endm