Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
7af04fc0
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
7af04fc0
编写于
8月 18, 2010
作者:
A
Avi Kivity
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
KVM: x86 emulator: implement DAS (opcode 2F)
Signed-off-by:
N
Avi Kivity
<
avi@redhat.com
>
上级
fb2c2641
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
41 addition
and
1 deletion
+41
-1
arch/x86/kvm/emulate.c
arch/x86/kvm/emulate.c
+41
-1
未找到文件。
arch/x86/kvm/emulate.c
浏览文件 @
7af04fc0
...
@@ -2175,6 +2175,45 @@ static int em_push(struct x86_emulate_ctxt *ctxt)
...
@@ -2175,6 +2175,45 @@ static int em_push(struct x86_emulate_ctxt *ctxt)
return
X86EMUL_CONTINUE
;
return
X86EMUL_CONTINUE
;
}
}
static
int
em_das
(
struct
x86_emulate_ctxt
*
ctxt
)
{
struct
decode_cache
*
c
=
&
ctxt
->
decode
;
u8
al
,
old_al
;
bool
af
,
cf
,
old_cf
;
cf
=
ctxt
->
eflags
&
X86_EFLAGS_CF
;
al
=
c
->
dst
.
val
;
old_al
=
al
;
old_cf
=
cf
;
cf
=
false
;
af
=
ctxt
->
eflags
&
X86_EFLAGS_AF
;
if
((
al
&
0x0f
)
>
9
||
af
)
{
al
-=
6
;
cf
=
old_cf
|
(
al
>=
250
);
af
=
true
;
}
else
{
af
=
false
;
}
if
(
old_al
>
0x99
||
old_cf
)
{
al
-=
0x60
;
cf
=
true
;
}
c
->
dst
.
val
=
al
;
/* Set PF, ZF, SF */
c
->
src
.
type
=
OP_IMM
;
c
->
src
.
val
=
0
;
c
->
src
.
bytes
=
1
;
emulate_2op_SrcV
(
"or"
,
c
->
src
,
c
->
dst
,
ctxt
->
eflags
);
ctxt
->
eflags
&=
~
(
X86_EFLAGS_AF
|
X86_EFLAGS_CF
);
if
(
cf
)
ctxt
->
eflags
|=
X86_EFLAGS_CF
;
if
(
af
)
ctxt
->
eflags
|=
X86_EFLAGS_AF
;
return
X86EMUL_CONTINUE
;
}
#define D(_y) { .flags = (_y) }
#define D(_y) { .flags = (_y) }
#define N D(0)
#define N D(0)
#define G(_f, _g) { .flags = ((_f) | Group), .u.group = (_g) }
#define G(_f, _g) { .flags = ((_f) | Group), .u.group = (_g) }
...
@@ -2258,7 +2297,8 @@ static struct opcode opcode_table[256] = {
...
@@ -2258,7 +2297,8 @@ static struct opcode opcode_table[256] = {
/* 0x28 - 0x2F */
/* 0x28 - 0x2F */
D
(
ByteOp
|
DstMem
|
SrcReg
|
ModRM
|
Lock
),
D
(
DstMem
|
SrcReg
|
ModRM
|
Lock
),
D
(
ByteOp
|
DstMem
|
SrcReg
|
ModRM
|
Lock
),
D
(
DstMem
|
SrcReg
|
ModRM
|
Lock
),
D
(
ByteOp
|
DstReg
|
SrcMem
|
ModRM
),
D
(
DstReg
|
SrcMem
|
ModRM
),
D
(
ByteOp
|
DstReg
|
SrcMem
|
ModRM
),
D
(
DstReg
|
SrcMem
|
ModRM
),
D
(
ByteOp
|
DstAcc
|
SrcImmByte
),
D
(
DstAcc
|
SrcImm
),
N
,
N
,
D
(
ByteOp
|
DstAcc
|
SrcImmByte
),
D
(
DstAcc
|
SrcImm
),
N
,
I
(
ByteOp
|
DstAcc
|
No64
,
em_das
),
/* 0x30 - 0x37 */
/* 0x30 - 0x37 */
D
(
ByteOp
|
DstMem
|
SrcReg
|
ModRM
|
Lock
),
D
(
DstMem
|
SrcReg
|
ModRM
|
Lock
),
D
(
ByteOp
|
DstMem
|
SrcReg
|
ModRM
|
Lock
),
D
(
DstMem
|
SrcReg
|
ModRM
|
Lock
),
D
(
ByteOp
|
DstReg
|
SrcMem
|
ModRM
),
D
(
DstReg
|
SrcMem
|
ModRM
),
D
(
ByteOp
|
DstReg
|
SrcMem
|
ModRM
),
D
(
DstReg
|
SrcMem
|
ModRM
),
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录