PyObject* cpu_set_interrupt_num(JitCpu* self, PyObject* args) { PyObject *item1; uint64_t i; if (!PyArg_ParseTuple(args, "O", &item1)) return NULL; PyGetInt(item1, i); ((vm_cpu_t*)self->cpu)->interrupt_num = i; Py_INCREF(Py_None); return Py_None; }
PyObject* vm_set_exception(VmMngr* self, PyObject* args) { PyObject *item1; uint64_t i; if (!PyArg_ParseTuple(args, "O", &item1)) return NULL; PyGetInt(item1, i); self->vm_mngr.exception_flags = i; Py_INCREF(Py_None); return Py_None; }
PyObject* cpu_set_exception(JitCpu* self, PyObject* args) { PyObject *item1; uint64_t i; if (!PyArg_ParseTuple(args, "O", &item1)) return NULL; PyGetInt(item1, i); ((vm_cpu_t*)self->cpu)->exception_flags = i; Py_INCREF(Py_None); return Py_None; }
PyObject * cpu_set_gpreg(JitCpu *self, PyObject *args) { PyObject *dict; PyObject *d_key, *d_value = NULL; Py_ssize_t pos = 0; uint64_t val; unsigned int i; if (!PyArg_ParseTuple(args, "O", &dict)) return NULL; if(!PyDict_Check(dict)) RAISE(PyExc_TypeError, "arg must be dict"); while(PyDict_Next(dict, &pos, &d_key, &d_value)) { int found = 0; if(!PyString_Check(d_key)) RAISE(PyExc_TypeError, "key must be str"); PyGetInt(d_value, val); for (i=0; i < sizeof(gpreg_dict)/sizeof(reg_dict); i++){ if (strcmp(PyString_AsString(d_key), gpreg_dict[i].name)) continue; *((uint32_t*)(((char*)(self->cpu)) + gpreg_dict[i].offset)) = val; found = 1; break; } if (found) continue; fprintf(stderr, "unknown key: %s\n", PyString_AsString(d_key)); RAISE(PyExc_ValueError, "unknown reg"); } Py_INCREF(Py_None); return Py_None; }