Miasm2
 All Classes Namespaces Files Functions Variables Typedefs Properties Macros
Functions | Variables
JitCore_mips32.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_mips32.h"
+ Include dependency graph for JitCore_mips32.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_u32 (ZERO)
 
 getset_reg_u32 (AT)
 
 getset_reg_u32 (V0)
 
 getset_reg_u32 (V1)
 
 getset_reg_u32 (A0)
 
 getset_reg_u32 (A1)
 
 getset_reg_u32 (A2)
 
 getset_reg_u32 (A3)
 
 getset_reg_u32 (T0)
 
 getset_reg_u32 (T1)
 
 getset_reg_u32 (T2)
 
 getset_reg_u32 (T3)
 
 getset_reg_u32 (T4)
 
 getset_reg_u32 (T5)
 
 getset_reg_u32 (T6)
 
 getset_reg_u32 (T7)
 
 getset_reg_u32 (S0)
 
 getset_reg_u32 (S1)
 
 getset_reg_u32 (S2)
 
 getset_reg_u32 (S3)
 
 getset_reg_u32 (S4)
 
 getset_reg_u32 (S5)
 
 getset_reg_u32 (S6)
 
 getset_reg_u32 (S7)
 
 getset_reg_u32 (T8)
 
 getset_reg_u32 (T9)
 
 getset_reg_u32 (K0)
 
 getset_reg_u32 (K1)
 
 getset_reg_u32 (GP)
 
 getset_reg_u32 (SP)
 
 getset_reg_u32 (FP)
 
 getset_reg_u32 (RA)
 
 getset_reg_u32 (PC)
 
 getset_reg_u32 (PC_FETCH)
 
 getset_reg_u32 (R_LO)
 
 getset_reg_u32 (R_HI)
 
PyObject * get_gpreg_offset_all (void)
 
PyMODINIT_FUNC initJitCore_mips32 (void)
 

Variables

reg_dict gpreg_dict []
 
static PyMemberDef JitCpu_members []
 
static PyMethodDef JitCpu_methods []
 
static PyGetSetDef JitCpu_getseters []
 
static PyTypeObject JitCpuType
 
static PyMethodDef JitCore_mips32_Methods []
 
static PyObject * JitCore_mips32_Error
 

Function Documentation

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

Definition at line 212 of file JitCore_mips32.c.

213 {
214  PyObject *result;
215 
216  if (!(((VmMngr*)jitcpu->pyvm)->vm_mngr.exception_flags & EXCEPT_CODE_AUTOMOD))
217  return;
218  result = PyObject_CallMethod(jitcpu->jitter, "automod_cb", "LL", addr, size);
219  Py_DECREF(result);
220 
221 }
#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 176 of file JitCore_mips32.c.

177 {
178  vm_cpu_t* vmcpu;
179 
180  vmcpu = self->cpu;
181  dump_gpregs(vmcpu);
182  Py_INCREF(Py_None);
183  return Py_None;
184 }
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 202 of file JitCore_mips32.c.

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

Definition at line 55 of file JitCore_mips32.c.

56 {
57  PyObject *dict = PyDict_New();
58  PyObject *o;
59 
60  get_reg(ZERO);
61  get_reg(AT);
62  get_reg(V0);
63  get_reg(V1);
64  get_reg(A0);
65  get_reg(A1);
66  get_reg(A2);
67  get_reg(A3);
68  get_reg(T0);
69  get_reg(T1);
70  get_reg(T2);
71  get_reg(T3);
72  get_reg(T4);
73  get_reg(T5);
74  get_reg(T6);
75  get_reg(T7);
76  get_reg(S0);
77  get_reg(S1);
78  get_reg(S2);
79  get_reg(S3);
80  get_reg(S4);
81  get_reg(S5);
82  get_reg(S6);
83  get_reg(S7);
84  get_reg(T8);
85  get_reg(T9);
86  get_reg(K0);
87  get_reg(K1);
88  get_reg(GP);
89  get_reg(SP);
90  get_reg(FP);
91  get_reg(RA);
92  get_reg(PC);
93  get_reg(PC_FETCH);
94  get_reg(R_LO);
95  get_reg(R_HI);
96 
97  return dict;
98 }
#define get_reg(reg)
Definition: JitCore.h:74
PyObject* cpu_init_regs ( JitCpu self)

Definition at line 142 of file JitCore_mips32.c.

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

Definition at line 187 of file JitCore_mips32.c.

