提交 c73483e4 创建 作者: Silas Boyd-Wickizer's avatar Silas Boyd-Wickizer

Merge branch 'scale-amd64' of git+ssh://amsterdam.csail.mit.edu/home/am0/6.828/xv6 into scale-amd64

......@@ -18,6 +18,14 @@ SECTIONS
*(.prof)
}
PROVIDE(eprof = .);
PROVIDE(sctors = .);
.ctors : {
KEEP(*(SORT(.ctors.*)));
KEEP(*(.ctors));
}
PROVIDE(ectors = .);
. = ALIGN(0x1000);
.data : {
*(.data .data.* .gnu.linkonce.d.*)
......
......@@ -36,7 +36,6 @@ void initnet(void);
void initsched(void);
void initlockstat(void);
void initwq(void);
void initsperf(void);
void initidle(void);
void initcpprt(void);
void initfutex(void);
......@@ -133,6 +132,11 @@ cmain(u64 mbmagic, u64 mbaddr)
{
extern u64 cpuhz;
// Call global constructors
extern const uptr sctors[], ectors[];
for (const uptr *ctorva = ectors; ctorva > sctors; )
((void(*)()) *--ctorva)();
initpg();
inithz(); // CPU Hz, microdelay
initpic(); // interrupt controller
......@@ -144,7 +148,6 @@ cmain(u64 mbmagic, u64 mbaddr)
initacpi();
initseg();
initsperf();
inittrap();
initlapic();
initcmdline();
......
......@@ -9,11 +9,3 @@ using namespace scopedperf;
static tsc_ctr tsc;
ctrgroup_chain<tsc_ctr> perfgroup(&tsc);
// but xv6 doesn't run static constructors, so call them explicitly below..
void
initsperf()
{
new (&tsc) tsc_ctr();
new (&perfgroup) ctrgroup_chain<tsc_ctr>(&tsc);
}
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论