From 2ec2bf1564b9fcb451d5be043b751f8966954c3b Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 30 Dec 2014 07:36:18 -0800 Subject: [PATCH] Fix regressions affecting compilation This fixes two regressions, caused by #1167 and #1191 . --- Marlin/SdFatUtil.cpp | 29 ++++++++++++++++------------- Marlin/dogm_lcd_implementation.h | 2 +- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/Marlin/SdFatUtil.cpp b/Marlin/SdFatUtil.cpp index 1187ec5393..32cd198b66 100644 --- a/Marlin/SdFatUtil.cpp +++ b/Marlin/SdFatUtil.cpp @@ -26,21 +26,24 @@ /** Amount of free RAM * \return The number of free bytes. */ +#ifdef __arm__ +extern "C" char* sbrk(int incr); int SdFatUtil::FreeRam() { - extern int __bss_end; - extern int* __brkval; - int free_memory; - if (reinterpret_cast(__brkval) == 0) { - // if no heap use from end of bss section - free_memory = reinterpret_cast(&free_memory) - - reinterpret_cast(&__bss_end); - } else { - // use from top of stack to heap - free_memory = reinterpret_cast(&free_memory) - - reinterpret_cast(__brkval); - } - return free_memory; + char top; + return &top - reinterpret_cast(sbrk(0)); } +#else // __arm__ +extern char *__brkval; +extern char __bss_end; +/** Amount of free RAM + * \return The number of free bytes. + */ +int SdFatUtil::FreeRam() { + char top; + return __brkval ? &top - __brkval : &top - &__bss_end; +} +#endif // __arm + //------------------------------------------------------------------------------ /** %Print a string in flash memory. * diff --git a/Marlin/dogm_lcd_implementation.h b/Marlin/dogm_lcd_implementation.h index 898dc19b38..9c0a544487 100644 --- a/Marlin/dogm_lcd_implementation.h +++ b/Marlin/dogm_lcd_implementation.h @@ -337,7 +337,7 @@ static void lcd_implementation_drawmenu_generic(uint8_t row, const char* pstr, c u8g.setColorIndex(1); // restore settings to black on white } -static void _drawmenu_setting_edit_generic(uint8_t row, const char* pstr, char pre_char, char* data, bool pgm) { +static void _drawmenu_setting_edit_generic(uint8_t row, const char* pstr, char pre_char, const char* data, bool pgm) { char c; uint8_t n = LCD_WIDTH - 1 - 2 - (pgm ? strlen_P(data) : strlen(data));