summaryrefslogtreecommitdiff
path: root/include/mips32.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/mips32.h')
-rw-r--r--include/mips32.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/mips32.h b/include/mips32.h
index ce0e997..228e213 100644
--- a/include/mips32.h
+++ b/include/mips32.h
@@ -117,6 +117,7 @@ enum mips32_instruction_type {
MIPS32_INS_SRLV,
MIPS32_INS_SUB,
MIPS32_INS_SUBU,
+ MIPS32_INS_SYSCALL,
MIPS32_INS_OR,
MIPS32_INS_ORI,
MIPS32_INS_NOR,
@@ -447,6 +448,10 @@ MIPS32_INS(SUB, R, .op = MIPS32_OP_SPECIAL, .funct = MIPS32_FUNCT_SUB)
#define MIPS32_FUNCT_SUBU 0b100011
MIPS32_INS(SUBU, R, .op = MIPS32_OP_SPECIAL, .funct = MIPS32_FUNCT_SUBU)
+/* SYSCALL - syscall */
+#define MIPS32_FUNCT_SYSCALL 0b001100
+MIPS32_INS(SYSCALL, R, .op = MIPS32_OP_SPECIAL, .funct = MIPS32_FUNCT_SYSCALL)
+
/* OR - or */
#define MIPS32_FUNCT_OR 0b100101
MIPS32_INS(OR, R, .op = MIPS32_OP_SPECIAL, .funct = MIPS32_FUNCT_OR)
@@ -478,11 +483,14 @@ enum mips32_directive_type {
MIPS32_DIRECTIVE_HALF,
MIPS32_DIRECTIVE_BYTE,
MIPS32_DIRECTIVE_SECTION,
+ MIPS32_DIRECTIVE_EXTERN,
+ MIPS32_DIRECTIVE_GLOBL,
};
/* mip32 directive */
struct mips32_directive {
enum mips32_directive_type type;
+ uint32_t len; // used for words, halfs, bytes
union {
uint16_t align;
uint16_t space;