188 {
189  PyObject *item1;
190  uint64_t i;
191 
192  if (!PyArg_ParseTuple(args, "O", &item1))
193  return NULL;
194 
195  PyGetInt(item1, i);
196 
197  ((vm_cpu_t*)self->cpu)->exception_flags = i;
198  Py_INCREF(Py_None);
199  return Py_None;
200 }
#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 103 of file JitCore_mips32.c.

104 {
105  PyObject* dict;
106  PyObject *d_key, *d_value = NULL;
107  Py_ssize_t pos = 0;
108  uint64_t val;
109  unsigned int i, found;
110 
111  if (!PyArg_ParseTuple(args, "O", &dict))
112  return NULL;
113  if(!PyDict_Check(dict))
114  RAISE(PyExc_TypeError, "arg must be dict");
115  while(PyDict_Next(dict, &pos, &d_key, &d_value)){
116  if(!PyString_Check(d_key))
117  RAISE(PyExc_TypeError, "key must be str");
118 
119  PyGetInt(d_value, val);
120 
121  found = 0;
122  for (i=0; i < sizeof(gpreg_dict)/sizeof(reg_dict); i++){
123  if (strcmp(PyString_AsString(d_key), gpreg_dict[i].name))
124  continue;
125  *((uint32_t*)(((char*)(self->cpu)) + gpreg_dict[i].offset)) = val;
126  found = 1;
127  break;
128  }
129 
130  if (found)
131  continue;
132  fprintf(stderr, "unkown key: %s\n", PyString_AsString(d_key));
133  RAISE(PyExc_ValueError, "unkown reg");
134  }
135  Py_INCREF(Py_None);
136  return Py_None;
137 }
#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 152 of file JitCore_mips32.c.

153 {
154 
155  printf("ZR %.8"PRIX32" AT %.8"PRIX32" V0 %.8"PRIX32" V1 %.8"PRIX32" ",
156  vmcpu->ZERO, vmcpu->AT, vmcpu->V0, vmcpu->V1);
157  printf("A0 %.8"PRIX32" A1 %.8"PRIX32" A2 %.8"PRIX32" A3 %.8"PRIX32" ",
158  vmcpu->A0, vmcpu->A1, vmcpu->A2, vmcpu->A3);
159  printf("T0 %.8"PRIX32" T1 %.8"PRIX32" T2 %.8"PRIX32" T3 %.8"PRIX32" ",
160  vmcpu->T0, vmcpu->T1, vmcpu->T2, vmcpu->T3);
161  printf("T4 %.8"PRIX32" T5 %.8"PRIX32" T6 %.8"PRIX32" T7 %.8"PRIX32"\n",
162  vmcpu->T4, vmcpu->T5, vmcpu->T6, vmcpu->T7);
163  printf("S0 %.8"PRIX32" S1 %.8"PRIX32" S2 %.8"PRIX32" S3 %.8"PRIX32" ",
164  vmcpu->S0, vmcpu->S1, vmcpu->S2, vmcpu->S3);
165  printf("S4 %.8"PRIX32" S5 %.8"PRIX32" S6 %.8"PRIX32" S7 %.8"PRIX32" ",
166  vmcpu->S4, vmcpu->S5, vmcpu->S6, vmcpu->S7);
167  printf("T8 %.8"PRIX32" T9 %.8"PRIX32" K0 %.8"PRIX32" K1 %.8"PRIX32" ",
168  vmcpu->T8, vmcpu->T9, vmcpu->K0, vmcpu->K1);
169  printf("GP %.8"PRIX32" SP %.8"PRIX32" FP %.8"PRIX32" RA %.8"PRIX32"\n",
170  vmcpu->GP, vmcpu->SP, vmcpu->FP, vmcpu->RA);
171  printf("PC %.8"PRIX32"\n",
172  vmcpu->PC);
173 }
uint32_t S3
uint32_t A3
uint32_t AT
Definition: JitCore_mips32.h:9
uint32_t S2
uint32_t K0
uint32_t T9
uint64_t PC
uint32_t S5
uint32_t ZERO
Definition: JitCore_mips32.h:8
uint32_t T1
uint32_t FP
uint32_t GP
uint32_t T7
uint32_t T4
uint32_t T2
uint32_t S1
uint32_t S4
uint32_t RA
uint32_t S0
uint32_t T6
uint32_t A2
uint32_t T8
uint32_t T3
uint32_t V1
uint32_t A1
uint64_t SP
uint32_t V0
uint32_t T5
uint32_t S7
uint32_t A0
uint32_t K1
uint32_t T0
uint32_t S6

+ Here is the caller graph for this function:

