mirror of
https://git.freebsd.org/ports.git
synced 2025-05-15 00:31:51 -04:00
handling. (this fixes sysutils/screen) [1] - arm-bsd-user: fix sigreturn frame handling. [2] - Bump PORTREVISION. Submitted by: kan [1], sson [2]
51 lines
2 KiB
Text
51 lines
2 KiB
Text
diff --git a/bsd-user/arm/target_arch_signal.h b/bsd-user/arm/target_arch_signal.h
|
|
index 048bd4f..0b14b0b 100644
|
|
--- a/bsd-user/arm/target_arch_signal.h
|
|
+++ b/bsd-user/arm/target_arch_signal.h
|
|
@@ -47,7 +47,7 @@
|
|
#define TARGET_INSN_SIZE 4 /* arm instruction size */
|
|
|
|
/* Size of the signal trampolin code. See _sigtramp(). */
|
|
-#define TARGET_SZSIGCODE ((abi_ulong)(8 * TARGET_INSN_SIZE))
|
|
+#define TARGET_SZSIGCODE ((abi_ulong)(9 * TARGET_INSN_SIZE))
|
|
|
|
/* compare to arm/include/_limits.h */
|
|
#define TARGET_MINSIGSTKSZ (1024 * 4) /* min sig stack size */
|
|
@@ -248,7 +248,7 @@ static inline abi_long get_ucontext_sigreturn(CPUARMState *regs,
|
|
return -TARGET_EINVAL;
|
|
}
|
|
|
|
- *target_uc = target_sf + offsetof(struct target_sigframe, sf_uc);
|
|
+ *target_uc = target_sf;
|
|
|
|
return 0;
|
|
}
|
|
diff --git a/bsd-user/arm/target_arch_sigtramp.h b/bsd-user/arm/target_arch_sigtramp.h
|
|
index 98dc313..5b7424c 100644
|
|
--- a/bsd-user/arm/target_arch_sigtramp.h
|
|
+++ b/bsd-user/arm/target_arch_sigtramp.h
|
|
@@ -15,16 +15,17 @@ static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
|
|
*/
|
|
uint32_t sigtramp_code[] = {
|
|
/* 1 */ 0xE1A0000D, /* mov r0, sp */
|
|
- /* 2 */ 0xE59F700C, /* ldr r7, [pc, #12] */
|
|
- /* 3 */ 0xEF000000 + sys_sigreturn, /* swi (SYS_sigreturn) */
|
|
- /* 4 */ 0xE59F7008, /* ldr r7, [pc, #8] */
|
|
- /* 5 */ 0xEF000000 + sys_exit, /* swi (SYS_exit)*/
|
|
- /* 6 */ 0xEAFFFFFA, /* b . -16 */
|
|
- /* 7 */ sys_sigreturn,
|
|
- /* 8 */ sys_exit
|
|
+ /* 2 */ 0xE2800000 + sigf_uc, /* add r0, r0, #SIGF_UC */
|
|
+ /* 3 */ 0xE59F700C, /* ldr r7, [pc, #12] */
|
|
+ /* 4 */ 0xEF000000 + sys_sigreturn, /* swi (SYS_sigreturn) */
|
|
+ /* 5 */ 0xE59F7008, /* ldr r7, [pc, #8] */
|
|
+ /* 6 */ 0xEF000000 + sys_exit, /* swi (SYS_exit)*/
|
|
+ /* 7 */ 0xEAFFFFFA, /* b . -16 */
|
|
+ /* 8 */ sys_sigreturn,
|
|
+ /* 9 */ sys_exit
|
|
};
|
|
|
|
- for (i = 0; i < 8; i++) {
|
|
+ for (i = 0; i < 9; i++) {
|
|
tswap32s(&sigtramp_code[i]);
|
|
}
|