From 1783043af1d4af65914f5ff2e167202abb7576c0 Mon Sep 17 00:00:00 2001 From: Tim Newsome Date: Wed, 1 Jun 2016 13:16:29 -0700 Subject: Add dret instruction and debug CSRs. (#5) --- encoding.h | 23 +++++++++++++++++++++++ opcodes | 1 + parse-opcodes | 3 +++ 3 files changed, 27 insertions(+) diff --git a/encoding.h b/encoding.h index 149f855..7ba1df1 100644 --- a/encoding.h +++ b/encoding.h @@ -33,6 +33,29 @@ #define SSTATUS32_SD 0x80000000 #define SSTATUS64_SD 0x8000000000000000 +#define DCSR_XDEBUGVER (3<<30) +#define DCSR_NDRESET (1<<29) +#define DCSR_FULLRESET (1<<28) +#define DCSR_HWBPCOUNT (0xfff<<16) +#define DCSR_EBREAKM (1<<15) +#define DCSR_EBREAKH (1<<14) +#define DCSR_EBREAKS (1<<13) +#define DCSR_EBREAKU (1<<12) +#define DCSR_STOPCYCLE (1<<10) +#define DCSR_STOPTIME (1<<9) +#define DCSR_CAUSE (7<<6) +#define DCSR_DEBUGINT (1<<5) +#define DCSR_HALT (1<<3) +#define DCSR_STEP (1<<2) +#define DCSR_PRV (3<<0) + +#define DCSR_CAUSE_NONE 0 +#define DCSR_CAUSE_SWBP 1 +#define DCSR_CAUSE_HWBP 2 +#define DCSR_CAUSE_DEBUGINT 3 +#define DCSR_CAUSE_STEP 4 +#define DCSR_CAUSE_HALT 5 + #define MIP_SSIP (1 << IRQ_S_SOFT) #define MIP_HSIP (1 << IRQ_H_SOFT) #define MIP_MSIP (1 << IRQ_M_SOFT) diff --git a/opcodes b/opcodes index 7b6fc2a..c98b19f 100644 --- a/opcodes +++ b/opcodes @@ -119,6 +119,7 @@ uret 11..7=0 19..15=0 31..20=0x002 14..12=0 6..2=0x1C 1..0=3 sret 11..7=0 19..15=0 31..20=0x102 14..12=0 6..2=0x1C 1..0=3 hret 11..7=0 19..15=0 31..20=0x202 14..12=0 6..2=0x1C 1..0=3 mret 11..7=0 19..15=0 31..20=0x302 14..12=0 6..2=0x1C 1..0=3 +dret 11..7=0 19..15=0 31..20=0x7b2 14..12=0 6..2=0x1C 1..0=3 sfence.vm 11..7=0 rs1 31..20=0x104 14..12=0 6..2=0x1C 1..0=3 wfi 11..7=0 19..15=0 31..20=0x105 14..12=0 6..2=0x1C 1..0=3 csrrw rd rs1 imm12 14..12=1 6..2=0x1C 1..0=3 diff --git a/parse-opcodes b/parse-opcodes index 04bf70f..66fcd73 100755 --- a/parse-opcodes +++ b/parse-opcodes @@ -93,6 +93,9 @@ csrs = [ (0x704, 'mscycle_delta'), (0x705, 'mstime_delta'), (0x706, 'msinstret_delta'), + (0x7b0, 'dcsr'), + (0x7b1, 'dpc'), + (0x7b2, 'dscratch'), # Standard Machine RO (0xF00, 'mcycle'), -- cgit v1.1