x86: identity map guest address to host address. this fixes issue #300
This commit is contained in:
@ -238,8 +238,7 @@ WORD_TYPE helper_le_ld_name(CPUArchState *env, target_ulong addr, int mmu_idx,
|
|||||||
uc, UC_MEM_READ_PROT, addr, DATA_SIZE, 0,
|
uc, UC_MEM_READ_PROT, addr, DATA_SIZE, 0,
|
||||||
uc->hook_callbacks[uc->hook_mem_read_prot_idx].user_data)) {
|
uc->hook_callbacks[uc->hook_mem_read_prot_idx].user_data)) {
|
||||||
env->invalid_error = UC_ERR_OK;
|
env->invalid_error = UC_ERR_OK;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
env->invalid_addr = addr;
|
env->invalid_addr = addr;
|
||||||
env->invalid_error = UC_ERR_READ_PROT;
|
env->invalid_error = UC_ERR_READ_PROT;
|
||||||
// printf("***** Invalid memory read (non-readable) at " TARGET_FMT_lx "\n", addr);
|
// printf("***** Invalid memory read (non-readable) at " TARGET_FMT_lx "\n", addr);
|
||||||
|
@ -764,6 +764,8 @@ do_check_protect_pse36:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
do_mapping:
|
do_mapping:
|
||||||
|
|
||||||
|
#if 0
|
||||||
pte = pte & env->a20_mask;
|
pte = pte & env->a20_mask;
|
||||||
|
|
||||||
/* align to page_size */
|
/* align to page_size */
|
||||||
@ -774,6 +776,12 @@ do_check_protect_pse36:
|
|||||||
vaddr = addr & TARGET_PAGE_MASK;
|
vaddr = addr & TARGET_PAGE_MASK;
|
||||||
page_offset = vaddr & (page_size - 1);
|
page_offset = vaddr & (page_size - 1);
|
||||||
paddr = pte + page_offset;
|
paddr = pte + page_offset;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Unicorn: indentity map guest virtual address to host virtual address
|
||||||
|
vaddr = addr & TARGET_PAGE_MASK;
|
||||||
|
paddr = vaddr;
|
||||||
|
//printf(">>> map address %"PRIx64" to %"PRIx64"\n", vaddr, paddr);
|
||||||
|
|
||||||
tlb_set_page(cs, vaddr, paddr, prot, mmu_idx, page_size);
|
tlb_set_page(cs, vaddr, paddr, prot, mmu_idx, page_size);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -19,6 +19,8 @@ test: ${ALL_TESTS}
|
|||||||
./test_sanity
|
./test_sanity
|
||||||
./test_x86
|
./test_x86
|
||||||
./test_mem_map
|
./test_mem_map
|
||||||
|
./test_mem_map_ptr
|
||||||
|
./test_mem_high
|
||||||
|
|
||||||
test_sanity: test_sanity.c
|
test_sanity: test_sanity.c
|
||||||
test_x86: test_x86.c
|
test_x86: test_x86.c
|
||||||
|
Reference in New Issue
Block a user