Lines Matching +full:0 +full:x18000000

33 #define MMU_OK                   0
53 return !(addr & 0x80000000); in cpu_sh4_is_cached()
70 if (do_exp && cs->exception_index != 0x1e0) { in superh_cpu_do_interrupt()
84 env->in_sleep = 0; in superh_cpu_do_interrupt()
88 (env->sr >> 4) & 0xf); in superh_cpu_do_interrupt()
97 case 0x0e0: in superh_cpu_do_interrupt()
100 case 0x040: in superh_cpu_do_interrupt()
103 case 0x0a0: in superh_cpu_do_interrupt()
106 case 0x180: in superh_cpu_do_interrupt()
109 case 0x1a0: in superh_cpu_do_interrupt()
112 case 0x800: in superh_cpu_do_interrupt()
115 case 0x820: in superh_cpu_do_interrupt()
118 case 0x100: in superh_cpu_do_interrupt()
121 case 0x060: in superh_cpu_do_interrupt()
124 case 0x0c0: in superh_cpu_do_interrupt()
127 case 0x120: in superh_cpu_do_interrupt()
130 case 0x080: in superh_cpu_do_interrupt()
133 case 0x160: in superh_cpu_do_interrupt()
140 qemu_log("exception 0x%03x [%s] raised\n", in superh_cpu_do_interrupt()
142 log_cpu_state(cs, 0); in superh_cpu_do_interrupt()
161 case 0x000: in superh_cpu_do_interrupt()
162 case 0x020: in superh_cpu_do_interrupt()
163 case 0x140: in superh_cpu_do_interrupt()
165 env->sr |= 0xf << 4; /* IMASK */ in superh_cpu_do_interrupt()
166 env->pc = 0xa0000000; in superh_cpu_do_interrupt()
168 case 0x040: in superh_cpu_do_interrupt()
169 case 0x060: in superh_cpu_do_interrupt()
170 env->pc = env->vbr + 0x400; in superh_cpu_do_interrupt()
172 case 0x160: in superh_cpu_do_interrupt()
176 env->pc = env->vbr + 0x100; in superh_cpu_do_interrupt()
184 env->pc = env->vbr + 0x600; in superh_cpu_do_interrupt()
191 uint32_t or_mask = 0, and_mask = 0xff; in update_itlb_use()
194 case 0: in update_itlb_use()
195 and_mask = 0x1f; in update_itlb_use()
198 and_mask = 0xe7; in update_itlb_use()
199 or_mask = 0x80; in update_itlb_use()
202 and_mask = 0xfb; in update_itlb_use()
203 or_mask = 0x50; in update_itlb_use()
206 or_mask = 0x2c; in update_itlb_use()
210 env->mmucr &= (and_mask << 24) | 0x00ffffff; in update_itlb_use()
216 if ((env->mmucr & 0xe0000000) == 0xe0000000) { in itlb_replacement()
217 return 0; in itlb_replacement()
219 if ((env->mmucr & 0x98000000) == 0x18000000) { in itlb_replacement()
222 if ((env->mmucr & 0x54000000) == 0x04000000) { in itlb_replacement()
225 if ((env->mmucr & 0x2c000000) == 0x00000000) { in itlb_replacement()
242 asid = env->pteh & 0xff; in find_tlb_entry()
244 for (i = 0; i < nbtlb; i++) { in find_tlb_entry()
265 urb = ((env->mmucr) >> 18) & 0x3f; in increment_urc()
266 urc = ((env->mmucr) >> 10) & 0x3f; in increment_urc()
268 if ((urb > 0 && urc > urb) || urc > (UTLB_SIZE - 1)) in increment_urc()
269 urc = 0; in increment_urc()
270 env->mmucr = (env->mmucr & 0xffff03ff) | (urc << 10); in increment_urc()
304 } else if (e >= 0) { in find_itlb_entry()
339 if (n >= 0) { in get_mmu_address()
348 if (n >= 0) { in get_mmu_address()
367 if (n >= 0) { in get_mmu_address()
387 if (n >= 0) { in get_mmu_address()
400 if ((address >= 0x80000000 && address < 0xc0000000) || address >= 0xe0000000) { in get_physical_address()
402 && (address < 0xe0000000 || address >= 0xe4000000)) { in get_physical_address()
413 if (address >= 0x80000000 && address < 0xc0000000) { in get_physical_address()
415 *physical = address & 0x1fffffff; in get_physical_address()
425 *physical = address & 0x1FFFFFFF; in get_physical_address()
466 case 0: /* 00 */ in cpu_load_tlb()
496 for (i = 0; i < UTLB_SIZE; i++) { in cpu_sh4_invalidate_tlb()
498 entry->v = 0; in cpu_sh4_invalidate_tlb()
501 for (i = 0; i < ITLB_SIZE; i++) { in cpu_sh4_invalidate_tlb()
503 entry->v = 0; in cpu_sh4_invalidate_tlb()
512 int index = (addr & 0x00000300) >> 8; in cpu_sh4_read_mmaped_itlb_addr()
523 uint32_t vpn = (mem_value & 0xfffffc00) >> 10; in cpu_sh4_write_mmaped_itlb_addr()
524 uint8_t v = (uint8_t)((mem_value & 0x00000100) >> 8); in cpu_sh4_write_mmaped_itlb_addr()
525 uint8_t asid = (uint8_t)(mem_value & 0x000000ff); in cpu_sh4_write_mmaped_itlb_addr()
527 int index = (addr & 0x00000300) >> 8; in cpu_sh4_write_mmaped_itlb_addr()
542 int array = (addr & 0x00800000) >> 23; in cpu_sh4_read_mmaped_itlb_data()
543 int index = (addr & 0x00000300) >> 8; in cpu_sh4_read_mmaped_itlb_data()
546 if (array == 0) { in cpu_sh4_read_mmaped_itlb_data()
565 int array = (addr & 0x00800000) >> 23; in cpu_sh4_write_mmaped_itlb_data()
566 int index = (addr & 0x00000300) >> 8; in cpu_sh4_write_mmaped_itlb_data()
569 if (array == 0) { in cpu_sh4_write_mmaped_itlb_data()
576 entry->ppn = (mem_value & 0x1ffffc00) >> 10; in cpu_sh4_write_mmaped_itlb_data()
577 entry->v = (mem_value & 0x00000100) >> 8; in cpu_sh4_write_mmaped_itlb_data()
578 entry->sz = (mem_value & 0x00000080) >> 6 | in cpu_sh4_write_mmaped_itlb_data()
579 (mem_value & 0x00000010) >> 4; in cpu_sh4_write_mmaped_itlb_data()
580 entry->pr = (mem_value & 0x00000040) >> 5; in cpu_sh4_write_mmaped_itlb_data()
581 entry->c = (mem_value & 0x00000008) >> 3; in cpu_sh4_write_mmaped_itlb_data()
582 entry->sh = (mem_value & 0x00000002) >> 1; in cpu_sh4_write_mmaped_itlb_data()
585 entry->tc = (mem_value & 0x00000008) >> 3; in cpu_sh4_write_mmaped_itlb_data()
586 entry->sa = (mem_value & 0x00000007); in cpu_sh4_write_mmaped_itlb_data()
593 int index = (addr & 0x00003f00) >> 8; in cpu_sh4_read_mmaped_utlb_addr()
606 int associate = addr & 0x0000080; in cpu_sh4_write_mmaped_utlb_addr()
607 uint32_t vpn = (mem_value & 0xfffffc00) >> 10; in cpu_sh4_write_mmaped_utlb_addr()
608 uint8_t d = (uint8_t)((mem_value & 0x00000200) >> 9); in cpu_sh4_write_mmaped_utlb_addr()
609 uint8_t v = (uint8_t)((mem_value & 0x00000100) >> 8); in cpu_sh4_write_mmaped_utlb_addr()
610 uint8_t asid = (uint8_t)(mem_value & 0x000000ff); in cpu_sh4_write_mmaped_utlb_addr()
616 int needs_tlb_flush = 0; in cpu_sh4_write_mmaped_utlb_addr()
619 for (i = 0; i < UTLB_SIZE; i++) { in cpu_sh4_write_mmaped_utlb_addr()
630 cs->exception_index = 0x140; in cpu_sh4_write_mmaped_utlb_addr()
644 for (i = 0; i < ITLB_SIZE; i++) { in cpu_sh4_write_mmaped_utlb_addr()
662 int index = (addr & 0x00003f00) >> 8; in cpu_sh4_write_mmaped_utlb_addr()
682 int array = (addr & 0x00800000) >> 23; in cpu_sh4_read_mmaped_utlb_data()
683 int index = (addr & 0x00003f00) >> 8; in cpu_sh4_read_mmaped_utlb_data()
688 if (array == 0) { in cpu_sh4_read_mmaped_utlb_data()
709 int array = (addr & 0x00800000) >> 23; in cpu_sh4_write_mmaped_utlb_data()
710 int index = (addr & 0x00003f00) >> 8; in cpu_sh4_write_mmaped_utlb_data()
715 if (array == 0) { in cpu_sh4_write_mmaped_utlb_data()
722 entry->ppn = (mem_value & 0x1ffffc00) >> 10; in cpu_sh4_write_mmaped_utlb_data()
723 entry->v = (mem_value & 0x00000100) >> 8; in cpu_sh4_write_mmaped_utlb_data()
724 entry->sz = (mem_value & 0x00000080) >> 6 | in cpu_sh4_write_mmaped_utlb_data()
725 (mem_value & 0x00000010) >> 4; in cpu_sh4_write_mmaped_utlb_data()
726 entry->pr = (mem_value & 0x00000060) >> 5; in cpu_sh4_write_mmaped_utlb_data()
727 entry->c = (mem_value & 0x00000008) >> 3; in cpu_sh4_write_mmaped_utlb_data()
728 entry->d = (mem_value & 0x00000004) >> 2; in cpu_sh4_write_mmaped_utlb_data()
729 entry->sh = (mem_value & 0x00000002) >> 1; in cpu_sh4_write_mmaped_utlb_data()
730 entry->wt = (mem_value & 0x00000001); in cpu_sh4_write_mmaped_utlb_data()
733 entry->tc = (mem_value & 0x00000008) >> 3; in cpu_sh4_write_mmaped_utlb_data()
734 entry->sa = (mem_value & 0x00000007); in cpu_sh4_write_mmaped_utlb_data()
746 if ((0xA0000000 <= addr && addr < 0xC0000000) || 0xE0000000 <= addr) in cpu_sh4_is_cached()
747 return 0; in cpu_sh4_is_cached()
750 if (0x80000000 <= addr) in cpu_sh4_is_cached()
751 return 0; in cpu_sh4_is_cached()
760 #if 0 in cpu_sh4_is_cached()
763 return 0; in cpu_sh4_is_cached()
772 if (n >= 0) in cpu_sh4_is_cached()
776 if (n >= 0) in cpu_sh4_is_cached()
779 return 0; in cpu_sh4_is_cached()
826 cs->exception_index = 0x040; in superh_cpu_tlb_fill()
830 cs->exception_index = 0x140; in superh_cpu_tlb_fill()
833 cs->exception_index = 0x0a0; in superh_cpu_tlb_fill()
836 cs->exception_index = 0x060; in superh_cpu_tlb_fill()
839 cs->exception_index = 0x080; in superh_cpu_tlb_fill()
842 cs->exception_index = 0x0a0; in superh_cpu_tlb_fill()
845 cs->exception_index = 0x0c0; in superh_cpu_tlb_fill()
849 cs->exception_index = 0x0e0; in superh_cpu_tlb_fill()
852 cs->exception_index = 0x100; in superh_cpu_tlb_fill()