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: