about summary refs log tree commit diff stats
path: root/miasm2/jitter/Jitllvm.c
blob: 6622e61571357d01cc4a5d7a05d985e2ebd5087a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <Python.h>

#include <inttypes.h>

#include <stdint.h>

PyObject* llvm_exec_bloc(PyObject* self, PyObject* args)
{
	uint64_t func_addr;
	uint64_t (*func)(void*, void*);
	uint64_t vm;
	uint64_t cpu;
	uint64_t ret;

	if (!PyArg_ParseTuple(args, "KKK", &func_addr, &cpu, &vm))
		return NULL;
	func = (void *) (intptr_t) func_addr;
	ret = func((void*)(intptr_t) cpu, (void*)(intptr_t) vm);
	return PyLong_FromUnsignedLongLong(ret);
}


static PyMethodDef LLVMMethods[] = {
    {"llvm_exec_bloc",  llvm_exec_bloc, METH_VARARGS,
     "llvm exec bloc"},
    {NULL, NULL, 0, NULL}        /* Sentinel */
};

PyMODINIT_FUNC
initJitllvm(void)
{
    PyObject *m;

    m = Py_InitModule("Jitllvm", LLVMMethods);
    if (m == NULL)
	    return;

}