Skip to content

Commit 4429dd0

Browse files
author
ga
committed
Fix Bug #562 - "Can't compile with AVR_STACK_WATCH".
1 parent 4a6e0df commit 4429dd0

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

simavr/sim/sim_core.c

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -149,15 +149,17 @@ void crash(avr_t* avr)
149149

150150
for (int i = OLD_PC_SIZE-1; i > 0; i--) {
151151
int pci = (avr->trace_data->old_pci + i) & 0xf;
152+
uint32_t oldpc = avr->trace_data->old[pci].pc >> 1;
152153
printf("%s*** %04x: %-25s RESET -%d; sp %04x%s\n",
153-
simavr_font.red,
154-
avr->trace_data->old[pci].pc,
155-
avr->trace_data->codeline ?
156-
avr->trace_data->codeline[avr->trace_data->old[pci].pc>>1] :
157-
"unknown",
158-
OLD_PC_SIZE-i,
159-
avr->trace_data->old[pci].sp,
160-
simavr_font.normal);
154+
simavr_font.red,
155+
avr->trace_data->old[pci].pc,
156+
(avr->trace_data->codeline &&
157+
oldpc < avr->trace_data->codeline_size) ?
158+
avr->trace_data->codeline[oldpc] :
159+
"unknown",
160+
OLD_PC_SIZE-i,
161+
avr->trace_data->old[pci].sp,
162+
simavr_font.normal);
161163
}
162164

163165
printf("Stack Ptr %04x/%04x = %d \n", _avr_sp_get(avr), avr->ramend, avr->ramend - _avr_sp_get(avr));

simavr/sim/sim_core.h

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,15 @@ void avr_dump_state(avr_t * avr);
8181
#define DUMP_STACK() \
8282
for (int i = avr->trace_data->stack_frame_index; i; i--) {\
8383
int pci = i-1;\
84+
uint32_t oldpc = avr->trace_data->stack_frame[pci].pc >> 1; \
8485
printf("%s*** %04x: %-25s sp %04x%s\n",\
85-
simavr_font.red, \
86-
avr->trace_data->stack_frame[pci].pc, \
87-
avr->trace_data->codeline ? avr->trace_data->codeline[avr->trace_data->stack_frame[pci].pc>>1]->symbol : "unknown", \
88-
avr->trace_data->stack_frame[pci].sp, \
89-
simavr_font.normal);\
86+
simavr_font.red, \
87+
avr->trace_data->stack_frame[pci].pc, \
88+
(avr->trace_data->codeline && \
89+
oldpc < avr->trace_data->codeline_size) ? \
90+
avr->trace_data->codeline[oldpc] : "unknown", \
91+
avr->trace_data->stack_frame[pci].sp, \
92+
simavr_font.normal); \
9093
}
9194
#else
9295
#define DUMP_STACK()

0 commit comments

Comments
 (0)