Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
rcore-os
RCore Tutorial V3
提交
1f869032
R
RCore Tutorial V3
项目概览
rcore-os
/
RCore Tutorial V3
上一次同步 1 年多
通知
15
Star
793
Fork
260
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
RCore Tutorial V3
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1f869032
编写于
11月 13, 2021
作者:
Y
Yifan Wu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Now construction of PA/VA only uses 56/39 bits.
上级
9d6346ad
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
11 addition
and
6 deletion
+11
-6
os/src/config.rs
os/src/config.rs
+1
-1
os/src/mm/address.rs
os/src/mm/address.rs
+10
-5
未找到文件。
os/src/config.rs
浏览文件 @
1f869032
...
...
@@ -18,4 +18,4 @@ pub const TRAP_CONTEXT: usize = TRAMPOLINE - PAGE_SIZE;
pub
const
CLOCK_FREQ
:
usize
=
403000000
/
62
;
#[cfg(feature
=
"board_qemu"
)]
pub
const
CLOCK_FREQ
:
usize
=
12500000
;
\ No newline at end of file
pub
const
CLOCK_FREQ
:
usize
=
12500000
;
os/src/mm/address.rs
浏览文件 @
1f869032
...
...
@@ -2,6 +2,11 @@ use crate::config::{PAGE_SIZE, PAGE_SIZE_BITS};
use
super
::
PageTableEntry
;
use
core
::
fmt
::{
self
,
Debug
,
Formatter
};
const
PA_WIDTH_SV39
:
usize
=
56
;
const
VA_WIDTH_SV39
:
usize
=
39
;
const
PPN_WIDTH_SV39
:
usize
=
PA_WIDTH_SV39
-
PAGE_SIZE_BITS
;
const
VPN_WIDTH_SV39
:
usize
=
VA_WIDTH_SV39
-
PAGE_SIZE_BITS
;
/// Definitions
#[derive(Copy,
Clone,
Ord,
PartialOrd,
Eq,
PartialEq)]
pub
struct
PhysAddr
(
pub
usize
);
...
...
@@ -43,16 +48,16 @@ impl Debug for PhysPageNum {
/// usize -> T: usize.into()
impl
From
<
usize
>
for
PhysAddr
{
fn
from
(
v
:
usize
)
->
Self
{
Self
(
v
)
}
fn
from
(
v
:
usize
)
->
Self
{
Self
(
v
&
(
(
1
<<
PA_WIDTH_SV39
)
-
1
)
)
}
}
impl
From
<
usize
>
for
PhysPageNum
{
fn
from
(
v
:
usize
)
->
Self
{
Self
(
v
)
}
fn
from
(
v
:
usize
)
->
Self
{
Self
(
v
&
(
(
1
<<
PPN_WIDTH_SV39
)
-
1
)
)
}
}
impl
From
<
usize
>
for
VirtAddr
{
fn
from
(
v
:
usize
)
->
Self
{
Self
(
v
)
}
fn
from
(
v
:
usize
)
->
Self
{
Self
(
v
&
(
(
1
<<
VA_WIDTH_SV39
)
-
1
)
)
}
}
impl
From
<
usize
>
for
VirtPageNum
{
fn
from
(
v
:
usize
)
->
Self
{
Self
(
v
)
}
fn
from
(
v
:
usize
)
->
Self
{
Self
(
v
&
(
(
1
<<
VPN_WIDTH_SV39
)
-
1
)
)
}
}
impl
From
<
PhysAddr
>
for
usize
{
fn
from
(
v
:
PhysAddr
)
->
Self
{
v
.0
}
...
...
@@ -192,4 +197,4 @@ impl<T> Iterator for SimpleRangeIterator<T> where
}
}
}
pub
type
VPNRange
=
SimpleRange
<
VirtPageNum
>
;
\ No newline at end of file
pub
type
VPNRange
=
SimpleRange
<
VirtPageNum
>
;
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录