| 91 |
if ((addr & (DATA_SIZE - 1)) != 0) |
if ((addr & (DATA_SIZE - 1)) != 0) |
| 92 |
goto do_unaligned_access; |
goto do_unaligned_access; |
| 93 |
res = glue(io_read, SUFFIX)(physaddr, tlb_addr); |
res = glue(io_read, SUFFIX)(physaddr, tlb_addr); |
| 94 |
} else if (((addr & 0xfff) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) { |
} else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) { |
| 95 |
/* slow unaligned access (it spans two pages or IO) */ |
/* slow unaligned access (it spans two pages or IO) */ |
| 96 |
do_unaligned_access: |
do_unaligned_access: |
| 97 |
retaddr = GETPC(); |
retaddr = GETPC(); |
| 130 |
if ((addr & (DATA_SIZE - 1)) != 0) |
if ((addr & (DATA_SIZE - 1)) != 0) |
| 131 |
goto do_unaligned_access; |
goto do_unaligned_access; |
| 132 |
res = glue(io_read, SUFFIX)(physaddr, tlb_addr); |
res = glue(io_read, SUFFIX)(physaddr, tlb_addr); |
| 133 |
} else if (((addr & 0xfff) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) { |
} else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) { |
| 134 |
do_unaligned_access: |
do_unaligned_access: |
| 135 |
/* slow unaligned access (it spans two pages) */ |
/* slow unaligned access (it spans two pages) */ |
| 136 |
addr1 = addr & ~(DATA_SIZE - 1); |
addr1 = addr & ~(DATA_SIZE - 1); |
| 208 |
goto do_unaligned_access; |
goto do_unaligned_access; |
| 209 |
retaddr = GETPC(); |
retaddr = GETPC(); |
| 210 |
glue(io_write, SUFFIX)(physaddr, val, tlb_addr, retaddr); |
glue(io_write, SUFFIX)(physaddr, val, tlb_addr, retaddr); |
| 211 |
} else if (((addr & 0xfff) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) { |
} else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) { |
| 212 |
do_unaligned_access: |
do_unaligned_access: |
| 213 |
retaddr = GETPC(); |
retaddr = GETPC(); |
| 214 |
glue(glue(slow_st, SUFFIX), MMUSUFFIX)(addr, val, |
glue(glue(slow_st, SUFFIX), MMUSUFFIX)(addr, val, |
| 245 |
if ((addr & (DATA_SIZE - 1)) != 0) |
if ((addr & (DATA_SIZE - 1)) != 0) |
| 246 |
goto do_unaligned_access; |
goto do_unaligned_access; |
| 247 |
glue(io_write, SUFFIX)(physaddr, val, tlb_addr, retaddr); |
glue(io_write, SUFFIX)(physaddr, val, tlb_addr, retaddr); |
| 248 |
} else if (((addr & 0xfff) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) { |
} else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) { |
| 249 |
do_unaligned_access: |
do_unaligned_access: |
| 250 |
/* XXX: not efficient, but simple */ |
/* XXX: not efficient, but simple */ |
| 251 |
for(i = 0;i < DATA_SIZE; i++) { |
for(i = 0;i < DATA_SIZE; i++) { |