Miasm2
 All Classes Namespaces Files Functions Variables Typedefs Properties Macros
Functions | Variables
JitCore_aarch64.c File Reference
#include <Python.h>
#include "../JitCore.h"
#include "structmember.h"
#include <stdint.h>
#include <inttypes.h>
#include "../queue.h"
#include "../vm_mngr.h"
#include "../vm_mngr_py.h"
#include "JitCore_aarch64.h"
+ Include dependency graph for JitCore_aarch64.c:

Go to the source code of this file.

Functions

PyObject * cpu_get_gpreg (JitCpu *self)
 
PyObject * cpu_set_gpreg (JitCpu *self, PyObject *args)
 
PyObject * cpu_init_regs (JitCpu *self)
 
void dump_gpregs (vm_cpu_t *vmcpu)
 
PyObject * cpu_dump_gpregs (JitCpu *self, PyObject *args)
 
PyObject * cpu_set_exception (JitCpu *self, PyObject *args)
 
PyObject * cpu_get_exception (JitCpu *self, PyObject *args)
 
void check_automod (JitCpu *jitcpu, uint64_t addr, uint64_t size)
 
void MEM_WRITE_08 (JitCpu *jitcpu, uint64_t addr, uint8_t src)
 
void MEM_WRITE_16 (JitCpu *jitcpu, uint64_t addr, uint16_t src)
 
void MEM_WRITE_32 (JitCpu *jitcpu, uint64_t addr, uint32_t src)
 
void MEM_WRITE_64 (JitCpu *jitcpu, uint64_t addr, uint64_t src)
 
PyObject * vm_set_mem (JitCpu *self, PyObject *args)
 
static int JitCpu_init (JitCpu *self, PyObject *args, PyObject *kwds)
 
 getset_reg_u64 (X0)
 
 getset_reg_u64 (X1)
 
 getset_reg_u64 (X2)
 
 getset_reg_u64 (X3)
 
 getset_reg_u64 (X4)
 
 getset_reg_u64 (X5)
 
 getset_reg_u64 (X6)
 
 getset_reg_u64 (X7)
 
 getset_reg_u64 (X8)
 
 getset_reg_u64 (X9)
 
 getset_reg_u64 (X10)
 
 getset_reg_u64 (X11)
 
 getset_reg_u64 (X12)
 
 getset_reg_u64 (X13)
 
 getset_reg_u64 (X14)
 
 getset_reg_u64 (X15)
 
 getset_reg_u64 (X16)
 
 getset_reg_u64 (X17)
 
 getset_reg_u64 (X18)
 
 getset_reg_u64 (X19)
 
 getset_reg_u64 (X20)
 
 getset_reg_u64 (X21)
 
 getset_reg_u64 (X22)
 
 getset_reg_u64 (X23)
 
 getset_reg_u64 (X24)
 
 getset_reg_u64 (X25)
 
 getset_reg_u64 (X26)
 
 getset_reg_u64 (X27)
 
 getset_reg_u64 (X28)
 
 getset_reg_u64 (X29)
 
 getset_reg_u64 (LR)
 
 getset_reg_u64 (SP)
 
 getset_reg_u64 (PC)
 
 getset_reg_u32 (zf)
 
 getset_reg_u32 (nf)
 
 getset_reg_u32 (of)
 
 getset_reg_u32 (cf)
 
PyObject * get_gpreg_offset_all (void)
 
PyMODINIT_FUNC initJitCore_aarch64 (void)
 

Variables

reg_dict gpreg_dict []
 
static PyMemberDef JitCpu_members []
 
static PyMethodDef JitCpu_methods []
 
static PyGetSetDef JitCpu_getseters []
 
static PyTypeObject JitCpuType
 
static PyMethodDef JitCore_aarch64_Methods []
 
static PyObject * JitCore_aarch64_Error
 

Function Documentation

void check_automod ( JitCpu jitcpu,
uint64_t  addr,
uint64_t  size 
)

Definition at line 215 of file JitCore_aarch64.c.

