about summary refs log tree commit diff
path: root/src/rt/arch/arm/gpr.cpp
diff options
context:
space:
mode:
authorkyeongwoon <kyeongwoon.lee@samsung.com>2012-11-30 09:21:49 +0900
committerBrian Anderson <banderson@mozilla.com>2013-01-13 16:43:39 -0800
commit987f824f233faee4aed39dac92a1b442d42965cc (patch)
tree2cf1b078738e9bf580b9ee43f674d95c403751fa /src/rt/arch/arm/gpr.cpp
parent27e6a0fa5651dbda55773488c8b706adfa5cefc2 (diff)
Support ARM and Android
Conflicts:
	src/libcore/os.rs
	src/librustc/back/link.rs
	src/librustc/driver/driver.rs
	src/librustc/metadata/loader.rs
	src/librustc/middle/trans/base.rs
Diffstat (limited to 'src/rt/arch/arm/gpr.cpp')
-rw-r--r--src/rt/arch/arm/gpr.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/rt/arch/arm/gpr.cpp b/src/rt/arch/arm/gpr.cpp
new file mode 100644
index 00000000000..32a68d0732a
--- /dev/null
+++ b/src/rt/arch/arm/gpr.cpp
@@ -0,0 +1,15 @@
+#include "gpr.h"
+
+#define LOAD(rn) do { \
+    uintptr_t tmp; \
+    asm("mov %%" #rn ",%0" : "=r" (tmp) :); \
+    this->rn = tmp; \
+} while (0)
+
+void rust_gpr::load() {
+    LOAD(r0); LOAD(r1); LOAD(r2); LOAD(r3);
+    LOAD(r4); LOAD(r5); LOAD(r6); LOAD(r7);
+    LOAD(r8);  LOAD(r9);  LOAD(r10); LOAD(r11);
+    LOAD(r12); LOAD(r13); LOAD(r14); LOAD(r15);
+}
+