On Wed, Apr 04, 2018 at 02:30:26PM +0200, Laurent Vivier wrote: > Hi, Hi Laurent,
> > cleaning up linux-user signal handling functions, I found something weird. > > In get_sp_from_cpustate(), SP is regs[14]: > > linux-user/microblaze/target_signal.h > > 24) static inline abi_ulong get_sp_from_cpustate(CPUMBState *state) > 25) { > 26) return state->regs[14]; > 27) } > > But in get_sigframe(), SP is regs[1]; > > 4128) static abi_ulong get_sigframe(struct target_sigaction *ka, > 4129) CPUMBState *env, int frame_size) > 4130) { > 4131) abi_ulong sp = env->regs[1]; > 4132) > 4133) if ((ka->sa_flags & TARGET_SA_ONSTACK) != 0 && > !on_sig_stack(sp)) { > 4134) sp = target_sigaltstack_used.ss_sp + > target_sigaltstack_used.ss > 4135) } > 4136) > 4137) return ((sp - frame_size) & -8UL); > 4138) } > > Is this correct? get_sp_from_cpustate() is wrong, it should be regs[1]... Cheers, Edgar