[bench] vm: shit ...
authorMartin Perner <martin@perner.cc>
Tue, 21 Dec 2010 12:04:49 +0000 (13:04 +0100)
committerMartin Perner <martin@perner.cc>
Tue, 21 Dec 2010 15:30:39 +0000 (16:30 +0100)
3_test/deepjit.s

index 83cf105df94ab080c07a821a04df2a3b92d0598f..8ae431d238497a7570438fbb2dd2e3afa9db2e88 100644 (file)
@@ -505,11 +505,19 @@ vm_jmp:
 
        ;generate negativ offset
        ldis r7, 0xFF00
-       add r6, r3, r7
+       ;r6 is now the 'real' negativ number
+       or r6, r6, r7
+       ;multiply by to get the offset
+       lls r6, r6, 2
+       ;generate address in table
+       add r6, r3, r6
        ;r0 now has the target address
        ldw r0, 0(r6)
        ;we calc the offset
-       sub r8, r8, r0
+       sub r8, r0, r2
+       ;we shift 2 bits out, because rel. br takes instr.
+       ;count and not address amount ...
+       lrs r8, r8, 2
        ;set the upper 16 bit 0
        andx r8, 0xFFFF
        ;shift to the position of imm in br