@@ -41,8 +41,8 @@ pub(crate) use get_mem_mut;
4141macro_rules! get_regs {
4242 ( $emu: expr, $cpu: expr) => { {
4343 match $cpu {
44- crate :: core:: CpuType :: ARM9 => crate :: core:: emu:: get_common!( $emu) . cpus. arm9 . regs ( ) ,
45- crate :: core:: CpuType :: ARM7 => crate :: core:: emu:: get_common!( $emu) . cpus. arm7 . regs ( ) ,
44+ crate :: core:: CpuType :: ARM9 => & crate :: core:: emu:: get_common!( $emu) . cpus. thread_regs_arm9 ,
45+ crate :: core:: CpuType :: ARM7 => & crate :: core:: emu:: get_common!( $emu) . cpus. thread_regs_arm7 ,
4646 }
4747 } } ;
4848}
@@ -51,8 +51,8 @@ pub(crate) use get_regs;
5151macro_rules! get_regs_mut {
5252 ( $emu: expr, $cpu: expr) => { {
5353 match $cpu {
54- crate :: core:: CpuType :: ARM9 => crate :: core:: emu:: get_common_mut!( $emu) . cpus. arm9 . regs_mut ( ) ,
55- crate :: core:: CpuType :: ARM7 => crate :: core:: emu:: get_common_mut!( $emu) . cpus. arm7 . regs_mut ( ) ,
54+ crate :: core:: CpuType :: ARM9 => & mut crate :: core:: emu:: get_common_mut!( $emu) . cpus. thread_regs_arm9 ,
55+ crate :: core:: CpuType :: ARM7 => & mut crate :: core:: emu:: get_common_mut!( $emu) . cpus. thread_regs_arm7 ,
5656 }
5757 } } ;
5858}
@@ -61,8 +61,8 @@ pub(crate) use get_regs_mut;
6161macro_rules! get_cpu_regs {
6262 ( $emu: expr, $cpu: expr) => { {
6363 match $cpu {
64- crate :: core:: CpuType :: ARM9 => & crate :: core:: emu:: get_common !( $emu) . cpus . arm9 . regs ( ) . cpu,
65- crate :: core:: CpuType :: ARM7 => & crate :: core:: emu:: get_common !( $emu) . cpus . arm7 . regs ( ) . cpu,
64+ crate :: core:: CpuType :: ARM9 => & crate :: core:: emu:: get_regs !( $emu, $cpu ) . cpu,
65+ crate :: core:: CpuType :: ARM7 => & crate :: core:: emu:: get_regs !( $emu, $cpu ) . cpu,
6666 }
6767 } } ;
6868}
@@ -71,29 +71,23 @@ pub(crate) use get_cpu_regs;
7171macro_rules! get_cpu_regs_mut {
7272 ( $emu: expr, $cpu: expr) => { {
7373 match $cpu {
74- crate :: core:: CpuType :: ARM9 => & mut crate :: core:: emu:: get_common_mut !( $emu) . cpus . arm9 . regs_mut ( ) . cpu,
75- crate :: core:: CpuType :: ARM7 => & mut crate :: core:: emu:: get_common_mut !( $emu) . cpus . arm7 . regs_mut ( ) . cpu,
74+ crate :: core:: CpuType :: ARM9 => & mut crate :: core:: emu:: get_regs_mut !( $emu, $cpu ) . cpu,
75+ crate :: core:: CpuType :: ARM7 => & mut crate :: core:: emu:: get_regs_mut !( $emu, $cpu ) . cpu,
7676 }
7777 } } ;
7878}
7979pub ( crate ) use get_cpu_regs_mut;
8080
8181macro_rules! get_cp15 {
82- ( $emu: expr, $cpu: expr) => { {
83- match $cpu {
84- crate :: core:: CpuType :: ARM9 => crate :: core:: emu:: get_common!( $emu) . cpus. arm9. cp15( ) ,
85- crate :: core:: CpuType :: ARM7 => crate :: core:: emu:: get_common!( $emu) . cpus. arm7. cp15( ) ,
86- }
82+ ( $emu: expr) => { {
83+ & crate :: core:: emu:: get_common!( $emu) . cpus. cp15
8784 } } ;
8885}
8986pub ( crate ) use get_cp15;
9087
9188macro_rules! get_cp15_mut {
92- ( $emu: expr, $cpu: expr) => { {
93- match $cpu {
94- crate :: core:: CpuType :: ARM9 => crate :: core:: emu:: get_common_mut!( $emu) . cpus. arm9. cp15_mut( ) ,
95- crate :: core:: CpuType :: ARM7 => crate :: core:: emu:: get_common_mut!( $emu) . cpus. arm7. cp15_mut( ) ,
96- }
89+ ( $emu: expr) => { {
90+ & mut crate :: core:: emu:: get_common_mut!( $emu) . cpus. cp15
9791 } } ;
9892}
9993pub ( crate ) use get_cp15_mut;
@@ -278,7 +272,7 @@ macro_rules! get_arm7_hle_mut {
278272pub ( crate ) use get_arm7_hle_mut;
279273
280274use crate :: cartridge_io:: CartridgeIo ;
281- use crate :: core:: cpu :: { CpuArm7 , CpuArm9 } ;
275+ use crate :: core:: cp15 :: Cp15 ;
282276use crate :: core:: cycle_manager:: CycleManager ;
283277use crate :: core:: graphics:: gpu:: Gpu ;
284278use crate :: core:: hle:: arm7_hle:: Arm7Hle ;
@@ -287,23 +281,27 @@ use crate::core::ipc::Ipc;
287281use crate :: core:: memory:: cartridge:: Cartridge ;
288282use crate :: core:: memory:: mem:: Memory ;
289283use crate :: core:: spu:: SoundSampler ;
284+ use crate :: core:: thread_regs:: ThreadRegs ;
290285use crate :: core:: CpuType ;
286+ use crate :: core:: CpuType :: { ARM7 , ARM9 } ;
291287use crate :: settings:: Settings ;
292288use crate :: utils:: Convert ;
293289use std:: cell:: UnsafeCell ;
294290use std:: sync:: atomic:: { AtomicU16 , AtomicU32 } ;
295291use std:: sync:: Arc ;
296292
297293pub struct Cpus {
298- pub arm9 : CpuArm9 ,
299- pub arm7 : CpuArm7 ,
294+ pub thread_regs_arm9 : ThreadRegs ,
295+ pub cp15 : Cp15 ,
296+ pub thread_regs_arm7 : ThreadRegs ,
300297}
301298
302299impl Cpus {
303300 fn new ( ) -> Self {
304301 Cpus {
305- arm9 : CpuArm9 :: new ( ) ,
306- arm7 : CpuArm7 :: new ( ) ,
302+ thread_regs_arm9 : ThreadRegs :: new ( ARM9 ) ,
303+ cp15 : Cp15 :: new ( ) ,
304+ thread_regs_arm7 : ThreadRegs :: new ( ARM7 ) ,
307305 }
308306 }
309307}
0 commit comments