Revision 5dcb6b91 target-sparc/helper.c

b/target-sparc/helper.c
117 117
    }
118 118

  
119 119
    *access_index = ((rw & 1) << 2) | (rw & 2) | (is_user? 0 : 1);
120
    *physical = 0xfffff000;
120
    *physical = 0xffffffffffff0000ULL;
121 121

  
122 122
    /* SPARC reference MMU table walk: Context table->L1->L2->PTE */
123 123
    /* Context base + context number */
......
203 203

  
204 204
    /* Even if large ptes, we map only one 4KB page in the cache to
205 205
       avoid filling it too fast */
206
    *physical = ((pde & PTE_ADDR_MASK) << 4) + page_offset;
206
    *physical = ((target_phys_addr_t)(pde & PTE_ADDR_MASK) << 4) + page_offset;
207 207
    return error_code;
208 208
}
209 209

  
......
212 212
                              int is_user, int is_softmmu)
213 213
{
214 214
    target_phys_addr_t paddr;
215
    unsigned long vaddr;
215
    target_ulong vaddr;
216 216
    int error_code = 0, prot, ret = 0, access_index;
217 217

  
218 218
    error_code = get_physical_address(env, &paddr, &prot, &access_index, address, rw, is_user);
......
220 220
	vaddr = address & TARGET_PAGE_MASK;
221 221
	paddr &= TARGET_PAGE_MASK;
222 222
#ifdef DEBUG_MMU
223
	printf("Translate at 0x%lx -> 0x%lx, vaddr 0x%lx\n", (long)address, (long)paddr, (long)vaddr);
223
	printf("Translate at " TARGET_FMT_lx " -> " TARGET_FMT_plx ", vaddr "
224
               TARGET_FMT_lx "\n", address, paddr, vaddr);
224 225
#endif
225 226
	ret = tlb_set_page_exec(env, vaddr, paddr, prot, is_user, is_softmmu);
226 227
	return ret;
......
255 256
    uint32_t pde;
256 257

  
257 258
    /* Context base + context number */
258
    pde_ptr = (env->mmuregs[1] << 4) + (env->mmuregs[2] << 2);
259
    pde_ptr = (target_phys_addr_t)(env->mmuregs[1] << 4) +
260
        (env->mmuregs[2] << 2);
259 261
    pde = ldl_phys(pde_ptr);
260 262

  
261 263
    switch (pde & PTE_ENTRYTYPE_MASK) {
......
314 316
#ifdef DEBUG_MMU
315 317
void dump_mmu(CPUState *env)
316 318
{
317
     target_ulong va, va1, va2;
318
     unsigned int n, m, o;
319
     target_phys_addr_t pde_ptr, pa;
319
    target_ulong va, va1, va2;
320
    unsigned int n, m, o;
321
    target_phys_addr_t pde_ptr, pa;
320 322
    uint32_t pde;
321 323

  
322 324
    printf("MMU dump:\n");
323 325
    pde_ptr = (env->mmuregs[1] << 4) + (env->mmuregs[2] << 2);
324 326
    pde = ldl_phys(pde_ptr);
325
    printf("Root ptr: " TARGET_FMT_lx ", ctx: %d\n", env->mmuregs[1] << 4, env->mmuregs[2]);
327
    printf("Root ptr: " TARGET_FMT_plx ", ctx: %d\n",
328
           (target_phys_addr_t)env->mmuregs[1] << 4, env->mmuregs[2]);
326 329
    for (n = 0, va = 0; n < 256; n++, va += 16 * 1024 * 1024) {
327
	pde_ptr = mmu_probe(env, va, 2);
328
	if (pde_ptr) {
330
	pde = mmu_probe(env, va, 2);
331
	if (pde) {
329 332
	    pa = cpu_get_phys_page_debug(env, va);
330
 	    printf("VA: " TARGET_FMT_lx ", PA: " TARGET_FMT_lx " PDE: " TARGET_FMT_lx "\n", va, pa, pde_ptr);
333
 	    printf("VA: " TARGET_FMT_lx ", PA: " TARGET_FMT_plx
334
                   " PDE: " TARGET_FMT_lx "\n", va, pa, pde);
331 335
	    for (m = 0, va1 = va; m < 64; m++, va1 += 256 * 1024) {
332
		pde_ptr = mmu_probe(env, va1, 1);
333
		if (pde_ptr) {
336
		pde = mmu_probe(env, va1, 1);
337
		if (pde) {
334 338
		    pa = cpu_get_phys_page_debug(env, va1);
335
 		    printf(" VA: " TARGET_FMT_lx ", PA: " TARGET_FMT_lx " PDE: " TARGET_FMT_lx "\n", va1, pa, pde_ptr);
339
 		    printf(" VA: " TARGET_FMT_lx ", PA: " TARGET_FMT_plx
340
                           " PDE: " TARGET_FMT_lx "\n", va1, pa, pde);
336 341
		    for (o = 0, va2 = va1; o < 64; o++, va2 += 4 * 1024) {
337
			pde_ptr = mmu_probe(env, va2, 0);
338
			if (pde_ptr) {
342
			pde = mmu_probe(env, va2, 0);
343
			if (pde) {
339 344
			    pa = cpu_get_phys_page_debug(env, va2);
340
 			    printf("  VA: " TARGET_FMT_lx ", PA: " TARGET_FMT_lx " PTE: " TARGET_FMT_lx "\n", va2, pa, pde_ptr);
345
 			    printf("  VA: " TARGET_FMT_lx ", PA: "
346
                                   TARGET_FMT_plx " PTE: " TARGET_FMT_lx "\n",
347
                                   va2, pa, pde);
341 348
			}
342 349
		    }
343 350
		}

Also available in: Unified diff