Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
53c89efd
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看板
提交
53c89efd
编写于
7月 31, 2017
作者:
R
Richard Henderson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
tcg/ppc: Use constant pool for movi
Signed-off-by:
N
Richard Henderson
<
rth@twiddle.net
>
上级
77bfc7c0
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
31 addition
and
4 deletion
+31
-4
tcg/ppc/tcg-target.h
tcg/ppc/tcg-target.h
+1
-0
tcg/ppc/tcg-target.inc.c
tcg/ppc/tcg-target.inc.c
+30
-4
未找到文件。
tcg/ppc/tcg-target.h
浏览文件 @
53c89efd
...
...
@@ -132,5 +132,6 @@ void tb_target_set_jmp_target(uintptr_t, uintptr_t, uintptr_t);
#ifdef CONFIG_SOFTMMU
#define TCG_TARGET_NEED_LDST_LABELS
#endif
#define TCG_TARGET_NEED_POOL_LABELS
#endif
tcg/ppc/tcg-target.inc.c
浏览文件 @
53c89efd
...
...
@@ -22,6 +22,9 @@
* THE SOFTWARE.
*/
#include "elf.h"
#include "tcg-pool.inc.c"
#if defined _CALL_DARWIN || defined __APPLE__
#define TCG_TARGET_CALL_DARWIN
#endif
...
...
@@ -58,8 +61,6 @@
static
tcg_insn_unit
*
tb_ret_addr
;
#include "elf.h"
bool
have_isa_2_06
;
bool
have_isa_3_00
;
...
...
@@ -224,9 +225,12 @@ static inline void tcg_out_bc_noaddr(TCGContext *s, int insn)
static
void
patch_reloc
(
tcg_insn_unit
*
code_ptr
,
int
type
,
intptr_t
value
,
intptr_t
addend
)
{
tcg_insn_unit
*
target
=
(
tcg_insn_unit
*
)
value
;
tcg_insn_unit
*
target
;
tcg_insn_unit
old
;
value
+=
addend
;
target
=
(
tcg_insn_unit
*
)
value
;
tcg_debug_assert
(
addend
==
0
);
switch
(
type
)
{
case
R_PPC_REL14
:
reloc_pc14
(
code_ptr
,
target
);
...
...
@@ -234,6 +238,12 @@ static void patch_reloc(tcg_insn_unit *code_ptr, int type,
case
R_PPC_REL24
:
reloc_pc24
(
code_ptr
,
target
);
break
;
case
R_PPC_ADDR16
:
assert
(
value
==
(
int16_t
)
value
);
old
=
*
code_ptr
;
old
=
deposit32
(
old
,
0
,
16
,
value
);
*
code_ptr
=
old
;
break
;
default:
tcg_abort
();
}
...
...
@@ -676,6 +686,14 @@ static void tcg_out_movi_int(TCGContext *s, TCGType type, TCGReg ret,
return
;
}
/* Use the constant pool, if possible. */
if
(
!
in_prologue
&&
USE_REG_TB
)
{
new_pool_label
(
s
,
arg
,
R_PPC_ADDR16
,
s
->
code_ptr
,
-
(
intptr_t
)
s
->
code_gen_ptr
);
tcg_out32
(
s
,
LD
|
TAI
(
ret
,
TCG_REG_TB
,
0
));
return
;
}
tmp
=
arg
>>
31
>>
1
;
tcg_out_movi
(
s
,
TCG_TYPE_I32
,
ret
,
tmp
);
if
(
tmp
)
{
...
...
@@ -1858,6 +1876,14 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, bool is_64)
#endif
}
static
void
tcg_out_nop_fill
(
tcg_insn_unit
*
p
,
int
count
)
{
int
i
;
for
(
i
=
0
;
i
<
count
;
++
i
)
{
p
[
i
]
=
NOP
;
}
}
/* Parameters for function call generation, used in tcg.c. */
#define TCG_TARGET_STACK_ALIGN 16
#define TCG_TARGET_EXTEND_ARGS 1
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录