From 7b0278dcad72af1db86e6ecf91751dbc45e3b071 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sat, 8 Mar 2014 00:20:11 -0500 Subject: [PATCH] sim: msp430: set initial PC to ELF entry if available If we want to run a simple ELF, the reset vector isn't set up, so starting at address 0 doesn't make sense. Use the ELF's entry point instead. --- sim/msp430/ChangeLog | 5 +++++ sim/msp430/msp430-sim.c | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/sim/msp430/ChangeLog b/sim/msp430/ChangeLog index 0a3da7d..484a5d2 100644 --- a/sim/msp430/ChangeLog +++ b/sim/msp430/ChangeLog @@ -1,5 +1,10 @@ 2014-03-10 Mike Frysinger + * msp430-sim.c (sim_create_inferior): Set new_pc to the result of + bfd_get_start_address when abfd is not NULL and new_pc is zero. + +2014-03-10 Mike Frysinger + * msp430-sim (maybe_perform_syscall): Change %d to %ld. (msp430_step_once): Cast fprintf to fprintf_ftype. diff --git a/sim/msp430/msp430-sim.c b/sim/msp430/msp430-sim.c index c3fa4a9..2a648f5 100644 --- a/sim/msp430/msp430-sim.c +++ b/sim/msp430/msp430-sim.c @@ -249,9 +249,14 @@ sim_create_inferior (SIM_DESC sd, int c; int new_pc; + /* Set the PC to the default reset vector if available. */ c = sim_core_read_buffer (sd, MSP430_CPU (sd), read_map, resetv, 0xfffe, 2); - new_pc = resetv[0] + 256 * resetv[1]; + + /* If the reset vector isn't initialized, then use the ELF entry. */ + if (abfd != NULL && !new_pc) + new_pc = bfd_get_start_address (abfd); + sim_pc_set (MSP430_CPU (sd), new_pc); msp430_pc_store (MSP430_CPU (sd), new_pc); -- 2.7.4