* Removed all Id tags.
[cacao.git] / src / vm / jit / mips / md.c
index 9b48914cfdd8008efb74f093d32b812393e4c776..d675d64ceddc7b5fc5c28c93211d639038e42855 100644 (file)
@@ -22,8 +22,6 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: md.c 7252 2007-01-29 21:09:01Z twisti $
-
 */
 
 
@@ -40,6 +38,7 @@
 #include "vm/global.h"
 #include "vm/vm.h"
 
+#include "vm/jit/codegen-common.h" /* REMOVEME: only for codegendata */
 #include "vm/jit/stacktrace.h"
 
 #if !defined(NDEBUG) && defined(ENABLE_DISASSEMBLER)
 #endif
 
 
-/* md_codegen_patch_branch *****************************************************
-
-   Back-patches a branch instruction.
-
-*******************************************************************************/
-
-void md_codegen_patch_branch(codegendata *cd, s4 branchmpc, s4 targetmpc)
-{
-       s4 *mcodeptr;
-       s4  mcode;
-       s4  disp;                           /* branch displacement                */
-       s4  lo;
-       s4  hi;
-
-       /* calculate the patch position */
-
-       mcodeptr = (s4 *) (cd->mcodebase + branchmpc);
-
-       /* get the instruction before the exception point */
-
-       mcode = mcodeptr[-1];
-
-       /* check for: ori t9,t9,0 */
-
-       if ((mcode >> 16) == 0x3739) {
-               /* Calculate the branch displacement.  For jumps we need a
-                  displacement relative to PV. */
-
-               disp = targetmpc;
-
-        lo = (short) disp;
-        hi = (short) ((disp - lo) >> 16);
-
-               /* patch the two instructions before the mcodeptr */
-
-               mcodeptr[-2] |= (hi & 0x0000ffff);
-               mcodeptr[-1] |= (lo & 0x0000ffff);
-       }
-       else {
-               /* Calculate the branch displacement.  For branches we need a
-                  displacement relative and shifted to the branch PC. */
-
-               disp = (targetmpc - branchmpc) >> 2;
-
-               /* On the MIPS we can only branch signed 16-bit instruction words
-                  (signed 18-bit = 32KB = +/- 16KB). Check this! */
-
-               if ((disp < (s4) 0xffff8000) || (disp > (s4) 0x00007fff))
-                       vm_abort("jump displacement is out of range: %d > +/-%d", disp, 0x00007fff);
-
-               /* patch the branch instruction before the mcodeptr */
-
-               mcodeptr[-1] |= (disp & 0x0000ffff);
-       }
-}
-
-
 /* md_stacktrace_get_returnaddress *********************************************
 
    Returns the return address of the current stackframe, specified by
@@ -343,7 +285,6 @@ void md_dcacheflush(u1 *addr, s4 nbytes)
 void md_patch_replacement_point(codeinfo *code, s4 index, rplpoint *rp,
                                                                u1 *savedmcode)
 {
-       s4 disp;
        union {
                u8 both;
                u4 words[2];
@@ -357,19 +298,9 @@ void md_patch_replacement_point(codeinfo *code, s4 index, rplpoint *rp,
                /* save the current machine code */
                *(u8*)(savedmcode) = *(u8*)(rp->pc);
 
-               /* make machine code for patching */
-
-               disp = ((u4*)code->replacementstubs - (u4*)rp->pc)
-                          + index * REPLACEMENT_STUB_SIZE
-                          - 1;
-
-               if ((disp < (s4) 0xffff8000) || (disp > (s4) 0x00007fff))
-                       vm_abort("Jump offset is out of range: %d > +/-%d",
-                                        disp, 0x00007fff);
-
-               /* BR */
-        mcode.words[0] = (((0x04) << 26) | ((0) << 21) | ((0) << 16) | ((disp) & 0xffff));
-               mcode.words[1] = 0; /* NOP in delay slot */ 
+               /* build the machine code for the patch */
+               assert(0); /* XXX build trap instruction below */
+               mcode.both = 0;
 
                /* write the new machine code */
                *(u8*)(rp->pc) = mcode.both;