216 {
217  PyObject *result;
218 
219  if (!(((VmMngr*)jitcpu->pyvm)->vm_mngr.exception_flags & EXCEPT_CODE_AUTOMOD))
220  return;
221  result = PyObject_CallMethod(jitcpu->jitter, "automod_cb", "LL", addr, size);
222  Py_DECREF(result);
223 
224 }
#define EXCEPT_CODE_AUTOMOD
Definition: vm_mngr.h:130
PyObject * jitter
Definition: JitCore.h:96
PyObject_HEAD PyObject * pyvm
Definition: JitCore.h:95

+ Here is the caller graph for this function:

PyObject* cpu_dump_gpregs ( JitCpu self,
PyObject *  args 
)

Definition at line 180 of file JitCore_aarch64.c.

181 {
182  vm_cpu_t* vmcpu;
183 
184  vmcpu = self->cpu;
185  dump_gpregs(vmcpu);
186  Py_INCREF(Py_None);
187  return Py_None;
188 }
void dump_gpregs(vm_cpu_t *vmcpu)

+ Here is the call graph for this function:

PyObject* cpu_get_exception ( JitCpu self,
PyObject *  args 
)

Definition at line 206 of file JitCore_aarch64.c.

207 {
208  return PyLong_FromUnsignedLongLong((uint64_t)(((vm_cpu_t*)self->cpu)->exception_flags));
209 }
void * cpu
Definition: JitCore.h:97
PyObject* cpu_get_gpreg ( JitCpu self)

Definition at line 60 of file JitCore_aarch64.c.

61 {
62  PyObject *dict = PyDict_New();
63  PyObject *o;
64 
65  get_reg(X0);
66  get_reg(X1);
67  get_reg(X2);
68  get_reg(X3);
69  get_reg(X4);
70  get_reg(X5);
71  get_reg(X6);
72  get_reg(X7);
73  get_reg(X8);
74  get_reg(X9);
75  get_reg(X10);
76  get_reg(X11);
77  get_reg(X12);
78  get_reg(X13);
79  get_reg(X14);
80  get_reg(X15);
81  get_reg(X16);
82  get_reg(X17);
83  get_reg(X18);
84  get_reg(X19);
85  get_reg(X20);
86  get_reg(X21);
87  get_reg(X22);
88  get_reg(X23);
89  get_reg(X24);
90  get_reg(X25);
91  get_reg(X26);
92  get_reg(X27);
93  get_reg(X28);
94  get_reg(X29);
95  get_reg(LR);
96  get_reg(SP);
97  get_reg(PC);
98 
99  get_reg(zf);
100  get_reg(nf);
101  get_reg(of);
102  get_reg(cf);
103 
104  return dict;
105 }
#define get_reg(reg)
Definition: JitCore.h:74
PyObject* cpu_init_regs ( JitCpu self)

Definition at line 146 of file JitCore_aarch64.c.

147 {
148  memset(self->cpu, 0, sizeof(vm_cpu_t));
149 
150  Py_INCREF(Py_None);
151  return Py_None;
152 }
void * cpu
Definition: JitCore.h:97
PyObject* cpu_set_exception ( JitCpu self,
PyObject *  args 
)

Definition at line 191 of file JitCore_aarch64.c.

192 {
193  PyObject *item1;
194  uint64_t i;
195 
196  if (!PyArg_ParseTuple(args, "O", &item1))
197  return NULL;
198 
199  PyGetInt(item1, i);
200 
201  ((vm_cpu_t*)self->cpu)->exception_flags = i;
202  Py_INCREF(Py_None);
203  return Py_None;
204 }
#define PyGetInt(item, value)
Definition: JitCore.h:8
void * cpu
Definition: JitCore.h:97
PyObject* cpu_set_gpreg ( JitCpu self,
PyObject *  args 
)

Definition at line 109 of file JitCore_aarch64.c.

