From bdedb2d21b3f0aceb391a96b8605d35f3a4ade5c Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Thu, 24 Jun 2021 00:14:15 -0400 Subject: sim: callback: extend syscall interface to handle 7 args The Linux syscall interface, depending on architecture, handles up to 7 arguments. Extend the callback API to handle those. --- include/sim/ChangeLog | 5 +++++ include/sim/callback.h | 2 +- sim/bfin/ChangeLog | 4 ++++ sim/bfin/interp.c | 8 ++++---- sim/m32r/ChangeLog | 4 ++++ sim/m32r/traps-linux.c | 4 ++++ 6 files changed, 22 insertions(+), 5 deletions(-) diff --git a/include/sim/ChangeLog b/include/sim/ChangeLog index 3faea58..0897a52 100644 --- a/include/sim/ChangeLog +++ b/include/sim/ChangeLog @@ -1,3 +1,8 @@ +2021-06-24 Mike Frysinger + + * sim/callback.h (struct host_callback_struct): Add arg5, arg6, and + arg7. + 2021-06-23 Mike Frysinger * sim/callback.h (struct host_callback_struct): Add kill. diff --git a/include/sim/callback.h b/include/sim/callback.h index 8d61ebb8..be72f45 100644 --- a/include/sim/callback.h +++ b/include/sim/callback.h @@ -241,7 +241,7 @@ typedef struct cb_syscall { /* The target's value of what system call to perform. */ int func; /* The arguments to the syscall. */ - long arg1, arg2, arg3, arg4; + long arg1, arg2, arg3, arg4, arg5, arg6, arg7; /* The result. */ long result; diff --git a/sim/bfin/ChangeLog b/sim/bfin/ChangeLog index 3f2e73d..f523c55 100644 --- a/sim/bfin/ChangeLog +++ b/sim/bfin/ChangeLog @@ -1,3 +1,7 @@ +2021-06-24 Mike Frysinger + + * interp.c (bfin_syscall): Set sc.arg5 & sc.arg6. + 2021-06-22 Mike Frysinger * configure: Regenerate. diff --git a/sim/bfin/interp.c b/sim/bfin/interp.c index 216cefe..ddd0e7a 100644 --- a/sim/bfin/interp.c +++ b/sim/bfin/interp.c @@ -120,8 +120,8 @@ bfin_syscall (SIM_CPU *cpu) sc.arg2 = args[1] = DREG (1); sc.arg3 = args[2] = DREG (2); sc.arg4 = args[3] = DREG (3); - /*sc.arg5 =*/ args[4] = DREG (4); - /*sc.arg6 =*/ args[5] = DREG (5); + sc.arg5 = args[4] = DREG (4); + sc.arg6 = args[5] = DREG (5); } else { @@ -131,8 +131,8 @@ bfin_syscall (SIM_CPU *cpu) sc.arg2 = args[1] = GET_LONG (DREG (0) + 4); sc.arg3 = args[2] = GET_LONG (DREG (0) + 8); sc.arg4 = args[3] = GET_LONG (DREG (0) + 12); - /*sc.arg5 =*/ args[4] = GET_LONG (DREG (0) + 16); - /*sc.arg6 =*/ args[5] = GET_LONG (DREG (0) + 20); + sc.arg5 = args[4] = GET_LONG (DREG (0) + 16); + sc.arg6 = args[5] = GET_LONG (DREG (0) + 20); } sc.p1 = (PTR) sd; sc.p2 = (PTR) cpu; diff --git a/sim/m32r/ChangeLog b/sim/m32r/ChangeLog index f0b3876..650b19d 100644 --- a/sim/m32r/ChangeLog +++ b/sim/m32r/ChangeLog @@ -1,3 +1,7 @@ +2021-06-24 Mike Frysinger + + * traps-linux.c (m32r_trap): Set s.arg4, s.arg5, s.arg6, and s.arg7. + 2021-06-22 Mike Frysinger * configure: Regenerate. diff --git a/sim/m32r/traps-linux.c b/sim/m32r/traps-linux.c index 8ff0465..c218582 100644 --- a/sim/m32r/traps-linux.c +++ b/sim/m32r/traps-linux.c @@ -252,6 +252,10 @@ m32r_trap (SIM_CPU *current_cpu, PCADDR pc, int num) s.arg1 = arg1; s.arg2 = arg2; s.arg3 = arg3; + s.arg4 = arg4; + s.arg5 = arg5; + s.arg6 = arg6; + s.arg7 = arg7; s.p1 = (PTR) sd; s.p2 = (PTR) current_cpu; -- cgit v1.1