diff --git a/sys/arch/aarch64/include/mcontext.h b/sys/arch/aarch64/include/mcontext.h index 2af2b1e5d7fc..dbead45ed432 100644 --- a/sys/arch/aarch64/include/mcontext.h +++ b/sys/arch/aarch64/include/mcontext.h @@ -106,6 +106,7 @@ typedef struct { #define _UC_TLSBASE 0x00080000 /* see */ #define _UC_MACHINE_SP(uc) ((uc)->uc_mcontext.__gregs[_REG_SP]) +#define _UC_MACHINE_BP(uc) ((uc)->uc_mcontext.__gregs[_REG_X29]) #define _UC_MACHINE_PC(uc) ((uc)->uc_mcontext.__gregs[_REG_PC]) #define _UC_MACHINE_INTRV(uc) ((uc)->uc_mcontext.__gregs[_REG_X0]) diff --git a/sys/arch/alpha/include/mcontext.h b/sys/arch/alpha/include/mcontext.h index 13ca3fd2cd7c..fd2d0ae1c051 100644 --- a/sys/arch/alpha/include/mcontext.h +++ b/sys/arch/alpha/include/mcontext.h @@ -96,6 +96,7 @@ typedef struct { #define _UC_TLSBASE 0x20 /* valid process-unique value in _REG_UNIQUE */ #define _UC_MACHINE_SP(uc) ((uc)->uc_mcontext.__gregs[_REG_SP]) +#define _UC_MACHINE_BP(uc) ((uc)->uc_mcontext.__gregs[_REG_S6]) #define _UC_MACHINE_PC(uc) ((uc)->uc_mcontext.__gregs[_REG_PC]) #define _UC_MACHINE_INTRV(uc) ((uc)->uc_mcontext.__gregs[_REG_V0]) diff --git a/sys/arch/amd64/include/mcontext.h b/sys/arch/amd64/include/mcontext.h index bed3a79e965f..42cff72bedad 100644 --- a/sys/arch/amd64/include/mcontext.h +++ b/sys/arch/amd64/include/mcontext.h @@ -68,6 +68,7 @@ typedef struct { /* AMD64 ABI 128-bytes "red zone". */ #define _UC_MACHINE_SP(uc) ((uc)->uc_mcontext.__gregs[_REG_RSP] - 128) +#define _UC_MACHINE_BP(uc) ((uc)->uc_mcontext.__gregs[_REG_RBP]) #define _UC_MACHINE_PC(uc) ((uc)->uc_mcontext.__gregs[_REG_RIP]) #define _UC_MACHINE_INTRV(uc) ((uc)->uc_mcontext.__gregs[_REG_RAX]) diff --git a/sys/arch/arm/include/mcontext.h b/sys/arch/arm/include/mcontext.h index d0d0cc1cd3b8..9b14ee28ee15 100644 --- a/sys/arch/arm/include/mcontext.h +++ b/sys/arch/arm/include/mcontext.h @@ -110,6 +110,7 @@ typedef struct { #define _UC_MACHINE_PAD 1 /* Padding appended to ucontext_t */ #define _UC_MACHINE_SP(uc) ((uc)->uc_mcontext.__gregs[_REG_SP]) +#define _UC_MACHINE_BP(uc) ((uc)->uc_mcontext.__gregs[_REG_R11]) #define _UC_MACHINE_PC(uc) ((uc)->uc_mcontext.__gregs[_REG_PC]) #define _UC_MACHINE_INTRV(uc) ((uc)->uc_mcontext.__gregs[_REG_R0]) diff --git a/sys/arch/hppa/include/mcontext.h b/sys/arch/hppa/include/mcontext.h index a0618cebce48..c09dbf3598c5 100644 --- a/sys/arch/hppa/include/mcontext.h +++ b/sys/arch/hppa/include/mcontext.h @@ -50,6 +50,7 @@ typedef struct { } mcontext_t; #define _UC_MACHINE_SP(uc) ((uc)->uc_mcontext.__gregs[_REG_SP]) +#define _UC_MACHINE_BP(uc) ((uc)->uc_mcontext.__gregs[3]) #define _UC_MACHINE_PC(uc) ((uc)->uc_mcontext.__gregs[_REG_PCOQH]) #define _UC_MACHINE_SET_PC(uc, pc) \ do { \ diff --git a/sys/arch/i386/include/mcontext.h b/sys/arch/i386/include/mcontext.h index dcaf90a60166..671b7635d355 100644 --- a/sys/arch/i386/include/mcontext.h +++ b/sys/arch/i386/include/mcontext.h @@ -105,6 +105,7 @@ typedef struct { #ifndef _UC_MACHINE_SP #define _UC_MACHINE_SP(uc) ((uc)->uc_mcontext.__gregs[_REG_UESP]) #endif +#define _UC_MACHINE_BP(uc) ((uc)->uc_mcontext.__gregs[_REG_EBP]) #define _UC_MACHINE_PC(uc) ((uc)->uc_mcontext.__gregs[_REG_EIP]) #define _UC_MACHINE_INTRV(uc) ((uc)->uc_mcontext.__gregs[_REG_EAX]) diff --git a/sys/arch/ia64/include/mcontext.h b/sys/arch/ia64/include/mcontext.h index b9523d882e1a..2c609ecbe3f3 100644 --- a/sys/arch/ia64/include/mcontext.h +++ b/sys/arch/ia64/include/mcontext.h @@ -112,6 +112,7 @@ typedef struct __mcontext { } mcontext_t; #define _UC_MACHINE_SP(uc) ((uc)->uc_mcontext.mc_special.sp) +#define _UC_MACHINE_BP(uc) ((uc)->uc_mcontext.__gregs[79]) /* XXX or assembly "mov Rn = ip" or ...? */ #define _UC_MACHINE_PC(uc) ((uc)->uc_mcontext.mc_special.iip) diff --git a/sys/arch/m68k/include/mcontext.h b/sys/arch/m68k/include/mcontext.h index 65e3adaa7eaf..ad0c2fcd902f 100644 --- a/sys/arch/m68k/include/mcontext.h +++ b/sys/arch/m68k/include/mcontext.h @@ -102,6 +102,7 @@ typedef struct { #define _UC_TLSBASE 0x00080000 #define _UC_MACHINE_SP(uc) ((uc)->uc_mcontext.__gregs[_REG_A7]) +#define _UC_MACHINE_BP(uc) ((uc)->uc_mcontext.__gregs[_REG_A6]) #define _UC_MACHINE_PC(uc) ((uc)->uc_mcontext.__gregs[_REG_PC]) #define _UC_MACHINE_INTRV(uc) ((uc)->uc_mcontext.__gregs[_REG_D0]) diff --git a/sys/arch/mips/include/mcontext.h b/sys/arch/mips/include/mcontext.h index 96033d7cba24..233260e08bfa 100644 --- a/sys/arch/mips/include/mcontext.h +++ b/sys/arch/mips/include/mcontext.h @@ -159,6 +159,7 @@ typedef struct { #define _UC_TLSBASE 0x00040000 #define _UC_MACHINE_SP(uc) ((uc)->uc_mcontext.__gregs[_REG_SP]) +#define _UC_MACHINE_BP(uc) ((uc)->uc_mcontext.__gregs[_REG_S8]) #define _UC_MACHINE_PC(uc) ((uc)->uc_mcontext.__gregs[_REG_EPC]) #define _UC_MACHINE_INTRV(uc) ((uc)->uc_mcontext.__gregs[_REG_V0]) diff --git a/sys/arch/or1k/include/mcontext.h b/sys/arch/or1k/include/mcontext.h index 7cee7ee98af3..6bbd06f6d850 100644 --- a/sys/arch/or1k/include/mcontext.h +++ b/sys/arch/or1k/include/mcontext.h @@ -88,6 +88,7 @@ typedef struct { #define _UC_TLSBASE 0x00080000 /* see */ #define _UC_MACHINE_SP(uc) ((uc)->uc_mcontext.__gregs[_REG_SP]) +#define _UC_MACHINE_BP(uc) ((uc)->uc_mcontext.__gregs[_REG_R2]) #define _UC_MACHINE_PC(uc) ((uc)->uc_mcontext.__gregs[_REG_PC]) #define _UC_MACHINE_INTRV(uc) ((uc)->uc_mcontext.__gregs[_REG_RV]) diff --git a/sys/arch/powerpc/include/mcontext.h b/sys/arch/powerpc/include/mcontext.h index 5057afc06ce3..f2d990e5802f 100644 --- a/sys/arch/powerpc/include/mcontext.h +++ b/sys/arch/powerpc/include/mcontext.h @@ -133,6 +133,7 @@ typedef struct { #define _UC_TLSBASE 0x00080000 /* thread context valid in R2 */ #define _UC_MACHINE_SP(uc) ((uc)->uc_mcontext.__gregs[_REG_R1]) +#define _UC_MACHINE_BP(uc) ((uc)->uc_mcontext.__gregs[_REG_R31]) #define _UC_MACHINE_PC(uc) ((uc)->uc_mcontext.__gregs[_REG_PC]) #define _UC_MACHINE_INTRV(uc) ((uc)->uc_mcontext.__gregs[_REG_R3]) diff --git a/sys/arch/riscv/include/mcontext.h b/sys/arch/riscv/include/mcontext.h index f72301fd47e8..6307aff00864 100644 --- a/sys/arch/riscv/include/mcontext.h +++ b/sys/arch/riscv/include/mcontext.h @@ -118,6 +118,7 @@ typedef struct { #define _UC_TLSBASE 0x00080000 /* see */ #define _UC_MACHINE_SP(uc) ((uc)->uc_mcontext.__gregs[_REG_SP]) +#define _UC_MACHINE_BP(uc) ((uc)->uc_mcontext.__gregs[_REG_S0]) #define _UC_MACHINE_PC(uc) ((uc)->uc_mcontext.__gregs[_REG_PC]) #define _UC_MACHINE_INTRV(uc) ((uc)->uc_mcontext.__gregs[_REG_RV]) diff --git a/sys/arch/sh3/include/mcontext.h b/sys/arch/sh3/include/mcontext.h index b0220b27dfbb..1324ff875110 100644 --- a/sys/arch/sh3/include/mcontext.h +++ b/sys/arch/sh3/include/mcontext.h @@ -82,6 +82,7 @@ typedef struct { } mcontext_t; #define _UC_MACHINE_SP(uc) ((uc)->uc_mcontext.__gregs[_REG_SP]) +#define _UC_MACHINE_BP(uc) ((uc)->uc_mcontext.__gregs[_REG_R14]) #define _UC_MACHINE_PC(uc) ((uc)->uc_mcontext.__gregs[_REG_PC]) #define _UC_MACHINE_INTRV(uc) ((uc)->uc_mcontext.__gregs[_REG_R0]) diff --git a/sys/arch/sparc/include/mcontext.h b/sys/arch/sparc/include/mcontext.h index 25cb07eae0f9..571a2cf161a9 100644 --- a/sys/arch/sparc/include/mcontext.h +++ b/sys/arch/sparc/include/mcontext.h @@ -146,11 +146,14 @@ typedef struct { #ifdef __arch64__ #define _UC_MACHINE_PAD 8 /* Padding appended to ucontext_t */ #define _UC_MACHINE_SP(uc) (((uc)->uc_mcontext.__gregs[_REG_O6])+0x7ff) +#define _UC_MACHINE_BP(uc) (((uc)->uc_mcontext.__gregs[_REG_O6])+0x80e) #define _UC_MACHINE32_PAD 43 /* compat_netbsd32 variant */ #define _UC_MACHINE32_SP(uc) ((uc)->uc_mcontext.__gregs[_REG_O6]) +#define _UC_MACHINE32_BP(uc) (((uc)->uc_mcontext.__gregs[_REG_O6])+0xf) #else #define _UC_MACHINE_PAD 43 /* Padding appended to ucontext_t */ #define _UC_MACHINE_SP(uc) ((uc)->uc_mcontext.__gregs[_REG_O6]) +#define _UC_MACHINE_BP(uc) (((uc)->uc_mcontext.__gregs[_REG_O6])+0xf) #endif #define _UC_MACHINE_PC(uc) ((uc)->uc_mcontext.__gregs[_REG_PC]) #define _UC_MACHINE_INTRV(uc) ((uc)->uc_mcontext.__gregs[_REG_O0]) diff --git a/sys/arch/vax/include/mcontext.h b/sys/arch/vax/include/mcontext.h index 5986841de7e7..87ed34e7989d 100644 --- a/sys/arch/vax/include/mcontext.h +++ b/sys/arch/vax/include/mcontext.h @@ -68,6 +68,7 @@ typedef struct { #define _UC_TLSBASE 0x00080000 #define _UC_MACHINE_SP(uc) ((uc)->uc_mcontext.__gregs[_REG_SP]) +#define _UC_MACHINE_BP(uc) ((uc)->uc_mcontext.__gregs[_REG_FP]) #define _UC_MACHINE_PC(uc) ((uc)->uc_mcontext.__gregs[_REG_PC]) #define _UC_MACHINE_INTRV(uc) ((uc)->uc_mcontext.__gregs[_REG_R0])