110 {
111  PyObject* dict;
112  PyObject *d_key, *d_value = NULL;
113  Py_ssize_t pos = 0;
114  uint64_t val;
115  unsigned int i, found;
116 
117  if (!PyArg_ParseTuple(args, "O", &dict))
118  return NULL;
119  if(!PyDict_Check(dict))
120  RAISE(PyExc_TypeError, "arg must be dict");
121  while(PyDict_Next(dict, &pos, &d_key, &d_value)){
122  if(!PyString_Check(d_key))
123  RAISE(PyExc_TypeError, "key must be str");
124 
125  PyGetInt(d_value, val);
126 
127  found = 0;
128  for (i=0; i < sizeof(gpreg_dict)/sizeof(reg_dict); i++){
129  if (strcmp(PyString_AsString(d_key), gpreg_dict[i].name))
130  continue;
131  *((uint32_t*)(((char*)(self->cpu)) + gpreg_dict[i].offset)) = val;
132  found = 1;
133  break;
134  }
135 
136  if (found)
137  continue;
138  fprintf(stderr, "unkown key: %s\n", PyString_AsString(d_key));
139  RAISE(PyExc_ValueError, "unkown reg");
140  }
141  Py_INCREF(Py_None);
142  return Py_None;
143 }
#define RAISE(errtype, msg)
Definition: JitCore.h:4
#define PyGetInt(item, value)
Definition: JitCore.h:8
string name
Definition: ir2C.py:22
size_t offset
Definition: JitCore.h:103
reg_dict gpreg_dict[]
void dump_gpregs ( vm_cpu_t vmcpu)

Definition at line 154 of file JitCore_aarch64.c.

155 {
156  printf("X0 %.16"PRIX64" X1 %.16"PRIX64" X2 %.16"PRIX64" X3 %.16"PRIX64" "\
157  "X4 %.16"PRIX64" X5 %.16"PRIX64" X6 %.16"PRIX64" X7 %.16"PRIX64"\n",
158  vmcpu->X0, vmcpu->X1, vmcpu->X2, vmcpu->X3, vmcpu->X4, vmcpu->X5, vmcpu->X6, vmcpu->X7);
159  printf("X8 %.16"PRIX64" X9 %.16"PRIX64" X10 %.16"PRIX64" X11 %.16"PRIX64" "\
160  "X12 %.16"PRIX64" X13 %.16"PRIX64" X14 %.16"PRIX64" X15 %.16"PRIX64"\n",
161  vmcpu->X8, vmcpu->X9, vmcpu->X10, vmcpu->X11,
162  vmcpu->X12, vmcpu->X13, vmcpu->X14, vmcpu->X15);
163  printf("X16 %.16"PRIX64" X17 %.16"PRIX64" X18 %.16"PRIX64" X19 %.16"PRIX64" "\
164  "X20 %.16"PRIX64" X21 %.16"PRIX64" X22 %.16"PRIX64" X23 %.16"PRIX64"\n",
165  vmcpu->X16, vmcpu->X17, vmcpu->X18, vmcpu->X19,
166  vmcpu->X20, vmcpu->X21, vmcpu->X22, vmcpu->X23);
167  printf("X24 %.16"PRIX64" X25 %.16"PRIX64" X26 %.16"PRIX64" X27 %.16"PRIX64" "\
168  "X28 %.16"PRIX64" X29 %.16"PRIX64" LR %.16"PRIX64"\n",
169  vmcpu->X24, vmcpu->X25, vmcpu->X26, vmcpu->X27,
170  vmcpu->X28, vmcpu->X29, vmcpu->LR);
171 
172 
173  printf("SP %.16"PRIX64" PC %.16"PRIX64" "\
174  "zf %.16"PRIX32" nf %.16"PRIX32" of %.16"PRIX32" cf %.16"PRIX32"\n",
175  vmcpu->SP, vmcpu->PC,
176  vmcpu->zf, vmcpu->nf, vmcpu->of, vmcpu->cf);
177 }
uint64_t X24
uint64_t X12
uint64_t X9
uint64_t X5
uint64_t X8
uint64_t X1
uint32_t cf
uint64_t PC
uint64_t LR
uint64_t X17
uint32_t nf
uint64_t X11
uint64_t X14
uint32_t of
uint64_t X16
uint64_t X23
uint64_t X13
uint64_t X4
uint64_t X0
uint64_t X25
uint64_t X20
uint64_t X15
uint64_t X29
uint64_t X2
uint64_t X22
uint64_t SP
uint64_t X3
uint64_t X19
uint64_t X7
uint64_t X28
uint64_t X21
uint64_t X6
uint64_t X18
uint64_t X27
uint64_t X10
uint32_t zf
uint64_t X26

