Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xv6-public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
OS Lab Group
奖励实验
xv6-public
提交
709c2160
提交
709c2160
10月 26, 2011
创建
作者:
Silas Boyd-Wickizer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
The start of SYSCALL and SYSRET.
上级
f25a83b9
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
18 行增加
和
2 行删除
+18
-2
mmu.h
mmu.h
+2
-2
trap.c
trap.c
+11
-0
trapasm.S
trapasm.S
+5
-0
没有找到文件。
mmu.h
浏览文件 @
709c2160
...
...
@@ -57,8 +57,8 @@ struct segdesc {
#define KCSEG (2<<3)
/* kernel code segment */
#define KDSEG (3<<3)
/* kernel data segment */
#define TSSSEG (4<<3)
/* tss segment - takes two slots */
#define U
CSEG (6<<3)
/* user code
segment */
#define U
DSEG (7<<3)
/* user data
segment */
#define U
DSEG (6<<3)
/* user data
segment */
#define U
CSEG (7<<3)
/* user code
segment */
#define NSEGS 8
// User segment bits (SEG_S set).
...
...
trap.c
浏览文件 @
709c2160
...
...
@@ -169,8 +169,10 @@ inittrap(void)
void
initseg
(
void
)
{
extern
void
sysentry
(
void
);
volatile
struct
desctr
dtr
;
struct
cpu
*
c
;
u64
star
;
dtr
.
limit
=
sizeof
(
idt
)
-
1
;
dtr
.
base
=
(
u64
)
idt
;
...
...
@@ -183,4 +185,13 @@ initseg(void)
dtr
.
limit
=
sizeof
(
c
->
gdt
)
-
1
;
dtr
.
base
=
(
u64
)
c
->
gdt
;
lgdt
((
void
*
)
&
dtr
.
limit
);
// When executing a syscall instruction the CPU sets the SS selector
// to (star >> 32) + 8 and the CS selector to (star >> 32).
// When executing a sysret instruction the CPU sets the SS selector
// to (star >> 48) + 8 and the CS selector to (star >> 48) + 16.
star
=
((((
u64
)
UCSEG
|
0x3
)
-
16
)
<<
48
)
|
((
u64
)
KCSEG
<<
32
);
writemsr
(
MSR_STAR
,
star
);
writemsr
(
MSR_LSTAR
,
(
u64
)
&
sysentry
);
writemsr
(
MSR_SFMASK
,
FL_TF
);
}
trapasm.S
浏览文件 @
709c2160
...
...
@@ -14,6 +14,11 @@
#define TRAPCODE(x) _TRAP(x, trapcommon)
.code64
.globl sysentry
.align 8
sysentry:
jmp sysentry
.globl trappush
.align 8
trappush:
...
...
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论