From 0fde6135a0b1d90e97f3d5717c9a1c37e6d056e5 Mon Sep 17 00:00:00 2001 From: Ben Vanik Date: Mon, 28 Jan 2013 15:31:46 -0800 Subject: [PATCH] Fixing XO instruction decoding. --- include/xenia/cpu/ppc/instr.h | 2 +- src/kernel/modules/xboxkrnl/kernel_state.cc | 4 ++-- test/codegen/add.bin | Bin 0 -> 8 bytes test/codegen/add.dis | 9 +++++++++ test/codegen/add.s | 9 +++++++++ 5 files changed, 21 insertions(+), 3 deletions(-) create mode 100755 test/codegen/add.bin create mode 100644 test/codegen/add.dis create mode 100644 test/codegen/add.s diff --git a/include/xenia/cpu/ppc/instr.h b/include/xenia/cpu/ppc/instr.h index c4b48d0d4..937c97c8f 100644 --- a/include/xenia/cpu/ppc/instr.h +++ b/include/xenia/cpu/ppc/instr.h @@ -147,7 +147,7 @@ typedef struct { // kXEPPCInstrFormatXO struct { uint32_t Rc : 1; - uint32_t : 8; + uint32_t : 9; uint32_t OE : 1; uint32_t RB : 5; uint32_t RA : 5; diff --git a/src/kernel/modules/xboxkrnl/kernel_state.cc b/src/kernel/modules/xboxkrnl/kernel_state.cc index f54a7880c..93aa333b7 100644 --- a/src/kernel/modules/xboxkrnl/kernel_state.cc +++ b/src/kernel/modules/xboxkrnl/kernel_state.cc @@ -22,8 +22,8 @@ namespace { KernelState::KernelState(xe_pal_ref pal, xe_memory_ref memory, shared_ptr export_resolver) { - pal = xe_pal_retain(pal); - memory = xe_memory_retain(memory); + this->pal = xe_pal_retain(pal); + this->memory = xe_memory_retain(memory); export_resolver_ = export_resolver; } diff --git a/test/codegen/add.bin b/test/codegen/add.bin new file mode 100755 index 0000000000000000000000000000000000000000..78e79680ee45f6b3f3d1036671d17a065f190cbc GIT binary patch literal 8 Pcmb: + 82010000: 7d 65 ca 14 add r11,r5,r25 + 82010004: 4e 80 00 20 blr diff --git a/test/codegen/add.s b/test/codegen/add.s new file mode 100644 index 000000000..3fb476e6e --- /dev/null +++ b/test/codegen/add.s @@ -0,0 +1,9 @@ +# REGISTER_IN r5 0x00100000 +# REGISTER_IN r25 0x0000FFFF + +add r11, r5, r25 + +blr +# REGISTER_OUT r5 0x00100000 +# REGISTER_OUT r25 0x0000FFFF +# REGISTER_OUT r11 0x0010FFFF