linux-user: Move tswap_siginfo out of target code

Move tswap_siginfo from target code to handle_pending_signal. This will
allow some cleanups and having the siginfo ready to be used in gdbstub.

Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20240309030901.1726211-3-gustavo.romero@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
This commit is contained in:
Gustavo Romero 2024-03-09 03:08:58 +00:00 committed by Alex Bennée
parent b6617e937e
commit 4d6d8a05a0
20 changed files with 31 additions and 27 deletions

View file

@ -409,8 +409,8 @@ static inline void host_to_target_siginfo_noswap(target_siginfo_t *tinfo,
tinfo->si_code = deposit32(si_code, 16, 16, si_type);
}
void tswap_siginfo(target_siginfo_t *tinfo,
const target_siginfo_t *info)
static void tswap_siginfo(target_siginfo_t *tinfo,
const target_siginfo_t *info)
{
int si_type = extract32(info->si_code, 16, 16);
int si_code = sextract32(info->si_code, 0, 16);
@ -1178,6 +1178,12 @@ static void handle_pending_signal(CPUArchState *cpu_env, int sig,
/* dequeue signal */
k->pending = 0;
/*
* Writes out siginfo values byteswapped, accordingly to the target. It also
* cleans the si_type from si_code making it correct for the target.
*/
tswap_siginfo(&k->info, &k->info);
sig = gdb_handlesig(cpu, sig, NULL);
if (!sig) {
sa = NULL;