diff options
Diffstat (limited to 'src/pkg/runtime/arm')
-rw-r--r-- | src/pkg/runtime/arm/closure.c | 2 | ||||
-rw-r--r-- | src/pkg/runtime/arm/softfloat.c | 10 | ||||
-rw-r--r-- | src/pkg/runtime/arm/vlop.s | 2 |
3 files changed, 12 insertions, 2 deletions
diff --git a/src/pkg/runtime/arm/closure.c b/src/pkg/runtime/arm/closure.c index 3aca3a42d..36a93bc53 100644 --- a/src/pkg/runtime/arm/closure.c +++ b/src/pkg/runtime/arm/closure.c @@ -43,7 +43,7 @@ vars: WORD arg0 WORD arg2 */ -extern void cacheflush(byte* start, byte* end); +extern void runtime·cacheflush(byte* start, byte* end); #pragma textflag 7 void diff --git a/src/pkg/runtime/arm/softfloat.c b/src/pkg/runtime/arm/softfloat.c index f91a6fc09..0a071dada 100644 --- a/src/pkg/runtime/arm/softfloat.c +++ b/src/pkg/runtime/arm/softfloat.c @@ -15,6 +15,7 @@ #define FLAGS_V (1 << 28) void runtime·abort(void); +void math·sqrtGoC(uint64, uint64*); static uint32 trace = 0; @@ -357,6 +358,15 @@ stage3: // regd, regm are 4bit variables regd, regm, m->freghi[regd], m->freglo[regd]); break; + case 0xeeb10bc0: // D[regd] = sqrt D[regm] + math·sqrtGoC(getd(regm), &uval); + putd(regd, uval); + + if(trace) + runtime·printf("*** D[%d] = sqrt D[%d] %x-%x\n", + regd, regm, m->freghi[regd], m->freglo[regd]); + break; + case 0xeeb40bc0: // D[regd] :: D[regm] (CMPD) runtime·fcmp64c(getd(regd), getd(regm), &cmp, &nan); m->fflag = fstatus(nan, cmp); diff --git a/src/pkg/runtime/arm/vlop.s b/src/pkg/runtime/arm/vlop.s index 2c5d7ebe1..fc679f0ee 100644 --- a/src/pkg/runtime/arm/vlop.s +++ b/src/pkg/runtime/arm/vlop.s @@ -105,7 +105,7 @@ loop: /* * compare numerator to denominator - * if less, subtract and set quotent bit + * if less, subtract and set quotient bit */ CMP R(D), R(N) ORR.HS $1, R(Q) |