Commit 198a74de4c61d3486c365f09361c605daab90af5
1 parent
a04e134a
Move get_sp_from_cpustate from cpu.h to target_signal.h.
Enable sigaltstack processing for more architectures. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3253 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
13 changed files
with
39 additions
and
38 deletions
linux-user/alpha/target_signal.h
... | ... | @@ -21,4 +21,9 @@ typedef struct target_sigaltstack { |
21 | 21 | #define TARGET_MINSIGSTKSZ 4096 |
22 | 22 | #define TARGET_SIGSTKSZ 16384 |
23 | 23 | |
24 | +static inline target_ulong get_sp_from_cpustate(CPUAlphaState *state) | |
25 | +{ | |
26 | + return state->ir[IR_SP]; | |
27 | +} | |
28 | + | |
24 | 29 | #endif /* TARGET_SIGNAL_H */ | ... | ... |
linux-user/arm/target_signal.h
... | ... | @@ -21,4 +21,9 @@ typedef struct target_sigaltstack { |
21 | 21 | #define TARGET_MINSIGSTKSZ 2048 |
22 | 22 | #define TARGET_SIGSTKSZ 8192 |
23 | 23 | |
24 | +static inline target_ulong get_sp_from_cpustate(CPUARMState *state) | |
25 | +{ | |
26 | + return state->regs[13]; | |
27 | +} | |
28 | + | |
24 | 29 | #endif /* TARGET_SIGNAL_H */ | ... | ... |
linux-user/i386/target_signal.h
... | ... | @@ -21,4 +21,9 @@ typedef struct target_sigaltstack { |
21 | 21 | #define TARGET_MINSIGSTKSZ 2048 |
22 | 22 | #define TARGET_SIGSTKSZ 8192 |
23 | 23 | |
24 | +static inline target_ulong get_sp_from_cpustate(CPUX86State *state) | |
25 | +{ | |
26 | + return state->regs[R_ESP]; | |
27 | +} | |
28 | + | |
24 | 29 | #endif /* TARGET_SIGNAL_H */ | ... | ... |
linux-user/mips/target_signal.h
... | ... | @@ -21,4 +21,9 @@ typedef struct target_sigaltstack { |
21 | 21 | #define TARGET_MINSIGSTKSZ 2048 |
22 | 22 | #define TARGET_SIGSTKSZ 8192 |
23 | 23 | |
24 | +static inline target_ulong get_sp_from_cpustate(CPUMIPSState *state) | |
25 | +{ | |
26 | + return state->gpr[29][state->current_tc]; | |
27 | +} | |
28 | + | |
24 | 29 | #endif /* TARGET_SIGNAL_H */ | ... | ... |
linux-user/ppc/target_signal.h
linux-user/sparc/target_signal.h
... | ... | @@ -21,4 +21,16 @@ typedef struct target_sigaltstack { |
21 | 21 | #define TARGET_MINSIGSTKSZ 4096 |
22 | 22 | #define TARGET_SIGSTKSZ 16384 |
23 | 23 | |
24 | +#ifndef UREG_I6 | |
25 | +#define UREG_I6 6 | |
26 | +#endif | |
27 | +#ifndef UREG_FP | |
28 | +#define UREG_FP UREG_I6 | |
29 | +#endif | |
30 | + | |
31 | +static inline target_ulong get_sp_from_cpustate(CPUSPARCState *state) | |
32 | +{ | |
33 | + return state->regwptr[UREG_FP]; | |
34 | +} | |
35 | + | |
24 | 36 | #endif /* TARGET_SIGNAL_H */ | ... | ... |
linux-user/syscall.c
... | ... | @@ -4318,7 +4318,8 @@ target_long do_syscall(void *cpu_env, int num, target_long arg1, |
4318 | 4318 | case TARGET_NR_capset: |
4319 | 4319 | goto unimplemented; |
4320 | 4320 | case TARGET_NR_sigaltstack: |
4321 | -#if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SPARC) | |
4321 | +#if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_MIPS) || \ | |
4322 | + defined(TARGET_SPARC) || defined(TARGET_PPC) || defined(TARGET_ALPHA) | |
4322 | 4323 | ret = do_sigaltstack((struct target_sigaltstack *)arg1, |
4323 | 4324 | (struct target_sigaltstack *)arg2, |
4324 | 4325 | get_sp_from_cpustate((CPUState *)cpu_env)); | ... | ... |
target-alpha/cpu.h
... | ... | @@ -397,9 +397,4 @@ void cpu_loop_exit (void); |
397 | 397 | void pal_init (CPUState *env); |
398 | 398 | void call_pal (CPUState *env, int palcode); |
399 | 399 | |
400 | -static inline target_ulong get_sp_from_cpustate(CPUAlphaState *state) | |
401 | -{ | |
402 | - return state->ir[IR_SP]; | |
403 | -} | |
404 | - | |
405 | 400 | #endif /* !defined (__CPU_ALPHA_H__) */ | ... | ... |
target-arm/cpu.h
... | ... | @@ -300,11 +300,6 @@ void cpu_arm_set_cp_io(CPUARMState *env, int cpnum, |
300 | 300 | #define cpu_gen_code cpu_arm_gen_code |
301 | 301 | #define cpu_signal_handler cpu_arm_signal_handler |
302 | 302 | |
303 | -static inline target_ulong get_sp_from_cpustate(CPUARMState *state) | |
304 | -{ | |
305 | - return state->regs[13]; | |
306 | -} | |
307 | - | |
308 | 303 | #include "cpu-all.h" |
309 | 304 | |
310 | 305 | #endif | ... | ... |
target-i386/cpu.h
... | ... | @@ -688,11 +688,6 @@ static inline int cpu_get_time_fast(void) |
688 | 688 | #define cpu_gen_code cpu_x86_gen_code |
689 | 689 | #define cpu_signal_handler cpu_x86_signal_handler |
690 | 690 | |
691 | -static inline target_ulong get_sp_from_cpustate(CPUX86State *state) | |
692 | -{ | |
693 | - return state->regs[R_ESP]; | |
694 | -} | |
695 | - | |
696 | 691 | #include "cpu-all.h" |
697 | 692 | |
698 | 693 | #include "svm.h" | ... | ... |
target-mips/cpu.h
... | ... | @@ -548,9 +548,4 @@ CPUMIPSState *cpu_mips_init(void); |
548 | 548 | uint32_t cpu_mips_get_clock (void); |
549 | 549 | int cpu_mips_signal_handler(int host_signum, void *pinfo, void *puc); |
550 | 550 | |
551 | -static inline target_ulong get_sp_from_cpustate(CPUMIPSState *state) | |
552 | -{ | |
553 | - return state->gpr[29][state->current_tc]; | |
554 | -} | |
555 | - | |
556 | 551 | #endif /* !defined (__MIPS_CPU_H__) */ | ... | ... |
target-ppc/cpu.h
... | ... | @@ -1146,9 +1146,4 @@ enum { |
1146 | 1146 | |
1147 | 1147 | /*****************************************************************************/ |
1148 | 1148 | |
1149 | -static inline target_ulong get_sp_from_cpustate(CPUPPCState *state) | |
1150 | -{ | |
1151 | - return state->gpr[1]; | |
1152 | -} | |
1153 | - | |
1154 | 1149 | #endif /* !defined (__CPU_PPC_H__) */ | ... | ... |
target-sparc/cpu.h
... | ... | @@ -316,18 +316,6 @@ void cpu_check_irqs(CPUSPARCState *env); |
316 | 316 | #define cpu_gen_code cpu_sparc_gen_code |
317 | 317 | #define cpu_signal_handler cpu_sparc_signal_handler |
318 | 318 | |
319 | -#ifndef UREG_I6 | |
320 | -#define UREG_I6 6 | |
321 | -#endif | |
322 | -#ifndef UREG_FP | |
323 | -#define UREG_FP UREG_I6 | |
324 | -#endif | |
325 | - | |
326 | -static inline target_ulong get_sp_from_cpustate(CPUSPARCState *state) | |
327 | -{ | |
328 | - return state->regwptr[UREG_FP]; | |
329 | -} | |
330 | - | |
331 | 319 | #include "cpu-all.h" |
332 | 320 | |
333 | 321 | #endif | ... | ... |