PyObject* get_gpreg_offset_all ( void  )

Definition at line 353 of file JitCore_mips32.c.

354 {
355  PyObject *dict = PyDict_New();
356  PyObject *o;
357 
359  get_reg_off(exception_flags_new);
360 
361 
362  get_reg_off(ZERO);
363  get_reg_off(AT);
364  get_reg_off(V0);
365  get_reg_off(V1);
366  get_reg_off(A0);
367  get_reg_off(A1);
368  get_reg_off(A2);
369  get_reg_off(A3);
370  get_reg_off(T0);
371  get_reg_off(T1);
372  get_reg_off(T2);
373  get_reg_off(T3);
374  get_reg_off(T4);
375  get_reg_off(T5);
376  get_reg_off(T6);
377  get_reg_off(T7);
378  get_reg_off(S0);
379  get_reg_off(S1);
380  get_reg_off(S2);
381  get_reg_off(S3);
382  get_reg_off(S4);
383  get_reg_off(S5);
384  get_reg_off(S6);
385  get_reg_off(S7);
386  get_reg_off(T8);
387  get_reg_off(T9);
388  get_reg_off(K0);
389  get_reg_off(K1);
390  get_reg_off(GP);
391  get_reg_off(SP);
392  get_reg_off(FP);
393  get_reg_off(RA);
394  get_reg_off(PC);
395  get_reg_off(PC_FETCH);
396  get_reg_off(R_LO);
397  get_reg_off(R_HI);
398 
399  get_reg_off(ZERO_new);
400  get_reg_off(AT_new);
401  get_reg_off(V0_new);
402  get_reg_off(V1_new);
403  get_reg_off(A0_new);
404  get_reg_off(A1_new);
405  get_reg_off(A2_new);
406  get_reg_off(A3_new);
407  get_reg_off(T0_new);
408  get_reg_off(T1_new);
409  get_reg_off(T2_new);
410  get_reg_off(T3_new);
411  get_reg_off(T4_new);
412  get_reg_off(T5_new);
413  get_reg_off(T6_new);
414  get_reg_off(T7_new);
415  get_reg_off(S0_new);
416  get_reg_off(S1_new);
417  get_reg_off(S2_new);
418  get_reg_off(S3_new);
419  get_reg_off(S4_new);
420  get_reg_off(S5_new);
421  get_reg_off(S6_new);
422  get_reg_off(S7_new);
423  get_reg_off(T8_new);
424  get_reg_off(T9_new);
425  get_reg_off(K0_new);
426  get_reg_off(K1_new);
427  get_reg_off(GP_new);
428  get_reg_off(SP_new);
429  get_reg_off(FP_new);
430  get_reg_off(RA_new);
431  get_reg_off(PC_new);
432  get_reg_off(PC_FETCH_new);
433  get_reg_off(R_LO_new);
434  get_reg_off(R_HI_new);
435 
436 
437 
438  get_reg_off(pfmem08_0);
439  get_reg_off(pfmem08_1);
440  get_reg_off(pfmem08_2);
441  get_reg_off(pfmem08_3);
442  get_reg_off(pfmem08_4);
443  get_reg_off(pfmem08_5);
444  get_reg_off(pfmem08_6);
445  get_reg_off(pfmem08_7);
446  get_reg_off(pfmem08_8);
447  get_reg_off(pfmem08_9);
448  get_reg_off(pfmem08_10);
449  get_reg_off(pfmem08_11);
450  get_reg_off(pfmem08_12);
451  get_reg_off(pfmem08_13);
452  get_reg_off(pfmem08_14);
453  get_reg_off(pfmem08_15);
454  get_reg_off(pfmem08_16);
455  get_reg_off(pfmem08_17);
456  get_reg_off(pfmem08_18);
457  get_reg_off(pfmem08_19);
458 
459 
460  get_reg_off(pfmem16_0);
461  get_reg_off(pfmem16_1);
462  get_reg_off(pfmem16_2);
463  get_reg_off(pfmem16_3);
464  get_reg_off(pfmem16_4);
465  get_reg_off(pfmem16_5);
466  get_reg_off(pfmem16_6);
467  get_reg_off(pfmem16_7);
468  get_reg_off(pfmem16_8);
469  get_reg_off(pfmem16_9);
470  get_reg_off(pfmem16_10);
471  get_reg_off(pfmem16_11);
472  get_reg_off(pfmem16_12);
473  get_reg_off(pfmem16_13);
474  get_reg_off(pfmem16_14);
475  get_reg_off(pfmem16_15);
476  get_reg_off(pfmem16_16);
477  get_reg_off(pfmem16_17);
478  get_reg_off(pfmem16_18);
479  get_reg_off(pfmem16_19);
480 
481 
482  get_reg_off(pfmem32_0);
483  get_reg_off(pfmem32_1);
484  get_reg_off(pfmem32_2);
485  get_reg_off(pfmem32_3);
486  get_reg_off(pfmem32_4);
487  get_reg_off(pfmem32_5);
488  get_reg_off(pfmem32_6);
489  get_reg_off(pfmem32_7);
490  get_reg_off(pfmem32_8);
491  get_reg_off(pfmem32_9);
492  get_reg_off(pfmem32_10);
493  get_reg_off(pfmem32_11);
494  get_reg_off(pfmem32_12);
495  get_reg_off(pfmem32_13);
496  get_reg_off(pfmem32_14);
497  get_reg_off(pfmem32_15);
498  get_reg_off(pfmem32_16);
499  get_reg_off(pfmem32_17);
500  get_reg_off(pfmem32_18);
501  get_reg_off(pfmem32_19);
502 
503 
504  get_reg_off(pfmem64_0);
505  get_reg_off(pfmem64_1);
506  get_reg_off(pfmem64_2);
507  get_reg_off(pfmem64_3);
508  get_reg_off(pfmem64_4);
509  get_reg_off(pfmem64_5);
510  get_reg_off(pfmem64_6);
511  get_reg_off(pfmem64_7);
512  get_reg_off(pfmem64_8);
513  get_reg_off(pfmem64_9);
514  get_reg_off(pfmem64_10);
515  get_reg_off(pfmem64_11);
516  get_reg_off(pfmem64_12);
517  get_reg_off(pfmem64_13);
518  get_reg_off(pfmem64_14);
519  get_reg_off(pfmem64_15);
520  get_reg_off(pfmem64_16);
521  get_reg_off(pfmem64_17);
522  get_reg_off(pfmem64_18);
523  get_reg_off(pfmem64_19);
524 
525  return dict;
526 }
#define get_reg_off(reg)
Definition: JitCore.h:81
tuple exception_flags
Definition: regs.py:7
getset_reg_u32 ( ZERO  )
getset_reg_u32 ( AT  )
getset_reg_u32 ( V0  )
getset_reg_u32 ( V1  )
getset_reg_u32 ( A0  )
getset_reg_u32 ( A1  )
getset_reg_u32 ( A2  )
getset_reg_u32 ( A3  )
getset_reg_u32 ( T0  )
getset_reg_u32 ( T1  )
getset_reg_u32 ( T2  )
getset_reg_u32 ( T3  )
getset_reg_u32 ( T4  )
getset_reg_u32 ( T5  )
getset_reg_u32 ( T6  )
getset_reg_u32 ( T7  )
getset_reg_u32 ( S0  )
getset_reg_u32 ( S1  )
getset_reg_u32 ( S2  )
getset_reg_u32 ( S3  )
getset_reg_u32 ( S4  )
getset_reg_u32 ( S5  )
getset_reg_u32 ( S6  )
getset_reg_u32 ( S7  )
getset_reg_u32 ( T8  )
getset_reg_u32 ( T9  )
getset_reg_u32 ( K0  )
getset_reg_u32 ( K1  )
getset_reg_u32 ( GP  )
getset_reg_u32 ( SP  )
getset_reg_u32 ( FP  )
getset_reg_u32 ( RA  )
getset_reg_u32 ( PC  )
getset_reg_u32 ( PC_FETCH  )
getset_reg_u32 ( R_LO  )
getset_reg_u32 ( R_HI  )
PyMODINIT_FUNC initJitCore_mips32 ( void  )

