Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
d5a11fef
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,发现更多精彩内容 >>
提交
d5a11fef
编写于
8月 27, 2013
作者:
A
Andreas Färber
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
exec: Change tlb_fill() argument to CPUState
Signed-off-by:
N
Andreas Färber
<
afaerber@suse.de
>
上级
f0c3c505
变更
18
显示空白变更内容
内联
并排
Showing
18 changed file
with
91 addition
and
61 deletion
+91
-61
include/exec/exec-all.h
include/exec/exec-all.h
+1
-1
include/exec/softmmu_template.h
include/exec/softmmu_template.h
+4
-4
target-alpha/mem_helper.c
target-alpha/mem_helper.c
+5
-3
target-arm/op_helper.c
target-arm/op_helper.c
+7
-5
target-cris/op_helper.c
target-cris/op_helper.c
+4
-3
target-i386/mem_helper.c
target-i386/mem_helper.c
+7
-5
target-lm32/op_helper.c
target-lm32/op_helper.c
+8
-5
target-m68k/op_helper.c
target-m68k/op_helper.c
+5
-3
target-microblaze/op_helper.c
target-microblaze/op_helper.c
+8
-5
target-mips/op_helper.c
target-mips/op_helper.c
+4
-3
target-moxie/helper.c
target-moxie/helper.c
+4
-3
target-openrisc/mmu_helper.c
target-openrisc/mmu_helper.c
+5
-3
target-ppc/mmu_helper.c
target-ppc/mmu_helper.c
+5
-4
target-s390x/mem_helper.c
target-s390x/mem_helper.c
+5
-3
target-sh4/op_helper.c
target-sh4/op_helper.c
+5
-3
target-sparc/ldst_helper.c
target-sparc/ldst_helper.c
+5
-3
target-unicore32/op_helper.c
target-unicore32/op_helper.c
+5
-3
target-xtensa/op_helper.c
target-xtensa/op_helper.c
+4
-2
未找到文件。
include/exec/exec-all.h
浏览文件 @
d5a11fef
...
...
@@ -332,7 +332,7 @@ bool io_mem_read(struct MemoryRegion *mr, hwaddr addr,
bool
io_mem_write
(
struct
MemoryRegion
*
mr
,
hwaddr
addr
,
uint64_t
value
,
unsigned
size
);
void
tlb_fill
(
CPU
ArchState
*
env1
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
void
tlb_fill
(
CPU
State
*
cpu
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
uintptr_t
retaddr
);
uint8_t
helper_ldb_cmmu
(
CPUArchState
*
env
,
target_ulong
addr
,
int
mmu_idx
);
...
...
include/exec/softmmu_template.h
浏览文件 @
d5a11fef
...
...
@@ -158,7 +158,7 @@ WORD_TYPE helper_le_ld_name(CPUArchState *env, target_ulong addr, int mmu_idx,
do_unaligned_access
(
env
,
addr
,
READ_ACCESS_TYPE
,
mmu_idx
,
retaddr
);
}
#endif
tlb_fill
(
env
,
addr
,
READ_ACCESS_TYPE
,
mmu_idx
,
retaddr
);
tlb_fill
(
ENV_GET_CPU
(
env
)
,
addr
,
READ_ACCESS_TYPE
,
mmu_idx
,
retaddr
);
tlb_addr
=
env
->
tlb_table
[
mmu_idx
][
index
].
ADDR_READ
;
}
...
...
@@ -240,7 +240,7 @@ WORD_TYPE helper_be_ld_name(CPUArchState *env, target_ulong addr, int mmu_idx,
do_unaligned_access
(
env
,
addr
,
READ_ACCESS_TYPE
,
mmu_idx
,
retaddr
);
}
#endif
tlb_fill
(
env
,
addr
,
READ_ACCESS_TYPE
,
mmu_idx
,
retaddr
);
tlb_fill
(
ENV_GET_CPU
(
env
)
,
addr
,
READ_ACCESS_TYPE
,
mmu_idx
,
retaddr
);
tlb_addr
=
env
->
tlb_table
[
mmu_idx
][
index
].
ADDR_READ
;
}
...
...
@@ -360,7 +360,7 @@ void helper_le_st_name(CPUArchState *env, target_ulong addr, DATA_TYPE val,
do_unaligned_access
(
env
,
addr
,
1
,
mmu_idx
,
retaddr
);
}
#endif
tlb_fill
(
env
,
addr
,
1
,
mmu_idx
,
retaddr
);
tlb_fill
(
ENV_GET_CPU
(
env
)
,
addr
,
1
,
mmu_idx
,
retaddr
);
tlb_addr
=
env
->
tlb_table
[
mmu_idx
][
index
].
addr_write
;
}
...
...
@@ -436,7 +436,7 @@ void helper_be_st_name(CPUArchState *env, target_ulong addr, DATA_TYPE val,
do_unaligned_access
(
env
,
addr
,
1
,
mmu_idx
,
retaddr
);
}
#endif
tlb_fill
(
env
,
addr
,
1
,
mmu_idx
,
retaddr
);
tlb_fill
(
ENV_GET_CPU
(
env
)
,
addr
,
1
,
mmu_idx
,
retaddr
);
tlb_addr
=
env
->
tlb_table
[
mmu_idx
][
index
].
addr_write
;
}
...
...
target-alpha/mem_helper.c
浏览文件 @
d5a11fef
...
...
@@ -152,14 +152,16 @@ void alpha_cpu_unassigned_access(CPUState *cs, hwaddr addr,
NULL, it means that the function was called in C code (i.e. not
from generated code or from helper.c) */
/* XXX: fix it to restore all registers */
void
tlb_fill
(
CPU
AlphaState
*
env
,
target_ulong
addr
,
int
is_write
,
void
tlb_fill
(
CPU
State
*
cs
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
uintptr_t
retaddr
)
{
AlphaCPU
*
cpu
=
alpha_env_get_cpu
(
env
);
int
ret
;
ret
=
alpha_cpu_handle_mmu_fault
(
CPU
(
cpu
)
,
addr
,
is_write
,
mmu_idx
);
ret
=
alpha_cpu_handle_mmu_fault
(
cs
,
addr
,
is_write
,
mmu_idx
);
if
(
unlikely
(
ret
!=
0
))
{
AlphaCPU
*
cpu
=
ALPHA_CPU
(
cs
);
CPUAlphaState
*
env
=
&
cpu
->
env
;
if
(
retaddr
)
{
cpu_restore_state
(
env
,
retaddr
);
}
...
...
target-arm/op_helper.c
浏览文件 @
d5a11fef
...
...
@@ -72,17 +72,19 @@ uint32_t HELPER(neon_tbl)(CPUARMState *env, uint32_t ireg, uint32_t def,
#include "exec/softmmu_template.h"
/* try to fill the TLB and return an exception if error. If retaddr is
NULL, it means that the function was called in C code (i.e. not
from generated code or from helper.c) */
void
tlb_fill
(
CPUARMState
*
env
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
* NULL, it means that the function was called in C code (i.e. not
* from generated code or from helper.c)
*/
void
tlb_fill
(
CPUState
*
cs
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
uintptr_t
retaddr
)
{
ARMCPU
*
cpu
=
arm_env_get_cpu
(
env
);
CPUState
*
cs
=
CPU
(
cpu
);
int
ret
;
ret
=
arm_cpu_handle_mmu_fault
(
cs
,
addr
,
is_write
,
mmu_idx
);
if
(
unlikely
(
ret
))
{
ARMCPU
*
cpu
=
ARM_CPU
(
cs
);
CPUARMState
*
env
=
&
cpu
->
env
;
if
(
retaddr
)
{
/* now we have a real cpu fault */
cpu_restore_state
(
env
,
retaddr
);
...
...
target-cris/op_helper.c
浏览文件 @
d5a11fef
...
...
@@ -54,15 +54,16 @@
/* Try to fill the TLB and return an exception if error. If retaddr is
NULL, it means that the function was called in C code (i.e. not
from generated code or from helper.c) */
void
tlb_fill
(
CPU
CRISState
*
env
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
void
tlb_fill
(
CPU
State
*
cs
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
uintptr_t
retaddr
)
{
CRISCPU
*
cpu
=
cris_env_get_cpu
(
env
);
CRISCPU
*
cpu
=
CRIS_CPU
(
cs
);
CPUCRISState
*
env
=
&
cpu
->
env
;
int
ret
;
D_LOG
(
"%s pc=%x tpc=%x ra=%p
\n
"
,
__func__
,
env
->
pc
,
env
->
pregs
[
PR_EDA
],
(
void
*
)
retaddr
);
ret
=
cris_cpu_handle_mmu_fault
(
CPU
(
cpu
)
,
addr
,
is_write
,
mmu_idx
);
ret
=
cris_cpu_handle_mmu_fault
(
cs
,
addr
,
is_write
,
mmu_idx
);
if
(
unlikely
(
ret
))
{
if
(
retaddr
)
{
/* now we have a real cpu fault */
...
...
target-i386/mem_helper.c
浏览文件 @
d5a11fef
...
...
@@ -129,18 +129,20 @@ void helper_boundl(CPUX86State *env, target_ulong a0, int v)
#if !defined(CONFIG_USER_ONLY)
/* try to fill the TLB and return an exception if error. If retaddr is
NULL, it means that the function was called in C code (i.e. not
from generated code or from helper.c) */
* NULL, it means that the function was called in C code (i.e. not
* from generated code or from helper.c)
*/
/* XXX: fix it to restore all registers */
void
tlb_fill
(
CPU
X86State
*
env
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
void
tlb_fill
(
CPU
State
*
cs
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
uintptr_t
retaddr
)
{
X86CPU
*
cpu
=
x86_env_get_cpu
(
env
);
CPUState
*
cs
=
CPU
(
cpu
);
int
ret
;
ret
=
x86_cpu_handle_mmu_fault
(
cs
,
addr
,
is_write
,
mmu_idx
);
if
(
ret
)
{
X86CPU
*
cpu
=
X86_CPU
(
cs
);
CPUX86State
*
env
=
&
cpu
->
env
;
if
(
retaddr
)
{
/* now we have a real cpu fault */
cpu_restore_state
(
env
,
retaddr
);
...
...
target-lm32/op_helper.c
浏览文件 @
d5a11fef
...
...
@@ -150,16 +150,19 @@ uint32_t HELPER(rcsr_jrx)(CPULM32State *env)
}
/* Try to fill the TLB and return an exception if error. If retaddr is
NULL, it means that the function was called in C code (i.e. not
from generated code or from helper.c) */
void
tlb_fill
(
CPULM32State
*
env
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
* NULL, it means that the function was called in C code (i.e. not
* from generated code or from helper.c)
*/
void
tlb_fill
(
CPUState
*
cs
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
uintptr_t
retaddr
)
{
LM32CPU
*
cpu
=
lm32_env_get_cpu
(
env
);
int
ret
;
ret
=
lm32_cpu_handle_mmu_fault
(
CPU
(
cpu
)
,
addr
,
is_write
,
mmu_idx
);
ret
=
lm32_cpu_handle_mmu_fault
(
cs
,
addr
,
is_write
,
mmu_idx
);
if
(
unlikely
(
ret
))
{
LM32CPU
*
cpu
=
LM32_CPU
(
cs
);
CPULM32State
*
env
=
&
cpu
->
env
;
if
(
retaddr
)
{
/* now we have a real cpu fault */
cpu_restore_state
(
env
,
retaddr
);
...
...
target-m68k/op_helper.c
浏览文件 @
d5a11fef
...
...
@@ -53,14 +53,16 @@ extern int semihosting_enabled;
/* Try to fill the TLB and return an exception if error. If retaddr is
NULL, it means that the function was called in C code (i.e. not
from generated code or from helper.c) */
void
tlb_fill
(
CPU
M68KState
*
env
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
void
tlb_fill
(
CPU
State
*
cs
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
uintptr_t
retaddr
)
{
M68kCPU
*
cpu
=
m68k_env_get_cpu
(
env
);
int
ret
;
ret
=
m68k_cpu_handle_mmu_fault
(
CPU
(
cpu
)
,
addr
,
is_write
,
mmu_idx
);
ret
=
m68k_cpu_handle_mmu_fault
(
cs
,
addr
,
is_write
,
mmu_idx
);
if
(
unlikely
(
ret
))
{
M68kCPU
*
cpu
=
M68K_CPU
(
cs
);
CPUM68KState
*
env
=
&
cpu
->
env
;
if
(
retaddr
)
{
/* now we have a real cpu fault */
cpu_restore_state
(
env
,
retaddr
);
...
...
target-microblaze/op_helper.c
浏览文件 @
d5a11fef
...
...
@@ -39,16 +39,19 @@
#include "exec/softmmu_template.h"
/* Try to fill the TLB and return an exception if error. If retaddr is
NULL, it means that the function was called in C code (i.e. not
from generated code or from helper.c) */
void
tlb_fill
(
CPUMBState
*
env
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
* NULL, it means that the function was called in C code (i.e. not
* from generated code or from helper.c)
*/
void
tlb_fill
(
CPUState
*
cs
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
uintptr_t
retaddr
)
{
MicroBlazeCPU
*
cpu
=
mb_env_get_cpu
(
env
);
int
ret
;
ret
=
mb_cpu_handle_mmu_fault
(
CPU
(
cpu
)
,
addr
,
is_write
,
mmu_idx
);
ret
=
mb_cpu_handle_mmu_fault
(
cs
,
addr
,
is_write
,
mmu_idx
);
if
(
unlikely
(
ret
))
{
MicroBlazeCPU
*
cpu
=
MICROBLAZE_CPU
(
cs
);
CPUMBState
*
env
=
&
cpu
->
env
;
if
(
retaddr
)
{
/* now we have a real cpu fault */
cpu_restore_state
(
env
,
retaddr
);
...
...
target-mips/op_helper.c
浏览文件 @
d5a11fef
...
...
@@ -2145,15 +2145,16 @@ static void do_unaligned_access(CPUMIPSState *env, target_ulong addr,
do_raise_exception
(
env
,
(
is_write
==
1
)
?
EXCP_AdES
:
EXCP_AdEL
,
retaddr
);
}
void
tlb_fill
(
CPU
MIPSState
*
env
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
void
tlb_fill
(
CPU
State
*
cs
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
uintptr_t
retaddr
)
{
MIPSCPU
*
cpu
=
mips_env_get_cpu
(
env
);
CPUState
*
cs
=
CPU
(
cpu
);
int
ret
;
ret
=
mips_cpu_handle_mmu_fault
(
cs
,
addr
,
is_write
,
mmu_idx
);
if
(
ret
)
{
MIPSCPU
*
cpu
=
MIPS_CPU
(
cs
);
CPUMIPSState
*
env
=
&
cpu
->
env
;
do_raise_exception_err
(
env
,
cs
->
exception_index
,
env
->
error_code
,
retaddr
);
}
...
...
target-moxie/helper.c
浏览文件 @
d5a11fef
...
...
@@ -46,13 +46,14 @@
/* Try to fill the TLB and return an exception if error. If retaddr is
NULL, it means that the function was called in C code (i.e. not
from generated code or from helper.c) */
void
tlb_fill
(
CPU
MoxieState
*
env
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
void
tlb_fill
(
CPU
State
*
cs
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
uintptr_t
retaddr
)
{
MoxieCPU
*
cpu
=
moxie_env_get_cpu
(
env
);
MoxieCPU
*
cpu
=
MOXIE_CPU
(
cs
);
CPUMoxieState
*
env
=
&
cpu
->
env
;
int
ret
;
ret
=
moxie_cpu_handle_mmu_fault
(
CPU
(
cpu
)
,
addr
,
is_write
,
mmu_idx
);
ret
=
moxie_cpu_handle_mmu_fault
(
cs
,
addr
,
is_write
,
mmu_idx
);
if
(
unlikely
(
ret
))
{
if
(
retaddr
)
{
cpu_restore_state
(
env
,
retaddr
);
...
...
target-openrisc/mmu_helper.c
浏览文件 @
d5a11fef
...
...
@@ -36,15 +36,17 @@
#define SHIFT 3
#include "exec/softmmu_template.h"
void
tlb_fill
(
CPU
OpenRISCState
*
env
,
target_ulong
addr
,
int
is_write
,
void
tlb_fill
(
CPU
State
*
cs
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
uintptr_t
retaddr
)
{
OpenRISCCPU
*
cpu
=
openrisc_env_get_cpu
(
env
);
int
ret
;
ret
=
openrisc_cpu_handle_mmu_fault
(
CPU
(
cpu
)
,
addr
,
is_write
,
mmu_idx
);
ret
=
openrisc_cpu_handle_mmu_fault
(
cs
,
addr
,
is_write
,
mmu_idx
);
if
(
ret
)
{
OpenRISCCPU
*
cpu
=
OPENRISC_CPU
(
cs
);
CPUOpenRISCState
*
env
=
&
cpu
->
env
;
if
(
retaddr
)
{
/* now we have a real cpu fault. */
cpu_restore_state
(
env
,
retaddr
);
...
...
target-ppc/mmu_helper.c
浏览文件 @
d5a11fef
...
...
@@ -2893,11 +2893,12 @@ void helper_booke206_tlbflush(CPUPPCState *env, uint32_t type)
NULL, it means that the function was called in C code (i.e. not
from generated code or from helper.c) */
/* XXX: fix it to restore all registers */
void
tlb_fill
(
CPU
PPCState
*
env
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
void
tlb_fill
(
CPU
State
*
cs
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
uintptr_t
retaddr
)
{
CPUState
*
cpu
=
CPU
(
ppc_env_get_cpu
(
env
));
PowerPCCPUClass
*
pcc
=
POWERPC_CPU_GET_CLASS
(
cpu
);
PowerPCCPU
*
cpu
=
POWERPC_CPU
(
cs
);
PowerPCCPUClass
*
pcc
=
POWERPC_CPU_GET_CLASS
(
cs
);
CPUPPCState
*
env
=
&
cpu
->
env
;
int
ret
;
if
(
pcc
->
handle_mmu_fault
)
{
...
...
@@ -2910,6 +2911,6 @@ void tlb_fill(CPUPPCState *env, target_ulong addr, int is_write, int mmu_idx,
/* now we have a real cpu fault */
cpu_restore_state
(
env
,
retaddr
);
}
helper_raise_exception_err
(
env
,
c
pu
->
exception_index
,
env
->
error_code
);
helper_raise_exception_err
(
env
,
c
s
->
exception_index
,
env
->
error_code
);
}
}
target-s390x/mem_helper.c
浏览文件 @
d5a11fef
...
...
@@ -44,14 +44,16 @@
NULL, it means that the function was called in C code (i.e. not
from generated code or from helper.c) */
/* XXX: fix it to restore all registers */
void
tlb_fill
(
CPUS
390XState
*
env
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
void
tlb_fill
(
CPUS
tate
*
cs
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
uintptr_t
retaddr
)
{
S390CPU
*
cpu
=
s390_env_get_cpu
(
env
);
int
ret
;
ret
=
s390_cpu_handle_mmu_fault
(
CPU
(
cpu
)
,
addr
,
is_write
,
mmu_idx
);
ret
=
s390_cpu_handle_mmu_fault
(
cs
,
addr
,
is_write
,
mmu_idx
);
if
(
unlikely
(
ret
!=
0
))
{
S390CPU
*
cpu
=
S390_CPU
(
cs
);
CPUS390XState
*
env
=
&
cpu
->
env
;
if
(
likely
(
retaddr
))
{
/* now we have a real cpu fault */
cpu_restore_state
(
env
,
retaddr
);
...
...
target-sh4/op_helper.c
浏览文件 @
d5a11fef
...
...
@@ -38,15 +38,17 @@
#define SHIFT 3
#include "exec/softmmu_template.h"
void
tlb_fill
(
CPUS
H4State
*
env
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
void
tlb_fill
(
CPUS
tate
*
cs
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
uintptr_t
retaddr
)
{
SuperHCPU
*
cpu
=
sh_env_get_cpu
(
env
);
int
ret
;
ret
=
superh_cpu_handle_mmu_fault
(
CPU
(
cpu
)
,
addr
,
is_write
,
mmu_idx
);
ret
=
superh_cpu_handle_mmu_fault
(
cs
,
addr
,
is_write
,
mmu_idx
);
if
(
ret
)
{
/* now we have a real cpu fault */
SuperHCPU
*
cpu
=
SUPERH_CPU
(
cs
);
CPUSH4State
*
env
=
&
cpu
->
env
;
if
(
retaddr
)
{
cpu_restore_state
(
env
,
retaddr
);
}
...
...
target-sparc/ldst_helper.c
浏览文件 @
d5a11fef
...
...
@@ -2438,14 +2438,16 @@ static void QEMU_NORETURN do_unaligned_access(CPUSPARCState *env,
NULL, it means that the function was called in C code (i.e. not
from generated code or from helper.c) */
/* XXX: fix it to restore all registers */
void
tlb_fill
(
CPUS
PARCState
*
env
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
void
tlb_fill
(
CPUS
tate
*
cs
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
uintptr_t
retaddr
)
{
SPARCCPU
*
cpu
=
sparc_env_get_cpu
(
env
);
int
ret
;
ret
=
sparc_cpu_handle_mmu_fault
(
CPU
(
cpu
)
,
addr
,
is_write
,
mmu_idx
);
ret
=
sparc_cpu_handle_mmu_fault
(
cs
,
addr
,
is_write
,
mmu_idx
);
if
(
ret
)
{
SPARCCPU
*
cpu
=
SPARC_CPU
(
cs
);
CPUSPARCState
*
env
=
&
cpu
->
env
;
if
(
retaddr
)
{
cpu_restore_state
(
env
,
retaddr
);
}
...
...
target-unicore32/op_helper.c
浏览文件 @
d5a11fef
...
...
@@ -257,14 +257,16 @@ uint32_t HELPER(ror_cc)(CPUUniCore32State *env, uint32_t x, uint32_t i)
#define SHIFT 3
#include "exec/softmmu_template.h"
void
tlb_fill
(
CPU
UniCore32State
*
env
,
target_ulong
addr
,
int
is_write
,
void
tlb_fill
(
CPU
State
*
cs
,
target_ulong
addr
,
int
is_write
,
int
mmu_idx
,
uintptr_t
retaddr
)
{
UniCore32CPU
*
cpu
=
uc32_env_get_cpu
(
env
);
int
ret
;
ret
=
uc32_cpu_handle_mmu_fault
(
CPU
(
cpu
)
,
addr
,
is_write
,
mmu_idx
);
ret
=
uc32_cpu_handle_mmu_fault
(
cs
,
addr
,
is_write
,
mmu_idx
);
if
(
unlikely
(
ret
))
{
UniCore32CPU
*
cpu
=
UNICORE32_CPU
(
cs
);
CPUUniCore32State
*
env
=
&
cpu
->
env
;
if
(
retaddr
)
{
/* now we have a real cpu fault */
cpu_restore_state
(
env
,
retaddr
);
...
...
target-xtensa/op_helper.c
浏览文件 @
d5a11fef
...
...
@@ -60,9 +60,11 @@ static void do_unaligned_access(CPUXtensaState *env,
}
}
void
tlb_fill
(
CPU
XtensaState
*
env
,
void
tlb_fill
(
CPU
State
*
cs
,
target_ulong
vaddr
,
int
is_write
,
int
mmu_idx
,
uintptr_t
retaddr
)
{
XtensaCPU
*
cpu
=
XTENSA_CPU
(
cs
);
CPUXtensaState
*
env
=
&
cpu
->
env
;
uint32_t
paddr
;
uint32_t
page_size
;
unsigned
access
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录