Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xv6-public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
OS Lab Group
奖励实验
xv6-public
提交
644017a3
提交
644017a3
4月 02, 2012
创建
作者:
Nickolai Zeldovich
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
clean up bits that were not necessary in the end
上级
a1402352
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
16 行增加
和
38 行删除
+16
-38
boot.S
kernel/boot.S
+6
-6
cpprt.cc
kernel/cpprt.cc
+8
-27
kernel.ld
kernel/kernel.ld
+2
-5
没有找到文件。
kernel/boot.S
浏览文件 @
644017a3
...
...
@@ -31,12 +31,12 @@ multiboot_header:
#define flags (1<<16 | 1<<0)
.long magic
.long flags
.long (- magic - flags)
# checksum
.long PADDR(multiboot_header)
# header address
.long PADDR(multiboot_header)
-0x1000 # load address, incl elf header
s
.long PADDR(edata)
# load end address
.long PADDR(end)
# bss end address
.long PADDR(start)
# entry address
.long (- magic - flags) # checksum
.long PADDR(multiboot_header) # header address
.long PADDR(multiboot_header)
# load addres
s
.long PADDR(edata) # load end address
.long PADDR(end) # bss end address
.long PADDR(start) # entry address
# Entry point jumped to by boot loader. Running in 32-bit mode.
# http://www.gnu.org/software/grub/manual/multiboot/multiboot.html#Machine-state
...
...
kernel/cpprt.cc
浏览文件 @
644017a3
...
...
@@ -11,6 +11,8 @@
void
*
operator
new
(
unsigned
long
nbytes
)
{
panic
(
"global operator new"
);
u64
*
x
=
(
u64
*
)
kmalloc
(
nbytes
+
sizeof
(
u64
),
"cpprt new"
);
*
x
=
nbytes
;
return
x
+
1
;
...
...
@@ -19,6 +21,8 @@ operator new(unsigned long nbytes)
void
operator
delete
(
void
*
p
)
{
panic
(
"global operator delete"
);
u64
*
x
=
(
u64
*
)
p
;
kmfree
(
x
-
1
,
x
[
-
1
]
+
sizeof
(
u64
));
}
...
...
@@ -173,34 +177,11 @@ free(void* vp)
kmfree
(
p
-
1
,
p
[
-
1
]
+
8
);
}
struct
dl_phdr_info
{
Elf64_Addr
dlpi_addr
;
const
char
*
dlpi_name
;
const
struct
proghdr
*
dlpi_phdr
;
Elf64_Half
dlpi_phnum
;
unsigned
long
long
int
dlpi_adds
;
unsigned
long
long
int
dlpi_subs
;
};
extern
"C"
int
dl_iterate_phdr
(
int
(
*
cb
)
(
struct
dl_phdr_info
*
info
,
size_t
size
,
void
*
data
),
void
*
data
);
extern
"C"
int
dl_iterate_phdr
(
void
);
int
dl_iterate_phdr
(
int
(
*
cb
)
(
struct
dl_phdr_info
*
info
,
size_t
size
,
void
*
data
),
void
*
data
)
{
extern
char
multiboot_header
[];
elfhdr
*
eh
=
(
elfhdr
*
)
&
multiboot_header
[
-
0x1000
];
assert
(
eh
->
magic
==
ELF_MAGIC
);
struct
dl_phdr_info
info
;
info
.
dlpi_addr
=
0
;
info
.
dlpi_name
=
"kernel"
;
info
.
dlpi_phdr
=
(
proghdr
*
)
(((
char
*
)
eh
)
+
eh
->
phoff
);
info
.
dlpi_phnum
=
eh
->
phnum
;
info
.
dlpi_adds
=
0
;
info
.
dlpi_subs
=
0
;
return
cb
(
&
info
,
sizeof
(
struct
dl_phdr_info
),
data
);
dl_iterate_phdr
(
void
)
{
return
-
1
;
}
extern
"C"
void
__stack_chk_fail
(
void
);
...
...
kernel/kernel.ld
浏览文件 @
644017a3
...
...
@@ -4,12 +4,9 @@ ENTRY(xxx)
SECTIONS
{
/* Skip one page to leave room for ELF headers.
* See multiboot_header and dl_iterate_phdr.
*/
. = 0xFFFFFFFFC0101000;
. = 0xFFFFFFFFC0100000;
PROVIDE(text = .);
.text : AT(0x10
1
000) {
.text : AT(0x10
0
000) {
*(.text .stub .text.* .gnu.linkonce.t.*)
}
.rodata : {
...
...
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论