summaryrefslogtreecommitdiffstatshomepage
path: root/unix/gccollect.c
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-03-01 12:22:55 +0200
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-03-03 11:35:45 +0800
commit61f9b1c6217d2371e01638354c852913e071fbea (patch)
tree31d53951d59068f2c81acaa7835207c96ab228ee /unix/gccollect.c
parent86227ce7b0cd08970629ebae08a8eacb604a85ef (diff)
downloadmicropython-61f9b1c6217d2371e01638354c852913e071fbea.tar.gz
micropython-61f9b1c6217d2371e01638354c852913e071fbea.zip
unix: Add GC support for ARM architecture.
Diffstat (limited to 'unix/gccollect.c')
-rw-r--r--unix/gccollect.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/unix/gccollect.c b/unix/gccollect.c
index 5370a641ce..6fb08fad1e 100644
--- a/unix/gccollect.c
+++ b/unix/gccollect.c
@@ -47,6 +47,33 @@ void gc_helper_get_regs(regs_t arr) {
}
#endif
+#ifdef __thumb2__
+typedef machine_uint_t regs_t[10];
+
+void gc_helper_get_regs(regs_t arr) {
+ register long r4 asm ("r4");
+ register long r5 asm ("r5");
+ register long r6 asm ("r6");
+ register long r7 asm ("r7");
+ register long r8 asm ("r8");
+ register long r9 asm ("r9");
+ register long r10 asm ("r10");
+ register long r11 asm ("r11");
+ register long r12 asm ("r12");
+ register long r13 asm ("r13");
+ arr[0] = r4;
+ arr[1] = r5;
+ arr[2] = r6;
+ arr[3] = r7;
+ arr[4] = r8;
+ arr[5] = r9;
+ arr[6] = r10;
+ arr[7] = r11;
+ arr[8] = r12;
+ arr[9] = r13;
+}
+#endif
+
void gc_collect(void) {
//gc_dump_info();