From 3c658a4e755a75e495303957208486e583ddb270 Mon Sep 17 00:00:00 2001 From: Damien George Date: Sun, 24 Aug 2014 16:28:17 +0100 Subject: py: Fix bug where GC collected native/viper/asm function data. Because (for Thumb) a function pointer has the LSB set, pointers to dynamic functions in RAM (eg native, viper or asm functions) were not being traced by the GC. This patch is a comprehensive fix for this. Addresses issue #820. --- py/mpconfig.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'py/mpconfig.h') diff --git a/py/mpconfig.h b/py/mpconfig.h index 850d05524..73c015a09 100644 --- a/py/mpconfig.h +++ b/py/mpconfig.h @@ -429,6 +429,12 @@ typedef double mp_float_t; #define MP_ENDIANNESS_LITTLE (0) #endif +// Make a pointer to RAM callable (eg set lower bit for Thumb code) +// (This scheme won't work if we want to mix Thumb and normal ARM code.) +#ifndef MICROPY_MAKE_POINTER_CALLABLE +#define MICROPY_MAKE_POINTER_CALLABLE(p) (p) +#endif + // printf format spec to use for mp_int_t and friends #ifndef INT_FMT #ifdef __LP64__ -- cgit v1.2.3