diff options
author | Damien George <damien.p.george@gmail.com> | 2014-06-25 04:10:34 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-06-25 04:10:34 +0100 |
commit | e973acde81462de0c205f27db2642a08022fb3a8 (patch) | |
tree | c6862ead76ae12979b3c3d6d1ec20774884c72ef /unix/gccollect.c | |
parent | 780e54cdc3491409060f90003ca64fcdd3f9f1e6 (diff) | |
parent | 939c2e7f448fbe6b44d0079d2fc33c7ac7eb32d0 (diff) | |
download | micropython-e973acde81462de0c205f27db2642a08022fb3a8.tar.gz micropython-e973acde81462de0c205f27db2642a08022fb3a8.zip |
Merge branch 'master' of github.com:micropython/micropython
Diffstat (limited to 'unix/gccollect.c')
-rw-r--r-- | unix/gccollect.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/unix/gccollect.c b/unix/gccollect.c index 4f3b786e72..f24cc52495 100644 --- a/unix/gccollect.c +++ b/unix/gccollect.c @@ -97,7 +97,7 @@ void gc_helper_get_regs(regs_t arr) { } #endif -#ifdef __thumb2__ +#if defined(__thumb2__) || defined(__thumb__) || defined(__arm__) typedef machine_uint_t regs_t[10]; void gc_helper_get_regs(regs_t arr) { @@ -130,8 +130,11 @@ void gc_collect(void) { gc_collect_start(); // this traces the .bss section -#ifdef __CYGWIN__ +#if defined( __CYGWIN__ ) #define BSS_START __bss_start__ +#elif defined( _MSC_VER ) || defined( __MINGW32__ ) +#define BSS_START *bss_start +#define _end *bss_end #else #define BSS_START __bss_start #endif @@ -141,7 +144,8 @@ void gc_collect(void) { regs_t regs; gc_helper_get_regs(regs); // GC stack (and regs because we captured them) - gc_collect_root((void**)®s, ((machine_uint_t)stack_top - (machine_uint_t)®s) / sizeof(machine_uint_t)); + void **regs_ptr = (void**)(void*)®s; + gc_collect_root(regs_ptr, ((machine_uint_t)stack_top - (machine_uint_t)®s) / sizeof(machine_uint_t)); gc_collect_end(); //printf("-----\n"); |