summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--genvmop.txr7
-rw-r--r--vm.c4
-rw-r--r--vmop.h7
3 files changed, 14 insertions, 4 deletions
diff --git a/genvmop.txr b/genvmop.txr
index 73864d08..5e80948a 100644
--- a/genvmop.txr
+++ b/genvmop.txr
@@ -16,4 +16,11 @@ typedef enum vm_op {
" /* deprecated */")
@ (end)
} vm_op_t;
+
+#define VM_LEV_BITS @{sys:%lev-bits%}
+#define VM_LEV_MASK @(fmt "0x~X" (pred (ash 1 sys:%lev-bits%)))
+#define VM_SM_LEV_BITS @{sys:%sm-lev-bits%}
+#define VM_SM_LEV_MASK @(fmt "0x~X" (pred (ash 1 sys:%sm-lev-bits%)))
+#define VM_MAX_LEV @{sys:%max-lev%}
+#define VM_MAX_V_LEV @{sys:%max-v-lev%}
@(end)
diff --git a/vm.c b/vm.c
index 8955e910..bae48a4f 100644
--- a/vm.c
+++ b/vm.c
@@ -343,10 +343,6 @@ static void vm_reset(struct vm *vm, struct vm_desc *vd,
#define vm_insn_bigop(insn) (((insn) & 0x3FFFFFFU))
#define vm_arg_operand_lo(arg) ((arg) & 0xFFFFU)
#define vm_arg_operand_hi(arg) ((arg) >> 16)
-#define VM_LEV_BITS 10
-#define VM_LEV_MASK 0x3FF
-#define VM_SM_LEV_BITS 6
-#define VM_SM_LEV_MASK 0x3F
#define vm_lev(arg) ((arg) >> VM_LEV_BITS)
#define vm_idx(arg) ((arg) & VM_LEV_MASK)
#define vm_sm_lev(arg) ((arg) >> VM_SM_LEV_BITS)
diff --git a/vmop.h b/vmop.h
index 3f2c2f43..aafbe6e5 100644
--- a/vmop.h
+++ b/vmop.h
@@ -70,3 +70,10 @@ typedef enum vm_op {
SETLX = 41,
GETF = 42,
} vm_op_t;
+
+#define VM_LEV_BITS 10
+#define VM_LEV_MASK 0x3FF
+#define VM_SM_LEV_BITS 6
+#define VM_SM_LEV_MASK 0x3F
+#define VM_MAX_LEV 63
+#define VM_MAX_V_LEV 61