aboutsummaryrefslogtreecommitdiff
path: root/sim
diff options
context:
space:
mode:
Diffstat (limited to 'sim')
-rw-r--r--sim/mn10300/ChangeLog11
-rw-r--r--sim/mn10300/interp.c55
-rw-r--r--sim/mn10300/mn10300_sim.h12
-rw-r--r--sim/mn10300/op_utils.c3
4 files changed, 19 insertions, 62 deletions
diff --git a/sim/mn10300/ChangeLog b/sim/mn10300/ChangeLog
index 7cc0f32..d12997b 100644
--- a/sim/mn10300/ChangeLog
+++ b/sim/mn10300/ChangeLog
@@ -1,5 +1,16 @@
2015-06-11 Mike Frysinger <vapier@gentoo.org>
+ * interp.c (get_byte, get_half, get_word, put_byte, put_half,
+ put_word): Delete.
+ (sim_fetch_register): Inline put_word call.
+ (sim_store_register): Inline get_word call.
+ * mn10300_sim.h (struct _state): Delete mem member.
+ (OP, Simops, get_byte, get_half, get_word, put_byte, put_half,
+ put_word, map): Delete.
+ * op_utils.c (MEMPTR): Delete.
+
+2015-06-11 Mike Frysinger <vapier@gentoo.org>
+
* interp.c (round_64, fpu_status_ok): Add static.
2015-06-11 Mike Frysinger <vapier@gentoo.org>
diff --git a/sim/mn10300/interp.c b/sim/mn10300/interp.c
index e24cbc5..14344fc 100644
--- a/sim/mn10300/interp.c
+++ b/sim/mn10300/interp.c
@@ -348,58 +348,18 @@ sim_create_inferior (SIM_DESC sd,
/* FIXME These would more efficient to use than load_mem/store_mem,
but need to be changed to use the memory map. */
-uint8
-get_byte (uint8 *x)
-{
- return *x;
-}
-
-uint16
-get_half (uint8 *x)
-{
- uint8 *a = x;
- return (a[1] << 8) + (a[0]);
-}
-
-uint32
-get_word (uint8 *x)
-{
- uint8 *a = x;
- return (a[3]<<24) + (a[2]<<16) + (a[1]<<8) + (a[0]);
-}
-
-void
-put_byte (uint8 *addr, uint8 data)
-{
- uint8 *a = addr;
- a[0] = data;
-}
-
-void
-put_half (uint8 *addr, uint16 data)
-{
- uint8 *a = addr;
- a[0] = data & 0xff;
- a[1] = (data >> 8) & 0xff;
-}
-
-void
-put_word (uint8 *addr, uint32 data)
-{
- uint8 *a = addr;
- a[0] = data & 0xff;
- a[1] = (data >> 8) & 0xff;
- a[2] = (data >> 16) & 0xff;
- a[3] = (data >> 24) & 0xff;
-}
-
int
sim_fetch_register (SIM_DESC sd,
int rn,
unsigned char *memory,
int length)
{
- put_word (memory, State.regs[rn]);
+ reg_t reg = State.regs[rn];
+ uint8 *a = memory;
+ a[0] = reg;
+ a[1] = reg >> 8;
+ a[2] = reg >> 16;
+ a[3] = reg >> 24;
return length;
}
@@ -409,7 +369,8 @@ sim_store_register (SIM_DESC sd,
unsigned char *memory,
int length)
{
- State.regs[rn] = get_word (memory);
+ uint8 *a = memory;
+ State.regs[rn] = (a[3] << 24) + (a[2] << 16) + (a[1] << 8) + a[0];
return length;
}
diff --git a/sim/mn10300/mn10300_sim.h b/sim/mn10300/mn10300_sim.h
index 23b8cc2..f021aee 100644
--- a/sim/mn10300/mn10300_sim.h
+++ b/sim/mn10300/mn10300_sim.h
@@ -47,7 +47,6 @@ struct _state
reg_t fs[32]; /* FS0-31 */
dword fd[16]; /* FD0,2,...,30 */
} fpregs;
- uint8 *mem; /* main memory */
/* All internal state modified by signal_exception() that may need to be
rolled back for passing moment-of-exception image back to gdb. */
@@ -61,8 +60,6 @@ struct _state
};
extern struct _state State;
-extern uint32 OP[4];
-extern struct simops Simops[];
#define PC (State.regs[REG_PC])
#define SP (State.regs[REG_SP])
@@ -197,15 +194,6 @@ dw2u64 (dword data)
/* Function declarations. */
-uint32 get_word (uint8 *);
-uint16 get_half (uint8 *);
-uint8 get_byte (uint8 *);
-void put_word (uint8 *, uint32);
-void put_half (uint8 *, uint16);
-void put_byte (uint8 *, uint8);
-
-extern uint8 *map (SIM_ADDR addr);
-
INLINE_SIM_MAIN (void) genericAdd (unsigned32 source, unsigned32 destReg);
INLINE_SIM_MAIN (void) genericSub (unsigned32 source, unsigned32 destReg);
INLINE_SIM_MAIN (void) genericCmp (unsigned32 leftOpnd, unsigned32 rightOpnd);
diff --git a/sim/mn10300/op_utils.c b/sim/mn10300/op_utils.c
index 518df9b..316cf75 100644
--- a/sim/mn10300/op_utils.c
+++ b/sim/mn10300/op_utils.c
@@ -188,9 +188,6 @@ do_syscall (void)
#define RETVAL State.regs[0] /* return value */
#define RETERR State.regs[1] /* return error code */
-/* Turn a pointer in a register into a pointer into real memory. */
-#define MEMPTR(x) (State.mem + x)
-
if ( FUNC == TARGET_SYS_exit )
{
/* EXIT - caller can look in PARM1 to work out the reason */