linux-user: Implement signals for openrisc

All of the existing code was boilerplate from elsewhere,
and would crash the guest upon the first signal.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Stafford Horne <shorne@gmail.com>

---
v2:
  Add a comment to the new definition of target_pt_regs.
  Install the signal mask into the ucontext.
v3:
  Incorporate feedback from Laurent.
This commit is contained in:
Richard Henderson 2018-05-27 14:02:17 -05:00 committed by Stafford Horne
parent ecbed7280c
commit e8f29049b1
4 changed files with 92 additions and 152 deletions

View file

@ -1,27 +1,15 @@
#ifndef OPENRISC_TARGET_SYSCALL_H
#define OPENRISC_TARGET_SYSCALL_H
/* Note that in linux/arch/openrisc/include/uapi/asm/ptrace.h,
* this is called user_regs_struct. Given that this is what
* is used within struct sigcontext we need this definition.
* However, elfload.c wants this name.
*/
struct target_pt_regs {
union {
struct {
/* Named registers */
uint32_t sr; /* Stored in place of r0 */
target_ulong sp; /* r1 */
};
struct {
/* Old style */
target_ulong offset[2];
target_ulong gprs[30];
};
struct {
/* New style */
target_ulong gpr[32];
};
};
target_ulong pc;
target_ulong orig_gpr11; /* For restarting system calls */
uint32_t syscallno; /* Syscall number (used by strace) */
target_ulong dummy; /* Cheap alignment fix */
abi_ulong gpr[32];
abi_ulong pc;
abi_ulong sr;
};
#define UNAME_MACHINE "openrisc"