Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xv6-public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
OS Lab Group
奖励实验
xv6-public
提交
a44ee3cd
提交
a44ee3cd
6月 26, 2006
创建
作者:
kaashoek
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
stick mpstack in cpu structure
上级
bf390361
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
7 行增加
和
9 行删除
+7
-9
bootother.S
bootother.S
+1
-1
mp.c
mp.c
+6
-8
没有找到文件。
bootother.S
浏览文件 @
a44ee3cd
...
...
@@ -14,7 +14,7 @@
* mp.c puts the correct %esp in start-4, and the place to jump
* to in start-8.
*
* Credit: Cliff Frey
* Credit: Cliff Frey
and Plan 9
*/
.set PROT_MODE_CSEG,0x8 # code segment selector
...
...
mp.c
浏览文件 @
a44ee3cd
...
...
@@ -91,20 +91,18 @@ enum { /* LAPIC_TDCR */
};
#define APBOOTCODE 0x7000 // XXX hack
#define MPSTACK 512
static
struct
MP
*
mp
;
/
* The MP floating point structure */
static
struct
MP
*
mp
;
/
/ The MP floating point structure
static
uint32_t
*
lapicaddr
;
static
struct
cpu
{
uint8_t
apicid
;
/* Local APIC ID */
int
lintr
[
2
];
/* Local APIC */
uint8_t
apicid
;
// Local APIC ID
int
lintr
[
2
];
// Local APIC
char
mpstack
[
MPSTACK
];
// per-cpu start-up stack, only used to get into main()
}
cpus
[
NCPU
];
static
int
ncpu
;
static
struct
cpu
*
bcpu
;
// per-cpu start-up stack, only used to get into main()
#define MPSTACK 512
char
mpstacks
[
NCPU
*
MPSTACK
];
static
int
lapic_read
(
int
r
)
{
...
...
@@ -361,7 +359,7 @@ mp_init()
if
(
cpus
+
c
==
bcpu
)
continue
;
cprintf
(
"starting processor %d
\n
"
,
c
);
release_grant_spinlock
(
&
kernel_lock
,
c
);
*
(
unsigned
*
)(
APBOOTCODE
-
4
)
=
(
unsigned
)
mpstacks
+
(
c
+
1
)
*
MPSTACK
;
// tell it what to use for %esp
*
(
unsigned
*
)(
APBOOTCODE
-
4
)
=
(
unsigned
)
(
cpus
[
c
].
mpstack
)
+
MPSTACK
;
// tell it what to use for %esp
*
(
unsigned
*
)(
APBOOTCODE
-
8
)
=
(
unsigned
)
&
main
;
// tell it where to jump to
lapic_startap
(
cpus
+
c
,
(
uint32_t
)
APBOOTCODE
);
acquire_spinlock
(
&
kernel_lock
);
...
...
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论