+ Here is the caller graph for this function:

PyObject* get_gpreg_offset_all ( void  )

Definition at line 383 of file JitCore_aarch64.c.

384 {
385  PyObject *dict = PyDict_New();
386  PyObject *o;
387 
389  get_reg_off(exception_flags_new);
390 
391  get_reg_off(X0);
392  get_reg_off(X1);
393  get_reg_off(X2);
394  get_reg_off(X3);
395  get_reg_off(X4);
396  get_reg_off(X5);
397  get_reg_off(X6);
398  get_reg_off(X7);
399  get_reg_off(X8);
400  get_reg_off(X9);
401  get_reg_off(X10);
402  get_reg_off(X11);
403  get_reg_off(X12);
404  get_reg_off(X13);
405  get_reg_off(X14);
406  get_reg_off(X15);
407  get_reg_off(X16);
408  get_reg_off(X17);
409  get_reg_off(X18);
410  get_reg_off(X19);
411  get_reg_off(X20);
412  get_reg_off(X21);
413  get_reg_off(X22);
414  get_reg_off(X23);
415  get_reg_off(X24);
416  get_reg_off(X25);
417  get_reg_off(X26);
418  get_reg_off(X27);
419  get_reg_off(X28);
420  get_reg_off(X29);
421  get_reg_off(LR);
422  get_reg_off(SP);
423  get_reg_off(PC);
424 
425 
426  get_reg_off(X0_new);
427  get_reg_off(X1_new);
428  get_reg_off(X2_new);
429  get_reg_off(X3_new);
430  get_reg_off(X4_new);
431  get_reg_off(X5_new);
432  get_reg_off(X6_new);
433  get_reg_off(X7_new);
434  get_reg_off(X8_new);
435  get_reg_off(X9_new);
436  get_reg_off(X10_new);
437  get_reg_off(X11_new);
438  get_reg_off(X12_new);
439  get_reg_off(X13_new);
440  get_reg_off(X14_new);
441  get_reg_off(X15_new);
442  get_reg_off(X16_new);
443  get_reg_off(X17_new);
444  get_reg_off(X18_new);
445  get_reg_off(X19_new);
446  get_reg_off(X20_new);
447  get_reg_off(X21_new);
448  get_reg_off(X22_new);
449  get_reg_off(X23_new);
450  get_reg_off(X24_new);
451  get_reg_off(X25_new);
452  get_reg_off(X26_new);
453  get_reg_off(X27_new);
454  get_reg_off(X28_new);
455  get_reg_off(X29_new);
456  get_reg_off(LR_new);
457  get_reg_off(SP_new);
458  get_reg_off(PC_new);
459 
460 
461 
462  /* eflag */
463  get_reg_off(zf);
464  get_reg_off(nf);
465  get_reg_off(of);
466  get_reg_off(cf);
467 
468  get_reg_off(zf_new);
469  get_reg_off(nf_new);
470  get_reg_off(of_new);
471  get_reg_off(cf_new);
472 
473 
474  get_reg_off(pfmem08_0);
475  get_reg_off(pfmem08_1);
476  get_reg_off(pfmem08_2);
477  get_reg_off(pfmem08_3);
478  get_reg_off(pfmem08_4);
479  get_reg_off(pfmem08_5);
480  get_reg_off(pfmem08_6);
481  get_reg_off(pfmem08_7);
482  get_reg_off(pfmem08_8);
483  get_reg_off(pfmem08_9);
484  get_reg_off(pfmem08_10);
485  get_reg_off(pfmem08_11);
486  get_reg_off(pfmem08_12);
487  get_reg_off(pfmem08_13);
488  get_reg_off(pfmem08_14);
489  get_reg_off(pfmem08_15);
490  get_reg_off(pfmem08_16);
491  get_reg_off(pfmem08_17);
492  get_reg_off(pfmem08_18);
493  get_reg_off(pfmem08_19);
494 
495 
496  get_reg_off(pfmem16_0);
497  get_reg_off(pfmem16_1);
498  get_reg_off(pfmem16_2);
499  get_reg_off(pfmem16_3);
500  get_reg_off(pfmem16_4);
501  get_reg_off(pfmem16_5);
502  get_reg_off(pfmem16_6);
503  get_reg_off(pfmem16_7);
504  get_reg_off(pfmem16_8);
505  get_reg_off(pfmem16_9);
506  get_reg_off(pfmem16_10);
507  get_reg_off(pfmem16_11);
508  get_reg_off(pfmem16_12);
509  get_reg_off(pfmem16_13);
510  get_reg_off(pfmem16_14);
511  get_reg_off(pfmem16_15);
512  get_reg_off(pfmem16_16);
513  get_reg_off(pfmem16_17);
514  get_reg_off(pfmem16_18);
515  get_reg_off(pfmem16_19);
516 
517 
518  get_reg_off(pfmem32_0);
519  get_reg_off(pfmem32_1);
520  get_reg_off(pfmem32_2);
521  get_reg_off(pfmem32_3);
522  get_reg_off(pfmem32_4);
523  get_reg_off(pfmem32_5);
524  get_reg_off(pfmem32_6);
525  get_reg_off(pfmem32_7);
526  get_reg_off(pfmem32_8);
527  get_reg_off(pfmem32_9);
528  get_reg_off(pfmem32_10);
529  get_reg_off(pfmem32_11);
530  get_reg_off(pfmem32_12);
531  get_reg_off(pfmem32_13);
532  get_reg_off(pfmem32_14);
533  get_reg_off(pfmem32_15);
534  get_reg_off(pfmem32_16);
535  get_reg_off(pfmem32_17);
536  get_reg_off(pfmem32_18);
537  get_reg_off(pfmem32_19);
538 
539 
540  get_reg_off(pfmem64_0);
541  get_reg_off(pfmem64_1);
542  get_reg_off(pfmem64_2);
543  get_reg_off(pfmem64_3);
544  get_reg_off(pfmem64_4);
545  get_reg_off(pfmem64_5);
546  get_reg_off(pfmem64_6);
547  get_reg_off(pfmem64_7);
548  get_reg_off(pfmem64_8);
549  get_reg_off(pfmem64_9);
550  get_reg_off(pfmem64_10);
551  get_reg_off(pfmem64_11);
552  get_reg_off(pfmem64_12);
553  get_reg_off(pfmem64_13);
554  get_reg_off(pfmem64_14);
555  get_reg_off(pfmem64_15);
556  get_reg_off(pfmem64_16);
557  get_reg_off(pfmem64_17);
558  get_reg_off(pfmem64_18);
559  get_reg_off(pfmem64_19);
560 
561  return dict;
562 }
#define get_reg_off(reg)
Definition: JitCore.h:81
tuple exception_flags
Definition: regs.py:7
getset_reg_u32 ( zf  )
getset_reg_u32 ( nf  )
getset_reg_u32 ( of  )
getset_reg_u32 ( cf  )
getset_reg_u64 ( X0  )
getset_reg_u64 ( X1  )
getset_reg_u64 ( X2  )
getset_reg_u64 ( X3  )
getset_reg_u64 ( X4  )
getset_reg_u64 ( X5  )
getset_reg_u64 ( X6  )
getset_reg_u64 ( X7  )
getset_reg_u64 ( X8  )
getset_reg_u64 ( X9  )
getset_reg_u64 ( X10  )
getset_reg_u64 ( X11  )
getset_reg_u64 ( X12  )
getset_reg_u64 ( X13  )
getset_reg_u64 ( X14  )
getset_reg_u64 ( X15  )
getset_reg_u64 ( X16  )
getset_reg_u64 ( X17  )
getset_reg_u64 ( X18  )
getset_reg_u64 ( X19  )
getset_reg_u64 ( X20  )
getset_reg_u64 ( X21  )
getset_reg_u64 ( X22  )
getset_reg_u64 ( X23  )
getset_reg_u64 ( X24  )
getset_reg_u64 ( X25  )
getset_reg_u64 ( X26  )
getset_reg_u64 ( X27  )
getset_reg_u64 ( X28  )
getset_reg_u64 ( X29  )
getset_reg_u64 ( LR  )
getset_reg_u64 ( SP  )
getset_reg_u64 ( PC  )
PyMODINIT_FUNC initJitCore_aarch64 ( void  )

