1#include <stdio.h> 2#include <stdlib.h> 3#include <string.h> 4 5#include "cpu.h" 6#include "exec-all.h" 7#include "gdbstub.h" 8#include "def-helper.h" 9#include "helper-android.h" 10#include "qemu-common.h" 11 12/* copy a string from the simulated virtual space to a buffer in QEMU */ 13void vstrcpy(target_ulong ptr, char *buf, int max) 14{ 15 int index; 16 17 if (buf == NULL) return; 18 19 for (index = 0; index < max; index += 1) { 20 cpu_physical_memory_read(ptr + index, (uint8_t*)buf + index, 1); 21 if (buf[index] == 0) 22 break; 23 } 24} 25 26#ifdef CONFIG_TRACE 27#include "android-trace.h" 28 29void HELPER(traceTicks)(uint32_t ticks) 30{ 31 sim_time += ticks; 32} 33 34void HELPER(traceInsn)(void) 35{ 36 trace_insn_helper(); 37} 38 39#if HOST_LONG_BITS == 32 40void HELPER(traceBB32)(uint64_t bb_num, uint32_t tb) 41{ 42 trace_bb_helper(bb_num, (void*)tb); 43} 44#endif 45 46#if HOST_LONG_BITS == 64 47void HELPER(traceBB64)(uint64_t bb_num, uint64_t tb) 48{ 49 trace_bb_helper(bb_num, (void*)tb); 50} 51#endif 52 53#endif /* CONFIG_TRACE */ 54 55#ifdef CONFIG_MEMCHECK 56#include "memcheck/memcheck_api.h" 57 58void HELPER(on_call)(target_ulong pc, target_ulong ret) { 59 memcheck_on_call(pc, ret); 60} 61 62void HELPER(on_ret)(target_ulong ret) { 63 memcheck_on_ret(ret); 64} 65#endif // CONFIG_MEMCHECK 66