ARMv8: properly restore cpudriver stack pointer on resume
authorReto Achermann <reto.achermann@inf.ethz.ch>
Thu, 16 Mar 2017 12:31:41 +0000 (13:31 +0100)
committerReto Achermann <reto.achermann@inf.ethz.ch>
Thu, 16 Mar 2017 12:31:41 +0000 (13:31 +0100)
Signed-off-by: Reto Achermann <reto.achermann@inf.ethz.ch>

kernel/arch/armv8/exceptions.S

index b26362b..2416aea 100644 (file)
@@ -435,8 +435,9 @@ do_resume:
     add x0, x0, #(33 * 8)
 
     /* Reset the kernel stack pointer. */
-    adrp x1, kernel_stack
-    add sp, x1, #0
+    ldr x1, =kernel_stack   // load the address of the kernel sack
+    ldr x2,  [x1]           // read the entry of the kernel stack
+    mov sp, x2
 
     /* Flush the TLB - XXX kill this with fire. */
     dsb sy