moved MMR0-bits check to bus
This commit is contained in:
parent
08362a2a20
commit
fad2c52c9b
1 changed files with 5 additions and 7 deletions
12
cpu.cpp
12
cpu.cpp
|
@ -259,7 +259,7 @@ bool cpu::check_queued_interrupts()
|
||||||
uint8_t current_level = getPSW_spl();
|
uint8_t current_level = getPSW_spl();
|
||||||
|
|
||||||
// uint8_t start_level = current_level <= 3 ? 0 : current_level + 1;
|
// uint8_t start_level = current_level <= 3 ? 0 : current_level + 1;
|
||||||
uint8_t start_level = current_level + 1;
|
uint8_t start_level = current_level + 1;
|
||||||
|
|
||||||
for(uint8_t i=start_level; i < 8; i++) {
|
for(uint8_t i=start_level; i < 8; i++) {
|
||||||
auto interrupts = queued_interrupts.find(i);
|
auto interrupts = queued_interrupts.find(i);
|
||||||
|
@ -1627,15 +1627,13 @@ void cpu::trap(uint16_t vector, const int new_ipl, const bool is_interrupt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
bool mmr1_locked = b->getMMR0() & 0160000;
|
|
||||||
|
|
||||||
before_psw = getPSW();
|
before_psw = getPSW();
|
||||||
if (!mmr1_locked)
|
b->addToMMR1(-2, 6);
|
||||||
b->addToMMR1(-2, 6);
|
|
||||||
|
|
||||||
before_pc = getPC();
|
before_pc = getPC();
|
||||||
if (!mmr1_locked)
|
b->addToMMR1(-2, 6);
|
||||||
b->addToMMR1(-2, 6);
|
|
||||||
|
// TODO set MMR2?
|
||||||
}
|
}
|
||||||
|
|
||||||
// make sure the trap vector is retrieved from kernel space
|
// make sure the trap vector is retrieved from kernel space
|
||||||
|
|
Loading…
Add table
Reference in a new issue