--- /dev/null
+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: