Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions simavr/sim/sim_avr.c
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ avr_reset(
port->reset(port);
port = port->next;
}
avr->cycle = 0; // Prevent crash
}

void
Expand Down Expand Up @@ -286,7 +287,7 @@ void
avr_callback_run_gdb(
avr_t * avr)
{
avr_gdb_processor(avr, avr->state == cpu_Stopped);
avr_gdb_processor(avr, avr->state == cpu_Stopped ? 50000 : 0);

if (avr->state == cpu_Stopped)
return ;
Expand Down Expand Up @@ -331,7 +332,6 @@ avr_callback_run_gdb(
// if we were stepping, use this state to inform remote gdb
if (step)
avr->state = cpu_StepDone;

}

/*
Expand Down
2 changes: 2 additions & 0 deletions simavr/sim/sim_avr.h
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,8 @@ typedef void (*avr_run_t)(
#define AVR_FUSE_HIGH 1
#define AVR_FUSE_EXT 2

#define REG_NAME_COUNT (256 + 32) // Size of reg_names table.

/*
* Main AVR instance. Some of these fields are set by the AVR "Core" definition files
* the rest is runtime data (as little as possible)
Expand Down
16 changes: 7 additions & 9 deletions simavr/sim/sim_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,8 @@ uint8_t avr_core_watch_read(avr_t *avr, uint16_t addr)
"CORE: *** Wrapping read address "
"PC=%04x SP=%04x O=%04x Address %04x %% %04x --> %04x\n"
FONT_DEFAULT,
avr->pc, _avr_sp_get(avr), _avr_flash_read16le(avr, avr->pc), addr, (avr->ramend + 1), addr % (avr->ramend + 1));
avr->pc, _avr_sp_get(avr), _avr_flash_read16le(avr, avr->pc),
addr, (avr->ramend + 1), addr % (avr->ramend + 1));
addr = addr % (avr->ramend + 1);
}

Expand Down Expand Up @@ -321,7 +322,7 @@ avr_flashaddr_t _avr_pop_addr(avr_t * avr)
/*
* "Pretty" register names
*/
const char * reg_names[255] = {
const char * reg_names[REG_NAME_COUNT] = {
[R_XH] = "XH", [R_XL] = "XL",
[R_YH] = "YH", [R_YL] = "YL",
[R_ZH] = "ZH", [R_ZL] = "ZL",
Expand All @@ -330,7 +331,7 @@ const char * reg_names[255] = {
};


const char * avr_regname(uint8_t reg)
const char * avr_regname(unsigned int reg)
{
if (!reg_names[reg]) {
char tt[16];
Expand Down Expand Up @@ -938,12 +939,9 @@ avr_flashaddr_t avr_run_one(avr_t * avr)
case 0x9598: { // BREAK -- 1001 0101 1001 1000
STATE("break\n");
if (avr->gdb) {
// if gdb is on, we break here as in here
// and we do so until gdb restores the instruction
// that was here before
avr->state = cpu_StepDone;
new_pc = avr->pc;
cycle = 0;
// if gdb is on, break here.
avr->state = cpu_Stopped;
avr_gdb_handle_break(avr);
}
} break;
case 0x95a8: { // WDR -- Watchdog Reset -- 1001 0101 1010 1000
Expand Down
Loading