]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - arch/csky/kernel/atomic.S
csky: Set regs->usp to kernel sp, when the exception is from kernel
[linux.git] / arch / csky / kernel / atomic.S
index 5b84f11485aeb8c6794699c54250cf8c54f5a91d..3821ef9b75672d8a5af90839ffa7f95cfdb4da50 100644 (file)
@@ -17,10 +17,12 @@ ENTRY(csky_cmpxchg)
        mfcr    a3, epc
        addi    a3, TRAP0_SIZE
 
-       subi    sp, 8
+       subi    sp, 16
        stw     a3, (sp, 0)
        mfcr    a3, epsr
        stw     a3, (sp, 4)
+       mfcr    a3, usp
+       stw     a3, (sp, 8)
 
        psrset  ee
 #ifdef CONFIG_CPU_HAS_LDSTEX
@@ -47,7 +49,9 @@ ENTRY(csky_cmpxchg)
        mtcr    a3, epc
        ldw     a3, (sp, 4)
        mtcr    a3, epsr
-       addi    sp, 8
+       ldw     a3, (sp, 8)
+       mtcr    a3, usp
+       addi    sp, 16
        KSPTOUSP
        rte
 END(csky_cmpxchg)