Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xv6-public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
OS Lab Group
奖励实验
xv6-public
提交
883c29c6
提交
883c29c6
2月 26, 2012
创建
作者:
Silas Boyd-Wickizer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Hacks to #define PROC_KSTACK_OFFSET and TRAPFRAME_SIZE at build time..
..this turned out to be more complicated than I expected.
上级
829545bc
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
29 行增加
和
15 行删除
+29
-15
Makefile
Makefile
+5
-5
mmu.h
include/mmu.h
+0
-3
Makefrag
kernel/Makefrag
+7
-0
asmdefines.c
kernel/asmdefines.c
+16
-0
main.cc
kernel/main.cc
+0
-7
trapasm.S
kernel/trapasm.S
+1
-0
没有找到文件。
Makefile
浏览文件 @
883c29c6
...
...
@@ -29,14 +29,14 @@ STRIP = $(TOOLPREFIX)strip
# XXX(sbw)
# -nostdinc -nostdinc++
COMFLAGS
=
-static
-
fno-builtin
-fno-strict-aliasing
-O2
-Wall
\
-
g
-MD
-m64
-Werror
-fms-extensions
-mno-sse
-mcx16
\
-mno-
red-zone
-Iinclude
-I
$(QEMUSRC)
-fno-omit-frame-pointer
\
-
DHW_
$(HW)
-include
param.h
-include
include/compiler.h
-DXV6
COMFLAGS
=
-static
-
g
-MD
-m64
-O2
-Wall
-Werror
-DHW_
$(HW)
-DXV6
\
-
fno-builtin
-fno-strict-aliasing
-fno-omit-frame-pointer
-fms-extensions
\
-mno-
sse
-mcx16
-mno-red-zone
-Iinclude
-I
$(QEMUSRC)
\
-
include
param.h
-include
include/compiler.h
COMFLAGS
+=
$(
shell
$(CC)
-fno-stack-protector
-E
-x
c /dev/null
>
/dev/null 2>&1
&&
echo
-fno-stack-protector
)
CFLAGS
:=
$(COMFLAGS)
-std
=
c99
$(CFLAGS)
CXXFLAGS
:=
$(COMFLAGS)
-std
=
c++0x
-Wno-sign-compare
-fno-exceptions
-fno-rtti
-fcheck-new
$(CXXFLAGS)
ASFLAGS
=
-Iinclude
-m64
-gdwarf-2
-MD
-DHW_
$(HW)
-include
param.h
ASFLAGS
=
-Iinclude
-
I
$(O)
/include
-
m64
-gdwarf-2
-MD
-DHW_
$(HW)
-include
param.h
LDFLAGS
=
-m
elf_x86_64
all
:
...
...
include/mmu.h
浏览文件 @
883c29c6
...
...
@@ -129,6 +129,3 @@ struct taskstate
(u16) ((rip)&0xffff), (cs), 0, bits, (u16) (((rip)>>16)&0xffff), \
(u32) ((u64)(rip)>>32), 0, \
}
#define PROC_KSTACK_OFFSET 48
#define TRAPFRAME_SIZE 192
kernel/Makefrag
浏览文件 @
883c29c6
...
...
@@ -79,5 +79,12 @@ $(O)/kernel/%: kernel/%.S
$(Q)$(LD) $(LDFLAGS) -N -e start -Ttext $(TTEXT) -o $@.out $@.o
$(Q)$(OBJCOPY) -S -O binary $@.out $@
$(O)/include/asmdefines.h: kernel/asmdefines.c
@echo " GEN $@"
$(Q)mkdir -p $(@D)
$(Q)$(CXX) -S $(CXXFLAGS) -o $(O)/kernel/asmdefines.S kernel/asmdefines.c
$(Q)sed -n 's/remove\$$//p' $(O)/kernel/asmdefines.S > $@
$(O)/kernel/trapasm.o: $(O)/include/asmdefines.h
.PRECIOUS: $(O)/kernel/%.o
-include $(O)/kernel/*.d
kernel/asmdefines.c
0 → 100644
浏览文件 @
883c29c6
#include "types.h"
#include "kernel.hh"
#include "spinlock.h"
#include "amd64.h"
#include "condvar.h"
#include "proc.hh"
#define DEFINE(sym, val) \
asm volatile ("\n#define " #sym " remove%0 " : : "i" (val))
void
asmdefines
(
void
)
{
DEFINE
(
PROC_KSTACK_OFFSET
,
__offsetof
(
struct
proc
,
kstack
));
DEFINE
(
TRAPFRAME_SIZE
,
sizeof
(
trapframe
));
}
kernel/main.cc
浏览文件 @
883c29c6
...
...
@@ -105,13 +105,6 @@ cmain(u64 mbmagic, u64 mbaddr)
kpml4
.
e
[
0
]
=
0
;
// don't need 1 GB identity mapping anymore
lcr3
(
rcr3
());
if
(
PROC_KSTACK_OFFSET
!=
__offsetof
(
struct
proc
,
kstack
))
panic
(
"PROC_KSTACK_OFFSET mismatch: %d %ld
\n
"
,
PROC_KSTACK_OFFSET
,
__offsetof
(
struct
proc
,
kstack
));
if
(
TRAPFRAME_SIZE
!=
sizeof
(
trapframe
))
panic
(
"TRAPFRAME_SIZE mismatch: %d %ld
\n
"
,
TRAPFRAME_SIZE
,
sizeof
(
trapframe
));
idleloop
();
panic
(
"Unreachable"
);
...
...
kernel/trapasm.S
浏览文件 @
883c29c6
#include "mmu.h"
#include "asmdefines.h"
#define NOEC pushq $0
#define EC
...
...
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论