aboutsummaryrefslogtreecommitdiff
path: root/src/copyjit.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/copyjit.h')
-rw-r--r--src/copyjit.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/copyjit.h b/src/copyjit.h
index d752144..8170204 100644
--- a/src/copyjit.h
+++ b/src/copyjit.h
@@ -3,12 +3,21 @@
#ifndef HMMJIT_H
#define HMMJIT_H
+#include <stdint.h>
+
typedef struct {
char *pc;
char *buf;
size_t size;
} ctx_t;
+typedef struct {
+ void *addr;
+ uintptr_t *imm;
+} reloc_t;
+
+typedef void *(*compile_callback_t)(ctx_t *, unsigned long);
+
#include "../lib/op_decls.h"
#include "../lib/imm_decls.h"
@@ -30,6 +39,9 @@ void *compile_sly(ctx_t *ctx, unsigned long i);
/** @todo add in placeholders (for example for load immediate but we don't know
* what the immediate is yet) */
+reloc_t compile_placeholder(ctx_t *ctx, compile_callback_t call);
+void compile_patch(reloc_t reloc, void *addr);
+
void compile_start(ctx_t *ctx);
void compile_finish(ctx_t *ctx);
unsigned long run(ctx_t *ctx);