Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
d0e39c5d
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看板
提交
d0e39c5d
编写于
9月 02, 2013
作者:
A
Andreas Färber
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
target-ppc: Use PowerPCCPU in PowerPCCPUClass::handle_mmu_fault hook
Signed-off-by:
N
Andreas Färber
<
afaerber@suse.de
>
上级
611d4f99
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
14 addition
and
10 deletion
+14
-10
target-ppc/cpu-qom.h
target-ppc/cpu-qom.h
+5
-3
target-ppc/mmu-hash32.c
target-ppc/mmu-hash32.c
+3
-2
target-ppc/mmu-hash32.h
target-ppc/mmu-hash32.h
+1
-1
target-ppc/mmu-hash64.c
target-ppc/mmu-hash64.c
+3
-2
target-ppc/mmu-hash64.h
target-ppc/mmu-hash64.h
+1
-1
target-ppc/mmu_helper.c
target-ppc/mmu_helper.c
+1
-1
未找到文件。
target-ppc/cpu-qom.h
浏览文件 @
d0e39c5d
...
...
@@ -38,6 +38,8 @@
#define POWERPC_CPU_GET_CLASS(obj) \
OBJECT_GET_CLASS(PowerPCCPUClass, (obj), TYPE_POWERPC_CPU)
typedef
struct
PowerPCCPU
PowerPCCPU
;
/**
* PowerPCCPUClass:
* @parent_realize: The parent class' realize handler.
...
...
@@ -71,7 +73,7 @@ typedef struct PowerPCCPUClass {
void
(
*
init_proc
)(
CPUPPCState
*
env
);
int
(
*
check_pow
)(
CPUPPCState
*
env
);
#if defined(CONFIG_SOFTMMU)
int
(
*
handle_mmu_fault
)(
CPUPPCState
*
env
,
target_ulong
eaddr
,
int
rwx
,
int
(
*
handle_mmu_fault
)(
PowerPCCPU
*
cpu
,
target_ulong
eaddr
,
int
rwx
,
int
mmu_idx
);
#endif
}
PowerPCCPUClass
;
...
...
@@ -83,14 +85,14 @@ typedef struct PowerPCCPUClass {
*
* A PowerPC CPU.
*/
typedef
struct
PowerPCCPU
{
struct
PowerPCCPU
{
/*< private >*/
CPUState
parent_obj
;
/*< public >*/
CPUPPCState
env
;
int
cpu_dt_id
;
}
PowerPCCPU
;
};
static
inline
PowerPCCPU
*
ppc_env_get_cpu
(
CPUPPCState
*
env
)
{
...
...
target-ppc/mmu-hash32.c
浏览文件 @
d0e39c5d
...
...
@@ -381,10 +381,11 @@ static hwaddr ppc_hash32_pte_raddr(target_ulong sr, ppc_hash_pte32_t pte,
return
(
rpn
&
~
mask
)
|
(
eaddr
&
mask
);
}
int
ppc_hash32_handle_mmu_fault
(
CPUPPCState
*
env
,
target_ulong
eaddr
,
int
rwx
,
int
ppc_hash32_handle_mmu_fault
(
PowerPCCPU
*
cpu
,
target_ulong
eaddr
,
int
rwx
,
int
mmu_idx
)
{
CPUState
*
cs
=
CPU
(
ppc_env_get_cpu
(
env
));
CPUState
*
cs
=
CPU
(
cpu
);
CPUPPCState
*
env
=
&
cpu
->
env
;
target_ulong
sr
;
hwaddr
pte_offset
;
ppc_hash_pte32_t
pte
;
...
...
target-ppc/mmu-hash32.h
浏览文件 @
d0e39c5d
...
...
@@ -5,7 +5,7 @@
hwaddr
get_pteg_offset32
(
CPUPPCState
*
env
,
hwaddr
hash
);
hwaddr
ppc_hash32_get_phys_page_debug
(
CPUPPCState
*
env
,
target_ulong
addr
);
int
ppc_hash32_handle_mmu_fault
(
CPUPPCState
*
env
,
target_ulong
address
,
int
rw
,
int
ppc_hash32_handle_mmu_fault
(
PowerPCCPU
*
cpu
,
target_ulong
address
,
int
rw
,
int
mmu_idx
);
/*
...
...
target-ppc/mmu-hash64.c
浏览文件 @
d0e39c5d
...
...
@@ -454,10 +454,11 @@ static hwaddr ppc_hash64_pte_raddr(ppc_slb_t *slb, ppc_hash_pte64_t pte,
return
(
rpn
&
~
mask
)
|
(
eaddr
&
mask
);
}
int
ppc_hash64_handle_mmu_fault
(
CPUPPCState
*
env
,
target_ulong
eaddr
,
int
ppc_hash64_handle_mmu_fault
(
PowerPCCPU
*
cpu
,
target_ulong
eaddr
,
int
rwx
,
int
mmu_idx
)
{
CPUState
*
cs
=
CPU
(
ppc_env_get_cpu
(
env
));
CPUState
*
cs
=
CPU
(
cpu
);
CPUPPCState
*
env
=
&
cpu
->
env
;
ppc_slb_t
*
slb
;
hwaddr
pte_offset
;
ppc_hash_pte64_t
pte
;
...
...
target-ppc/mmu-hash64.h
浏览文件 @
d0e39c5d
...
...
@@ -7,7 +7,7 @@
void
dump_slb
(
FILE
*
f
,
fprintf_function
cpu_fprintf
,
CPUPPCState
*
env
);
int
ppc_store_slb
(
CPUPPCState
*
env
,
target_ulong
rb
,
target_ulong
rs
);
hwaddr
ppc_hash64_get_phys_page_debug
(
CPUPPCState
*
env
,
target_ulong
addr
);
int
ppc_hash64_handle_mmu_fault
(
CPUPPCState
*
env
,
target_ulong
address
,
int
rw
,
int
ppc_hash64_handle_mmu_fault
(
PowerPCCPU
*
cpu
,
target_ulong
address
,
int
rw
,
int
mmu_idx
);
void
ppc_hash64_store_hpte
(
CPUPPCState
*
env
,
target_ulong
index
,
target_ulong
pte0
,
target_ulong
pte1
);
...
...
target-ppc/mmu_helper.c
浏览文件 @
d0e39c5d
...
...
@@ -2902,7 +2902,7 @@ void tlb_fill(CPUState *cs, target_ulong addr, int is_write, int mmu_idx,
int
ret
;
if
(
pcc
->
handle_mmu_fault
)
{
ret
=
pcc
->
handle_mmu_fault
(
env
,
addr
,
is_write
,
mmu_idx
);
ret
=
pcc
->
handle_mmu_fault
(
cpu
,
addr
,
is_write
,
mmu_idx
);
}
else
{
ret
=
cpu_ppc_handle_mmu_fault
(
env
,
addr
,
is_write
,
mmu_idx
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录