mirror of https://gitee.com/openkylin/linux.git
arm64: expand register mapping between AArch32 and AArch64
The general purpose registers in AArch32 are mapped in an architecturally defined manner into the AArch64 registers. It allows the AArch32 registers of an application or a virtual machine to be inspected by the OS or an hypervisor. Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
parent
1f75ff0a3d
commit
88483ec647
|
@ -44,10 +44,27 @@
|
|||
|
||||
/* sizeof(struct user) for AArch32 */
|
||||
#define COMPAT_USER_SZ 296
|
||||
/* AArch32 uses x13 as the stack pointer... */
|
||||
|
||||
/* Architecturally defined mapping between AArch32 and AArch64 registers */
|
||||
#define compat_usr(x) regs[(x)]
|
||||
#define compat_sp regs[13]
|
||||
/* ... and x14 as the link register. */
|
||||
#define compat_lr regs[14]
|
||||
#define compat_sp_hyp regs[15]
|
||||
#define compat_sp_irq regs[16]
|
||||
#define compat_lr_irq regs[17]
|
||||
#define compat_sp_svc regs[18]
|
||||
#define compat_lr_svc regs[19]
|
||||
#define compat_sp_abt regs[20]
|
||||
#define compat_lr_abt regs[21]
|
||||
#define compat_sp_und regs[22]
|
||||
#define compat_lr_und regs[23]
|
||||
#define compat_r8_fiq regs[24]
|
||||
#define compat_r9_fiq regs[25]
|
||||
#define compat_r10_fiq regs[26]
|
||||
#define compat_r11_fiq regs[27]
|
||||
#define compat_r12_fiq regs[28]
|
||||
#define compat_sp_fiq regs[29]
|
||||
#define compat_lr_fiq regs[30]
|
||||
|
||||
/*
|
||||
* This struct defines the way the registers are stored on the stack during an
|
||||
|
|
Loading…
Reference in New Issue