Skip to content

Commit

Permalink
msp430: set SR on exit when in ISR
Browse files Browse the repository at this point in the history
  • Loading branch information
tcsullivan committed Nov 7, 2023
1 parent 8e7cb05 commit d6ee894
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions msp430/alee-msp430.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ static void Software_Trim();
//__attribute__((section(".hidict")))
//static uint8_t hidict[16384];

static bool inISR = false;
static Addr isr_list[24] = {};
static SplitMemDictRW<sizeof(alee_dat), 16384> dict (alee_dat, 0x10000);

Expand Down Expand Up @@ -180,10 +181,16 @@ void user_sys(State& state)
state.push(*reinterpret_cast<uint16_t *>(state.pop()));
break;
case 15:
_bis_SR_register(state.pop());
if (!inISR)
_bis_SR_register(state.pop());
else
_bis_SR_register_on_exit(state.pop());
break;
case 16:
_bic_SR_register(state.pop());
if (!inISR)
_bic_SR_register(state.pop());
else
_bic_SR_register_on_exit(state.pop());
break;
default:
break;
Expand Down Expand Up @@ -368,7 +375,9 @@ void alee_isr_handle(unsigned index)

if (isr != 0) {
State isrstate (dict, readchar);
inISR = true;
isrstate.execute(isr);
inISR = false;
}
}

Expand Down

0 comments on commit d6ee894

Please sign in to comment.