Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
NEMU
提交
2eea730a
N
NEMU
项目概览
OpenXiangShan
/
NEMU
大约 1 年 前同步成功
通知
7
Star
171
Fork
67
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
N
NEMU
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2eea730a
编写于
1月 18, 2019
作者:
Z
Zihao Yu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
macro: add MAP
上级
2b723534
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
27 addition
and
31 deletion
+27
-31
include/macro.h
include/macro.h
+2
-0
src/device/keyboard.c
src/device/keyboard.c
+11
-11
src/isa/x86/exec/eflags.c
src/isa/x86/exec/eflags.c
+9
-15
src/isa/x86/include/isa/reg.h
src/isa/x86/include/isa/reg.h
+5
-5
未找到文件。
include/macro.h
浏览文件 @
2eea730a
...
...
@@ -10,4 +10,6 @@
#define concat4(x, y, z, w) concat3(concat(x, y), z, w)
#define concat5(x, y, z, v, w) concat4(concat(x, y), z, v, w)
#define MAP(c, f) c(f)
#endif
src/device/keyboard.c
浏览文件 @
2eea730a
...
...
@@ -9,25 +9,25 @@
static
uint32_t
*
i8042_data_port_base
;
// Note that this is not the standard
#define _KEYS(
_
) \
_(ESCAPE) _(F1) _(F2) _(F3) _(F4) _(F5) _(F6) _(F7) _(F8) _(F9) _(F10) _(F11) _
(F12) \
_(GRAVE) _(1) _(2) _(3) _(4) _(5) _(6) _(7) _(8) _(9) _(0) _(MINUS) _(EQUALS) _
(BACKSPACE) \
_(TAB) _(Q) _(W) _(E) _(R) _(T) _(Y) _(U) _(I) _(O) _(P) _(LEFTBRACKET) _(RIGHTBRACKET) _
(BACKSLASH) \
_(CAPSLOCK) _(A) _(S) _(D) _(F) _(G) _(H) _(J) _(K) _(L) _(SEMICOLON) _(APOSTROPHE) _
(RETURN) \
_(LSHIFT) _(Z) _(X) _(C) _(V) _(B) _(N) _(M) _(COMMA) _(PERIOD) _(SLASH) _
(RSHIFT) \
_(LCTRL) _(APPLICATION) _(LALT) _(SPACE) _(RALT) _
(RCTRL) \
_(UP) _(DOWN) _(LEFT) _(RIGHT) _(INSERT) _(DELETE) _(HOME) _(END) _(PAGEUP) _
(PAGEDOWN)
#define _KEYS(
f
) \
f(ESCAPE) f(F1) f(F2) f(F3) f(F4) f(F5) f(F6) f(F7) f(F8) f(F9) f(F10) f(F11) f
(F12) \
f(GRAVE) f(1) f(2) f(3) f(4) f(5) f(6) f(7) f(8) f(9) f(0) f(MINUS) f(EQUALS) f
(BACKSPACE) \
f(TAB) f(Q) f(W) f(E) f(R) f(T) f(Y) f(U) f(I) f(O) f(P) f(LEFTBRACKET) f(RIGHTBRACKET) f
(BACKSLASH) \
f(CAPSLOCK) f(A) f(S) f(D) f(F) f(G) f(H) f(J) f(K) f(L) f(SEMICOLON) f(APOSTROPHE) f
(RETURN) \
f(LSHIFT) f(Z) f(X) f(C) f(V) f(B) f(N) f(M) f(COMMA) f(PERIOD) f(SLASH) f
(RSHIFT) \
f(LCTRL) f(APPLICATION) f(LALT) f(SPACE) f(RALT) f
(RCTRL) \
f(UP) f(DOWN) f(LEFT) f(RIGHT) f(INSERT) f(DELETE) f(HOME) f(END) f(PAGEUP) f
(PAGEDOWN)
#define _KEY_NAME(k) _KEY_##k,
enum
{
_KEY_NONE
=
0
,
_KEYS
(
_KEY_NAME
)
MAP
(
_KEYS
,
_KEY_NAME
)
};
#define
XX
(k) [concat(SDL_SCANCODE_, k)] = concat(_KEY_, k),
#define
SDL_KEYMAP
(k) [concat(SDL_SCANCODE_, k)] = concat(_KEY_, k),
static
uint32_t
keymap
[
256
]
=
{
_KEYS
(
XX
)
MAP
(
_KEYS
,
SDL_KEYMAP
)
};
#define KEY_QUEUE_LEN 1024
...
...
src/isa/x86/exec/eflags.c
浏览文件 @
2eea730a
#include "cpu/rtl.h"
void
rtl_compute_eflags
(
rtlreg_t
*
dest
)
{
rtl_li
(
dest
,
0
);
#define __f(X) \
rtl_shli(&t0, &cpu.X, concat(EFLAGS_BIT_, X)); \
#define ENCODE(flag) \
rtl_shli(&t0, &cpu.flag, concat(EFLAGS_BIT_, flag)); \
rtl_or(dest, dest, &t0);
__map_eflags
(
__f
)
#undef __f
#define DECODE(flag) \
rtl_shri(&cpu.flag, src, concat(EFLAGS_BIT_, flag)); \
rtl_andi(&cpu.flag, &cpu.flag, 0x1);
void
rtl_compute_eflags
(
rtlreg_t
*
dest
)
{
rtl_li
(
dest
,
0
);
MAP
(
_EFLAGS
,
ENCODE
)
rtl_ori
(
dest
,
dest
,
0x2
);
}
void
rtl_set_eflags
(
const
rtlreg_t
*
src
)
{
#define __f(X) \
rtl_shri(&cpu.X, src, concat(EFLAGS_BIT_, X)); \
rtl_andi(&cpu.X, &cpu.X, 0x1);
__map_eflags
(
__f
)
#undef __f
MAP
(
_EFLAGS
,
DECODE
)
}
src/isa/x86/include/isa/reg.h
浏览文件 @
2eea730a
...
...
@@ -16,13 +16,13 @@ enum { R_AL, R_CL, R_DL, R_BL, R_AH, R_CH, R_DH, R_BH };
#define EFLAGS_BIT_IF 9
#define EFLAGS_BIT_OF 11
#define _
_map_eflags
(f) f(OF) f(IF) f(SF) f(ZF) f(CF)
#define __f(
X) concat(EFLAGS_MASK_, X) = 1 << concat(EFLAGS_BIT_, X
),
#define _
EFLAGS
(f) f(OF) f(IF) f(SF) f(ZF) f(CF)
#define __f(
flag) concat(EFLAGS_MASK_, flag) = 1 << concat(EFLAGS_BIT_, flag
),
enum
{
__map_eflags
(
__f
)
MAP
(
_EFLAGS
,
__f
)
#undef __f
#define __f(
X) | concat(EFLAGS_MASK_, X
)
EFLAGS_MASK_ALL
=
0
__map_eflags
(
__f
)
#define __f(
flag) | concat(EFLAGS_MASK_, flag
)
EFLAGS_MASK_ALL
=
0
MAP
(
_EFLAGS
,
__f
)
#undef __f
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录