summaryrefslogtreecommitdiff
path: root/src/pkg/runtime/vlrt_arm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/runtime/vlrt_arm.c')
-rw-r--r--src/pkg/runtime/vlrt_arm.c50
1 files changed, 22 insertions, 28 deletions
diff --git a/src/pkg/runtime/vlrt_arm.c b/src/pkg/runtime/vlrt_arm.c
index ab8050177..219163c60 100644
--- a/src/pkg/runtime/vlrt_arm.c
+++ b/src/pkg/runtime/vlrt_arm.c
@@ -23,6 +23,8 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
+#include "../../cmd/ld/textflag.h"
+
// declared here to avoid include of runtime.h
void runtimeĀ·panicstring(char*);
@@ -62,30 +64,24 @@ struct Vlong
void runtimeĀ·abort(void);
+#pragma textflag NOSPLIT
void
_addv(Vlong *r, Vlong a, Vlong b)
{
- ulong lo, hi;
-
- lo = a.lo + b.lo;
- hi = a.hi + b.hi;
- if(lo < a.lo)
- hi++;
- r->lo = lo;
- r->hi = hi;
+ r->lo = a.lo + b.lo;
+ r->hi = a.hi + b.hi;
+ if(r->lo < a.lo)
+ r->hi++;
}
+#pragma textflag NOSPLIT
void
_subv(Vlong *r, Vlong a, Vlong b)
{
- ulong lo, hi;
-
- lo = a.lo - b.lo;
- hi = a.hi - b.hi;
- if(lo > a.lo)
- hi--;
- r->lo = lo;
- r->hi = hi;
+ r->lo = a.lo - b.lo;
+ r->hi = a.hi - b.hi;
+ if(r->lo > a.lo)
+ r->hi--;
}
void
@@ -427,12 +423,10 @@ _rshlv(Vlong *r, Vlong a, int b)
r->lo = (t << (32-b)) | (a.lo >> b);
}
+#pragma textflag NOSPLIT
void
_lshv(Vlong *r, Vlong a, int b)
{
- ulong t;
-
- t = a.lo;
if(b >= 32) {
r->lo = 0;
if(b >= 64) {
@@ -440,16 +434,16 @@ _lshv(Vlong *r, Vlong a, int b)
r->hi = 0;
return;
}
- r->hi = t << (b-32);
+ r->hi = a.lo << (b-32);
return;
}
if(b <= 0) {
- r->lo = t;
+ r->lo = a.lo;
r->hi = a.hi;
return;
}
- r->lo = t << b;
- r->hi = (t >> (32-b)) | (a.hi << b);
+ r->lo = a.lo << b;
+ r->hi = (a.lo >> (32-b)) | (a.hi << b);
}
void
@@ -623,14 +617,12 @@ _ul2v(Vlong *ret, ulong ul)
ret->hi = 0;
}
+#pragma textflag NOSPLIT
void
_si2v(Vlong *ret, int si)
{
- long t;
-
- t = si;
- ret->lo = t;
- ret->hi = t >> 31;
+ ret->lo = (long)si;
+ ret->hi = (long)si >> 31;
}
void
@@ -729,6 +721,7 @@ _v2ul(Vlong rv)
return rv.lo;
}
+#pragma textflag NOSPLIT
long
_v2si(Vlong rv)
{
@@ -782,6 +775,7 @@ _gtv(Vlong lv, Vlong rv)
(lv.hi == rv.hi && lv.lo > rv.lo);
}
+#pragma textflag NOSPLIT
int
_gev(Vlong lv, Vlong rv)
{