diff options
author | Segher Boessenkool <segher@kernel.crashing.org> | 2010-02-13 12:52:20 +0100 |
---|---|---|
committer | Segher Boessenkool <segher@kernel.crashing.org> | 2010-02-13 12:52:20 +0100 |
commit | 8f4efcb33af7a85aadf65e2bb8d5199e8e09f02f (patch) | |
tree | f9ca45da674b30497e2769eadd8cf1bbac2c64ea | |
parent | 1826ba315eec152039807af396e824b4c83b66ff (diff) |
Simplify do_irq() etc. a bit
-rw-r--r-- | emu.c | 22 |
1 files changed, 10 insertions, 12 deletions
@@ -169,14 +169,6 @@ static void print_state(void) disas(mem, cs_pc()); } -static void __do_irq(u16 vec) -{ - push(reg[7], 0); - push(reg[6], 0); - reg[7] = load(vec); - reg[6] = 0; -} - static void do_irq(int irqno) { if (fiq_active || irq_active || !irq_enabled) @@ -188,9 +180,12 @@ static void do_irq(int irqno) irq_active = 1; sb_banked[0] = sb; + push(reg[7], 0); + push(reg[6], 0); + sb = sb_banked[1]; - __do_irq(0xfff8 + irqno); - //sb = sb_banked[0]; + reg[7] = load(0xfff8 + irqno); + reg[6] = 0; } static void do_fiq(void) @@ -204,9 +199,12 @@ static void do_fiq(void) fiq_active = 1; sb_banked[irq_active] = sb; + push(reg[7], 0); + push(reg[6], 0); + sb = sb_banked[2]; - __do_irq(0xfff6); - //sb = sb_banked[irq_active]; + reg[7] = load(0xfff6); + reg[6] = 0; } static int get_irq(void) |