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 | ... | ... |