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