Definition at line 638 of file JitCore_mips32.c.

639 {
640  PyObject *m;
641 
642  if (PyType_Ready(&JitCpuType) < 0)
643  return;
644 
645  m = Py_InitModule("JitCore_mips32", JitCore_mips32_Methods);
646  if (m == NULL)
647  return;
648 
649  JitCore_mips32_Error = PyErr_NewException("JitCore_mips32.error", NULL, NULL);
650  Py_INCREF(JitCore_mips32_Error);
651  PyModule_AddObject(m, "error", JitCore_mips32_Error);
652 
653  Py_INCREF(&JitCpuType);
654  PyModule_AddObject(m, "JitCpu", (PyObject *)&JitCpuType);
655 
656 }
static PyMethodDef JitCore_mips32_Methods[]
static PyTypeObject JitCpuType
static PyObject * JitCore_mips32_Error
static int JitCpu_init ( JitCpu self,
PyObject *  args,
PyObject *  kwds 
)
static

Definition at line 305 of file JitCore_mips32.c.

306 {
307  self->cpu = malloc(sizeof(vm_cpu_t));
308  if (self->cpu == NULL) {
309  fprintf(stderr, "cannot alloc vm_cpu_t\n");
310  exit(0);
311  }
312  return 0;
313 }
void * cpu
Definition: JitCore.h:97
void MEM_WRITE_08 ( JitCpu jitcpu,
uint64_t  addr,
uint8_t  src 
)

