blob: d5f3b52a3ee74bf0f2e16da7bc41119eaa1b9881 [file] [log] [blame]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cpu.h"
#include "exec-all.h"
#include "gdbstub.h"
#include "def-helper.h"
#include "helper-android.h"
#include "qemu-common.h"
/* copy a string from the simulated virtual space to a buffer in QEMU */
void vstrcpy(target_ulong ptr, char *buf, int max)
{
int index;
if (buf == NULL) return;
for (index = 0; index < max; index += 1) {
cpu_physical_memory_read(ptr + index, (uint8_t*)buf + index, 1);
if (buf[index] == 0)
break;
}
}
#ifdef CONFIG_TRACE
#include "android-trace.h"
void HELPER(traceTicks)(uint32_t ticks)
{
sim_time += ticks;
}
void HELPER(traceInsn)(void)
{
trace_insn_helper();
}
#if HOST_LONG_BITS == 32
void HELPER(traceBB32)(uint64_t bb_num, uint32_t tb)
{
trace_bb_helper(bb_num, (void*)tb);
}
#endif
#if HOST_LONG_BITS == 64
void HELPER(traceBB64)(uint64_t bb_num, uint64_t tb)
{
trace_bb_helper(bb_num, (void*)tb);
}
#endif
#endif /* CONFIG_TRACE */
#ifdef CONFIG_MEMCHECK
#include "memcheck/memcheck_api.h"
void HELPER(on_call)(target_ulong pc, target_ulong ret) {
memcheck_on_call(pc, ret);
}
void HELPER(on_ret)(target_ulong ret) {
memcheck_on_ret(ret);
}
#endif // CONFIG_MEMCHECK