Definition at line 680 of file JitCore_aarch64.c.

681 {
682  PyObject *m;
683 
684  if (PyType_Ready(&JitCpuType) < 0)
685  return;
686 
687  m = Py_InitModule("JitCore_aarch64", JitCore_aarch64_Methods);
688  if (m == NULL)
689  return;
690 
691  JitCore_aarch64_Error = PyErr_NewException("JitCore_aarch64.error", NULL, NULL);
692  Py_INCREF(JitCore_aarch64_Error);
693  PyModule_AddObject(m, "error", JitCore_aarch64_Error);
694 
695  Py_INCREF(&JitCpuType);
696  PyModule_AddObject(m, "JitCpu", (PyObject *)&JitCpuType);
697 
698 }
static PyTypeObject JitCpuType
static PyObject * JitCore_aarch64_Error
static PyMethodDef JitCore_aarch64_Methods[]
static int JitCpu_init ( JitCpu self,
PyObject *  args,
PyObject *  kwds 
)
static

Definition at line 330 of file JitCore_aarch64.c.

331 {
332  self->cpu = malloc(sizeof(vm_cpu_t));
333  if (self->cpu == NULL) {
334  fprintf(stderr, "cannot alloc vm_cpu_t\n");
335  exit(0);
336  }
337  return 0;
338 }
void * cpu
Definition: JitCore.h:97
void MEM_WRITE_08 ( JitCpu jitcpu,
uint64_t  addr,
uint8_t  src 
)

