Hi all
If I already have an emulator, all instructions have been carried out.
In order to reuse these codes on the other simulation platforms, as Simics,
QEMU, SystemC. So, I want to
skip over QEMU's TCG(guest binary-->IR-->host binary). Just let QEMU
controll the cpu's execution and the cpu access QEMU's memory system. Just
Load-elf, fetch and load/store operations need to access memory. QEMU uses
target_mmap() to allocate the memory and map the ELF into the memory. But
my ELF is very special:
type offset vaddr filesize
PT_LOAD 0x0002f4 0x88000000 0x0016a
PT_LOAD 0x00045e 0x88000180 0x00006
PT_LOAD 0x000468 0x88000200 0x00006
ps = 0x88000000 & ~(unsigned long)((1 << 12)-1)) = 0x88000000
po = 0x88000000 & ((1 << 12)-1) = 0 offset - po is not zero, so the
offset is not multiple of the page size, program error. How can this ELF
map into the virtual page?
After allocating and loading the elf, target-arm uses ldl_code() to
fetch the instruction from the corresponding memory address. My instruction
is very long, it has 128 bytes.
How can QEMU write one byte into the memory? And I can't see the
load/store instructions's how to read data from memory or write to the
memory. I have tried the stub_raw(), but it has the error message:
segmentation fault.Are there other methods that allocate the memory space
and writes (or read) one bytes into the memory. Thank you!
best wishes!
Tim Lee(liqijun)