Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xv6-public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
OS Lab Group
奖励实验
xv6-public
提交
ae4cd3ca
提交
ae4cd3ca
10月 26, 2011
创建
作者:
Silas Boyd-Wickizer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Get dev. intrs working (with the help of the magical ioapic.c, of course).
上级
cda77810
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
28 行增加
和
7 行删除
+28
-7
Makefile
Makefile
+3
-0
console.c
console.c
+3
-0
main.c
main.c
+3
-1
trap.c
trap.c
+0
-6
uart.c
uart.c
+19
-0
没有找到文件。
Makefile
浏览文件 @
ae4cd3ca
...
@@ -30,8 +30,10 @@ OBJS = \
...
@@ -30,8 +30,10 @@ OBJS = \
exec.o
\
exec.o
\
file.o
\
file.o
\
fs.o
\
fs.o
\
ioapic.o
\
lapic.o
\
lapic.o
\
kalloc.o
\
kalloc.o
\
kbd.o
\
main.o
\
main.o
\
memide.o
\
memide.o
\
mp.o
\
mp.o
\
...
@@ -56,6 +58,7 @@ ULIB = ulib.o usys.o printf.o umalloc.o
...
@@ -56,6 +58,7 @@ ULIB = ulib.o usys.o printf.o umalloc.o
UPROGS
=
\
UPROGS
=
\
_init
\
_init
\
_sh
\
_sh
\
_ls
\
kernel
:
boot.o $(OBJS) initcode bootother fs.img
kernel
:
boot.o $(OBJS) initcode bootother fs.img
$(LD)
$(LDFLAGS)
-T
kernel.ld
-z
max-page-size
=
4096
-e
start
\
$(LD)
$(LDFLAGS)
-T
kernel.ld
-z
max-page-size
=
4096
-e
start
\
...
...
console.c
浏览文件 @
ae4cd3ca
...
@@ -13,6 +13,7 @@
...
@@ -13,6 +13,7 @@
#include "x86.h"
#include "x86.h"
#include "queue.h"
#include "queue.h"
#include "proc.h"
#include "proc.h"
#include "traps.h"
#include <stdarg.h>
#include <stdarg.h>
#define BACKSPACE 0x100
#define BACKSPACE 0x100
...
@@ -325,6 +326,8 @@ initconsole(void)
...
@@ -325,6 +326,8 @@ initconsole(void)
devsw
[
CONSOLE
].
write
=
consolewrite
;
devsw
[
CONSOLE
].
write
=
consolewrite
;
devsw
[
CONSOLE
].
read
=
consoleread
;
devsw
[
CONSOLE
].
read
=
consoleread
;
picenable
(
IRQ_KBD
);
ioapicenable
(
IRQ_KBD
,
0
);
// XXX(sbw) enable once we setup %gs
// XXX(sbw) enable once we setup %gs
cons
.
locking
=
0
;
cons
.
locking
=
0
;
}
}
main.c
浏览文件 @
ae4cd3ca
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
#include "cpu.h"
#include "cpu.h"
extern
void
initpic
(
void
);
extern
void
initpic
(
void
);
extern
void
initioapic
(
void
);
extern
void
inituart
(
void
);
extern
void
inituart
(
void
);
extern
void
initcga
(
void
);
extern
void
initcga
(
void
);
extern
void
initconsole
(
void
);
extern
void
initconsole
(
void
);
...
@@ -77,12 +78,13 @@ cmain(void)
...
@@ -77,12 +78,13 @@ cmain(void)
{
{
extern
pml4e_t
kpml4
[];
extern
pml4e_t
kpml4
[];
initpg
();
initpic
();
// interrupt controller
initpic
();
// interrupt controller
initioapic
();
inituart
();
inituart
();
initcga
();
initcga
();
initconsole
();
initconsole
();
inittrap
();
inittrap
();
initpg
();
initseg
();
initseg
();
initmp
();
initmp
();
initlapic
();
initlapic
();
...
...
trap.c
浏览文件 @
ae4cd3ca
...
@@ -85,18 +85,12 @@ trap(struct trapframe *tf)
...
@@ -85,18 +85,12 @@ trap(struct trapframe *tf)
// Bochs generates spurious IDE1 interrupts.
// Bochs generates spurious IDE1 interrupts.
break
;
break
;
case
T_IRQ0
+
IRQ_KBD
:
case
T_IRQ0
+
IRQ_KBD
:
#if 0
kbdintr
();
kbdintr
();
lapiceoi
();
lapiceoi
();
#endif
panic
(
"IRQ_KBD"
);
break
;
break
;
case
T_IRQ0
+
IRQ_COM1
:
case
T_IRQ0
+
IRQ_COM1
:
#if 0
uartintr
();
uartintr
();
lapiceoi
();
lapiceoi
();
#endif
panic
(
"IRQ_COM1"
);
break
;
break
;
case
T_IRQ0
+
7
:
case
T_IRQ0
+
7
:
case
T_IRQ0
+
IRQ_SPURIOUS
:
case
T_IRQ0
+
IRQ_SPURIOUS
:
...
...
uart.c
浏览文件 @
ae4cd3ca
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
#include "types.h"
#include "types.h"
#include "kernel.h"
#include "kernel.h"
#include "x86.h"
#include "x86.h"
#include "traps.h"
#define COM1 0x3f8
#define COM1 0x3f8
...
@@ -19,6 +20,22 @@ uartputc(char c)
...
@@ -19,6 +20,22 @@ uartputc(char c)
outb
(
COM1
+
0
,
c
);
outb
(
COM1
+
0
,
c
);
}
}
static
int
uartgetc
(
void
)
{
if
(
!
uart
)
return
-
1
;
if
(
!
(
inb
(
COM1
+
5
)
&
0x01
))
return
-
1
;
return
inb
(
COM1
+
0
);
}
void
uartintr
(
void
)
{
consoleintr
(
uartgetc
);
}
void
void
inituart
(
void
)
inituart
(
void
)
{
{
...
@@ -44,6 +61,8 @@ inituart(void)
...
@@ -44,6 +61,8 @@ inituart(void)
// enable interrupts.
// enable interrupts.
inb
(
COM1
+
2
);
inb
(
COM1
+
2
);
inb
(
COM1
+
0
);
inb
(
COM1
+
0
);
picenable
(
IRQ_COM1
);
ioapicenable
(
IRQ_COM1
,
0
);
// Announce that we're here.
// Announce that we're here.
for
(
p
=
"uart...
\n
"
;
*
p
;
p
++
)
for
(
p
=
"uart...
\n
"
;
*
p
;
p
++
)
...
...
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论