From 7c9510e7a7e224ee3d51ebe736a58f81017a71a0 Mon Sep 17 00:00:00 2001 From: Tim Newsome Date: Tue, 21 Jun 2016 19:20:27 -0700 Subject: [PATCH] Test step over invalid instruction. --- debug/gdbserver.py | 4 ++-- debug/programs/step.S | 21 ++++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/debug/gdbserver.py b/debug/gdbserver.py index 030b6a1..f7d8d2e 100755 --- a/debug/gdbserver.py +++ b/debug/gdbserver.py @@ -302,10 +302,10 @@ class StepTest(DeleteServer): def test_step(self): main = self.gdb.p("$pc") - for expected in (4, 0xc, 0x10, 0x18, 0x14, 0x14): + for expected in (4, 8, 0xc, 0x10, 0x18, 0x1c, 0x28, 0x20, 0x2c, 0x2c): self.gdb.stepi() pc = self.gdb.p("$pc") - self.assertEqual(pc - main, expected) + self.assertEqual("%x" % pc, "%x" % (expected + main)) class RegsTest(DeleteServer): def setUp(self): diff --git a/debug/programs/step.S b/debug/programs/step.S index 49f82d6..6601548 100644 --- a/debug/programs/step.S +++ b/debug/programs/step.S @@ -3,15 +3,22 @@ .global main main: - li t0, 5 // 0 - beq zero, zero, one // 0x4 - nop // 0x8 + la t0, trap_entry // 0, 4 + csrw mtvec, t0 // 0x8 + + li t0, 5 // 0xc + beq zero, zero, one // 0x10 + nop // 0x14 one: - beq zero, t0, one // 0xc - jal two // 0x10 + beq zero, t0, one // 0x18 + jal two // 0x1c three: - j three // 0x14 + .word 0 // 0x20 + nop // 0x24 two: - ret // 0x18 + ret // 0x28 + +trap_entry: + j trap_entry // 0x2c -- 2.30.2