• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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