armv8: Improve readability of register restoration code
authorDaniel Schwyn <daniel.schwyn@inf.ethz.ch>
Thu, 8 Aug 2019 09:24:06 +0000 (11:24 +0200)
committerDaniel Schwyn <daniel.schwyn@inf.ethz.ch>
Fri, 22 Nov 2019 15:31:48 +0000 (16:31 +0100)
Signed-off-by: Daniel Schwyn <daniel.schwyn@inf.ethz.ch>

kernel/arch/armv8/exceptions.S
lib/barrelfish/arch/aarch64/dispatch.c

index fa67a60..f60de13 100644 (file)
@@ -482,11 +482,11 @@ do_resume:
     ldp q14, q15, [x0], #-(2 * 16)
     ldp q12, q13, [x0], #-(2 * 16)
     ldp q10, q11, [x0], #-(2 * 16)
-    ldp q8, q9, [x0], #-(2 * 16)
-    ldp q6, q7, [x0], #-(2 * 16)
-    ldp q4, q5, [x0], #-(2 * 16)
-    ldp q2, q3, [x0], #-(2 * 16)
-    ldp q0, q1, [x0], #-(2 * 8)
+    ldp q8,   q9, [x0], #-(2 * 16)
+    ldp q6,   q7, [x0], #-(2 * 16)
+    ldp q4,   q5, [x0], #-(2 * 16)
+    ldp q2,   q3, [x0], #-(2 * 16)
+    ldp q0,   q1, [x0], #-(2 *  8)
 
     /* Restore SPSR, PC (ELR) and SP, which need temporary registers, before
      * we restore those. */
index 2427e54..46f9ba8 100644 (file)
@@ -71,22 +71,22 @@ disp_resume_context(struct dispatcher_shared_generic *disp, uint64_t *regs)
         "ldp x30, x2, [%[regs], #(30 * 8)]\n"
         "mov sp, x2\n"
         /* Restore everything else. */
-        "ldp q30, q31, [%[regs], #(94 * 8)]\n"
-        "ldp q28, q29, [%[regs], #(90 * 8)]\n"
-        "ldp q26, q27, [%[regs], #(86 * 8)]\n"
-        "ldp q24, q25, [%[regs], #(82 * 8)]\n"
-        "ldp q22, q23, [%[regs], #(78 * 8)]\n"
-        "ldp q20, q21, [%[regs], #(74 * 8)]\n"
-        "ldp q18, q19, [%[regs], #(70 * 8)]\n"
-        "ldp q16, q17, [%[regs], #(66 * 8)]\n"
-        "ldp q14, q15, [%[regs], #(62 * 8)]\n"
-        "ldp q12, q13, [%[regs], #(58 * 8)]\n"
-        "ldp q10, q11, [%[regs], #(54 * 8)]\n"
-        "ldp q8, q9, [%[regs], #(50 * 8)]\n"
-        "ldp q6, q7, [%[regs], #(46 * 8)]\n"
-        "ldp q4, q5, [%[regs], #(42 * 8)]\n"
-        "ldp q2, q3, [%[regs], #(38 * 8)]\n"
-        "ldp q0, q1, [%[regs], #(34 * 8)]\n"
+        "ldp q30, q31, [%[regs], #(34 * 8 + 30 * 16)]\n"
+        "ldp q28, q29, [%[regs], #(34 * 8 + 28 * 16)]\n"
+        "ldp q26, q27, [%[regs], #(34 * 8 + 26 * 16)]\n"
+        "ldp q24, q25, [%[regs], #(34 * 8 + 24 * 16)]\n"
+        "ldp q22, q23, [%[regs], #(34 * 8 + 22 * 16)]\n"
+        "ldp q20, q21, [%[regs], #(34 * 8 + 20 * 16)]\n"
+        "ldp q18, q19, [%[regs], #(34 * 8 + 18 * 16)]\n"
+        "ldp q16, q17, [%[regs], #(34 * 8 + 16 * 16)]\n"
+        "ldp q14, q15, [%[regs], #(34 * 8 + 14 * 16)]\n"
+        "ldp q12, q13, [%[regs], #(34 * 8 + 12 * 16)]\n"
+        "ldp q10, q11, [%[regs], #(34 * 8 + 10 * 16)]\n"
+        "ldp q8,   q9, [%[regs], #(34 * 8 +  8 * 16)]\n"
+        "ldp q6,   q7, [%[regs], #(34 * 8 +  6 * 16)]\n"
+        "ldp q4,   q5, [%[regs], #(34 * 8 +  4 * 16)]\n"
+        "ldp q2,   q3, [%[regs], #(34 * 8 +  2 * 16)]\n"
+        "ldp q0,   q1, [%[regs], #(34 * 8 +  0 * 16)]\n"
         
         "ldp x28, x29, [%[regs], #(28 * 8)]\n"
         "ldp x26, x27, [%[regs], #(26 * 8)]\n"