From ab6995a8121aa3d0786b63528816b11790804ef2 Mon Sep 17 00:00:00 2001 From: David Crocker Date: Wed, 3 Nov 2021 23:44:39 +0000 Subject: [PATCH] Added GetStackPointer function to CoreN2G --- src/AnalogIn.h | 4 ++-- src/CoreIO.h | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/AnalogIn.h b/src/AnalogIn.h index c39f5d2d..783493d8 100644 --- a/src/AnalogIn.h +++ b/src/AnalogIn.h @@ -105,7 +105,7 @@ namespace LegacyAnalogIn AnalogCallback_t AnalogInSetCallback(AnalogCallback_t) noexcept; // Start converting the enabled channels, to include the specified ones. Disabled channels are ignored. - void AnalogInStartConversion(uint32_t channels = 0xFFFFFFFF) noexcept; + void AnalogInStartConversion(uint32_t channels = 0xFFFFFFFFu) noexcept; // Finalise a conversion #if SAME70 @@ -116,7 +116,7 @@ namespace LegacyAnalogIn // Check whether all conversions of the specified channels have been completed since the last call to AnalogStartConversion. // Disabled channels are ignored - bool AnalogInCheckReady(uint32_t channels = 0xFFFFFFFF) noexcept; + bool AnalogInCheckReady(uint32_t channels = 0xFFFFFFFFu) noexcept; // Convert a pin number to an AnalogIn channel extern AnalogChannelNumber PinToAdcChannel(uint32_t pin) noexcept; diff --git a/src/CoreIO.h b/src/CoreIO.h index d8224b5d..fe6cbe30 100644 --- a/src/CoreIO.h +++ b/src/CoreIO.h @@ -200,6 +200,21 @@ inline void memcpyf(float *dst, const float *src, size_t numFloats) noexcept memcpyu32(reinterpret_cast(dst), reinterpret_cast(src), numFloats); } +// Get the stack pointer +#ifdef __ECV__ + +// eCv doesn't accept the GCC syntax used to get the stack pointer, so leave it undefined +extern const uint32_t *_ecv_array GetStackPointer() noexcept; + +#else + +static inline const uint32_t *_ecv_array GetStackPointer() noexcept +{ + register const uint32_t * stack_ptr asm ("sp"); + return stack_ptr; +} + +#endif // Atomic section locker, alternative to InterruptCriticalSectionLocker (is safe to call from within an ISR, and may be faster) /**