Definition at line 226 of file JitCore_aarch64.c.

227 {
228  vm_MEM_WRITE_08(&((VmMngr*)jitcpu->pyvm)->vm_mngr, addr, src);
229  check_automod(jitcpu, addr, 8);
230 }
PyObject_HEAD PyObject * pyvm
Definition: JitCore.h:95
void vm_MEM_WRITE_08(vm_mngr_t *vm_mngr, uint64_t addr, unsigned char src)
Definition: vm_mngr.c:438
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)
void MEM_WRITE_16 ( JitCpu jitcpu,
uint64_t  addr,
uint16_t  src 
)

Definition at line 232 of file JitCore_aarch64.c.

233 {
234  vm_MEM_WRITE_16(&((VmMngr*)jitcpu->pyvm)->vm_mngr, addr, src);
235  check_automod(jitcpu, addr, 16);
236 }
void vm_MEM_WRITE_16(vm_mngr_t *vm_mngr, uint64_t addr, unsigned short src)
Definition: vm_mngr.c:444
PyObject_HEAD PyObject * pyvm
Definition: JitCore.h:95
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)
void MEM_WRITE_32 ( JitCpu jitcpu,
uint64_t  addr,
uint32_t  src 
)

Definition at line 238 of file JitCore_aarch64.c.

239 {
240  vm_MEM_WRITE_32(&((VmMngr*)jitcpu->pyvm)->vm_mngr, addr, src);
241  check_automod(jitcpu, addr, 32);
242 }
PyObject_HEAD PyObject * pyvm
Definition: JitCore.h:95
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)
void vm_MEM_WRITE_32(vm_mngr_t *vm_mngr, uint64_t addr, unsigned int src)
Definition: vm_mngr.c:449
void MEM_WRITE_64 ( JitCpu jitcpu,
uint64_t  addr,
uint64_t  src 
)

Definition at line 244 of file JitCore_aarch64.c.

