Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
a2397807
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a2397807
编写于
5月 10, 2009
作者:
J
Jan Kiszka
提交者:
Anthony Liguori
5月 22, 2009
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
x86: Add support for resume flag
Signed-off-by:
N
Jan Kiszka
<
jan.kiszka@siemens.com
>
上级
37cb6fc3
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
17 addition
and
4 deletion
+17
-4
target-i386/cpu.h
target-i386/cpu.h
+6
-3
target-i386/helper.h
target-i386/helper.h
+1
-0
target-i386/op_helper.c
target-i386/op_helper.c
+5
-0
target-i386/translate.c
target-i386/translate.c
+5
-1
未找到文件。
target-i386/cpu.h
浏览文件 @
a2397807
...
...
@@ -145,11 +145,12 @@
#define HF_IOPL_SHIFT 12
/* must be same as eflags */
#define HF_LMA_SHIFT 14
/* only used on x86_64: long mode active */
#define HF_CS64_SHIFT 15
/* only used on x86_64: 64 bit code segment */
#define HF_
OSFXSR_SHIFT 16
/* CR4.OSFXSR
*/
#define HF_
RF_SHIFT 16
/* must be same as eflags
*/
#define HF_VM_SHIFT 17
/* must be same as eflags */
#define HF_SMM_SHIFT 19
/* CPU in SMM mode */
#define HF_SVME_SHIFT 20
/* SVME enabled (copy of EFER.SVME) */
#define HF_SVMI_SHIFT 21
/* SVM intercepts are active */
#define HF_OSFXSR_SHIFT 22
/* CR4.OSFXSR */
#define HF_CPL_MASK (3 << HF_CPL_SHIFT)
#define HF_SOFTMMU_MASK (1 << HF_SOFTMMU_SHIFT)
...
...
@@ -165,11 +166,12 @@
#define HF_IOPL_MASK (3 << HF_IOPL_SHIFT)
#define HF_LMA_MASK (1 << HF_LMA_SHIFT)
#define HF_CS64_MASK (1 << HF_CS64_SHIFT)
#define HF_
OSFXSR_MASK (1 << HF_OSFXSR
_SHIFT)
#define HF_
RF_MASK (1 << HF_RF
_SHIFT)
#define HF_VM_MASK (1 << HF_VM_SHIFT)
#define HF_SMM_MASK (1 << HF_SMM_SHIFT)
#define HF_SVME_MASK (1 << HF_SVME_SHIFT)
#define HF_SVMI_MASK (1 << HF_SVMI_SHIFT)
#define HF_OSFXSR_MASK (1 << HF_OSFXSR_SHIFT)
/* hflags2 */
...
...
@@ -881,7 +883,8 @@ static inline void cpu_get_tb_cpu_state(CPUState *env, target_ulong *pc,
{
*
cs_base
=
env
->
segs
[
R_CS
].
base
;
*
pc
=
*
cs_base
+
env
->
eip
;
*
flags
=
env
->
hflags
|
(
env
->
eflags
&
(
IOPL_MASK
|
TF_MASK
|
VM_MASK
));
*
flags
=
env
->
hflags
|
(
env
->
eflags
&
(
IOPL_MASK
|
TF_MASK
|
RF_MASK
|
VM_MASK
));
}
#endif
/* CPU_I386_H */
target-i386/helper.h
浏览文件 @
a2397807
...
...
@@ -62,6 +62,7 @@ DEF_HELPER_1(hlt, void, int)
DEF_HELPER_1
(
monitor
,
void
,
tl
)
DEF_HELPER_1
(
mwait
,
void
,
int
)
DEF_HELPER_0
(
debug
,
void
)
DEF_HELPER_0
(
reset_rf
,
void
)
DEF_HELPER_2
(
raise_interrupt
,
void
,
int
,
int
)
DEF_HELPER_1
(
raise_exception
,
void
,
int
)
DEF_HELPER_0
(
cli
,
void
)
...
...
target-i386/op_helper.c
浏览文件 @
a2397807
...
...
@@ -4688,6 +4688,11 @@ void helper_debug(void)
cpu_loop_exit
();
}
void
helper_reset_rf
(
void
)
{
env
->
eflags
&=
~
RF_MASK
;
}
void
helper_raise_interrupt
(
int
intno
,
int
next_eip_addend
)
{
raise_interrupt
(
intno
,
1
,
0
,
next_eip_addend
);
...
...
target-i386/translate.c
浏览文件 @
a2397807
...
...
@@ -2704,6 +2704,9 @@ static void gen_eob(DisasContext *s)
if
(
s
->
tb
->
flags
&
HF_INHIBIT_IRQ_MASK
)
{
gen_helper_reset_inhibit_irq
();
}
if
(
s
->
tb
->
flags
&
HF_RF_MASK
)
{
gen_helper_reset_rf
();
}
if
(
s
->
singlestep_enabled
)
{
gen_helper_debug
();
}
else
if
(
s
->
tf
)
{
...
...
@@ -7687,7 +7690,8 @@ static inline void gen_intermediate_code_internal(CPUState *env,
for
(;;)
{
if
(
unlikely
(
!
TAILQ_EMPTY
(
&
env
->
breakpoints
)))
{
TAILQ_FOREACH
(
bp
,
&
env
->
breakpoints
,
entry
)
{
if
(
bp
->
pc
==
pc_ptr
)
{
if
(
bp
->
pc
==
pc_ptr
&&
!
((
bp
->
flags
&
BP_CPU
)
&&
(
tb
->
flags
&
HF_RF_MASK
)))
{
gen_debug
(
dc
,
pc_ptr
-
dc
->
cs_base
);
break
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录