Definition at line 223 of file JitCore_mips32.c.

224 {
225  vm_MEM_WRITE_08(&((VmMngr*)jitcpu->pyvm)->vm_mngr, addr, src);
226  check_automod(jitcpu, addr, 8);
227 }
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)
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

+ Here is the call graph for this function:

void MEM_WRITE_16 ( JitCpu jitcpu,
uint64_t  addr,
uint16_t  src 
)

Definition at line 229 of file JitCore_mips32.c.

230 {
231  vm_MEM_WRITE_16(&((VmMngr*)jitcpu->pyvm)->vm_mngr, addr, src);
232  check_automod(jitcpu, addr, 16);
233 }
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)
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

+ Here is the call graph for this function:

void MEM_WRITE_32 ( JitCpu jitcpu,
uint64_t  addr,
uint32_t  src 
)

Definition at line 235 of file JitCore_mips32.c.

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

+ Here is the call graph for this function:

void MEM_WRITE_64 ( JitCpu jitcpu,
uint64_t  addr,
uint64_t  src 
)

Definition at line 241 of file JitCore_mips32.c.

242 {
243  vm_MEM_WRITE_64(&((VmMngr*)jitcpu->pyvm)->vm_mngr, addr, src);
244  check_automod(jitcpu, addr, 64);
245 }
void vm_MEM_WRITE_64(vm_mngr_t *vm_mngr, uint64_t addr, uint64_t src)
Definition: vm_mngr.c:454
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)
PyObject_HEAD PyObject * pyvm
Definition: JitCore.h:95

+ Here is the call graph for this function:

PyObject* vm_set_mem ( JitCpu self,
PyObject *  args 
)

Definition at line 248 of file JitCore_mips32.c.

249 {
250  PyObject *py_addr;
251  PyObject *py_buffer;
252  Py_ssize_t py_length;
253 
254  char * buffer;
255  uint64_t size;
256  uint64_t addr;
257  int ret = 0x1337;
258 
259  if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_buffer))
260  return NULL;
261 
262  PyGetInt(py_addr, addr);
263 
264  if(!PyString_Check(py_buffer))
265  RAISE(PyExc_TypeError,"arg must be str");
266 
267  size = PyString_Size(py_buffer);
268  PyString_AsStringAndSize(py_buffer, &buffer, &py_length);
269 
270  ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, size);
271  if (ret < 0)
272  RAISE(PyExc_TypeError,"arg must be str");
273  check_automod(self, addr, size*8);
274 
275  Py_INCREF(Py_None);
276  return Py_None;
277 }
#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
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)
PyObject_HEAD PyObject * pyvm
Definition: JitCore.h:95

+ Here is the call graph for this function:

Variable Documentation

reg_dict gpreg_dict[]

Definition at line 13 of file JitCore_mips32.c.

PyObject* JitCore_mips32_Error
static

Definition at line 635 of file JitCore_mips32.c.

PyMethodDef JitCore_mips32_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 625 of file JitCore_mips32.c.

PyGetSetDef JitCpu_getseters[]
static

Definition at line 529 of file JitCore_mips32.c.

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

Definition at line 279 of file JitCore_mips32.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 * cpu_init_regs(JitCpu *self)
PyObject * vm_get_mem(JitCpu *self, PyObject *args)
PyObject * cpu_get_exception(JitCpu *self, PyObject *args)
PyObject * vm_set_mem(JitCpu *self, PyObject *args)
PyObject * cpu_get_gpreg(JitCpu *self)
PyObject * cpu_set_exception(JitCpu *self, PyObject *args)
PyObject * cpu_dump_gpregs(JitCpu *self, PyObject *args)
PyObject * cpu_set_gpreg(JitCpu *self, PyObject *args)

Definition at line 283 of file JitCore_mips32.c.

PyTypeObject JitCpuType
static

Definition at line 581 of file JitCore_mips32.c.