Merge with ../linux-2.6-smp
authorRussell King <rmk@dyn-67.arm.linux.org.uk>
Sat, 18 Jun 2005 08:06:59 +0000 (09:06 +0100)
committerRussell King <rmk@dyn-67.arm.linux.org.uk>
Sat, 18 Jun 2005 08:06:59 +0000 (09:06 +0100)
1  2 
arch/arm/kernel/entry-armv.S

index e14278d59882367dc579f1dabeb5f2d191772ee2,78cf84cdc2ae84de914a17f078402fc91b18ceeb..39a6c1b0b9a32db8f578bab2d9f4156acc5d4054
@@@ -262,14 -297,18 +297,18 @@@ __pabt_svc
  /*
   * User mode handlers
   */
-       .macro  usr_entry, sym
-       sub     sp, sp, #S_FRAME_SIZE           @ Allocate frame size in one go
-       stmia   sp, {r0 - r12}                  @ save r0 - r12
-       ldr     r7, .LC\sym
-       add     r5, sp, #S_PC
-       ldmia   r7, {r2 - r4}                   @ Get USR pc, cpsr
+       .macro  usr_entry
+       sub     sp, sp, #S_FRAME_SIZE
+       stmib   sp, {r1 - r12}
+       ldmia   r0, {r1 - r3}
+       add     r0, sp, #S_PC           @ here for interlock avoidance
+       mov     r4, #-1                 @  ""  ""     ""        ""
+       str     r1, [sp]                @ save the "real" r0 copied
+                                       @ from the exception stack
  
 -#if __LINUX_ARM_ARCH__ < 6
 +#if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG)
        @ make sure our user space atomic helper is aborted
        cmp     r2, #VIRT_OFFSET
        bichs   r3, r3, #PSR_Z_BIT