diff --git a/hello_world/hello_world.bin b/hello_world/hello_world.bin index 0be5283..73bc181 100755 Binary files a/hello_world/hello_world.bin and b/hello_world/hello_world.bin differ diff --git a/hello_world/hello_world.elf b/hello_world/hello_world.elf index 452bf29..02a362d 100755 Binary files a/hello_world/hello_world.elf and b/hello_world/hello_world.elf differ diff --git a/hello_world/hello_world.hex b/hello_world/hello_world.hex index aa27a6b..633e218 100644 --- a/hello_world/hello_world.hex +++ b/hello_world/hello_world.hex @@ -40,7 +40,7 @@ a64b5a7d14004a39 60211f0064210000 618c00003d800000 658c0000798c07c6 -7d8903a6618c113c +7d8903a6618c1014 480000004e800421 0000000000000000 0000000000000000 @@ -513,74 +513,55 @@ a64b5a7d14004a39 e8010010ebc1fff0 7c0803a6ebe1fff8 3c4000014e800020 +7c0802a63842a000 +3fe2fffffbe1fff8 +f80100103bff71a8 +48000051f821ffd1 +7fe3fb7860000000 +6000000048000139 +7fe3fb787c641b78 +60000000480000e1 +6000000048000065 +480000955463063e +4bffffec60000000 +0100000000000000 +3c40000100000180 3d20c0003842a000 6129200060000000 -f922800079290020 -3940001a3d20c000 -7929002061292018 -4e800020f9490000 +7929002039000018 +3940001af9228000 +4e8000207d4947ea 0000000000000000 3c40000100000000 600000003842a000 -390a0010e9428000 -71290001e9280000 -e86a00084082fff8 -4e8000205463063e +39000010e9228000 +794707e17d4946ea +386000084082fff8 +5463063e7c691eea +000000004e800020 0000000000000000 -3c40000100000000 -600000003842a000 -390a0010e9428000 -71290008e9280000 -f86a00004082fff8 +3842a0003c400001 +e942800060000000 +7d2a46ea39000010 +4082fff87927efe3 +7c6a4fea39200000 000000004e800020 0000000000000000 3842a0003c400001 fbc1fff07c0802a6 -7fc32214fbe1fff8 -f80100107c7f1b78 -7fbff040f821ffd1 -38210030409e000c -887f00004bffff10 -4bffff993bff0001 -000000004bffffe4 +3884fffffbe1fff8 +7fe322143bc3ffff +f821ffd1f8010010 +419e00107fbef840 +4bffff9d8c7e0001 +382100304bfffff0 +000000004bfffe98 0000028001000000 7d4348ae39200000 -409e000c2f8a0000 +419e000c2f8a0000 +4bfffff039290001 4e8000207d234b78 -4bffffe839290001 0000000000000000 -3c40000100000000 -7c0802a63842a000 -3fe2fffffbe1fff8 -f80100103bff7190 -4bfffec1f821ffd1 -4bffffad7fe3fb78 -7fe3fb787c641b78 -4bfffee94bffff59 -4bffff195463063e -000000004bfffff4 -0000018001000000 +0000000000000000 6f57206f6c6c6548 0000000a0d646c72 -0000000000000010 -0141780400527a01 -0000001000010c1b -fffffe5800000018 -0000000000000040 -0000002c00000010 -00000038fffffe84 -0000001000000000 -fffffea800000040 -0000000000000034 -0000005400000028 -00000050fffffec8 -9f029e0041094500 -437e4111300e4401 -4106dedf41000e0a -000000100000000b -fffffeec00000080 -000000000000002c -000000940000001c -00000054ffffff04 -44019f0041094400 -0000007e4111300e diff --git a/scripts/instructions.yaml b/scripts/instructions.yaml index e42a09f..005c753 100644 --- a/scripts/instructions.yaml +++ b/scripts/instructions.yaml @@ -972,6 +972,114 @@ ldbrx: update: N reservation: N +lbzcix: + unit: U_LDST + internalOp: LDST_LOAD + rA: RA_RA_OR_ZERO + rB: RB_RB + rOut: ROUT_RT + compare: CMP_RC_0 + length: LEN_1B + signed: N + byteReverse: N + update: N + reservation: N + +ldcix: + unit: U_LDST + internalOp: LDST_LOAD + rA: RA_RA_OR_ZERO + rB: RB_RB + rOut: ROUT_RT + compare: CMP_RC_0 + length: LEN_8B + signed: N + byteReverse: N + update: N + reservation: N + +lhzcix: + unit: U_LDST + internalOp: LDST_LOAD + rA: RA_RA_OR_ZERO + rB: RB_RB + rOut: ROUT_RT + compare: CMP_RC_0 + length: LEN_2B + signed: N + byteReverse: N + update: N + reservation: N + +lwzcix: + unit: U_LDST + internalOp: LDST_LOAD + rA: RA_RA_OR_ZERO + rB: RB_RB + rOut: ROUT_RT + compare: CMP_RC_0 + length: LEN_4B + signed: N + byteReverse: N + update: N + reservation: N + +stbcix: + unit: U_LDST + internalOp: LDST_STORE + rA: RA_RA_OR_ZERO + rB: RB_RB + rS: RS_RS + rOut: ROUT_NONE + compare: CMP_RC_0 + length: LEN_1B + signed: N + byteReverse: N + update: N + reservation: N + +stdcix: + unit: U_LDST + internalOp: LDST_STORE + rA: RA_RA_OR_ZERO + rB: RB_RB + rS: RS_RS + rOut: ROUT_NONE + compare: CMP_RC_0 + length: LEN_8B + signed: N + byteReverse: N + update: N + reservation: N + +sthcix: + unit: U_LDST + internalOp: LDST_STORE + rA: RA_RA_OR_ZERO + rB: RB_RB + rS: RS_RS + rOut: ROUT_NONE + compare: CMP_RC_0 + length: LEN_2B + signed: N + byteReverse: N + update: N + reservation: N + +stwcix: + unit: U_LDST + internalOp: LDST_STORE + rA: RA_RA_OR_ZERO + rB: RB_RB + rS: RS_RS + rOut: ROUT_NONE + compare: CMP_RC_0 + length: LEN_4B + signed: N + byteReverse: N + update: N + reservation: N + ldx: unit: U_LDST internalOp: LDST_LOAD diff --git a/src/main/scala/Control.scala b/src/main/scala/Control.scala index d167754..8cc5c70 100644 --- a/src/main/scala/Control.scala +++ b/src/main/scala/Control.scala @@ -174,6 +174,14 @@ object Control { LWZUX -> List(U_LDST, LDST_LOAD, RA_RA_OR_ZERO, RB_RB, DC, ROUT_RT, CA_0, DC, DC, DC, CMP_RC_0, DC, N, N, DC, DC, DC, DC, LEN_4B, N, Y, N, DC, DC, DC, DC, DC), LDARX -> List(U_LDST, LDST_LOAD, RA_RA_OR_ZERO, RB_RB, DC, ROUT_RT, DC, DC, DC, DC, CMP_RC_0, DC, N, DC, DC, DC, DC, DC, LEN_8B, N, N, Y, DC, DC, DC, DC, DC), LDBRX -> List(U_LDST, LDST_LOAD, RA_RA_OR_ZERO, RB_RB, DC, ROUT_RT, DC, DC, DC, DC, CMP_RC_0, DC, N, DC, DC, DC, DC, DC, LEN_8B, Y, N, N, DC, DC, DC, DC, DC), + LBZCIX -> List(U_LDST, LDST_LOAD, RA_RA_OR_ZERO, RB_RB, DC, ROUT_RT, DC, DC, DC, DC, CMP_RC_0, DC, N, DC, DC, DC, DC, DC, LEN_1B, N, N, N, DC, DC, DC, DC, DC), + LDCIX -> List(U_LDST, LDST_LOAD, RA_RA_OR_ZERO, RB_RB, DC, ROUT_RT, DC, DC, DC, DC, CMP_RC_0, DC, N, DC, DC, DC, DC, DC, LEN_8B, N, N, N, DC, DC, DC, DC, DC), + LHZCIX -> List(U_LDST, LDST_LOAD, RA_RA_OR_ZERO, RB_RB, DC, ROUT_RT, DC, DC, DC, DC, CMP_RC_0, DC, N, DC, DC, DC, DC, DC, LEN_2B, N, N, N, DC, DC, DC, DC, DC), + LWZCIX -> List(U_LDST, LDST_LOAD, RA_RA_OR_ZERO, RB_RB, DC, ROUT_RT, DC, DC, DC, DC, CMP_RC_0, DC, N, DC, DC, DC, DC, DC, LEN_4B, N, N, N, DC, DC, DC, DC, DC), + STBCIX -> List(U_LDST, LDST_STORE, RA_RA_OR_ZERO, RB_RB, RS_RS, ROUT_NONE, DC, DC, DC, DC, CMP_RC_0, DC, N, DC, DC, DC, DC, DC, LEN_1B, N, N, N, DC, DC, DC, DC, DC), + STDCIX -> List(U_LDST, LDST_STORE, RA_RA_OR_ZERO, RB_RB, RS_RS, ROUT_NONE, DC, DC, DC, DC, CMP_RC_0, DC, N, DC, DC, DC, DC, DC, LEN_8B, N, N, N, DC, DC, DC, DC, DC), + STHCIX -> List(U_LDST, LDST_STORE, RA_RA_OR_ZERO, RB_RB, RS_RS, ROUT_NONE, DC, DC, DC, DC, CMP_RC_0, DC, N, DC, DC, DC, DC, DC, LEN_2B, N, N, N, DC, DC, DC, DC, DC), + STWCIX -> List(U_LDST, LDST_STORE, RA_RA_OR_ZERO, RB_RB, RS_RS, ROUT_NONE, DC, DC, DC, DC, CMP_RC_0, DC, N, DC, DC, DC, DC, DC, LEN_4B, N, N, N, DC, DC, DC, DC, DC), LDX -> List(U_LDST, LDST_LOAD, RA_RA_OR_ZERO, RB_RB, DC, ROUT_RT, DC, DC, DC, DC, CMP_RC_0, DC, N, DC, DC, DC, DC, DC, LEN_8B, N, N, N, DC, DC, DC, DC, DC), LDUX -> List(U_LDST, LDST_LOAD, RA_RA_OR_ZERO, RB_RB, DC, ROUT_RT, CA_0, DC, DC, DC, CMP_RC_0, DC, N, N, DC, DC, DC, DC, LEN_8B, N, Y, N, DC, DC, DC, DC, DC), STB -> List(U_LDST, LDST_STORE, RA_RA_OR_ZERO, RB_CONST_SI, RS_RS, ROUT_NONE, DC, DC, DC, DC, CMP_RC_0, DC, N, DC, DC, DC, DC, DC, LEN_1B, N, N, N, DC, DC, DC, DC, DC),