From cd10c7174835240b86a8ca72ce17aa7422d4970f Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Wed, 8 Feb 2017 14:33:12 -0800 Subject: Encode VM type in sptbr, not mstatus https://github.com/riscv/riscv-isa-manual/issues/4 --- encoding.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/encoding.h b/encoding.h index 85e97be..329d012 100644 --- a/encoding.h +++ b/encoding.h @@ -114,6 +114,20 @@ #define VM_SV39 9 #define VM_SV48 10 +#define SPTBR32_MODE 0x80000000 +#define SPTBR32_ASID 0x7FC00000 +#define SPTBR32_PPN 0x003FFFFF +#define SPTBR64_MODE 0xE000000000000000 +#define SPTBR64_ASID 0x1FFFE00000000000 +#define SPTBR64_PPN 0x0000003FFFFFFFFF + +#define SPTBR_MODE_OFF 0 +#define SPTBR_MODE_SV32 1 +#define SPTBR_MODE_SV39 4 +#define SPTBR_MODE_SV48 5 +#define SPTBR_MODE_SV57 6 +#define SPTBR_MODE_SV64 7 + #define IRQ_S_SOFT 1 #define IRQ_H_SOFT 2 #define IRQ_M_SOFT 3 -- cgit v1.1 From 03a7a339e7aa82a45c3258124bac82764323e6e3 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Tue, 14 Feb 2017 16:02:15 -0800 Subject: Don't update binutils' riscv-opc.h automatically anymore It's upstreamed, so avoid the false impression it can easily change. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5983051..114e6b5 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ GAS_H := ../riscv-gnu-toolchain/riscv-binutils-gdb/include/opcode/riscv-opc.h ALL_OPCODES := opcodes-pseudo opcodes opcodes-rvc opcodes-rvc-pseudo opcodes-custom -install: $(ISASIM_H) $(PK_H) $(FESVR_H) $(ENV_H) $(GAS_H) inst.chisel instr-table.tex priv-instr-table.tex +install: $(ISASIM_H) $(PK_H) $(FESVR_H) $(ENV_H) inst.chisel instr-table.tex priv-instr-table.tex $(ISASIM_H) $(PK_H) $(FESVR_H) $(ENV_H): $(ALL_OPCODES) parse-opcodes encoding.h cp encoding.h $@ -- cgit v1.1 From 689c591e0e7218732af884f0fac97e8ca2605cf8 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Mon, 20 Feb 2017 21:50:27 -0800 Subject: Drop mstatus.VM field --- encoding.h | 1 - 1 file changed, 1 deletion(-) diff --git a/encoding.h b/encoding.h index 329d012..0beea49 100644 --- a/encoding.h +++ b/encoding.h @@ -19,7 +19,6 @@ #define MSTATUS_MPRV 0x00020000 #define MSTATUS_PUM 0x00040000 #define MSTATUS_MXR 0x00080000 -#define MSTATUS_VM 0x1F000000 #define MSTATUS32_SD 0x80000000 #define MSTATUS64_SD 0x8000000000000000 -- cgit v1.1 From ee4249cf363837a8b5551aa6671a901a39786d2f Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Mon, 20 Feb 2017 21:50:40 -0800 Subject: Remove sfence.vm and add sfence.vma --- opcodes | 2 +- parse-opcodes | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/opcodes b/opcodes index e4cc6a6..ebf899f 100644 --- a/opcodes +++ b/opcodes @@ -120,7 +120,7 @@ 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 +sfence.vma 11..7=0 rs1 rs2 31..25=0x09 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 csrrs rd rs1 imm12 14..12=2 6..2=0x1C 1..0=3 diff --git a/parse-opcodes b/parse-opcodes index 0437480..3818309 100755 --- a/parse-opcodes +++ b/parse-opcodes @@ -675,8 +675,6 @@ def print_footer(caption=''): """ % caption def print_inst(n): - is_system = (match[n] & 0x7f) == (match['scall'] & 0x7f) - if n == 'fence' or n == 'fence.i': print_fence_type(n, match[n], arguments[n]) elif 'aqrl' in arguments[n]: @@ -689,9 +687,9 @@ def print_inst(n): print_u_type(n, match[n], arguments[n]) elif 'jimm20' in arguments[n]: print_uj_type(n, match[n], arguments[n]) - elif is_system and n[:3] == 'csr': + elif n[:3] == 'csr': print_csr_type(n, match[n], arguments[n]) - elif 'imm12' in arguments[n] or is_system: + elif 'imm12' in arguments[n] or n == 'ecall' or n == 'ebreak': print_i_type(n, match[n], arguments[n]) elif 'imm12hi' in arguments[n]: print_s_type(n, match[n], arguments[n]) @@ -713,7 +711,7 @@ def make_supervisor_latex_table(): print_subtitle('Interrupt-Management Instructions') print_insts('wfi') print_subtitle('Memory-Management Instructions') - print_insts('sfence.vm') + print_insts('sfence.vma') print_footer('\\caption{RISC-V Privileged Instructions}') def make_latex_table(): -- cgit v1.1 From 282321b3a43577532abc54dafa60d0d6cfc74fd2 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Mon, 20 Feb 2017 22:28:37 -0800 Subject: Use gcc csr register constraint --- encoding.h | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/encoding.h b/encoding.h index 0beea49..93cf5cf 100644 --- a/encoding.h +++ b/encoding.h @@ -184,30 +184,18 @@ __tmp; }) #define write_csr(reg, val) ({ \ - if (__builtin_constant_p(val) && (unsigned long)(val) < 32) \ - asm volatile ("csrw " #reg ", %0" :: "i"(val)); \ - else \ - asm volatile ("csrw " #reg ", %0" :: "r"(val)); }) + asm volatile ("csrw " #reg ", %0" :: "rK"(val)); }) #define swap_csr(reg, val) ({ unsigned long __tmp; \ - if (__builtin_constant_p(val) && (unsigned long)(val) < 32) \ - asm volatile ("csrrw %0, " #reg ", %1" : "=r"(__tmp) : "i"(val)); \ - else \ - asm volatile ("csrrw %0, " #reg ", %1" : "=r"(__tmp) : "r"(val)); \ + asm volatile ("csrrw %0, " #reg ", %1" : "=r"(__tmp) : "rK"(val)); \ __tmp; }) #define set_csr(reg, bit) ({ unsigned long __tmp; \ - if (__builtin_constant_p(bit) && (unsigned long)(bit) < 32) \ - asm volatile ("csrrs %0, " #reg ", %1" : "=r"(__tmp) : "i"(bit)); \ - else \ - asm volatile ("csrrs %0, " #reg ", %1" : "=r"(__tmp) : "r"(bit)); \ + asm volatile ("csrrs %0, " #reg ", %1" : "=r"(__tmp) : "rK"(bit)); \ __tmp; }) #define clear_csr(reg, bit) ({ unsigned long __tmp; \ - if (__builtin_constant_p(bit) && (unsigned long)(bit) < 32) \ - asm volatile ("csrrc %0, " #reg ", %1" : "=r"(__tmp) : "i"(bit)); \ - else \ - asm volatile ("csrrc %0, " #reg ", %1" : "=r"(__tmp) : "r"(bit)); \ + asm volatile ("csrrc %0, " #reg ", %1" : "=r"(__tmp) : "rK"(bit)); \ __tmp; }) #define rdtime() read_csr(time) -- cgit v1.1 From b6747a260e225c3eacc354335e7f12ff4b7b1f3e Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Thu, 9 Mar 2017 12:40:29 -0800 Subject: Update SPTBR fields --- encoding.h | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/encoding.h b/encoding.h index 93cf5cf..910bced 100644 --- a/encoding.h +++ b/encoding.h @@ -106,26 +106,19 @@ #define PRV_H 2 #define PRV_M 3 -#define VM_MBARE 0 -#define VM_MBB 1 -#define VM_MBBID 2 -#define VM_SV32 8 -#define VM_SV39 9 -#define VM_SV48 10 - #define SPTBR32_MODE 0x80000000 #define SPTBR32_ASID 0x7FC00000 #define SPTBR32_PPN 0x003FFFFF -#define SPTBR64_MODE 0xE000000000000000 -#define SPTBR64_ASID 0x1FFFE00000000000 -#define SPTBR64_PPN 0x0000003FFFFFFFFF +#define SPTBR64_MODE 0xF000000000000000 +#define SPTBR64_ASID 0x0FFFF00000000000 +#define SPTBR64_PPN 0x00000FFFFFFFFFFF #define SPTBR_MODE_OFF 0 #define SPTBR_MODE_SV32 1 -#define SPTBR_MODE_SV39 4 -#define SPTBR_MODE_SV48 5 -#define SPTBR_MODE_SV57 6 -#define SPTBR_MODE_SV64 7 +#define SPTBR_MODE_SV39 8 +#define SPTBR_MODE_SV48 9 +#define SPTBR_MODE_SV57 10 +#define SPTBR_MODE_SV64 11 #define IRQ_S_SOFT 1 #define IRQ_H_SOFT 2 @@ -167,10 +160,12 @@ # define MSTATUS_SD MSTATUS64_SD # define SSTATUS_SD SSTATUS64_SD # define RISCV_PGLEVEL_BITS 9 +# define SPTBR_MODE SPTBR64_MODE #else # define MSTATUS_SD MSTATUS32_SD # define SSTATUS_SD SSTATUS32_SD # define RISCV_PGLEVEL_BITS 10 +# define SPTBR_MODE SPTBR32_MODE #endif #define RISCV_PGSHIFT 12 #define RISCV_PGSIZE (1 << RISCV_PGSHIFT) -- cgit v1.1 From 2536e5268c031d734e2334e4d9afde1b8517db1b Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Thu, 9 Mar 2017 12:40:36 -0800 Subject: New counter-enable mechanism --- parse-opcodes | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/parse-opcodes b/parse-opcodes index 3818309..be88241 100755 --- a/parse-opcodes +++ b/parse-opcodes @@ -90,6 +90,7 @@ csrs = [ (0x100, 'sstatus'), (0x104, 'sie'), (0x105, 'stvec'), + (0x106, 'scounteren'), (0x140, 'sscratch'), (0x141, 'sepc'), (0x142, 'scause'), @@ -104,6 +105,7 @@ csrs = [ (0x303, 'mideleg'), (0x304, 'mie'), (0x305, 'mtvec'), + (0x306, 'mcounteren'), (0x340, 'mscratch'), (0x341, 'mepc'), (0x342, 'mcause'), @@ -147,8 +149,6 @@ csrs = [ (0xB1D, 'mhpmcounter29'), (0xB1E, 'mhpmcounter30'), (0xB1F, 'mhpmcounter31'), - (0x320, 'mucounteren'), - (0x321, 'mscounteren'), (0x323, 'mhpmevent3'), (0x324, 'mhpmevent4'), (0x325, 'mhpmevent5'), -- cgit v1.1 From ec5a82204dd924cb1e941064056262e6137355ea Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Thu, 23 Mar 2017 13:25:36 -0700 Subject: Add TW/TVM/TSR fields to mstatus --- encoding.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/encoding.h b/encoding.h index 910bced..08065eb 100644 --- a/encoding.h +++ b/encoding.h @@ -17,8 +17,11 @@ #define MSTATUS_FS 0x00006000 #define MSTATUS_XS 0x00018000 #define MSTATUS_MPRV 0x00020000 -#define MSTATUS_PUM 0x00040000 +#define MSTATUS_SUM 0x00040000 #define MSTATUS_MXR 0x00080000 +#define MSTATUS_TVM 0x00100000 +#define MSTATUS_TW 0x00200000 +#define MSTATUS_TSR 0x00400000 #define MSTATUS32_SD 0x80000000 #define MSTATUS64_SD 0x8000000000000000 -- cgit v1.1 From 771cd8afc10b438c1e7e8109287d40cb6bd3eddb Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Thu, 23 Mar 2017 13:25:50 -0700 Subject: Add PMP --- encoding.h | 13 ++++++++++++- parse-opcodes | 20 ++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/encoding.h b/encoding.h index 08065eb..99a75ea 100644 --- a/encoding.h +++ b/encoding.h @@ -32,7 +32,8 @@ #define SSTATUS_SPP 0x00000100 #define SSTATUS_FS 0x00006000 #define SSTATUS_XS 0x00018000 -#define SSTATUS_PUM 0x00040000 +#define SSTATUS_SUM 0x00040000 +#define SSTATUS_MXR 0x00080000 #define SSTATUS32_SD 0x80000000 #define SSTATUS64_SD 0x8000000000000000 @@ -123,6 +124,16 @@ #define SPTBR_MODE_SV57 10 #define SPTBR_MODE_SV64 11 +#define PMP_R 0x01 +#define PMP_W 0x02 +#define PMP_X 0x04 +#define PMP_M 0x08 +#define PMP_NAPOT 0x10 +#define PMP_TOR 0x20 +#define PMP_EN 0x40 +#define PMP_LOCK 0x80 +#define PMP_SHIFT 2 + #define IRQ_S_SOFT 1 #define IRQ_H_SOFT 2 #define IRQ_M_SOFT 3 diff --git a/parse-opcodes b/parse-opcodes index be88241..0b375b3 100755 --- a/parse-opcodes +++ b/parse-opcodes @@ -111,6 +111,26 @@ csrs = [ (0x342, 'mcause'), (0x343, 'mbadaddr'), (0x344, 'mip'), + (0x3a0, 'pmpcfg0'), + (0x3a1, 'pmpcfg1'), + (0x3a2, 'pmpcfg2'), + (0x3a3, 'pmpcfg3'), + (0x3b0, 'pmpaddr0'), + (0x3b1, 'pmpaddr1'), + (0x3b2, 'pmpaddr2'), + (0x3b3, 'pmpaddr3'), + (0x3b4, 'pmpaddr4'), + (0x3b5, 'pmpaddr5'), + (0x3b6, 'pmpaddr6'), + (0x3b7, 'pmpaddr7'), + (0x3b8, 'pmpaddr8'), + (0x3b9, 'pmpaddr9'), + (0x3ba, 'pmpaddr10'), + (0x3bb, 'pmpaddr11'), + (0x3bc, 'pmpaddr12'), + (0x3bd, 'pmpaddr13'), + (0x3be, 'pmpaddr14'), + (0x3bf, 'pmpaddr15'), (0x7a0, 'tselect'), (0x7a1, 'tdata1'), (0x7a2, 'tdata2'), -- cgit v1.1 From d86c50a5a6f44ed4b0e5506dbbd782fed3f1fedd Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Mon, 27 Mar 2017 14:25:34 -0700 Subject: Separate page faults from physical memory access exceptions --- encoding.h | 5 ++--- parse-opcodes | 9 ++++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/encoding.h b/encoding.h index 99a75ea..e6478b2 100644 --- a/encoding.h +++ b/encoding.h @@ -147,9 +147,8 @@ #define IRQ_HOST 13 #define DEFAULT_RSTVEC 0x00001000 -#define DEFAULT_NMIVEC 0x00001004 -#define DEFAULT_MTVEC 0x00001010 -#define CONFIG_STRING_ADDR 0x0000100C +#define CLINT_BASE 0x02000000 +#define CLINT_SIZE 0x000c0000 #define EXT_IO_BASE 0x40000000 #define DRAM_BASE 0x80000000 diff --git a/parse-opcodes b/parse-opcodes index 0b375b3..58ebcef 100755 --- a/parse-opcodes +++ b/parse-opcodes @@ -33,17 +33,20 @@ arglut['vseglen'] = (31,29) causes = [ (0x00, 'misaligned fetch'), - (0x01, 'fault fetch'), + (0x01, 'fetch access'), (0x02, 'illegal instruction'), (0x03, 'breakpoint'), (0x04, 'misaligned load'), - (0x05, 'fault load'), + (0x05, 'load access'), (0x06, 'misaligned store'), - (0x07, 'fault store'), + (0x07, 'store access'), (0x08, 'user_ecall'), (0x09, 'supervisor_ecall'), (0x0A, 'hypervisor_ecall'), (0x0B, 'machine_ecall'), + (0x0C, 'fetch page fault'), + (0x0D, 'load page fault'), + (0x0F, 'store page fault'), ] csrs = [ -- cgit v1.1 From e4c935733f653d97913fb0418abfa89f6f3d90d2 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Thu, 30 Mar 2017 00:22:27 -0700 Subject: New PMP encoding --- encoding.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/encoding.h b/encoding.h index e6478b2..e9006b9 100644 --- a/encoding.h +++ b/encoding.h @@ -127,13 +127,14 @@ #define PMP_R 0x01 #define PMP_W 0x02 #define PMP_X 0x04 -#define PMP_M 0x08 -#define PMP_NAPOT 0x10 -#define PMP_TOR 0x20 -#define PMP_EN 0x40 -#define PMP_LOCK 0x80 +#define PMP_A 0x18 +#define PMP_L 0x80 #define PMP_SHIFT 2 +#define PMP_TOR 0x08 +#define PMP_NA4 0x10 +#define PMP_NAPOT 0x18 + #define IRQ_S_SOFT 1 #define IRQ_H_SOFT 2 #define IRQ_M_SOFT 3 -- cgit v1.1 From 03c186e1197a574cd777d37c949039cf9e82dd76 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Tue, 25 Apr 2017 11:35:04 -0700 Subject: Remove hret instruction --- opcodes | 1 - parse-opcodes | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/opcodes b/opcodes index ebf899f..ac546ec 100644 --- a/opcodes +++ b/opcodes @@ -117,7 +117,6 @@ ecall 11..7=0 19..15=0 31..20=0x000 14..12=0 6..2=0x1C 1..0=3 ebreak 11..7=0 19..15=0 31..20=0x001 14..12=0 6..2=0x1C 1..0=3 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.vma 11..7=0 rs1 rs2 31..25=0x09 14..12=0 6..2=0x1C 1..0=3 diff --git a/parse-opcodes b/parse-opcodes index 58ebcef..7b94bee 100755 --- a/parse-opcodes +++ b/parse-opcodes @@ -730,7 +730,7 @@ def print_insts(*names): def make_supervisor_latex_table(): print_header('i') print_subtitle('Trap-Return Instructions') - print_insts('uret', 'sret', 'hret', 'mret') + print_insts('uret', 'sret', 'mret') print_subtitle('Interrupt-Management Instructions') print_insts('wfi') print_subtitle('Memory-Management Instructions') -- cgit v1.1 From 228c474c372a023a24a7ee5557883f35e7bdb6e8 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Tue, 25 Apr 2017 11:37:06 -0700 Subject: FMV.X.S/FMV.S.X -> FMV.X.W/FMV.W.X --- opcodes | 4 ++-- opcodes-pseudo | 4 ++++ parse-opcodes | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/opcodes b/opcodes index ac546ec..4303abd 100644 --- a/opcodes +++ b/opcodes @@ -184,7 +184,7 @@ fcvt.w.s rd rs1 24..20=0 31..27=0x18 rm 26..25=0 6..2=0x14 1..0=3 fcvt.wu.s rd rs1 24..20=1 31..27=0x18 rm 26..25=0 6..2=0x14 1..0=3 fcvt.l.s rd rs1 24..20=2 31..27=0x18 rm 26..25=0 6..2=0x14 1..0=3 fcvt.lu.s rd rs1 24..20=3 31..27=0x18 rm 26..25=0 6..2=0x14 1..0=3 -fmv.x.s rd rs1 24..20=0 31..27=0x1C 14..12=0 26..25=0 6..2=0x14 1..0=3 +fmv.x.w rd rs1 24..20=0 31..27=0x1C 14..12=0 26..25=0 6..2=0x14 1..0=3 fclass.s rd rs1 24..20=0 31..27=0x1C 14..12=1 26..25=0 6..2=0x14 1..0=3 fcvt.w.d rd rs1 24..20=0 31..27=0x18 rm 26..25=1 6..2=0x14 1..0=3 @@ -205,7 +205,7 @@ fcvt.s.w rd rs1 24..20=0 31..27=0x1A rm 26..25=0 6..2=0x14 1..0=3 fcvt.s.wu rd rs1 24..20=1 31..27=0x1A rm 26..25=0 6..2=0x14 1..0=3 fcvt.s.l rd rs1 24..20=2 31..27=0x1A rm 26..25=0 6..2=0x14 1..0=3 fcvt.s.lu rd rs1 24..20=3 31..27=0x1A rm 26..25=0 6..2=0x14 1..0=3 -fmv.s.x rd rs1 24..20=0 31..27=0x1E 14..12=0 26..25=0 6..2=0x14 1..0=3 +fmv.w.x rd rs1 24..20=0 31..27=0x1E 14..12=0 26..25=0 6..2=0x14 1..0=3 fcvt.d.w rd rs1 24..20=0 31..27=0x1A rm 26..25=1 6..2=0x14 1..0=3 fcvt.d.wu rd rs1 24..20=1 31..27=0x1A rm 26..25=1 6..2=0x14 1..0=3 diff --git a/opcodes-pseudo b/opcodes-pseudo index effae54..ab713f5 100644 --- a/opcodes-pseudo +++ b/opcodes-pseudo @@ -22,3 +22,7 @@ # Old names for ecall/ebreak @scall 11..7=0 19..15=0 31..20=0x000 14..12=0 6..2=0x1C 1..0=3 @sbreak 11..7=0 19..15=0 31..20=0x001 14..12=0 6..2=0x1C 1..0=3 + +# Old names for fmv.x.w/fmv.w.x +@fmv.x.s rd rs1 24..20=0 31..27=0x1C 14..12=0 26..25=0 6..2=0x14 1..0=3 +@fmv.s.x rd rs1 24..20=0 31..27=0x1E 14..12=0 26..25=0 6..2=0x14 1..0=3 diff --git a/parse-opcodes b/parse-opcodes index 7b94bee..df86efa 100755 --- a/parse-opcodes +++ b/parse-opcodes @@ -780,9 +780,9 @@ def make_latex_table(): print_insts('fmadd.s', 'fmsub.s', 'fnmsub.s', 'fnmadd.s') print_insts('fadd.s', 'fsub.s', 'fmul.s', 'fdiv.s', 'fsqrt.s') print_insts('fsgnj.s', 'fsgnjn.s', 'fsgnjx.s', 'fmin.s', 'fmax.s') - print_insts('fcvt.w.s', 'fcvt.wu.s', 'fmv.x.s') + print_insts('fcvt.w.s', 'fcvt.wu.s', 'fmv.x.w') print_insts('feq.s', 'flt.s', 'fle.s', 'fclass.s') - print_insts('fcvt.s.w', 'fcvt.s.wu', 'fmv.s.x') + print_insts('fcvt.s.w', 'fcvt.s.wu', 'fmv.w.x') print_footer() print_header('r','r4','i','s') -- cgit v1.1 From 18383e76bd447bf3d1887026791f938bf253a87b Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Tue, 25 Apr 2017 11:37:26 -0700 Subject: Add ECALL/EBREAK to privileged instruction table --- parse-opcodes | 2 ++ 1 file changed, 2 insertions(+) diff --git a/parse-opcodes b/parse-opcodes index df86efa..630ae36 100755 --- a/parse-opcodes +++ b/parse-opcodes @@ -729,6 +729,8 @@ def print_insts(*names): def make_supervisor_latex_table(): print_header('i') + print_subtitle('Environment Call and Breakpoint') + print_insts('ecall', 'ebreak') print_subtitle('Trap-Return Instructions') print_insts('uret', 'sret', 'mret') print_subtitle('Interrupt-Management Instructions') -- cgit v1.1 From 1ac9833cd41d36d558c12392c724aa68fa9dea50 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Sun, 7 May 2017 19:16:48 -0700 Subject: Add UXl/SXL --- encoding.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/encoding.h b/encoding.h index e9006b9..97ddbec 100644 --- a/encoding.h +++ b/encoding.h @@ -23,6 +23,8 @@ #define MSTATUS_TW 0x00200000 #define MSTATUS_TSR 0x00400000 #define MSTATUS32_SD 0x80000000 +#define MSTATUS_UXL 0x0000000300000000 +#define MSTATUS_SXL 0x0000000C00000000 #define MSTATUS64_SD 0x8000000000000000 #define SSTATUS_UIE 0x00000001 @@ -35,6 +37,7 @@ #define SSTATUS_SUM 0x00040000 #define SSTATUS_MXR 0x00080000 #define SSTATUS32_SD 0x80000000 +#define SSTATUS_UXL 0x0000000300000000 #define SSTATUS64_SD 0x8000000000000000 #define DCSR_XDEBUGVER (3U<<30) -- cgit v1.1 From f8bab126082ce7fcd9e91ad54918bd1cf913da3b Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Sun, 7 May 2017 19:17:10 -0700 Subject: SB->B; UJ->J --- parse-opcodes | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/parse-opcodes b/parse-opcodes index 630ae36..f9d54d8 100755 --- a/parse-opcodes +++ b/parse-opcodes @@ -658,7 +658,7 @@ def print_header(*types): \\multicolumn{1}{c|}{rs1} & \\multicolumn{1}{c|}{funct3} & \\multicolumn{1}{c|}{imm[4:1$\\vert$11]} & -\\multicolumn{1}{c|}{opcode} & SB-type \\\\ +\\multicolumn{1}{c|}{opcode} & B-type \\\\ \\cline{2-11} """ if 'u' in types: @@ -674,7 +674,7 @@ def print_header(*types): & \\multicolumn{8}{|c|}{imm[20$\\vert$10:1$\\vert$11$\\vert$19:12]} & \\multicolumn{1}{c|}{rd} & -\\multicolumn{1}{c|}{opcode} & UJ-type \\\\ +\\multicolumn{1}{c|}{opcode} & J-type \\\\ \\cline{2-11} """ -- cgit v1.1