12874c5fdSThomas Gleixner/* SPDX-License-Identifier: GPL-2.0-or-later */ 2f78541dcSPaul Mackerras/* 3f78541dcSPaul Mackerras * Copyright (C) 1996 Paul Mackerras. 4f78541dcSPaul Mackerras * 5f78541dcSPaul Mackerras * NOTE: assert(sizeof(buf) > 23 * sizeof(long)) 6f78541dcSPaul Mackerras */ 7f78541dcSPaul Mackerras#include <asm/processor.h> 8f78541dcSPaul Mackerras#include <asm/ppc_asm.h> 9f78541dcSPaul Mackerras#include <asm/asm-offsets.h> 1046f52210SStephen Rothwell#include <asm/ptrace.h> 11ec0c464cSChristophe Leroy#include <asm/asm-compat.h> 12f78541dcSPaul Mackerras 13f78541dcSPaul Mackerras/* 14f78541dcSPaul Mackerras * Grab the register values as they are now. 1525985edcSLucas De Marchi * This won't do a particularly good job because we really 16f78541dcSPaul Mackerras * want our caller's caller's registers, and our caller has 17f78541dcSPaul Mackerras * already executed its prologue. 18f78541dcSPaul Mackerras * ToDo: We could reach back into the caller's save area to do 19f78541dcSPaul Mackerras * a better job of representing the caller's state (note that 20f78541dcSPaul Mackerras * that will be different for 32-bit and 64-bit, because of the 21f78541dcSPaul Mackerras * different ABIs, though). 22f78541dcSPaul Mackerras */ 23322b4394SAnton Vorontsov_GLOBAL(ppc_save_regs) 2437195b82SNicholas Piggin /* This allows stack frame accessor macros and offsets to be used */ 25c03be0a3SNicholas Piggin subi r3,r3,STACK_INT_FRAME_REGS 2637195b82SNicholas Piggin PPC_STL r0,GPR0(r3) 27a1f3ae3fSChristophe Leroy#ifdef CONFIG_PPC32 2837195b82SNicholas Piggin stmw r2,GPR2(r3) 29a1f3ae3fSChristophe Leroy#else 3037195b82SNicholas Piggin SAVE_GPRS(2, 31, r3) 31d16a58f8SNicholas Piggin lbz r0,PACAIRQSOFTMASK(r13) 3237195b82SNicholas Piggin PPC_STL r0,SOFTE(r3) 33a1f3ae3fSChristophe Leroy#endif 34b684c09fSAditya Gupta /* store current SP */ 35b684c09fSAditya Gupta PPC_STL r1,GPR1(r3) 36f78541dcSPaul Mackerras /* get caller's LR */ 37b684c09fSAditya Gupta PPC_LL r4,0(r1) 383ddfbcf1SDavid Gibson PPC_LL r0,LRSAVE(r4) 3937195b82SNicholas Piggin PPC_STL r0,_LINK(r3) 40d16a58f8SNicholas Piggin mflr r0 4137195b82SNicholas Piggin PPC_STL r0,_NIP(r3) 42f78541dcSPaul Mackerras mfmsr r0 4337195b82SNicholas Piggin PPC_STL r0,_MSR(r3) 44f78541dcSPaul Mackerras mfctr r0 4537195b82SNicholas Piggin PPC_STL r0,_CTR(r3) 46f78541dcSPaul Mackerras mfxer r0 4737195b82SNicholas Piggin PPC_STL r0,_XER(r3) 48f78541dcSPaul Mackerras mfcr r0 4937195b82SNicholas Piggin PPC_STL r0,_CCR(r3) 50f78541dcSPaul Mackerras li r0,0 5137195b82SNicholas Piggin PPC_STL r0,_TRAP(r3) 5237195b82SNicholas Piggin PPC_STL r0,ORIG_GPR3(r3) 53f78541dcSPaul Mackerras blr 54