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 */
vstrcpy(target_ulong ptr,char * buf,int max)13 void 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
HELPER(traceTicks)29 void HELPER(traceTicks)(uint32_t ticks)
30 {
31 sim_time += ticks;
32 }
33
HELPER(traceInsn)34 void HELPER(traceInsn)(void)
35 {
36 trace_insn_helper();
37 }
38
39 #if HOST_LONG_BITS == 32
HELPER(traceBB32)40 void 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
HELPER(traceBB64)47 void 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
HELPER(on_call)58 void HELPER(on_call)(target_ulong pc, target_ulong ret) {
59 memcheck_on_call(pc, ret);
60 }
61
HELPER(on_ret)62 void HELPER(on_ret)(target_ulong ret) {
63 memcheck_on_ret(ret);
64 }
65 #endif // CONFIG_MEMCHECK
66