summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Emont <guijemont@igalia.com>2012-12-13 18:03:49 +0100
committerGuillaume Emont <guijemont@igalia.com>2012-12-28 15:23:38 +0100
commit52b226aa2d2e9c3e0c09b7996e1b65c34f72fb87 (patch)
tree9973b9428eff4c0ad2ddb59a6863ee3ea040ce9d
parentb3994ff9aa47c97db6ae9d2488ea57f51475514c (diff)
mips: added emit function for seh
-rw-r--r--orc/orcmips.c16
-rw-r--r--orc/orcmips.h1
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);