Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
nexus-am
提交
bcd3e285
N
nexus-am
项目概览
OpenXiangShan
/
nexus-am
10 个月 前同步成功
通知
0
Star
21
Fork
25
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
N
nexus-am
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
bcd3e285
编写于
2月 02, 2020
作者:
Y
Yanyan Jiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
format refactors
上级
fb27cbbc
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
115 addition
and
117 deletion
+115
-117
am/am.h
am/am.h
+1
-1
am/amdev.h
am/amdev.h
+1
-1
am/src/mips32/nemu/cte.c
am/src/mips32/nemu/cte.c
+1
-1
am/src/native/devices/input.c
am/src/native/devices/input.c
+1
-1
am/src/native/vme.c
am/src/native/vme.c
+1
-1
am/src/navy/dev/input.c
am/src/navy/dev/input.c
+1
-1
am/src/x86/qemu/boot/main.c
am/src/x86/qemu/boot/main.c
+2
-2
am/src/x86/qemu/cte.c
am/src/x86/qemu/cte.c
+4
-4
am/src/x86/qemu/ioe.c
am/src/x86/qemu/ioe.c
+4
-4
am/src/x86/qemu/trm.c
am/src/x86/qemu/trm.c
+0
-1
am/src/x86/qemu/x86-qemu.h
am/src/x86/qemu/x86-qemu.h
+0
-1
libs/klib/include/klib.h
libs/klib/include/klib.h
+99
-99
未找到文件。
am/am.h
浏览文件 @
bcd3e285
...
...
@@ -36,7 +36,7 @@ enum {
// Memory area for [@start, @end)
typedef
struct
_Area
{
void
*
start
,
*
end
;
}
_Area
;
}
_Area
;
// An event of type @event, caused by @cause of pointer @ref
typedef
struct
_Event
{
...
...
am/amdev.h
浏览文件 @
bcd3e285
...
...
@@ -9,7 +9,7 @@ extern "C" {
// =========================== AM Devices ============================
#define _DEV_PERFCNT 0x0000ac01 // AM Virtual Performance Counter
#define _DEV_PERFCNT 0x0000ac01 // AM Virtual Performance Counter
#define _DEV_INPUT 0x0000ac02 // AM Virtual Input Device
#define _DEV_TIMER 0x0000ac03 // AM Virtual Timer
#define _DEV_VIDEO 0x0000ac04 // AM Virtual Video Controller
...
...
am/src/mips32/nemu/cte.c
浏览文件 @
bcd3e285
...
...
@@ -20,7 +20,7 @@ _Context* __am_irq_handle(_Context *c) {
case
0
:
ev
.
event
=
_EVENT_IRQ_TIMER
;
break
;
case
2
:
case
3
:
__am_tlb_refill
();
return
next
;
case
8
:
case
8
:
syscall_instr
=
*
(
uint32_t
*
)(
c
->
epc
);
ev
.
event
=
((
syscall_instr
>>
6
)
==
1
)
?
_EVENT_YIELD
:
_EVENT_SYSCALL
;
c
->
epc
+=
4
;
...
...
am/src/native/devices/input.c
浏览文件 @
bcd3e285
...
...
@@ -20,7 +20,7 @@ static int event_thread(void *args) {
SDL_WaitEvent
(
&
event
);
switch
(
event
.
type
)
{
case
SDL_QUIT
:
_exit
(
0
);
break
;
case
SDL_KEYDOWN
:
case
SDL_KEYDOWN
:
case
SDL_KEYUP
:
{
SDL_Keysym
k
=
event
.
key
.
keysym
;
...
...
am/src/native/vme.c
浏览文件 @
bcd3e285
...
...
@@ -97,7 +97,7 @@ int _map(_AddressSpace *as, void *va, void *pa, int prot) {
else
{
pp
->
is_mapped
=
false
;
}
return
0
;
}
...
...
am/src/navy/dev/input.c
浏览文件 @
bcd3e285
...
...
@@ -22,7 +22,7 @@ int __am_event_thread(void) {
if
(
event
.
type
==
NDL_EVENT_TIMER
)
{
__am_set_systime
(
event
.
data
);
}
if
(
event
.
type
==
NDL_EVENT_KEYUP
||
event
.
type
==
NDL_EVENT_KEYDOWN
)
{
int
keydown
=
event
.
type
==
NDL_EVENT_KEYDOWN
;
int
scancode
=
event
.
data
;
...
...
am/src/x86/qemu/boot/main.c
浏览文件 @
bcd3e285
...
...
@@ -67,12 +67,12 @@ void load_kernel(void) {
struct
elf32_hdr
*
elf32
=
(
void
*
)
0x8000
;
struct
elf64_hdr
*
elf64
=
(
void
*
)
0x8000
;
int
is_ap
=
boot_record
()
->
is_ap
;
if
(
!
is_ap
)
{
// load argument (string) to memory
copy_from_disk
((
void
*
)
MAINARG_ADDR
,
1024
,
-
1024
);
// load elf header to memory
copy_from_disk
(
elf32
,
4096
,
0
);
copy_from_disk
(
elf32
,
4096
,
0
);
if
(
elf32
->
e_machine
==
EM_X86_64
)
{
load_elf64
(
elf64
);
}
else
{
...
...
am/src/x86/qemu/cte.c
浏览文件 @
bcd3e285
...
...
@@ -23,7 +23,7 @@ static void __am_irq_handle_internal(struct trap_frame *tf) {
.
cause
=
0
,
.
ref
=
0
,
.
msg
=
"(no message)"
,
};
#if __x86_64
saved_ctx
=
tf
->
saved_context
;
saved_ctx
.
rip
=
tf
->
rip
;
...
...
@@ -46,7 +46,7 @@ static void __am_irq_handle_internal(struct trap_frame *tf) {
}
#endif
#define IRQ T_IRQ0 +
#define IRQ T_IRQ0 +
#define MSG(m) ev.msg = m;
if
(
IRQ
0
<=
tf
->
irq
&&
tf
->
irq
<
IRQ
32
)
{
...
...
@@ -157,7 +157,7 @@ _Context *_kcontext(_Area stack, void (*entry)(void *), void *arg) {
ctx
->
rip
=
(
uintptr_t
)
entry
;
ctx
->
rflags
=
FL_IF
;
ctx
->
rdi
=
(
uintptr_t
)
arg
;
void
*
stk
[]
=
{
panic_on_return
};
void
*
stk
[]
=
{
panic_on_return
};
#else
#define sp esp
ctx
->
esp
=
(
uintptr_t
)
stack
.
end
;
...
...
@@ -165,7 +165,7 @@ _Context *_kcontext(_Area stack, void (*entry)(void *), void *arg) {
ctx
->
cs
=
KSEL
(
SEG_KCODE
);
ctx
->
eip
=
(
uint32_t
)
entry
;
ctx
->
eflags
=
FL_IF
;
void
*
stk
[]
=
{
panic_on_return
,
arg
};
void
*
stk
[]
=
{
panic_on_return
,
arg
};
#endif
ctx
->
sp
-=
sizeof
(
stk
);
for
(
int
i
=
0
;
i
<
LENGTH
(
stk
);
i
++
)
{
...
...
am/src/x86/qemu/ioe.c
浏览文件 @
bcd3e285
...
...
@@ -21,7 +21,7 @@ static int scan_code[] = {
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
24
,
25
,
26
,
27
,
43
,
58
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
40
,
28
,
42
,
44
,
45
,
46
,
47
,
48
,
49
,
50
,
51
,
52
,
53
,
54
,
29
,
91
,
56
,
57
,
56
,
29
,
29
,
91
,
56
,
57
,
56
,
29
,
72
,
80
,
75
,
77
};
...
...
@@ -328,7 +328,7 @@ void __am_percpu_initlapic(void) {
lapicw
(
SVR
,
ENABLE
|
(
T_IRQ0
+
IRQ_SPURIOUS
));
lapicw
(
TDCR
,
X1
);
lapicw
(
TIMER
,
PERIODIC
|
(
T_IRQ0
+
IRQ_TIMER
));
lapicw
(
TICR
,
10000000
);
lapicw
(
TICR
,
10000000
);
lapicw
(
LINT0
,
MASKED
);
lapicw
(
LINT1
,
MASKED
);
if
(((
__am_lapic
[
VER
]
>>
16
)
&
0xFF
)
>=
4
)
...
...
@@ -360,8 +360,8 @@ void __am_lapic_bootap(uint32_t apicid, void *addr) {
lapicw
(
ICRHI
,
apicid
<<
24
);
lapicw
(
ICRLO
,
INIT
|
LEVEL
|
ASSERT
);
lapicw
(
ICRLO
,
INIT
|
LEVEL
);
for
(
i
=
0
;
i
<
2
;
i
++
){
for
(
i
=
0
;
i
<
2
;
i
++
){
lapicw
(
ICRHI
,
apicid
<<
24
);
lapicw
(
ICRLO
,
STARTUP
|
((
uintptr_t
)
addr
>>
12
));
}
...
...
am/src/x86/qemu/trm.c
浏览文件 @
bcd3e285
...
...
@@ -58,7 +58,6 @@ void _halt(int code) {
}
outw
(
0x604
,
0x2000
);
// offer of qemu :)
while
(
1
)
hlt
();
}
_Area
__am_heap_init
()
{
...
...
am/src/x86/qemu/x86-qemu.h
浏览文件 @
bcd3e285
...
...
@@ -15,7 +15,6 @@
#ifndef __ASSEMBLER__
#include <am.h>
#include <klib.h>
#define ROUNDUP(a, sz) ((((uintptr_t)a)+(sz)-1) & ~((sz)-1))
#define ROUNDDOWN(a, sz) ((((uintptr_t)a)) & ~((sz)-1))
...
...
libs/klib/include/klib.h
浏览文件 @
bcd3e285
/*
* Static runtime library for a system software on AbstractMachine
*/
#ifndef __KLIB_H__
#define __KLIB_H__
#include <am.h>
#include <stdarg.h>
//#define __NATIVE_USE_KLIB__
#ifdef __NATIVE_USE_KLIB__
#define strlen my_strlen
#define strcpy my_strcpy
#define strncpy my_strncpy
#define strcat my_strcat
#define strcmp my_strcmp
#define strncmp my_strncmp
#define memset my_memset
#define memcpy my_memcpy
#define memcmp my_memcmp
#define printf my_printf
#define vsprintf my_vsprintf
#define sprintf my_sprintf
#define snprintf my_snprintf
#define malloc my_malloc
#define free my_free
#endif
#ifdef __cplusplus
extern
"C"
{
#endif
// am devices
uint32_t
uptime
();
void
get_timeofday
(
void
*
rtc
);
int
read_key
();
void
draw_rect
(
uint32_t
*
pixels
,
int
x
,
int
y
,
int
w
,
int
h
);
void
draw_sync
();
int
screen_width
();
int
screen_height
();
// string.h
void
*
memset
(
void
*
v
,
int
c
,
size_t
n
);
void
*
memcpy
(
void
*
dst
,
const
void
*
src
,
size_t
n
);
void
*
memmove
(
void
*
dst
,
const
void
*
src
,
size_t
n
);
int
memcmp
(
const
void
*
s1
,
const
void
*
s2
,
size_t
n
);
size_t
strlen
(
const
char
*
s
);
char
*
strcat
(
char
*
dst
,
const
char
*
src
);
char
*
strcpy
(
char
*
dst
,
const
char
*
src
);
char
*
strncpy
(
char
*
dst
,
const
char
*
src
,
size_t
n
);
int
strcmp
(
const
char
*
s1
,
const
char
*
s2
);
int
strncmp
(
const
char
*
s1
,
const
char
*
s2
,
size_t
n
);
char
*
strtok
(
char
*
s
,
const
char
*
delim
);
char
*
strstr
(
const
char
*
,
const
char
*
);
char
*
strchr
(
const
char
*
s
,
int
c
);
char
*
strrchr
(
const
char
*
s
,
int
c
);
// stdlib.h
int
atoi
(
const
char
*
nptr
);
int
abs
(
int
x
);
unsigned
long
time
();
void
srand
(
unsigned
int
seed
);
int
rand
();
void
*
malloc
(
size_t
size
);
void
free
(
void
*
ptr
);
// stdio.h
int
printf
(
const
char
*
fmt
,
...);
int
sprintf
(
char
*
out
,
const
char
*
format
,
...);
int
snprintf
(
char
*
s
,
size_t
n
,
const
char
*
format
,
...);
int
vsprintf
(
char
*
str
,
const
char
*
format
,
va_list
ap
);
int
vsnprintf
(
char
*
str
,
size_t
size
,
const
char
*
format
,
va_list
ap
);
int
sscanf
(
const
char
*
str
,
const
char
*
format
,
...);
void
qsort
(
void
*
base
,
size_t
nmemb
,
size_t
size
,
int
(
*
compar
)(
const
void
*
,
const
void
*
));
#define printk printf
// assert.h
#ifdef NDEBUG
#define assert(ignore) ((void)0)
#else
#define assert(cond) \
do
{
\
if
(
!
(
cond
))
{
\
printk
(
"Assertion fail at %s:%d
\n
"
,
__FILE__
,
__LINE__
);
\
_halt
(
1
);
\
}
\
}
while
(
0
)
#endif
#ifdef __cplusplus
}
#endif
#endif
/*
* Static runtime library for a system software on AbstractMachine
*/
#ifndef __KLIB_H__
#define __KLIB_H__
#include <am.h>
#include <stdarg.h>
//#define __NATIVE_USE_KLIB__
#ifdef __NATIVE_USE_KLIB__
#define strlen my_strlen
#define strcpy my_strcpy
#define strncpy my_strncpy
#define strcat my_strcat
#define strcmp my_strcmp
#define strncmp my_strncmp
#define memset my_memset
#define memcpy my_memcpy
#define memcmp my_memcmp
#define printf my_printf
#define vsprintf my_vsprintf
#define sprintf my_sprintf
#define snprintf my_snprintf
#define malloc my_malloc
#define free my_free
#endif
#ifdef __cplusplus
extern
"C"
{
#endif
// am devices
uint32_t
uptime
();
void
get_timeofday
(
void
*
rtc
);
int
read_key
();
void
draw_rect
(
uint32_t
*
pixels
,
int
x
,
int
y
,
int
w
,
int
h
);
void
draw_sync
();
int
screen_width
();
int
screen_height
();
// string.h
void
*
memset
(
void
*
v
,
int
c
,
size_t
n
);
void
*
memcpy
(
void
*
dst
,
const
void
*
src
,
size_t
n
);
void
*
memmove
(
void
*
dst
,
const
void
*
src
,
size_t
n
);
int
memcmp
(
const
void
*
s1
,
const
void
*
s2
,
size_t
n
);
size_t
strlen
(
const
char
*
s
);
char
*
strcat
(
char
*
dst
,
const
char
*
src
);
char
*
strcpy
(
char
*
dst
,
const
char
*
src
);
char
*
strncpy
(
char
*
dst
,
const
char
*
src
,
size_t
n
);
int
strcmp
(
const
char
*
s1
,
const
char
*
s2
);
int
strncmp
(
const
char
*
s1
,
const
char
*
s2
,
size_t
n
);
char
*
strtok
(
char
*
s
,
const
char
*
delim
);
char
*
strstr
(
const
char
*
,
const
char
*
);
char
*
strchr
(
const
char
*
s
,
int
c
);
char
*
strrchr
(
const
char
*
s
,
int
c
);
// stdlib.h
int
atoi
(
const
char
*
nptr
);
int
abs
(
int
x
);
unsigned
long
time
();
void
srand
(
unsigned
int
seed
);
int
rand
();
void
*
malloc
(
size_t
size
);
void
free
(
void
*
ptr
);
// stdio.h
int
printf
(
const
char
*
fmt
,
...);
int
sprintf
(
char
*
out
,
const
char
*
format
,
...);
int
snprintf
(
char
*
s
,
size_t
n
,
const
char
*
format
,
...);
int
vsprintf
(
char
*
str
,
const
char
*
format
,
va_list
ap
);
int
vsnprintf
(
char
*
str
,
size_t
size
,
const
char
*
format
,
va_list
ap
);
int
sscanf
(
const
char
*
str
,
const
char
*
format
,
...);
void
qsort
(
void
*
base
,
size_t
nmemb
,
size_t
size
,
int
(
*
compar
)(
const
void
*
,
const
void
*
));
#define printk printf
// assert.h
#ifdef NDEBUG
#define assert(ignore) ((void)0)
#else
#define assert(cond) \
do { \
if (!(cond)) { \
printk("Assertion fail at %s:%d\n", __FILE__, __LINE__); \
_halt(1); \
} \
} while (0)
#endif
#ifdef __cplusplus
}
#endif
#endif
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录