Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xv6-public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
OS Lab Group
奖励实验
xv6-public
提交
38f3a4da
提交
38f3a4da
3月 01, 2012
创建
作者:
Silas Boyd-Wickizer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
More exec hacking, userspace crt.S to help with testing
上级
4ce84865
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
16 行增加
和
10 行删除
+16
-10
Makefrag
bin/Makefrag
+1
-1
exec.cc
kernel/exec.cc
+9
-8
Makefrag
lib/Makefrag
+1
-1
crt.S
lib/crt.S
+5
-0
没有找到文件。
bin/Makefrag
浏览文件 @
38f3a4da
...
...
@@ -33,7 +33,7 @@ UPROGS := $(addprefix $(O)/bin/, $(UPROGS))
$(O)/bin/%.unstripped: $(O)/bin/%.o $(ULIB)
@echo " LD $@"
$(Q)mkdir -p $(@D)
$(Q)$(LD) $(LDFLAGS) -N -
e main -
Ttext 0x100000 -o $@ $^
$(Q)$(LD) $(LDFLAGS) -N -Ttext 0x100000 -o $@ $^
$(O)/bin/%: $(O)/bin/%.unstripped
@echo " STRIP $@"
...
...
kernel/exec.cc
浏览文件 @
38f3a4da
...
...
@@ -68,7 +68,7 @@ static void
dostack
(
struct
eargs
*
args
)
{
struct
vmnode
*
vmn
=
nullptr
;
uptr
ustack
[
1
+
MAXARG
+
1
];
uptr
argstck
[
1
+
MAXARG
];
const
char
*
s
,
*
last
;
s64
argc
;
uptr
sp
;
...
...
@@ -91,9 +91,6 @@ dostack(struct eargs *args)
if
(
argc
>=
MAXARG
)
goto
bad
;
// Fake return %rip between stack
ustack
[
0
]
=
0ull
;
// Push argument strings
sp
=
USERTOP
;
for
(
int
i
=
argc
-
1
;
i
>=
0
;
i
--
)
{
...
...
@@ -101,15 +98,19 @@ dostack(struct eargs *args)
sp
&=
~
7
;
if
(
args
->
vmap
->
copyout
(
sp
,
args
->
argv
[
i
],
strlen
(
args
->
argv
[
i
])
+
1
)
<
0
)
goto
bad
;
ustack
[
1
+
i
]
=
sp
;
argstck
[
i
]
=
sp
;
}
ustack
[
1
+
argc
]
=
0
;
argstck
[
argc
]
=
0
;
args
->
proc
->
tf
->
rdi
=
argc
;
args
->
proc
->
tf
->
rsi
=
sp
-
(
argc
+
1
)
*
8
;
sp
-=
(
1
+
argc
+
1
)
*
8
;
if
(
args
->
vmap
->
copyout
(
sp
,
ustack
,
(
1
+
argc
+
1
)
*
8
)
<
0
)
sp
-=
(
argc
+
1
)
*
8
;
if
(
args
->
vmap
->
copyout
(
sp
,
argstck
,
(
argc
+
1
)
*
8
)
<
0
)
goto
bad
;
sp
-=
8
;
if
(
args
->
vmap
->
copyout
(
sp
,
&
argc
,
8
)
<
0
)
goto
bad
;
// Save program name for debugging.
...
...
lib/Makefrag
浏览文件 @
38f3a4da
ULIB = ulib.o usys.o printf.o umalloc.o uthread.o fmt.o stream.o ipc.o \
threads.o
threads.o
crt.o
ULIB := $(addprefix $(O)/lib/, $(ULIB))
.PRECIOUS: $(O)/lib/%.o
...
...
lib/crt.S
0 → 100644
浏览文件 @
38f3a4da
.code64
.align 8
.globl _start
_start:
call main
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论