diff --git a/examples/app_par_decimator/src/decimator_subtask.c b/examples/app_par_decimator/src/decimator_subtask.c index dba6c5ef..efb2061c 100644 --- a/examples/app_par_decimator/src/decimator_subtask.c +++ b/examples/app_par_decimator/src/decimator_subtask.c @@ -116,6 +116,8 @@ void decimator_subtask( static inline void shift_buffer(uint32_t* buff) { + #if defined(__xcore__) uint32_t* src = &buff[-1]; asm volatile("vldd %0[0]; vstd %1[0];" :: "r"(src), "r"(buff) : "memory" ); + #endif // __xcore__ } diff --git a/lib_mic_array/api/mic_array/cpp/Decimator.hpp b/lib_mic_array/api/mic_array/cpp/Decimator.hpp index f1263fa7..06d0852c 100644 --- a/lib_mic_array/api/mic_array/cpp/Decimator.hpp +++ b/lib_mic_array/api/mic_array/cpp/Decimator.hpp @@ -178,8 +178,8 @@ void mic_array::TwoStageDecimator static inline void mic_array::shift_buffer(uint32_t* buff) { + #if defined(__xcore__) uint32_t* src = &buff[-1]; asm volatile("vldd %0[0]; vstd %1[0];" :: "r"(src), "r"(buff) : "memory" ); + #endif // __xcore__ } - - diff --git a/lib_mic_array/api/mic_array/cpp/PdmRx.hpp b/lib_mic_array/api/mic_array/cpp/PdmRx.hpp index f8bfa989..c8abee1a 100644 --- a/lib_mic_array/api/mic_array/cpp/PdmRx.hpp +++ b/lib_mic_array/api/mic_array/cpp/PdmRx.hpp @@ -155,6 +155,7 @@ extern "C" { void enable_pdm_rx_isr( const port_t p_pdm_mics) { + #if defined(__xcore__) asm volatile( "setc res[%0], %1 \n" "ldap r11, pdm_rx_isr \n" @@ -163,6 +164,7 @@ extern "C" { : : "r"(p_pdm_mics), "r"(XS1_SETC_IE_MODE_INTERRUPT) : "r11" ); + #endif // __xcore__ } } diff --git a/lib_mic_array/src/deinterleave16.S b/lib_mic_array/src/deinterleave16.S index d6243e94..efebb43e 100644 --- a/lib_mic_array/src/deinterleave16.S +++ b/lib_mic_array/src/deinterleave16.S @@ -1,6 +1,8 @@ // Copyright 2023-2026 XMOS LIMITED. // This Software is subject to the terms of the XMOS Public Licence: Version 1. +#if defined(__XS3A__) + #define NSTACKWORDS 6 .text @@ -138,4 +140,6 @@ deinterleave16: .cc_bottom deinterleave16.func -.size deinterleave16, .L_end - deinterleave16 \ No newline at end of file +.size deinterleave16, .L_end - deinterleave16 + +#endif // __XS3A__ diff --git a/lib_mic_array/src/deinterleave2.S b/lib_mic_array/src/deinterleave2.S index 1963ca96..6c08f352 100644 --- a/lib_mic_array/src/deinterleave2.S +++ b/lib_mic_array/src/deinterleave2.S @@ -1,6 +1,8 @@ // Copyright 2022-2026 XMOS LIMITED. // This Software is subject to the terms of the XMOS Public Licence: Version 1. +#if defined(__XS3A__) + #define NSTACKWORDS 0 .text @@ -36,4 +38,6 @@ deinterleave2: .cc_bottom deinterleave2.func -.size deinterleave2, .L_end - deinterleave2 \ No newline at end of file +.size deinterleave2, .L_end - deinterleave2 + +#endif // __XS3A__ diff --git a/lib_mic_array/src/deinterleave4.S b/lib_mic_array/src/deinterleave4.S index 9c36dc20..0d383e9c 100644 --- a/lib_mic_array/src/deinterleave4.S +++ b/lib_mic_array/src/deinterleave4.S @@ -1,6 +1,8 @@ // Copyright 2022-2026 XMOS LIMITED. // This Software is subject to the terms of the XMOS Public Licence: Version 1. +#if defined(__XS3A__) + #define NSTACKWORDS 2 .text @@ -80,4 +82,6 @@ deinterleave4: .cc_bottom deinterleave4.func -.size deinterleave4, .L_end - deinterleave4 \ No newline at end of file +.size deinterleave4, .L_end - deinterleave4 + +#endif // __XS3A__ diff --git a/lib_mic_array/src/deinterleave8.S b/lib_mic_array/src/deinterleave8.S index 88f198cf..c3d6a955 100644 --- a/lib_mic_array/src/deinterleave8.S +++ b/lib_mic_array/src/deinterleave8.S @@ -1,6 +1,8 @@ // Copyright 2022-2026 XMOS LIMITED. // This Software is subject to the terms of the XMOS Public Licence: Version 1. +#if defined(__XS3A__) + #define NSTACKWORDS 6 .text @@ -110,4 +112,6 @@ deinterleave8: .cc_bottom deinterleave8.func -.size deinterleave8, .L_end - deinterleave8 \ No newline at end of file +.size deinterleave8, .L_end - deinterleave8 + +#endif // __XS3A__ diff --git a/lib_mic_array/src/fir_1x16_bit.S b/lib_mic_array/src/fir_1x16_bit.S index c4fa1394..576d4ef9 100644 --- a/lib_mic_array/src/fir_1x16_bit.S +++ b/lib_mic_array/src/fir_1x16_bit.S @@ -71,4 +71,4 @@ macc_coeffs: .short 0x7fff, 0x4000, 0x2000, 0x1000, 0x0800, 0x0400, 0x0200, 0x0100, 0x0080, 0x0040, 0x0020, 0x0010, 0x0008, 0x0004, 0x0002, 0x0001 .cc_bottom fir_1x16_bit.func -#endif \ No newline at end of file +#endif // __XS3A__ diff --git a/lib_mic_array/src/mic_array_setup.c b/lib_mic_array/src/mic_array_setup.c index 44ac620a..6ef8d85a 100644 --- a/lib_mic_array/src/mic_array_setup.c +++ b/lib_mic_array/src/mic_array_setup.c @@ -48,9 +48,11 @@ void mic_array_resources_configure( static inline void mic_array_inpw8(const port_t p_pdm_mics) { + #if defined(__xcore__) uint32_t tmp; asm volatile("inpw %0, res[%1], 8" : "=r"(tmp) : "r" (p_pdm_mics)); + #endif // __xcore__ } void mic_array_pdm_clock_start( diff --git a/lib_mic_array/src/mic_array_task.cpp b/lib_mic_array/src/mic_array_task.cpp index 43f8aad2..fe5c063f 100644 --- a/lib_mic_array/src/mic_array_task.cpp +++ b/lib_mic_array/src/mic_array_task.cpp @@ -104,7 +104,11 @@ void default_ma_task_start_decimator_3stg(TMicArray_3stg_decimator& mics, chanen mics.ThreadEntry(); } +#if defined(__xcore__) #define CLRSR(c) asm volatile("clrsr %0" : : "n"(c)); +#else +#define CLRSR(c) ((void)0) +#endif #define CLEAR_KEDI() CLRSR(XS1_SR_KEDI_MASK) template