@@ -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