diff options
author | mmc28a <78873583+mmc28a@users.noreply.github.com> | 2023-01-17 15:53:00 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-17 15:53:00 +0000 |
commit | 9128d58004e8948586d6663f692f786f6319eadb (patch) | |
tree | b3085314b3d91bc0d41c12ba3b5bdad6823267d9 | |
parent | 8ab3dd5bebb81d2b0debdb7f00d19c48e5b62c38 (diff) |
Fix register trace involving sp and xzr (#59)
Tracing register updates for ldp instructions that use both xzr and sp would
not print the updated stack address. This was visible when popping from the
stack into xzr, to discard an entry. Fix this and update the trace tests.
-rw-r--r-- | src/aarch64/decoder-visitor-map-aarch64.h | 16 | ||||
-rw-r--r-- | src/aarch64/simulator-aarch64.cc | 16 | ||||
-rw-r--r-- | test/aarch64/test-trace-aarch64.cc | 10 | ||||
-rw-r--r-- | test/test-trace-reference/log-all | 29 | ||||
-rw-r--r-- | test/test-trace-reference/log-all-colour | 29 | ||||
-rw-r--r-- | test/test-trace-reference/log-branch | 5 | ||||
-rw-r--r-- | test/test-trace-reference/log-branch-colour | 5 | ||||
-rw-r--r-- | test/test-trace-reference/log-cpufeatures | 8 | ||||
-rw-r--r-- | test/test-trace-reference/log-cpufeatures-colour | 8 | ||||
-rw-r--r-- | test/test-trace-reference/log-cpufeatures-custom | 8 | ||||
-rw-r--r-- | test/test-trace-reference/log-disasm | 8 | ||||
-rw-r--r-- | test/test-trace-reference/log-disasm-colour | 8 | ||||
-rw-r--r-- | test/test-trace-reference/log-regs | 16 | ||||
-rw-r--r-- | test/test-trace-reference/log-regs-colour | 16 | ||||
-rw-r--r-- | test/test-trace-reference/log-state | 16 | ||||
-rw-r--r-- | test/test-trace-reference/log-state-colour | 16 | ||||
-rw-r--r-- | test/test-trace-reference/log-write | 5 | ||||
-rw-r--r-- | test/test-trace-reference/log-write-colour | 5 | ||||
-rw-r--r-- | tools/code_coverage.log | 1 |
19 files changed, 213 insertions, 12 deletions
diff --git a/src/aarch64/decoder-visitor-map-aarch64.h b/src/aarch64/decoder-visitor-map-aarch64.h index 58ab3163..8ae438c1 100644 --- a/src/aarch64/decoder-visitor-map-aarch64.h +++ b/src/aarch64/decoder-visitor-map-aarch64.h @@ -2643,7 +2643,7 @@ {"bfdot_asimdelem_e"_h, &VISITORCLASS::VisitUnimplemented}, \ {"bfdot_asimdsame2_d"_h, &VISITORCLASS::VisitUnimplemented}, \ {"bfmlal_asimdelem_f"_h, &VISITORCLASS::VisitUnimplemented}, \ - {"bfmlal_asimdsame2_f"_h, &VISITORCLASS::VisitUnimplemented}, \ + {"bfmlal_asimdsame2_f"_h, &VISITORCLASS::VisitUnimplemented}, \ {"bfmmla_asimdsame2_e"_h, &VISITORCLASS::VisitUnimplemented}, \ {"dsb_bon_barriers"_h, &VISITORCLASS::VisitUnimplemented}, \ {"eor3_vvv16_crypto4"_h, &VISITORCLASS::VisitUnimplemented}, \ @@ -2689,13 +2689,13 @@ {"xar_vvv2_crypto3_imm6"_h, &VISITORCLASS::VisitUnimplemented}, \ {"bfcvt_z_p_z_s2bf"_h, &VISITORCLASS::VisitUnimplemented}, \ {"bfcvtnt_z_p_z_s2bf"_h, &VISITORCLASS::VisitUnimplemented}, \ - {"bfdot_z_zzz"_h, &VISITORCLASS::VisitUnimplemented}, \ - {"bfdot_z_zzzi"_h, &VISITORCLASS::VisitUnimplemented}, \ - {"bfmlalb_z_zzz"_h, &VISITORCLASS::VisitUnimplemented}, \ - {"bfmlalb_z_zzzi"_h, &VISITORCLASS::VisitUnimplemented}, \ - {"bfmlalt_z_zzz"_h, &VISITORCLASS::VisitUnimplemented}, \ - {"bfmlalt_z_zzzi"_h, &VISITORCLASS::VisitUnimplemented}, \ - {"bfmmla_z_zzz"_h, &VISITORCLASS::VisitUnimplemented}, { \ + {"bfdot_z_zzz"_h, &VISITORCLASS::VisitUnimplemented}, \ + {"bfdot_z_zzzi"_h, &VISITORCLASS::VisitUnimplemented}, \ + {"bfmlalb_z_zzz"_h, &VISITORCLASS::VisitUnimplemented}, \ + {"bfmlalb_z_zzzi"_h, &VISITORCLASS::VisitUnimplemented}, \ + {"bfmlalt_z_zzz"_h, &VISITORCLASS::VisitUnimplemented}, \ + {"bfmlalt_z_zzzi"_h, &VISITORCLASS::VisitUnimplemented}, \ + {"bfmmla_z_zzz"_h, &VISITORCLASS::VisitUnimplemented}, { \ "unallocated"_h, &VISITORCLASS::VisitUnallocated \ } diff --git a/src/aarch64/simulator-aarch64.cc b/src/aarch64/simulator-aarch64.cc index 0a7f008d..1830eb4a 100644 --- a/src/aarch64/simulator-aarch64.cc +++ b/src/aarch64/simulator-aarch64.cc @@ -1753,7 +1753,9 @@ void Simulator::PrintAccess(int code, VIXL_ASSERT(GetPrintRegLaneCount(format) == 1); VIXL_ASSERT((strcmp(op, "->") == 0) || (strcmp(op, "<-") == 0)); if ((format & kPrintRegPartial) == 0) { - registers_[code].NotifyRegisterLogged(); + if (code != kZeroRegCode) { + registers_[code].NotifyRegisterLogged(); + } } // Scalar-format accesses use a simple format: // "# {reg}: 0x{value} -> {address}" @@ -1985,7 +1987,9 @@ void Simulator::PrintRead(int rt_code, PrintRegisterFormat format, uintptr_t address) { VIXL_ASSERT(GetPrintRegLaneCount(format) == 1); - registers_[rt_code].NotifyRegisterLogged(); + if (rt_code != kZeroRegCode) { + registers_[rt_code].NotifyRegisterLogged(); + } PrintAccess(rt_code, format, "<-", address); } @@ -2004,7 +2008,9 @@ void Simulator::PrintExtendingRead(int rt_code, // For sign- and zero-extension, make it clear that the resulting register // value is different from what is loaded from memory. VIXL_ASSERT(GetPrintRegLaneCount(format) == 1); - registers_[rt_code].NotifyRegisterLogged(); + if (rt_code != kZeroRegCode) { + registers_[rt_code].NotifyRegisterLogged(); + } PrintRegister(rt_code, format); PrintPartialAccess(1, 0, @@ -2030,7 +2036,9 @@ void Simulator::PrintWrite(int rt_code, // value, only print the relevant part of the value. format = GetPrintRegPartial(format); VIXL_ASSERT(GetPrintRegLaneCount(format) == 1); - registers_[rt_code].NotifyRegisterLogged(); + if (rt_code != kZeroRegCode) { + registers_[rt_code].NotifyRegisterLogged(); + } PrintAccess(rt_code, format, "->", address); } diff --git a/test/aarch64/test-trace-aarch64.cc b/test/aarch64/test-trace-aarch64.cc index 27e71d57..1eb70100 100644 --- a/test/aarch64/test-trace-aarch64.cc +++ b/test/aarch64/test-trace-aarch64.cc @@ -371,6 +371,16 @@ static void GenerateTestSequenceBase(MacroAssembler* masm) { __ uxtw(w8, w9); __ uxtw(x10, x11); + // Regression tests. + __ stp(x10, xzr, MemOperand(sp, -16, PreIndex)); + __ ldp(x10, xzr, MemOperand(sp, 16, PostIndex)); + __ str(xzr, MemOperand(sp, -16, PreIndex)); + __ ldrsb(xzr, MemOperand(sp, 16, PostIndex)); + __ str(xzr, MemOperand(sp, -16, PreIndex)); + __ ldrsh(xzr, MemOperand(sp, 16, PostIndex)); + __ str(xzr, MemOperand(sp, -16, PreIndex)); + __ ldrsw(xzr, MemOperand(sp, 16, PostIndex)); + // Branch tests. { Label end; diff --git a/test/test-trace-reference/log-all b/test/test-trace-reference/log-all index 9e9904ab..948a13f1 100644 --- a/test/test-trace-reference/log-all +++ b/test/test-trace-reference/log-all @@ -1034,6 +1034,35 @@ # w8: 0x00000001 0x~~~~~~~~~~~~~~~~ d3407d6a ubfx x10, x11, #0, #32 # x10: 0x0000000000000000 +0x~~~~~~~~~~~~~~~~ a9bf7fea stp x10, xzr, [sp, #-16]! +# sp: 0x~~~~~~~~~~~~~~~~ +# x10<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~ +# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~ +0x~~~~~~~~~~~~~~~~ a8c17fea ldp x10, xzr, [sp], #16 +# x10: 0x0000000000000000 <- 0x~~~~~~~~~~~~~~~~ +# xzr: 0x0000000000000000 <- 0x~~~~~~~~~~~~~~~~ +# sp: 0x~~~~~~~~~~~~~~~~ +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +# sp: 0x~~~~~~~~~~~~~~~~ +# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~ +0x~~~~~~~~~~~~~~~~ 388107ff ldrsb xzr, [sp], #16 +# xzr: 0x0000000000000000 +# ╙─ 0x00 <- 0x~~~~~~~~~~~~~~~~ +# sp: 0x~~~~~~~~~~~~~~~~ +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +# sp: 0x~~~~~~~~~~~~~~~~ +# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~ +0x~~~~~~~~~~~~~~~~ 788107ff ldrsh xzr, [sp], #16 +# xzr: 0x0000000000000000 +# ╙─ 0x0000 <- 0x~~~~~~~~~~~~~~~~ +# sp: 0x~~~~~~~~~~~~~~~~ +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +# sp: 0x~~~~~~~~~~~~~~~~ +# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~ +0x~~~~~~~~~~~~~~~~ b88107ff ldrsw xzr, [sp], #16 +# xzr: 0x0000000000000000 +# ╙─ 0x00000000 <- 0x~~~~~~~~~~~~~~~~ +# sp: 0x~~~~~~~~~~~~~~~~ 0x~~~~~~~~~~~~~~~~ 14000001 b #+0x4 (addr 0x~~~~~~~~~~~~~~~~) # Branch to 0x~~~~~~~~~~~~~~~~. 0x~~~~~~~~~~~~~~~~ eb030063 subs x3, x3, x3 diff --git a/test/test-trace-reference/log-all-colour b/test/test-trace-reference/log-all-colour index bf5ec20f..31a0790b 100644 --- a/test/test-trace-reference/log-all-colour +++ b/test/test-trace-reference/log-all-colour @@ -1034,6 +1034,35 @@ # [1;36m w8: [0;36m 0x00000001[0;m 0x~~~~~~~~~~~~~~~~ d3407d6a ubfx x10, x11, #0, #32 # [1;36m x10: [0;36m0x0000000000000000[0;m +0x~~~~~~~~~~~~~~~~ a9bf7fea stp x10, xzr, [sp, #-16]! +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m x10<63:0>: [0;36m0x0000000000000000[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr<63:0>: [0;36m0x0000000000000000[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m +0x~~~~~~~~~~~~~~~~ a8c17fea ldp x10, xzr, [sp], #16 +# [1;36m x10: [0;36m0x0000000000000000[0;m <- [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr: [0;36m0x0000000000000000[0;m <- [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr<63:0>: [0;36m0x0000000000000000[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m +0x~~~~~~~~~~~~~~~~ 388107ff ldrsb xzr, [sp], #16 +# [1;36m xzr: [0;36m0x0000000000000000[0;m +# ╙─ 0x00 <- [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr<63:0>: [0;36m0x0000000000000000[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m +0x~~~~~~~~~~~~~~~~ 788107ff ldrsh xzr, [sp], #16 +# [1;36m xzr: [0;36m0x0000000000000000[0;m +# ╙─ 0x0000 <- [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr<63:0>: [0;36m0x0000000000000000[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m +0x~~~~~~~~~~~~~~~~ b88107ff ldrsw xzr, [sp], #16 +# [1;36m xzr: [0;36m0x0000000000000000[0;m +# ╙─ 0x00000000 <- [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m 0x~~~~~~~~~~~~~~~~ 14000001 b #+0x4 (addr 0x~~~~~~~~~~~~~~~~) # [0;30m[43mBranch[0;m to 0x~~~~~~~~~~~~~~~~. 0x~~~~~~~~~~~~~~~~ eb030063 subs x3, x3, x3 diff --git a/test/test-trace-reference/log-branch b/test/test-trace-reference/log-branch index 0491d505..f1096e6a 100644 --- a/test/test-trace-reference/log-branch +++ b/test/test-trace-reference/log-branch @@ -44,6 +44,11 @@ # x3<7:0>: 0xff -> 0x~~~~~~~~~~~~~~~~ # x4<15:0>: 0x0001 -> 0x~~~~~~~~~~~~~~~~ # x5<15:0>: 0x8500 -> 0x~~~~~~~~~~~~~~~~ +# x10<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~ +# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~ +# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~ +# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~ +# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~ # v21<127:0>: 0x000000000000000000000000ffff8007 # ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╙─ 0x07 -> 0x~~~~~~~~~~~~~~~~ # ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╙─── 0x80 -> 0x~~~~~~~~~~~~~~~~ diff --git a/test/test-trace-reference/log-branch-colour b/test/test-trace-reference/log-branch-colour index 7caf1a45..8a438448 100644 --- a/test/test-trace-reference/log-branch-colour +++ b/test/test-trace-reference/log-branch-colour @@ -44,6 +44,11 @@ # [1;36m x3<7:0>: [0;36m 0xff[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m # [1;36m x4<15:0>: [0;36m 0x0001[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m # [1;36m x5<15:0>: [0;36m 0x8500[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m x10<63:0>: [0;36m0x0000000000000000[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr<63:0>: [0;36m0x0000000000000000[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr<63:0>: [0;36m0x0000000000000000[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr<63:0>: [0;36m0x0000000000000000[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr<63:0>: [0;36m0x0000000000000000[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m # [1;35m v21<127:0>: [0;35m0x000000000000000000000000ffff8007[0;m # ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╙─ 0x07 -> [1;34m0x~~~~~~~~~~~~~~~~[0;m # ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╙─── 0x80 -> [1;34m0x~~~~~~~~~~~~~~~~[0;m diff --git a/test/test-trace-reference/log-cpufeatures b/test/test-trace-reference/log-cpufeatures index 795d3580..0b24590f 100644 --- a/test/test-trace-reference/log-cpufeatures +++ b/test/test-trace-reference/log-cpufeatures @@ -314,6 +314,14 @@ 0x~~~~~~~~~~~~~~~~ d3403ce6 uxth x6, w7 0x~~~~~~~~~~~~~~~~ 53007d28 lsr w8, w9, #0 0x~~~~~~~~~~~~~~~~ d3407d6a ubfx x10, x11, #0, #32 +0x~~~~~~~~~~~~~~~~ a9bf7fea stp x10, xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ a8c17fea ldp x10, xzr, [sp], #16 +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ 388107ff ldrsb xzr, [sp], #16 +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ 788107ff ldrsh xzr, [sp], #16 +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ b88107ff ldrsw xzr, [sp], #16 0x~~~~~~~~~~~~~~~~ 14000001 b #+0x4 (addr 0x~~~~~~~~~~~~~~~~) 0x~~~~~~~~~~~~~~~~ eb030063 subs x3, x3, x3 0x~~~~~~~~~~~~~~~~ 54000061 b.ne #+0xc (addr 0x~~~~~~~~~~~~~~~~) diff --git a/test/test-trace-reference/log-cpufeatures-colour b/test/test-trace-reference/log-cpufeatures-colour index 170f34d5..dcbe4d81 100644 --- a/test/test-trace-reference/log-cpufeatures-colour +++ b/test/test-trace-reference/log-cpufeatures-colour @@ -314,6 +314,14 @@ 0x~~~~~~~~~~~~~~~~ d3403ce6 uxth x6, w7 0x~~~~~~~~~~~~~~~~ 53007d28 lsr w8, w9, #0 0x~~~~~~~~~~~~~~~~ d3407d6a ubfx x10, x11, #0, #32 +0x~~~~~~~~~~~~~~~~ a9bf7fea stp x10, xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ a8c17fea ldp x10, xzr, [sp], #16 +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ 388107ff ldrsb xzr, [sp], #16 +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ 788107ff ldrsh xzr, [sp], #16 +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ b88107ff ldrsw xzr, [sp], #16 0x~~~~~~~~~~~~~~~~ 14000001 b #+0x4 (addr 0x~~~~~~~~~~~~~~~~) 0x~~~~~~~~~~~~~~~~ eb030063 subs x3, x3, x3 0x~~~~~~~~~~~~~~~~ 54000061 b.ne #+0xc (addr 0x~~~~~~~~~~~~~~~~) diff --git a/test/test-trace-reference/log-cpufeatures-custom b/test/test-trace-reference/log-cpufeatures-custom index 3975ec9d..e64e6f72 100644 --- a/test/test-trace-reference/log-cpufeatures-custom +++ b/test/test-trace-reference/log-cpufeatures-custom @@ -314,6 +314,14 @@ 0x~~~~~~~~~~~~~~~~ d3403ce6 uxth x6, w7 0x~~~~~~~~~~~~~~~~ 53007d28 lsr w8, w9, #0 0x~~~~~~~~~~~~~~~~ d3407d6a ubfx x10, x11, #0, #32 +0x~~~~~~~~~~~~~~~~ a9bf7fea stp x10, xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ a8c17fea ldp x10, xzr, [sp], #16 +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ 388107ff ldrsb xzr, [sp], #16 +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ 788107ff ldrsh xzr, [sp], #16 +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ b88107ff ldrsw xzr, [sp], #16 0x~~~~~~~~~~~~~~~~ 14000001 b #+0x4 (addr 0x~~~~~~~~~~~~~~~~) 0x~~~~~~~~~~~~~~~~ eb030063 subs x3, x3, x3 0x~~~~~~~~~~~~~~~~ 54000061 b.ne #+0xc (addr 0x~~~~~~~~~~~~~~~~) diff --git a/test/test-trace-reference/log-disasm b/test/test-trace-reference/log-disasm index 53f8f010..7705af15 100644 --- a/test/test-trace-reference/log-disasm +++ b/test/test-trace-reference/log-disasm @@ -314,6 +314,14 @@ 0x~~~~~~~~~~~~~~~~ d3403ce6 uxth x6, w7 0x~~~~~~~~~~~~~~~~ 53007d28 lsr w8, w9, #0 0x~~~~~~~~~~~~~~~~ d3407d6a ubfx x10, x11, #0, #32 +0x~~~~~~~~~~~~~~~~ a9bf7fea stp x10, xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ a8c17fea ldp x10, xzr, [sp], #16 +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ 388107ff ldrsb xzr, [sp], #16 +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ 788107ff ldrsh xzr, [sp], #16 +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ b88107ff ldrsw xzr, [sp], #16 0x~~~~~~~~~~~~~~~~ 14000001 b #+0x4 (addr 0x~~~~~~~~~~~~~~~~) 0x~~~~~~~~~~~~~~~~ eb030063 subs x3, x3, x3 0x~~~~~~~~~~~~~~~~ 54000061 b.ne #+0xc (addr 0x~~~~~~~~~~~~~~~~) diff --git a/test/test-trace-reference/log-disasm-colour b/test/test-trace-reference/log-disasm-colour index 53f8f010..7705af15 100644 --- a/test/test-trace-reference/log-disasm-colour +++ b/test/test-trace-reference/log-disasm-colour @@ -314,6 +314,14 @@ 0x~~~~~~~~~~~~~~~~ d3403ce6 uxth x6, w7 0x~~~~~~~~~~~~~~~~ 53007d28 lsr w8, w9, #0 0x~~~~~~~~~~~~~~~~ d3407d6a ubfx x10, x11, #0, #32 +0x~~~~~~~~~~~~~~~~ a9bf7fea stp x10, xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ a8c17fea ldp x10, xzr, [sp], #16 +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ 388107ff ldrsb xzr, [sp], #16 +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ 788107ff ldrsh xzr, [sp], #16 +0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]! +0x~~~~~~~~~~~~~~~~ b88107ff ldrsw xzr, [sp], #16 0x~~~~~~~~~~~~~~~~ 14000001 b #+0x4 (addr 0x~~~~~~~~~~~~~~~~) 0x~~~~~~~~~~~~~~~~ eb030063 subs x3, x3, x3 0x~~~~~~~~~~~~~~~~ 54000061 b.ne #+0xc (addr 0x~~~~~~~~~~~~~~~~) diff --git a/test/test-trace-reference/log-regs b/test/test-trace-reference/log-regs index c350f523..10c44027 100644 --- a/test/test-trace-reference/log-regs +++ b/test/test-trace-reference/log-regs @@ -393,6 +393,22 @@ # x6: 0x000000000000ffff # w8: 0x00000001 # x10: 0x0000000000000000 +# sp: 0x~~~~~~~~~~~~~~~~ +# x10: 0x0000000000000000 <- 0x~~~~~~~~~~~~~~~~ +# xzr: 0x0000000000000000 <- 0x~~~~~~~~~~~~~~~~ +# sp: 0x~~~~~~~~~~~~~~~~ +# sp: 0x~~~~~~~~~~~~~~~~ +# xzr: 0x0000000000000000 +# ╙─ 0x00 <- 0x~~~~~~~~~~~~~~~~ +# sp: 0x~~~~~~~~~~~~~~~~ +# sp: 0x~~~~~~~~~~~~~~~~ +# xzr: 0x0000000000000000 +# ╙─ 0x0000 <- 0x~~~~~~~~~~~~~~~~ +# sp: 0x~~~~~~~~~~~~~~~~ +# sp: 0x~~~~~~~~~~~~~~~~ +# xzr: 0x0000000000000000 +# ╙─ 0x00000000 <- 0x~~~~~~~~~~~~~~~~ +# sp: 0x~~~~~~~~~~~~~~~~ # x3: 0x0000000000000000 # w18: 0x00000000 # w29: 0x00000000 diff --git a/test/test-trace-reference/log-regs-colour b/test/test-trace-reference/log-regs-colour index 55839980..4e877d74 100644 --- a/test/test-trace-reference/log-regs-colour +++ b/test/test-trace-reference/log-regs-colour @@ -393,6 +393,22 @@ # [1;36m x6: [0;36m0x000000000000ffff[0;m # [1;36m w8: [0;36m 0x00000001[0;m # [1;36m x10: [0;36m0x0000000000000000[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m x10: [0;36m0x0000000000000000[0;m <- [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr: [0;36m0x0000000000000000[0;m <- [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr: [0;36m0x0000000000000000[0;m +# ╙─ 0x00 <- [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr: [0;36m0x0000000000000000[0;m +# ╙─ 0x0000 <- [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr: [0;36m0x0000000000000000[0;m +# ╙─ 0x00000000 <- [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m # [1;36m x3: [0;36m0x0000000000000000[0;m # [1;36m w18: [0;36m 0x00000000[0;m # [1;36m w29: [0;36m 0x00000000[0;m diff --git a/test/test-trace-reference/log-state b/test/test-trace-reference/log-state index 0b5069dc..419e4796 100644 --- a/test/test-trace-reference/log-state +++ b/test/test-trace-reference/log-state @@ -672,6 +672,22 @@ # x6: 0x000000000000ffff # w8: 0x00000001 # x10: 0x0000000000000000 +# sp: 0x~~~~~~~~~~~~~~~~ +# x10: 0x0000000000000000 <- 0x~~~~~~~~~~~~~~~~ +# xzr: 0x0000000000000000 <- 0x~~~~~~~~~~~~~~~~ +# sp: 0x~~~~~~~~~~~~~~~~ +# sp: 0x~~~~~~~~~~~~~~~~ +# xzr: 0x0000000000000000 +# ╙─ 0x00 <- 0x~~~~~~~~~~~~~~~~ +# sp: 0x~~~~~~~~~~~~~~~~ +# sp: 0x~~~~~~~~~~~~~~~~ +# xzr: 0x0000000000000000 +# ╙─ 0x0000 <- 0x~~~~~~~~~~~~~~~~ +# sp: 0x~~~~~~~~~~~~~~~~ +# sp: 0x~~~~~~~~~~~~~~~~ +# xzr: 0x0000000000000000 +# ╙─ 0x00000000 <- 0x~~~~~~~~~~~~~~~~ +# sp: 0x~~~~~~~~~~~~~~~~ # NZCV: N:0 Z:1 C:1 V:0 # x3: 0x0000000000000000 # NZCV: N:1 Z:0 C:0 V:0 diff --git a/test/test-trace-reference/log-state-colour b/test/test-trace-reference/log-state-colour index 3234c7a8..85acd79c 100644 --- a/test/test-trace-reference/log-state-colour +++ b/test/test-trace-reference/log-state-colour @@ -672,6 +672,22 @@ # [1;36m x6: [0;36m0x000000000000ffff[0;m # [1;36m w8: [0;36m 0x00000001[0;m # [1;36m x10: [0;36m0x0000000000000000[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m x10: [0;36m0x0000000000000000[0;m <- [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr: [0;36m0x0000000000000000[0;m <- [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr: [0;36m0x0000000000000000[0;m +# ╙─ 0x00 <- [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr: [0;36m0x0000000000000000[0;m +# ╙─ 0x0000 <- [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr: [0;36m0x0000000000000000[0;m +# ╙─ 0x00000000 <- [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m sp: [0;36m0x~~~~~~~~~~~~~~~~[0;m # [1;37mNZCV: [0;mN:0 Z:1 C:1 V:0[0;m # [1;36m x3: [0;36m0x0000000000000000[0;m # [1;37mNZCV: [0;mN:1 Z:0 C:0 V:0[0;m diff --git a/test/test-trace-reference/log-write b/test/test-trace-reference/log-write index 0491d505..f1096e6a 100644 --- a/test/test-trace-reference/log-write +++ b/test/test-trace-reference/log-write @@ -44,6 +44,11 @@ # x3<7:0>: 0xff -> 0x~~~~~~~~~~~~~~~~ # x4<15:0>: 0x0001 -> 0x~~~~~~~~~~~~~~~~ # x5<15:0>: 0x8500 -> 0x~~~~~~~~~~~~~~~~ +# x10<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~ +# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~ +# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~ +# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~ +# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~ # v21<127:0>: 0x000000000000000000000000ffff8007 # ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╙─ 0x07 -> 0x~~~~~~~~~~~~~~~~ # ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╙─── 0x80 -> 0x~~~~~~~~~~~~~~~~ diff --git a/test/test-trace-reference/log-write-colour b/test/test-trace-reference/log-write-colour index 7caf1a45..8a438448 100644 --- a/test/test-trace-reference/log-write-colour +++ b/test/test-trace-reference/log-write-colour @@ -44,6 +44,11 @@ # [1;36m x3<7:0>: [0;36m 0xff[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m # [1;36m x4<15:0>: [0;36m 0x0001[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m # [1;36m x5<15:0>: [0;36m 0x8500[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m x10<63:0>: [0;36m0x0000000000000000[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr<63:0>: [0;36m0x0000000000000000[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr<63:0>: [0;36m0x0000000000000000[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr<63:0>: [0;36m0x0000000000000000[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m +# [1;36m xzr<63:0>: [0;36m0x0000000000000000[0;m -> [1;34m0x~~~~~~~~~~~~~~~~[0;m # [1;35m v21<127:0>: [0;35m0x000000000000000000000000ffff8007[0;m # ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╙─ 0x07 -> [1;34m0x~~~~~~~~~~~~~~~~[0;m # ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╙─── 0x80 -> [1;34m0x~~~~~~~~~~~~~~~~[0;m diff --git a/tools/code_coverage.log b/tools/code_coverage.log index e76eb8d2..d7c551d8 100644 --- a/tools/code_coverage.log +++ b/tools/code_coverage.log @@ -14,3 +14,4 @@ 1660224011 82.79% 97.51% 95.50% 1663161852 82.79% 97.51% 95.50% 1666104118 82.79% 97.51% 95.50% +1673432155 82.79% 97.51% 95.51% |