diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2014-03-01 12:22:55 +0200 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2014-03-03 11:35:45 +0800 |
commit | 61f9b1c6217d2371e01638354c852913e071fbea (patch) | |
tree | 31d53951d59068f2c81acaa7835207c96ab228ee /unix/gccollect.c | |
parent | 86227ce7b0cd08970629ebae08a8eacb604a85ef (diff) | |
download | micropython-61f9b1c6217d2371e01638354c852913e071fbea.tar.gz micropython-61f9b1c6217d2371e01638354c852913e071fbea.zip |
unix: Add GC support for ARM architecture.
Diffstat (limited to 'unix/gccollect.c')
-rw-r--r-- | unix/gccollect.c | 27 |
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(); |