diff options
author | Andrew Waterman <waterman@eecs.berkeley.edu> | 2013-12-09 15:55:52 -0800 |
---|---|---|
committer | Andrew Waterman <waterman@eecs.berkeley.edu> | 2013-12-09 15:55:52 -0800 |
commit | e85cb99c5e042ebce78f64213677a48ee7ba0491 (patch) | |
tree | 1f0a189a5b2792164d14c8f63bc513cc6f2893a2 /riscv/decode.h | |
parent | aedcd67ac8133ea71de7ff37b772c1533b038c93 (diff) | |
download | spike-e85cb99c5e042ebce78f64213677a48ee7ba0491.zip spike-e85cb99c5e042ebce78f64213677a48ee7ba0491.tar.gz spike-e85cb99c5e042ebce78f64213677a48ee7ba0491.tar.bz2 |
New RDCYCLE encoding
Diffstat (limited to 'riscv/decode.h')
-rw-r--r-- | riscv/decode.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/riscv/decode.h b/riscv/decode.h index 2229afb..8e506e2 100644 --- a/riscv/decode.h +++ b/riscv/decode.h @@ -62,6 +62,7 @@ public: uint32_t rs2() { return x(20, 5); } uint32_t rs3() { return x(27, 5); } uint32_t rm() { return x(12, 3); } + reg_t csr() { return x(20, 12); } private: uint32_t b; reg_t x(int lo, int len) { return b << (32-lo-len) >> (32-len); } @@ -167,8 +168,8 @@ private: } while(0) #define validate_csr(which, write) ({ \ - int read_priv = ((which) >> 10) & 3; \ - int write_priv = ((which) >> 8) & 3; \ + int write_priv = ((which) >> 10) & 3; \ + int read_priv = ((which) >> 8) & 3; \ if (read_priv > 0 || (write_priv > 0 && (write))) require_supervisor; \ (which); }) |