blob: 36d0a6d212ee81d1500089e042397fc53c00d641 [file] [log] [blame]
struc PPC_CPU_State
dummy:
gpr:
fpr:
cr:
fpscr:
xer:
xer_ca:
lr:
ctr:
msr:
pvr:
ibatu:
ibatl:
ibat_bl17:
dbatu:
dbatl:
dbat_bl17:
sdr1:
sr:
dar:
dsisr:
sprg:
srr0:
srr1:
decr:
ear:
pir:
tb:
hid:
pc:
npc:
current_opc:
exception_pending:
dec_exception:
ext_exception:
stop_exception:
singlestep_ignore:
align1:
align2:
align3:
pagetable_base:
pagetable_hashmask:
reserve:
have_reservation:
tlb_last:
tlb_pa:
tlb_va:
effective_code_page:
physical_code_page:
pdec:
ptb:
temp:
temp2:
x87cw:
pc_ofs:
current_code_base:
endstruc
struc JITC
clientPages
tlb_code_0_eff
tlb_data_0_eff
tlb_data_8_eff
tlb_code_0_phys
tlb_data_0_phys
tlb_data_8_phys
tlb_code_0_hits
tlb_data_0_hits
tlb_data_8_hits
tlb_code_0_misses
tlb_data_0_misses
tlb_data_8_misses
nativeReg
nativeRegState
nativeFlags
nativeFlagsState
nativeCarryState
clientReg
nativeRegsList
LRUreg
MRUreg
LRUpage
MRUpage
freeFragmentsList
freeClientPages
translationCache
endstruc
extern gCPU, gJITC, gMemory, gMemorySize,
extern jitc_error, ppc_isi_exception_asm, ppc_dsi_exception_asm
extern jitcDestroyAndFreeClientPage
extern io_mem_read_glue
extern io_mem_write_glue
extern io_mem_read64_glue
extern io_mem_write64_glue
extern io_mem_read128_glue
extern io_mem_write128_glue
extern io_mem_read128_native_glue
extern io_mem_write128_native_glue
global ppc_effective_to_physical_code, ppc_effective_to_physical_data
global ppc_write_effective_byte_asm
global ppc_write_effective_half_asm
global ppc_write_effective_word_asm
global ppc_write_effective_dword_asm
global ppc_write_effective_qword_asm
global ppc_write_effective_qword_sse_asm
global ppc_read_effective_byte_asm
global ppc_read_effective_half_z_asm
global ppc_read_effective_half_s_asm
global ppc_read_effective_word_asm
global ppc_read_effective_dword_asm
global ppc_read_effective_qword_asm
global ppc_read_effective_qword_sse_asm
global ppc_mmu_tlb_invalidate_all_asm
global ppc_mmu_tlb_invalidate_entry_asm
global ppc_opc_lswi_asm
global ppc_opc_stswi_asm
global ppc_opc_icbi_asm
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
ppc_mmu_tlb_invalidate_all_asm:
mov edi, gJITC+tlb_code_0_eff
ppc_mmu_tlb_invalidate_entry_asm:
ppc_pte_protection:
%macro bat_lookup 4
%%npr:
%%ok:
%%bat_lookup_failed:
%endmacro
%macro pg_table_lookup 3
%%invalid:
%endmacro
protection_fault_0_code:
protection_fault_0_data:
protection_fault_8_data:
%macro tlb_lookup 2
%%tlb_lookup_failed:
%endmacro
ppc_effective_to_physical_code_ret:
ppc_effective_to_physical_code:
tlb_lookup 0, code
bat_lookup i, 0, 0, code
bat_lookup i, 1, 0, code
bat_lookup i, 2, 0, code
bat_lookup i, 3, 0, code
pg_table_lookup 0, 0, code
pg_table_lookup 0, 0, code
pg_table_lookup 0, 0, code
pg_table_lookup 0, 0, code
pg_table_lookup 0, 0, code
pg_table_lookup 0, 0, code
pg_table_lookup 0, 0, code
pg_table_lookup 0, 0, code
pg_table_lookup (1<<6), 0, code
pg_table_lookup (1<<6), 0, code
pg_table_lookup (1<<6), 0, code
pg_table_lookup (1<<6), 0, code
pg_table_lookup (1<<6), 0, code
pg_table_lookup (1<<6), 0, code
pg_table_lookup (1<<6), 0, code
pg_table_lookup (1<<6), 0, code
.noexec:
ppc_effective_to_physical_data_read_ret:
ppc_effective_to_physical_data_read:
tlb_lookup 0, data
bat_lookup d, 0, 0, data
bat_lookup d, 1, 0, data
bat_lookup d, 2, 0, data
bat_lookup d, 3, 0, data
pg_table_lookup 0, 0, data
pg_table_lookup 0, 0, data
pg_table_lookup 0, 0, data
pg_table_lookup 0, 0, data
pg_table_lookup 0, 0, data
pg_table_lookup 0, 0, data
pg_table_lookup 0, 0, data
pg_table_lookup 0, 0, data
pg_table_lookup (1<<6), 0, data
pg_table_lookup (1<<6), 0, data
pg_table_lookup (1<<6), 0, data
pg_table_lookup (1<<6), 0, data
pg_table_lookup (1<<6), 0, data
pg_table_lookup (1<<6), 0, data
pg_table_lookup (1<<6), 0, data
pg_table_lookup (1<<6), 0, data
ppc_effective_to_physical_data_write_ret:
ppc_effective_to_physical_data_write:
tlb_lookup 8, data
bat_lookup d, 0, 8, data
bat_lookup d, 1, 8, data
bat_lookup d, 2, 8, data
bat_lookup d, 3, 8, data
pg_table_lookup 0, 8, data
pg_table_lookup 0, 8, data
pg_table_lookup 0, 8, data
pg_table_lookup 0, 8, data
pg_table_lookup 0, 8, data
pg_table_lookup 0, 8, data
pg_table_lookup 0, 8, data
pg_table_lookup 0, 8, data
pg_table_lookup (1<<6), 8, data
pg_table_lookup (1<<6), 8, data
pg_table_lookup (1<<6), 8, data
pg_table_lookup (1<<6), 8, data
pg_table_lookup (1<<6), 8, data
pg_table_lookup (1<<6), 8, data
pg_table_lookup (1<<6), 8, data
pg_table_lookup (1<<6), 8, data
ppc_write_effective_byte_asm:
.mmio:
ppc_write_effective_half_asm:
.mmio:
.overlap:
.overlapped_mmio_1_back:
.overlapped_mmio_1:
.overlapped_mmio_2:
ppc_write_effective_word_asm:
.mmio:
.overlap:
.loop1:
.overlapped_mmio_1_back:
.loop2:
.overlapped_mmio_1:
.overlapped_mmio_1_loop:
.overlapped_mmio_2:
.overlapped_mmio_2_loop:
ppc_write_effective_dword_asm:
.mmio:
.overlap:
.loop1:
.overlapped_mmio_1_back:
.loop2:
.overlapped_mmio_1:
.overlapped_mmio_1_loop:
.overlapped_mmio_2:
.overlapped_mmio_2_loop:
ppc_write_effective_qword_asm:
.mmio:
ppc_write_effective_qword_sse_asm:
.mmio:
ppc_read_effective_byte_asm:
.mmio:
ppc_read_effective_half_z_asm:
.mmio:
.overlap:
.loop1:
.mmio1:
.mmio2:
ppc_read_effective_half_s_asm:
.mmio:
.overlap:
.loop1:
.mmio1:
.mmio2:
ppc_read_effective_word_asm:
.mmio:
.overlap:
.loop1:
.overlapped_mmio_1_back:
.loop2:
.overlapped_mmio_1:
.overlapped_mmio_1_loop:
.overlapped_mmio_2:
.overlapped_mmio_2_loop:
ppc_read_effective_dword_asm:
.mmio:
.overlap:
.loop1:
.overlapped_mmio_1_back:
.loop2:
.overlapped_mmio_1:
.overlapped_mmio_1_loop:
.overlapped_mmio_2:
.overlapped_mmio_2_loop:
ppc_read_effective_qword_asm:
.mmio:
ppc_read_effective_qword_sse_asm:
.mmio:
ppc_opc_stswi_asm:
.loop:
.ok1:
.back:
.mmio:
ppc_opc_lswi_asm:
.loop:
.ok1:
.back:
.loop2:
.ret:
.mmio:
ppc_opc_icbi_asm:
.destroy:
.ok: