Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
XiangShan
提交
564208c9
X
XiangShan
项目概览
OpenXiangShan
/
XiangShan
10 个月 前同步成功
通知
1183
Star
3914
Fork
526
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
XiangShan
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
564208c9
编写于
9月 09, 2019
作者:
Z
Zihao Yu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
noop,CSR: use S-mode CSRs to temporarily match riscv32-nemu
* now we can run hello over Nanos-lite
上级
cafbf306
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
11 addition
and
8 deletion
+11
-8
src/main/scala/noop/CSR.scala
src/main/scala/noop/CSR.scala
+11
-8
未找到文件。
src/main/scala/noop/CSR.scala
浏览文件 @
564208c9
...
...
@@ -18,23 +18,26 @@ object CSRInstr extends HasInstrType {
def
CSRRS
=
BitPat
(
"b????????????_?????_010_?????_1110011"
)
def
ECALL
=
BitPat
(
"b001100000010_00000_000_00000_1110011"
)
def
MRET
=
BitPat
(
"b000000000000_00000_000_00000_1110011"
)
def
SRET
=
BitPat
(
"b000100000010_00000_000_00000_1110011"
)
val
table
=
Array
(
CSRRW
->
List
(
InstrI
,
FuType
.
csr
,
CSROpType
.
wrt
),
CSRRS
->
List
(
InstrI
,
FuType
.
csr
,
CSROpType
.
set
),
ECALL
->
List
(
InstrI
,
FuType
.
csr
,
CSROpType
.
jmp
),
MRET
->
List
(
InstrI
,
FuType
.
csr
,
CSROpType
.
jmp
)
MRET
->
List
(
InstrI
,
FuType
.
csr
,
CSROpType
.
jmp
),
SRET
->
List
(
InstrI
,
FuType
.
csr
,
CSROpType
.
jmp
)
)
}
trait
HasCSRConst
{
val
Mstatus
=
0x300
val
Mtvec
=
0x305
val
Mepc
=
0x341
val
Mcause
=
0x342
// these are actually S-mode CSRs to match riscv32-nemu
val
Mstatus
=
0x100
val
Mtvec
=
0x105
val
Mepc
=
0x141
val
Mcause
=
0x142
def
privEcall
=
0x000
.
U
def
privMret
=
0x
3
02
.
U
def
privMret
=
0x
1
02
.
U
}
class
CSRIO
extends
FunctionUnitIO
{
...
...
@@ -58,7 +61,7 @@ class CSR(implicit val p: NOOPConfig) extends Module with HasCSRConst {
val
mtvec
=
Reg
(
UInt
(
32.
W
))
val
mcause
=
Reg
(
UInt
(
32.
W
))
val
mstatus
=
Reg
(
UInt
(
32.
W
)
)
val
mstatus
=
Reg
Init
(
"h000c0100"
.
U
)
val
mepc
=
Reg
(
UInt
(
32.
W
))
val
hasPerfCnt
=
!
p
.
FPGAPlatform
...
...
@@ -100,7 +103,7 @@ class CSR(implicit val p: NOOPConfig) extends Module with HasCSRConst {
val
isEcall
=
(
addr
===
privEcall
)
&&
!
isException
val
exceptionNO
=
Mux1H
(
List
(
io
.
isInvOpcode
->
2.
U
,
isEcall
->
11.
U
isEcall
->
9.
U
//
11.U
))
io
.
redirect
.
valid
:=
(
valid
&&
func
===
CSROpType
.
jmp
)
||
isException
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录