diff options
-rw-r--r-- | orc/orcmips.c | 16 | ||||
-rw-r--r-- | orc/orcmips.h | 1 |
2 files changed, 17 insertions, 0 deletions
diff --git a/orc/orcmips.c b/orc/orcmips.c index b0869e9..45abe70 100644 --- a/orc/orcmips.c +++ b/orc/orcmips.c @@ -896,3 +896,19 @@ orc_mips_emit_wsbh (OrcCompiler *compiler, 02, /* WSBH */ 040 /* BSHFL */)); } + +void +orc_mips_emit_seh (OrcCompiler *compiler, + OrcMipsRegister dest, + OrcMipsRegister source) +{ + ORC_ASM_CODE (compiler, " seh %s, %s\n", + orc_mips_reg_name (dest), + orc_mips_reg_name (source)); + orc_mips_emit (compiler, + MIPS_BINARY_INSTRUCTION(037, /* SPECIAL3 */ + ORC_MIPS_ZERO, /* actually no reg here */ + source, dest, + 030, /* SEH */ + 040 /* BSHFL */)); +} diff --git a/orc/orcmips.h b/orc/orcmips.h index 1edef44..02387c0 100644 --- a/orc/orcmips.h +++ b/orc/orcmips.h @@ -183,6 +183,7 @@ void orc_mips_emit_packrl_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMi void orc_mips_emit_align (OrcCompiler *compiler, int align_shift); void orc_mips_emit_wsbh (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source); +void orc_mips_emit_seh (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source); void orc_mips_do_fixups (OrcCompiler *compiler); |