Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc: flexible GPR range save/restore macros

Introduce macros that operate on a (start, end) range of GPRs, which
reduces lines of code and need to do mental arithmetic while reading the
code.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Segher Boessenkool <segher@kernel.crashing.org>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20211022061322.2671178-1-npiggin@gmail.com

authored by

Nicholas Piggin and committed by
Michael Ellerman
aebd1fb4 e012c499

+94 -126
+15 -16
arch/powerpc/boot/crt0.S
··· 226 226 #ifdef __powerpc64__ 227 227 228 228 #define PROM_FRAME_SIZE 512 229 - #define SAVE_GPR(n, base) std n,8*(n)(base) 230 - #define REST_GPR(n, base) ld n,8*(n)(base) 231 - #define SAVE_2GPRS(n, base) SAVE_GPR(n, base); SAVE_GPR(n+1, base) 232 - #define SAVE_4GPRS(n, base) SAVE_2GPRS(n, base); SAVE_2GPRS(n+2, base) 233 - #define SAVE_8GPRS(n, base) SAVE_4GPRS(n, base); SAVE_4GPRS(n+4, base) 234 - #define SAVE_10GPRS(n, base) SAVE_8GPRS(n, base); SAVE_2GPRS(n+8, base) 235 - #define REST_2GPRS(n, base) REST_GPR(n, base); REST_GPR(n+1, base) 236 - #define REST_4GPRS(n, base) REST_2GPRS(n, base); REST_2GPRS(n+2, base) 237 - #define REST_8GPRS(n, base) REST_4GPRS(n, base); REST_4GPRS(n+4, base) 238 - #define REST_10GPRS(n, base) REST_8GPRS(n, base); REST_2GPRS(n+8, base) 229 + 230 + .macro OP_REGS op, width, start, end, base, offset 231 + .Lreg=\start 232 + .rept (\end - \start + 1) 233 + \op .Lreg,\offset+\width*.Lreg(\base) 234 + .Lreg=.Lreg+1 235 + .endr 236 + .endm 237 + 238 + #define SAVE_GPRS(start, end, base) OP_REGS std, 8, start, end, base, 0 239 + #define REST_GPRS(start, end, base) OP_REGS ld, 8, start, end, base, 0 240 + #define SAVE_GPR(n, base) SAVE_GPRS(n, n, base) 241 + #define REST_GPR(n, base) REST_GPRS(n, n, base) 239 242 240 243 /* prom handles the jump into and return from firmware. The prom args pointer 241 244 is loaded in r3. */ ··· 249 246 stdu r1,-PROM_FRAME_SIZE(r1) /* Save SP and create stack space */ 250 247 251 248 SAVE_GPR(2, r1) 252 - SAVE_GPR(13, r1) 253 - SAVE_8GPRS(14, r1) 254 - SAVE_10GPRS(22, r1) 249 + SAVE_GPRS(13, 31, r1) 255 250 mfcr r10 256 251 std r10,8*32(r1) 257 252 mfmsr r10 ··· 284 283 285 284 /* Restore other registers */ 286 285 REST_GPR(2, r1) 287 - REST_GPR(13, r1) 288 - REST_8GPRS(14, r1) 289 - REST_10GPRS(22, r1) 286 + REST_GPRS(13, 31, r1) 290 287 ld r10,8*32(r1) 291 288 mtcr r10 292 289
+3 -7
arch/powerpc/crypto/md5-asm.S
··· 38 38 39 39 #define INITIALIZE \ 40 40 PPC_STLU r1,-INT_FRAME_SIZE(r1); \ 41 - SAVE_8GPRS(14, r1); /* push registers onto stack */ \ 42 - SAVE_4GPRS(22, r1); \ 43 - SAVE_GPR(26, r1) 41 + SAVE_GPRS(14, 26, r1) /* push registers onto stack */ 44 42 45 43 #define FINALIZE \ 46 - REST_8GPRS(14, r1); /* pop registers from stack */ \ 47 - REST_4GPRS(22, r1); \ 48 - REST_GPR(26, r1); \ 49 - addi r1,r1,INT_FRAME_SIZE; 44 + REST_GPRS(14, 26, r1); /* pop registers from stack */ \ 45 + addi r1,r1,INT_FRAME_SIZE 50 46 51 47 #ifdef __BIG_ENDIAN__ 52 48 #define LOAD_DATA(reg, off) \
+2 -4
arch/powerpc/crypto/sha1-powerpc-asm.S
··· 125 125 126 126 _GLOBAL(powerpc_sha_transform) 127 127 PPC_STLU r1,-INT_FRAME_SIZE(r1) 128 - SAVE_8GPRS(14, r1) 129 - SAVE_10GPRS(22, r1) 128 + SAVE_GPRS(14, 31, r1) 130 129 131 130 /* Load up A - E */ 132 131 lwz RA(0),0(r3) /* A */ ··· 183 184 stw RD(0),12(r3) 184 185 stw RE(0),16(r3) 185 186 186 - REST_8GPRS(14, r1) 187 - REST_10GPRS(22, r1) 187 + REST_GPRS(14, 31, r1) 188 188 addi r1,r1,INT_FRAME_SIZE 189 189 blr
+27 -16
arch/powerpc/include/asm/ppc_asm.h
··· 17 17 #define SZL (BITS_PER_LONG/8) 18 18 19 19 /* 20 + * This expands to a sequence of operations with reg incrementing from 21 + * start to end inclusive, of this form: 22 + * 23 + * op reg, (offset + (width * reg))(base) 24 + * 25 + * Note that offset is not the offset of the first operation unless start 26 + * is zero (or width is zero). 27 + */ 28 + .macro OP_REGS op, width, start, end, base, offset 29 + .Lreg=\start 30 + .rept (\end - \start + 1) 31 + \op .Lreg, \offset + \width * .Lreg(\base) 32 + .Lreg=.Lreg+1 33 + .endr 34 + .endm 35 + 36 + /* 20 37 * Macros for storing registers into and loading registers from 21 38 * exception frames. 22 39 */ 23 40 #ifdef __powerpc64__ 24 - #define SAVE_GPR(n, base) std n,GPR0+8*(n)(base) 25 - #define REST_GPR(n, base) ld n,GPR0+8*(n)(base) 26 - #define SAVE_NVGPRS(base) SAVE_8GPRS(14, base); SAVE_10GPRS(22, base) 27 - #define REST_NVGPRS(base) REST_8GPRS(14, base); REST_10GPRS(22, base) 41 + #define SAVE_GPRS(start, end, base) OP_REGS std, 8, start, end, base, GPR0 42 + #define REST_GPRS(start, end, base) OP_REGS ld, 8, start, end, base, GPR0 43 + #define SAVE_NVGPRS(base) SAVE_GPRS(14, 31, base) 44 + #define REST_NVGPRS(base) REST_GPRS(14, 31, base) 28 45 #else 29 - #define SAVE_GPR(n, base) stw n,GPR0+4*(n)(base) 30 - #define REST_GPR(n, base) lwz n,GPR0+4*(n)(base) 31 - #define SAVE_NVGPRS(base) SAVE_GPR(13, base); SAVE_8GPRS(14, base); SAVE_10GPRS(22, base) 32 - #define REST_NVGPRS(base) REST_GPR(13, base); REST_8GPRS(14, base); REST_10GPRS(22, base) 46 + #define SAVE_GPRS(start, end, base) OP_REGS stw, 4, start, end, base, GPR0 47 + #define REST_GPRS(start, end, base) OP_REGS lwz, 4, start, end, base, GPR0 48 + #define SAVE_NVGPRS(base) SAVE_GPRS(13, 31, base) 49 + #define REST_NVGPRS(base) REST_GPRS(13, 31, base) 33 50 #endif 34 51 35 - #define SAVE_2GPRS(n, base) SAVE_GPR(n, base); SAVE_GPR(n+1, base) 36 - #define SAVE_4GPRS(n, base) SAVE_2GPRS(n, base); SAVE_2GPRS(n+2, base) 37 - #define SAVE_8GPRS(n, base) SAVE_4GPRS(n, base); SAVE_4GPRS(n+4, base) 38 - #define SAVE_10GPRS(n, base) SAVE_8GPRS(n, base); SAVE_2GPRS(n+8, base) 39 - #define REST_2GPRS(n, base) REST_GPR(n, base); REST_GPR(n+1, base) 40 - #define REST_4GPRS(n, base) REST_2GPRS(n, base); REST_2GPRS(n+2, base) 41 - #define REST_8GPRS(n, base) REST_4GPRS(n, base); REST_4GPRS(n+4, base) 42 - #define REST_10GPRS(n, base) REST_8GPRS(n, base); REST_2GPRS(n+8, base) 52 + #define SAVE_GPR(n, base) SAVE_GPRS(n, n, base) 53 + #define REST_GPR(n, base) REST_GPRS(n, n, base) 43 54 44 55 #define SAVE_FPR(n, base) stfd n,8*TS_FPRWIDTH*(n)(base) 45 56 #define SAVE_2FPRS(n, base) SAVE_FPR(n, base); SAVE_FPR(n+1, base)
+9 -14
arch/powerpc/kernel/entry_32.S
··· 90 90 stw r12,8(r1) 91 91 stw r2,_TRAP(r1) 92 92 SAVE_GPR(0, r1) 93 - SAVE_4GPRS(3, r1) 94 - SAVE_2GPRS(7, r1) 93 + SAVE_GPRS(3, 8, r1) 95 94 addi r2,r10,-THREAD 96 95 SAVE_NVGPRS(r1) 97 96 ··· 138 139 mtxer r5 139 140 lwz r0,GPR0(r1) 140 141 lwz r3,GPR3(r1) 141 - REST_8GPRS(4,r1) 142 + REST_GPRS(4, 11, r1) 142 143 lwz r12,GPR12(r1) 143 144 b 1b 144 145 ··· 231 232 beq 3f /* if not, we've got problems */ 232 233 #endif 233 234 234 - 2: REST_4GPRS(3, r11) 235 + 2: REST_GPRS(3, 6, r11) 235 236 lwz r10,_CCR(r11) 236 - REST_2GPRS(1, r11) 237 + REST_GPRS(1, 2, r11) 237 238 mtcr r10 238 239 lwz r10,_LINK(r11) 239 240 mtlr r10 ··· 297 298 * the reliable stack unwinder later on. Clear it. 298 299 */ 299 300 stw r0,8(r1) 300 - REST_4GPRS(7, r1) 301 - REST_2GPRS(11, r1) 301 + REST_GPRS(7, 12, r1) 302 302 303 303 mtcr r3 304 304 mtlr r4 305 305 mtctr r5 306 306 mtspr SPRN_XER,r6 307 307 308 - REST_4GPRS(2, r1) 309 - REST_GPR(6, r1) 308 + REST_GPRS(2, 6, r1) 310 309 REST_GPR(0, r1) 311 310 REST_GPR(1, r1) 312 311 rfi ··· 338 341 lwz r6,_CCR(r1) 339 342 li r0,0 340 343 341 - REST_4GPRS(7, r1) 342 - REST_2GPRS(11, r1) 344 + REST_GPRS(7, 12, r1) 343 345 344 346 mtlr r3 345 347 mtctr r4 ··· 350 354 */ 351 355 stw r0,8(r1) 352 356 353 - REST_4GPRS(2, r1) 357 + REST_GPRS(2, 5, r1) 354 358 355 359 bne- cr1,1f /* emulate stack store */ 356 360 mtcr r6 ··· 426 430 bne interrupt_return; \ 427 431 lwz r0,GPR0(r1); \ 428 432 lwz r2,GPR2(r1); \ 429 - REST_4GPRS(3, r1); \ 430 - REST_2GPRS(7, r1); \ 433 + REST_GPRS(3, 8, r1); \ 431 434 lwz r10,_XER(r1); \ 432 435 lwz r11,_CTR(r1); \ 433 436 mtspr SPRN_XER,r10; \
+4 -10
arch/powerpc/kernel/exceptions-64e.S
··· 198 198 199 199 stdcx. r0,0,r1 /* to clear the reservation */ 200 200 201 - REST_4GPRS(2, r1) 202 - REST_4GPRS(6, r1) 201 + REST_GPRS(2, 9, r1) 203 202 204 203 ld r10,_CTR(r1) 205 204 ld r11,_XER(r1) ··· 374 375 exc_##n##_common: \ 375 376 std r0,GPR0(r1); /* save r0 in stackframe */ \ 376 377 std r2,GPR2(r1); /* save r2 in stackframe */ \ 377 - SAVE_4GPRS(3, r1); /* save r3 - r6 in stackframe */ \ 378 - SAVE_2GPRS(7, r1); /* save r7, r8 in stackframe */ \ 379 - std r9,GPR9(r1); /* save r9 in stackframe */ \ 378 + SAVE_GPRS(3, 9, r1); /* save r3 - r9 in stackframe */ \ 380 379 std r10,_NIP(r1); /* save SRR0 to stackframe */ \ 381 380 std r11,_MSR(r1); /* save SRR1 to stackframe */ \ 382 381 beq 2f; /* if from kernel mode */ \ ··· 1058 1061 std r11,_ESR(r1) 1059 1062 std r0,GPR0(r1); /* save r0 in stackframe */ \ 1060 1063 std r2,GPR2(r1); /* save r2 in stackframe */ \ 1061 - SAVE_4GPRS(3, r1); /* save r3 - r6 in stackframe */ \ 1062 - SAVE_2GPRS(7, r1); /* save r7, r8 in stackframe */ \ 1063 - std r9,GPR9(r1); /* save r9 in stackframe */ \ 1064 + SAVE_GPRS(3, 9, r1); /* save r3 - r9 in stackframe */ \ 1064 1065 ld r3,PACA_EXGEN+EX_R10(r13);/* get back r10 */ \ 1065 1066 ld r4,PACA_EXGEN+EX_R11(r13);/* get back r11 */ \ 1066 1067 mfspr r5,SPRN_SPRG_GEN_SCRATCH;/* get back r13 XXX can be wrong */ \ ··· 1072 1077 std r10,_LINK(r1) 1073 1078 std r11,_CTR(r1) 1074 1079 std r12,_XER(r1) 1075 - SAVE_10GPRS(14,r1) 1076 - SAVE_8GPRS(24,r1) 1080 + SAVE_GPRS(14, 31, r1) 1077 1081 lhz r12,PACA_TRAP_SAVE(r13) 1078 1082 std r12,_TRAP(r1) 1079 1083 addi r11,r1,INT_FRAME_SIZE
+2 -4
arch/powerpc/kernel/exceptions-64s.S
··· 574 574 ld r10,IAREA+EX_CTR(r13) 575 575 std r10,_CTR(r1) 576 576 std r2,GPR2(r1) /* save r2 in stackframe */ 577 - SAVE_4GPRS(3, r1) /* save r3 - r6 in stackframe */ 578 - SAVE_2GPRS(7, r1) /* save r7, r8 in stackframe */ 577 + SAVE_GPRS(3, 8, r1) /* save r3 - r8 in stackframe */ 579 578 mflr r9 /* Get LR, later save to stack */ 580 579 ld r2,PACATOC(r13) /* get kernel TOC into r2 */ 581 580 std r9,_LINK(r1) ··· 692 693 mtlr r9 693 694 ld r9,_CCR(r1) 694 695 mtcr r9 695 - REST_8GPRS(2, r1) 696 - REST_4GPRS(10, r1) 696 + REST_GPRS(2, 13, r1) 697 697 REST_GPR(0, r1) 698 698 /* restore original r1. */ 699 699 ld r1,GPR1(r1)
+1 -2
arch/powerpc/kernel/head_32.h
··· 115 115 stw r10,8(r1) 116 116 li r10, \trapno 117 117 stw r10,_TRAP(r1) 118 - SAVE_4GPRS(3, r1) 119 - SAVE_2GPRS(7, r1) 118 + SAVE_GPRS(3, 8, r1) 120 119 SAVE_NVGPRS(r1) 121 120 stw r2,GPR2(r1) 122 121 stw r12,_NIP(r1)
+1 -2
arch/powerpc/kernel/head_booke.h
··· 87 87 stw r10, 8(r1) 88 88 li r10, \trapno 89 89 stw r10,_TRAP(r1) 90 - SAVE_4GPRS(3, r1) 91 - SAVE_2GPRS(7, r1) 90 + SAVE_GPRS(3, 8, r1) 92 91 SAVE_NVGPRS(r1) 93 92 stw r2,GPR2(r1) 94 93 stw r12,_NIP(r1)
+13 -21
arch/powerpc/kernel/interrupt_64.S
··· 162 162 * The value of AMR only matters while we're in the kernel. 163 163 */ 164 164 mtcr r2 165 - ld r2,GPR2(r1) 166 - ld r3,GPR3(r1) 167 - ld r13,GPR13(r1) 168 - ld r1,GPR1(r1) 165 + REST_GPRS(2, 3, r1) 166 + REST_GPR(13, r1) 167 + REST_GPR(1, r1) 169 168 RFSCV_TO_USER 170 169 b . /* prevent speculative execution */ 171 170 ··· 182 183 mtctr r3 183 184 mtlr r4 184 185 mtspr SPRN_XER,r5 185 - REST_10GPRS(2, r1) 186 - REST_2GPRS(12, r1) 187 - ld r1,GPR1(r1) 186 + REST_GPRS(2, 13, r1) 187 + REST_GPR(1, r1) 188 188 RFI_TO_USER 189 189 .Lsyscall_vectored_\name\()_rst_end: 190 190 ··· 372 374 * The value of AMR only matters while we're in the kernel. 373 375 */ 374 376 mtcr r2 375 - ld r2,GPR2(r1) 376 - ld r3,GPR3(r1) 377 - ld r13,GPR13(r1) 378 - ld r1,GPR1(r1) 377 + REST_GPRS(2, 3, r1) 378 + REST_GPR(13, r1) 379 + REST_GPR(1, r1) 379 380 RFI_TO_USER 380 381 b . /* prevent speculative execution */ 381 382 ··· 385 388 mtctr r3 386 389 mtspr SPRN_XER,r4 387 390 ld r0,GPR0(r1) 388 - REST_8GPRS(4, r1) 389 - ld r12,GPR12(r1) 391 + REST_GPRS(4, 12, r1) 390 392 b .Lsyscall_restore_regs_cont 391 393 .Lsyscall_rst_end: 392 394 ··· 514 518 ld r6,_XER(r1) 515 519 li r0,0 516 520 517 - REST_4GPRS(7, r1) 518 - REST_2GPRS(11, r1) 519 - REST_GPR(13, r1) 521 + REST_GPRS(7, 13, r1) 520 522 521 523 mtcr r3 522 524 mtlr r4 523 525 mtctr r5 524 526 mtspr SPRN_XER,r6 525 527 526 - REST_4GPRS(2, r1) 527 - REST_GPR(6, r1) 528 + REST_GPRS(2, 6, r1) 528 529 REST_GPR(0, r1) 529 530 REST_GPR(1, r1) 530 531 .ifc \srr,srr ··· 618 625 ld r6,_CCR(r1) 619 626 li r0,0 620 627 621 - REST_4GPRS(7, r1) 622 - REST_2GPRS(11, r1) 628 + REST_GPRS(7, 12, r1) 623 629 624 630 mtlr r3 625 631 mtctr r4 ··· 630 638 */ 631 639 std r0,STACK_FRAME_OVERHEAD-16(r1) 632 640 633 - REST_4GPRS(2, r1) 641 + REST_GPRS(2, 5, r1) 634 642 635 643 bne- cr1,1f /* emulate stack store */ 636 644 mtcr r6
+2 -2
arch/powerpc/kernel/optprobes_head.S
··· 10 10 #include <asm/asm-offsets.h> 11 11 12 12 #ifdef CONFIG_PPC64 13 - #define SAVE_30GPRS(base) SAVE_10GPRS(2,base); SAVE_10GPRS(12,base); SAVE_10GPRS(22,base) 14 - #define REST_30GPRS(base) REST_10GPRS(2,base); REST_10GPRS(12,base); REST_10GPRS(22,base) 13 + #define SAVE_30GPRS(base) SAVE_GPRS(2, 31, base) 14 + #define REST_30GPRS(base) REST_GPRS(2, 31, base) 15 15 #define TEMPLATE_FOR_IMM_LOAD_INSNS nop; nop; nop; nop; nop 16 16 #else 17 17 #define SAVE_30GPRS(base) stmw r2, GPR2(base)
+4 -11
arch/powerpc/kernel/tm.S
··· 226 226 227 227 /* Sync the userland GPRs 2-12, 14-31 to thread->regs: */ 228 228 SAVE_GPR(0, r7) /* user r0 */ 229 - SAVE_GPR(2, r7) /* user r2 */ 230 - SAVE_4GPRS(3, r7) /* user r3-r6 */ 231 - SAVE_GPR(8, r7) /* user r8 */ 232 - SAVE_GPR(9, r7) /* user r9 */ 233 - SAVE_GPR(10, r7) /* user r10 */ 229 + SAVE_GPRS(2, 6, r7) /* user r2-r6 */ 230 + SAVE_GPRS(8, 10, r7) /* user r8-r10 */ 234 231 ld r3, GPR1(r1) /* user r1 */ 235 232 ld r4, GPR7(r1) /* user r7 */ 236 233 ld r5, GPR11(r1) /* user r11 */ ··· 442 445 ld r6, THREAD_TM_PPR(r3) 443 446 444 447 REST_GPR(0, r7) /* GPR0 */ 445 - REST_2GPRS(2, r7) /* GPR2-3 */ 446 - REST_GPR(4, r7) /* GPR4 */ 447 - REST_4GPRS(8, r7) /* GPR8-11 */ 448 - REST_2GPRS(12, r7) /* GPR12-13 */ 449 - 450 - REST_NVGPRS(r7) /* GPR14-31 */ 448 + REST_GPRS(2, 4, r7) /* GPR2-4 */ 449 + REST_GPRS(8, 31, r7) /* GPR8-31 */ 451 450 452 451 /* Load up PPR and DSCR here so we don't run with user values for long */ 453 452 mtspr SPRN_DSCR, r5
+6 -9
arch/powerpc/kernel/trace/ftrace_64_mprofile.S
··· 41 41 42 42 /* Save all gprs to pt_regs */ 43 43 SAVE_GPR(0, r1) 44 - SAVE_10GPRS(2, r1) 44 + SAVE_GPRS(2, 11, r1) 45 45 46 46 /* Ok to continue? */ 47 47 lbz r3, PACA_FTRACE_ENABLED(r13) 48 48 cmpdi r3, 0 49 49 beq ftrace_no_trace 50 50 51 - SAVE_10GPRS(12, r1) 52 - SAVE_10GPRS(22, r1) 51 + SAVE_GPRS(12, 31, r1) 53 52 54 53 /* Save previous stack pointer (r1) */ 55 54 addi r8, r1, SWITCH_FRAME_SIZE ··· 107 108 #endif 108 109 109 110 /* Restore gprs */ 110 - REST_GPR(0,r1) 111 - REST_10GPRS(2,r1) 112 - REST_10GPRS(12,r1) 113 - REST_10GPRS(22,r1) 111 + REST_GPR(0, r1) 112 + REST_GPRS(2, 31, r1) 114 113 115 114 /* Restore possibly modified LR */ 116 115 ld r0, _LINK(r1) ··· 154 157 stdu r1, -SWITCH_FRAME_SIZE(r1) 155 158 156 159 /* Save all gprs to pt_regs */ 157 - SAVE_8GPRS(3, r1) 160 + SAVE_GPRS(3, 10, r1) 158 161 159 162 lbz r3, PACA_FTRACE_ENABLED(r13) 160 163 cmpdi r3, 0 ··· 191 194 mtctr r3 192 195 193 196 /* Restore gprs */ 194 - REST_8GPRS(3,r1) 197 + REST_GPRS(3, 10, r1) 195 198 196 199 /* Restore callee's TOC */ 197 200 ld r2, 24(r1)
+2 -3
arch/powerpc/kvm/book3s_hv_rmhandlers.S
··· 2693 2693 std r0, GPR0(r1) 2694 2694 std r9, GPR1(r1) 2695 2695 std r2, GPR2(r1) 2696 - SAVE_4GPRS(3, r1) 2697 - SAVE_2GPRS(7, r1) 2696 + SAVE_GPRS(3, 8, r1) 2698 2697 srdi r0, r12, 32 2699 2698 clrldi r12, r12, 32 2700 2699 std r0, _CCR(r1) ··· 2716 2717 ld r9, HSTATE_SCRATCH2(r13) 2717 2718 ld r12, HSTATE_SCRATCH0(r13) 2718 2719 GET_SCRATCH0(r0) 2719 - SAVE_4GPRS(9, r1) 2720 + SAVE_GPRS(9, 12, r1) 2720 2721 std r0, GPR13(r1) 2721 2722 SAVE_NVGPRS(r1) 2722 2723 ld r5, HSTATE_CFAR(r13)
+3 -5
arch/powerpc/lib/test_emulate_step_exec_instr.S
··· 37 37 * The stack pointer (GPR1) and the thread pointer (GPR13) are not 38 38 * saved as these should not be modified anyway. 39 39 */ 40 - SAVE_2GPRS(2, r1) 40 + SAVE_GPRS(2, 3, r1) 41 41 SAVE_NVGPRS(r1) 42 42 43 43 /* ··· 75 75 76 76 /* Load GPRs from pt_regs */ 77 77 REST_GPR(0, r31) 78 - REST_10GPRS(2, r31) 79 - REST_GPR(12, r31) 78 + REST_GPRS(2, 12, r31) 80 79 REST_NVGPRS(r31) 81 80 82 81 /* Placeholder for the test instruction */ ··· 98 99 subi r3, r3, GPR0 99 100 SAVE_GPR(0, r3) 100 101 SAVE_GPR(2, r3) 101 - SAVE_8GPRS(4, r3) 102 - SAVE_GPR(12, r3) 102 + SAVE_GPRS(4, 12, r3) 103 103 SAVE_NVGPRS(r3) 104 104 105 105 /* Save resulting LR to pt_regs */