245 {
246  vm_MEM_WRITE_64(&((VmMngr*)jitcpu->pyvm)->vm_mngr, addr, src);
247  check_automod(jitcpu, addr, 64);
248 }
void vm_MEM_WRITE_64(vm_mngr_t *vm_mngr, uint64_t addr, uint64_t src)
Definition: vm_mngr.c:454
PyObject_HEAD PyObject * pyvm
Definition: JitCore.h:95
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)
PyObject* vm_set_mem ( JitCpu self,
PyObject *  args 
)

Definition at line 255 of file JitCore_aarch64.c.

256 {
257  PyObject *py_addr;
258  PyObject *py_buffer;
259  Py_ssize_t py_length;
260 
261  char * buffer;
262  uint64_t size;
263  uint64_t addr;
264  int ret = 0x1337;
265 
266  if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_buffer))
267  return NULL;
268 
269  PyGetInt(py_addr, addr);
270 
271  if(!PyString_Check(py_buffer))
272  RAISE(PyExc_TypeError,"arg must be str");
273 
274  size = PyString_Size(py_buffer);
275  PyString_AsStringAndSize(py_buffer, &buffer, &py_length);
276 
277  ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, size);
278  if (ret < 0)
279  RAISE(PyExc_TypeError,"arg must be str");
280  check_automod(self, addr, size*8);
281 
282  Py_INCREF(Py_None);
283  return Py_None;
284 }
#define RAISE(errtype, msg)
Definition: JitCore.h:4
#define PyGetInt(item, value)
Definition: JitCore.h:8
int vm_write_mem(vm_mngr_t *vm_mngr, uint64_t addr, char *buffer, uint64_t size)
Definition: vm_mngr.c:518
PyObject_HEAD PyObject * pyvm
Definition: JitCore.h:95
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)

+ Here is the call graph for this function:

Variable Documentation

reg_dict gpreg_dict[]

Definition at line 13 of file JitCore_aarch64.c.

PyObject* JitCore_aarch64_Error
static

Definition at line 677 of file JitCore_aarch64.c.

PyMethodDef JitCore_aarch64_Methods[]
static
Initial value:
= {
{"get_gpreg_offset_all", (PyCFunction)get_gpreg_offset_all, METH_NOARGS},
{NULL, NULL, 0, NULL}
}
PyObject * get_gpreg_offset_all(void)

Definition at line 671 of file JitCore_aarch64.c.

PyGetSetDef JitCpu_getseters[]
static

Definition at line 565 of file JitCore_aarch64.c.

PyMemberDef JitCpu_members[]
static
Initial value:
= {
{NULL}
}

Definition at line 305 of file JitCore_aarch64.c.

PyMethodDef JitCpu_methods[]
static
Initial value:
= {
{"init_regs", (PyCFunction)cpu_init_regs, METH_NOARGS,
"X"},
{"dump_gpregs", (PyCFunction)cpu_dump_gpregs, METH_NOARGS,
"X"},
{"get_gpreg", (PyCFunction)cpu_get_gpreg, METH_NOARGS,
"X"},
{"set_gpreg", (PyCFunction)cpu_set_gpreg, METH_VARARGS,
"X"},
{"get_exception", (PyCFunction)cpu_get_exception, METH_VARARGS,
"X"},
{"set_exception", (PyCFunction)cpu_set_exception, METH_VARARGS,
"X"},
{"set_mem", (PyCFunction)vm_set_mem, METH_VARARGS,
"X"},
{"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS,
"X"},
{NULL}
}
PyObject * vm_set_mem(JitCpu *self, PyObject *args)
PyObject * vm_get_mem(JitCpu *self, PyObject *args)
PyObject * cpu_set_exception(JitCpu *self, PyObject *args)
PyObject * cpu_init_regs(JitCpu *self)
PyObject * cpu_get_gpreg(JitCpu *self)
PyObject * cpu_get_exception(JitCpu *self, PyObject *args)
PyObject * cpu_set_gpreg(JitCpu *self, PyObject *args)
PyObject * cpu_dump_gpregs(JitCpu *self, PyObject *args)

Definition at line 309 of file JitCore_aarch64.c.

PyTypeObject JitCpuType
static

Definition at line 627 of file JitCore_aarch64.c.