diff options
Diffstat (limited to 'src/pkg/runtime/arm/softfloat.c')
| -rw-r--r-- | src/pkg/runtime/arm/softfloat.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/pkg/runtime/arm/softfloat.c b/src/pkg/runtime/arm/softfloat.c index a71b25113..50ccd1546 100644 --- a/src/pkg/runtime/arm/softfloat.c +++ b/src/pkg/runtime/arm/softfloat.c @@ -4,24 +4,24 @@ #include "runtime.h" -// returns number of bytes that the fp instruction is occupying +// returns number of words that the fp instruction is occupying static uint32 isfltinstr(uint32 *pc) { uint32 i; uint32 c; - + i = *pc; c = i >> 25 & 7; - + switch(c) { case 6: // 110 //printf(" %p coproc multi: %x\n", pc, i); - return 4; + return 1; case 7: // 111 if (i>>24 & 1) return 0; // ignore swi //printf(" %p coproc %x\n", pc, i); - return 4; + return 1; } // lookahead for virtual instructions that span multiple arm instructions @@ -30,7 +30,7 @@ isfltinstr(uint32 *pc) ((*(pc + 2) & 0x0f000000) >> 24); if(c == 0x50d) { //printf(" %p coproc const %x\n", pc, i); - return 12; + return 3; } //printf(" %p %x\n", pc, i); @@ -42,7 +42,7 @@ uint32* _sfloat2(uint32 *lr, uint32 r0) { uint32 skip; - + //printf("softfloat: pre %p\n", lr); while(skip = isfltinstr(lr)) lr += skip; |
