Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
06c2f506
Q
qemu
项目概览
openeuler
/
qemu
通知
10
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
qemu
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
06c2f506
编写于
1月 04, 2005
作者:
B
bellard
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
syscall insn fix
git-svn-id:
svn://svn.savannah.nongnu.org/qemu/trunk@1199
c046a42c-6fe2-441c-8c8c-71466251a162
上级
bdfaf503
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
7 addition
and
7 deletion
+7
-7
target-i386/exec.h
target-i386/exec.h
+1
-1
target-i386/helper.c
target-i386/helper.c
+4
-4
target-i386/op.c
target-i386/op.c
+1
-1
target-i386/translate.c
target-i386/translate.c
+1
-1
未找到文件。
target-i386/exec.h
浏览文件 @
06c2f506
...
@@ -199,7 +199,7 @@ void helper_cpuid(void);
...
@@ -199,7 +199,7 @@ void helper_cpuid(void);
void
helper_enter_level
(
int
level
,
int
data32
);
void
helper_enter_level
(
int
level
,
int
data32
);
void
helper_sysenter
(
void
);
void
helper_sysenter
(
void
);
void
helper_sysexit
(
void
);
void
helper_sysexit
(
void
);
void
helper_syscall
(
voi
d
);
void
helper_syscall
(
int
next_eip_adden
d
);
void
helper_sysret
(
int
dflag
);
void
helper_sysret
(
int
dflag
);
void
helper_rdtsc
(
void
);
void
helper_rdtsc
(
void
);
void
helper_rdmsr
(
void
);
void
helper_rdmsr
(
void
);
...
...
target-i386/helper.c
浏览文件 @
06c2f506
...
@@ -934,7 +934,7 @@ static void do_interrupt64(int intno, int is_int, int error_code,
...
@@ -934,7 +934,7 @@ static void do_interrupt64(int intno, int is_int, int error_code,
env
->
eflags
&=
~
(
TF_MASK
|
VM_MASK
|
RF_MASK
|
NT_MASK
);
env
->
eflags
&=
~
(
TF_MASK
|
VM_MASK
|
RF_MASK
|
NT_MASK
);
}
}
void
helper_syscall
(
voi
d
)
void
helper_syscall
(
int
next_eip_adden
d
)
{
{
int
selector
;
int
selector
;
...
@@ -943,7 +943,7 @@ void helper_syscall(void)
...
@@ -943,7 +943,7 @@ void helper_syscall(void)
}
}
selector
=
(
env
->
star
>>
32
)
&
0xffff
;
selector
=
(
env
->
star
>>
32
)
&
0xffff
;
if
(
env
->
hflags
&
HF_LMA_MASK
)
{
if
(
env
->
hflags
&
HF_LMA_MASK
)
{
ECX
=
env
->
eip
;
ECX
=
env
->
eip
+
next_eip_addend
;
env
->
regs
[
11
]
=
compute_eflags
();
env
->
regs
[
11
]
=
compute_eflags
();
cpu_x86_set_cpl
(
env
,
0
);
cpu_x86_set_cpl
(
env
,
0
);
...
@@ -963,7 +963,7 @@ void helper_syscall(void)
...
@@ -963,7 +963,7 @@ void helper_syscall(void)
else
else
env
->
eip
=
env
->
cstar
;
env
->
eip
=
env
->
cstar
;
}
else
{
}
else
{
ECX
=
(
uint32_t
)
env
->
eip
;
ECX
=
(
uint32_t
)
(
env
->
eip
+
next_eip_addend
)
;
cpu_x86_set_cpl
(
env
,
0
);
cpu_x86_set_cpl
(
env
,
0
);
cpu_x86_load_seg_cache
(
env
,
R_CS
,
selector
&
0xfffc
,
cpu_x86_load_seg_cache
(
env
,
R_CS
,
selector
&
0xfffc
,
...
@@ -1119,8 +1119,8 @@ void do_interrupt(int intno, int is_int, int error_code,
...
@@ -1119,8 +1119,8 @@ void do_interrupt(int intno, int is_int, int error_code,
fprintf
(
logfile
,
" EAX="
TARGET_FMT_lx
,
EAX
);
fprintf
(
logfile
,
" EAX="
TARGET_FMT_lx
,
EAX
);
}
}
fprintf
(
logfile
,
"
\n
"
);
fprintf
(
logfile
,
"
\n
"
);
cpu_dump_state
(
env
,
logfile
,
fprintf
,
X86_DUMP_CCOP
);
#if 0
#if 0
cpu_dump_state(env, logfile, fprintf, X86_DUMP_CCOP);
{
{
int i;
int i;
uint8_t *ptr;
uint8_t *ptr;
...
...
target-i386/op.c
浏览文件 @
06c2f506
...
@@ -938,7 +938,7 @@ void OPPROTO op_sysexit(void)
...
@@ -938,7 +938,7 @@ void OPPROTO op_sysexit(void)
#ifdef TARGET_X86_64
#ifdef TARGET_X86_64
void
OPPROTO
op_syscall
(
void
)
void
OPPROTO
op_syscall
(
void
)
{
{
helper_syscall
();
helper_syscall
(
PARAM1
);
}
}
void
OPPROTO
op_sysret
(
void
)
void
OPPROTO
op_sysret
(
void
)
...
...
target-i386/translate.c
浏览文件 @
06c2f506
...
@@ -4626,7 +4626,7 @@ static target_ulong disas_insn(DisasContext *s, target_ulong pc_start)
...
@@ -4626,7 +4626,7 @@ static target_ulong disas_insn(DisasContext *s, target_ulong pc_start)
s
->
cc_op
=
CC_OP_DYNAMIC
;
s
->
cc_op
=
CC_OP_DYNAMIC
;
}
}
gen_jmp_im
(
pc_start
-
s
->
cs_base
);
gen_jmp_im
(
pc_start
-
s
->
cs_base
);
gen_op_syscall
();
gen_op_syscall
(
s
->
pc
-
pc_start
);
gen_eob
(
s
);
gen_eob
(
s
);
break
;
break
;
case
0x107
:
/* sysret */
case
0x107
:
/* sysret */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录