MCPcopy Create free account
hub / github.com/RIP-Comm/clementine / initialize_stack_pointers

Method initialize_stack_pointers

emu/src/cpu/arm7tdmi.rs:860–878  ·  view source on GitHub ↗

Initialize stack pointers for all CPU modes to match GBA BIOS behavior

(&mut self)

Source from the content-addressed store, hash-verified

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 }

Callers 1

newMethod · 0.80

Calls 3

swap_modeMethod · 0.80
set_register_atMethod · 0.80
modeMethod · 0.45

Tested by

no test coverage detected