Initialize stack pointers for all CPU modes to match GBA BIOS behavior
(&mut self)
| 858 | } |
| 859 | |
| 860 | match self.cpsr.mode() { |
| 861 | // If we leave Fiq we store r8-14 and spsr. |
| 862 | // We should also restore r8-r12 since other modes do not have it banked |
| 863 | Mode::Fiq => { |
| 864 | self.register_bank.r8_fiq = self.registers.register_at(8); |
| 865 | self.register_bank.r9_fiq = self.registers.register_at(9); |
| 866 | self.register_bank.r10_fiq = self.registers.register_at(10); |
| 867 | self.register_bank.r11_fiq = self.registers.register_at(11); |
| 868 | self.register_bank.r12_fiq = self.registers.register_at(12); |
| 869 | self.register_bank.r13_fiq = self.registers.register_at(13); |
| 870 | self.register_bank.r14_fiq = self.registers.register_at(14); |
| 871 | self.register_bank.spsr_fiq = self.spsr; |
| 872 | |
| 873 | self.registers.set_register_at(8, self.register_bank.r8_old); |
| 874 | self.registers.set_register_at(9, self.register_bank.r9_old); |
| 875 | self.registers |
| 876 | .set_register_at(10, self.register_bank.r10_old); |
| 877 | self.registers |
| 878 | .set_register_at(11, self.register_bank.r11_old); |
| 879 | self.registers |
| 880 | .set_register_at(12, self.register_bank.r12_old); |
| 881 | } |
no test coverage detected