From 4b55d5be52e7abaa69b0f24525780f40df9dd040 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 19 Apr 2021 12:14:26 +0200 Subject: [PATCH] Fix crash on Risc-V ESP32 C3 --- lib/default/Ext-printf/src/ext_printf.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/default/Ext-printf/src/ext_printf.cpp b/lib/default/Ext-printf/src/ext_printf.cpp index 5256ea637..243c7b4b4 100644 --- a/lib/default/Ext-printf/src/ext_printf.cpp +++ b/lib/default/Ext-printf/src/ext_printf.cpp @@ -126,18 +126,19 @@ void * __va_cur_ptr4(va_list &va) { // >>> Reading a_ptr=0x3FFFFD70 *a_ptr=6 // >>> Reading a_ptr=0x3FFFFD74 *a_ptr=7 // >>> Reading a_ptr=0x3FFFFD78 *a_ptr=8 -#elif CONFIG_IDF_TARGET_ESP32C3 // ESP32-C3 RISC_V + +#elif defined(__riscv) // #define __va_argsiz_tas(t) (((sizeof(t) + sizeof(int) - 1) / sizeof(int)) * sizeof(int)) #define va_cur_ptr4(va,T) ( (T*) __va_cur_ptr4(va) ) void * __va_cur_ptr4(va_list &va) { uintptr_t * va_ptr = (uintptr_t*) &va; - void * cur_ptr = (void*) *va_ptr; - *va_ptr += 4; - return cur_ptr; + int32_t * cur_ptr = (int32_t*) *va_ptr; + return (void*) (cur_ptr - 1); } -#else // __XTENSA__, __RISCV__ + +#else // __XTENSA__, __riscv #error "ext_printf is not suppoerted on this platform" -#endif // __XTENSA__, __RISCV__ +#endif // __XTENSA__, __riscv /*********************************************************************************************\ * Genral function to convert u64 to hex