Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
XiangShan
提交
526d8c98
X
XiangShan
项目概览
OpenXiangShan
/
XiangShan
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
526d8c98
编写于
8月 13, 2020
作者:
Z
ZhangZifei
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
TLB: add internal devices addr identical map
上级
a8c95b37
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
25 addition
and
3 deletion
+25
-3
src/test/csrc/ram.cpp
src/test/csrc/ram.cpp
+25
-3
未找到文件。
src/test/csrc/ram.cpp
浏览文件 @
526d8c98
...
...
@@ -27,16 +27,36 @@ void addpageSv39() {
#define PTEADDR(i) (0x88000000 - (PAGESIZE * PTENUM) + (PAGESIZE * i)) //0x88000000 - 0x100*64
#define PTEMMIONUM 128
#define PDEMMIONUM 1
#define PTEDEVNUM 128
#define PDEDEVNUM 1
uint64_t
pdde
[
ENTRYNUM
];
uint64_t
pde
[
ENTRYNUM
];
uint64_t
pte
[
PTENUM
][
ENTRYNUM
];
//special addr for mmio 0x40000000 - 0x4fffffff
//
special addr for mmio 0x40000000 - 0x4fffffff
uint64_t
pdemmio
[
ENTRYNUM
];
uint64_t
ptemmio
[
PTEMMIONUM
][
ENTRYNUM
];
pdde
[
1
]
=
(((
PDDEADDR
-
PAGESIZE
*
1
)
&
0xfffff000
)
>>
2
)
|
0x1
;
// special addr for internal devices 0x30000000-0x3fffffff
uint64_t
pdedev
[
ENTRYNUM
];
uint64_t
ptedev
[
PTEDEVNUM
][
ENTRYNUM
];
// dev: 0x30000000-0x3fffffff
pdde
[
0
]
=
(((
PDDEADDR
-
PAGESIZE
*
(
PDEMMIONUM
+
PTEMMIONUM
+
PDEDEVNUM
))
&
0xfffff000
)
>>
2
)
|
0x1
;
for
(
int
i
=
0
;
i
<
PTEDEVNUM
;
i
++
)
{
pdedev
[
ENTRYNUM
-
PTEDEVNUM
+
i
]
=
(((
PDDEADDR
-
PAGESIZE
*
(
PDEMMIONUM
+
PTEMMIONUM
+
PDEDEVNUM
+
PTEDEVNUM
-
i
))
&
0xfffff000
)
>>
2
)
|
0x1
;
}
for
(
int
outidx
=
0
;
outidx
<
PTEDEVNUM
;
outidx
++
)
{
for
(
int
inidx
=
0
;
inidx
<
ENTRYNUM
;
inidx
++
)
{
ptedev
[
outidx
][
inidx
]
=
(((
0x30000000
+
outidx
*
PTEVOLUME
+
inidx
*
PAGESIZE
)
&
0xfffff000
)
>>
2
)
|
0xf
;
}
}
// mmio: 0x40000000 - 0x4fffffff
pdde
[
1
]
=
(((
PDDEADDR
-
PAGESIZE
*
PDEMMIONUM
)
&
0xfffff000
)
>>
2
)
|
0x1
;
for
(
int
i
=
0
;
i
<
PTEMMIONUM
;
i
++
)
{
pdemmio
[
i
]
=
(((
PDDEADDR
-
PAGESIZE
*
(
PTEMMIONUM
+
PDEMMIONUM
-
i
))
&
0xfffff000
)
>>
2
)
|
0x1
;
...
...
@@ -63,6 +83,8 @@ void addpageSv39() {
}
}
memcpy
((
char
*
)
ram
+
(
RAMSIZE
-
PAGESIZE
*
(
PTENUM
+
PDDENUM
+
PDENUM
+
PDEMMIONUM
+
PTEMMIONUM
+
PDEDEVNUM
+
PTEDEVNUM
)),
ptedev
,
PAGESIZE
*
PTEDEVNUM
);
memcpy
((
char
*
)
ram
+
(
RAMSIZE
-
PAGESIZE
*
(
PTENUM
+
PDDENUM
+
PDENUM
+
PDEMMIONUM
+
PTEMMIONUM
+
PDEDEVNUM
)),
pdedev
,
PAGESIZE
*
PDEDEVNUM
);
memcpy
((
char
*
)
ram
+
(
RAMSIZE
-
PAGESIZE
*
(
PTENUM
+
PDDENUM
+
PDENUM
+
PDEMMIONUM
+
PTEMMIONUM
)),
ptemmio
,
PAGESIZE
*
PTEMMIONUM
);
memcpy
((
char
*
)
ram
+
(
RAMSIZE
-
PAGESIZE
*
(
PTENUM
+
PDDENUM
+
PDENUM
+
PDEMMIONUM
)),
pdemmio
,
PAGESIZE
*
PDEMMIONUM
);
memcpy
((
char
*
)
ram
+
(
RAMSIZE
-
PAGESIZE
*
(
PTENUM
+
PDDENUM
+
PDENUM
)),
pdde
,
PAGESIZE
*
PDDENUM
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录