py: Make GC's STACK_SIZE definition a proper MICROPY_ config variable.
diff --git a/py/gc.c b/py/gc.c
index 8404281..07f0b80 100644
--- a/py/gc.c
+++ b/py/gc.c
@@ -47,7 +47,6 @@
 
 #define WORDS_PER_BLOCK (4)
 #define BYTES_PER_BLOCK (WORDS_PER_BLOCK * BYTES_PER_WORD)
-#define STACK_SIZE (64) // tunable; minimum is 1
 
 STATIC byte *gc_alloc_table_start;
 STATIC mp_uint_t gc_alloc_table_byte_len;
@@ -62,7 +61,7 @@
 STATIC mp_uint_t *gc_pool_end;
 
 STATIC int gc_stack_overflow;
-STATIC mp_uint_t gc_stack[STACK_SIZE];
+STATIC mp_uint_t gc_stack[MICROPY_ALLOC_GC_STACK_SIZE];
 STATIC mp_uint_t *gc_sp;
 STATIC uint16_t gc_lock_depth;
 uint16_t gc_auto_collect_enabled;
@@ -196,7 +195,7 @@
             if (ATB_GET_KIND(_block) == AT_HEAD) { \
                 /* an unmarked head, mark it, and push it on gc stack */ \
                 ATB_HEAD_TO_MARK(_block); \
-                if (gc_sp < &gc_stack[STACK_SIZE]) { \
+                if (gc_sp < &gc_stack[MICROPY_ALLOC_GC_STACK_SIZE]) { \
                     *gc_sp++ = _block; \
                 } else { \
                     gc_stack_overflow = 1; \
diff --git a/py/mpconfig.h b/py/mpconfig.h
index bbc791c..e3270bd 100644
--- a/py/mpconfig.h
+++ b/py/mpconfig.h
@@ -51,6 +51,11 @@
 /*****************************************************************************/
 /* Memory allocation policy                                                  */
 
+// Number of words allocated (in BSS) to the GC stack (minimum is 1)
+#ifndef MICROPY_ALLOC_GC_STACK_SIZE
+#define MICROPY_ALLOC_GC_STACK_SIZE (64)
+#endif
+
 // Initial amount for lexer indentation level
 #ifndef MICROPY_ALLOC_LEXER_INDENT_INIT
 #define MICROPY_ALLOC_LEXER_INDENT_INIT (10)