From d07e0d4266da83660e87275f24e0ad9002780dcf Mon Sep 17 00:00:00 2001 From: ABernabeu Date: Wed, 12 May 2021 23:22:35 +0200 Subject: [PATCH 1/2] added setup for dsplib + use of LEA, example -> fft_lea --- .../msp430fr5994/launchpad/fft_lea/README.md | 12 + .../msp430fr5994/launchpad/fft_lea/build.py | 406 + .../msp430fr5994/launchpad/fft_lea/fft_lea.c | 101 + .../launchpad/fft_lea/fft_lea.map | 13254 ++++++++++++++++ .../launchpad/fft_lea/fft_lea.oil | 72 + .../launchpad/fft_lea/fft_lea/AsMemMap.h | 233 + .../launchpad/fft_lea/fft_lea/Compiler.h | 95 + .../launchpad/fft_lea/fft_lea/Compiler_Cfg.h | 194 + .../launchpad/fft_lea/fft_lea/MemMap.h | 3435 ++++ .../launchpad/fft_lea/fft_lea/script.ld | 4150 +++++ .../launchpad/fft_lea/fft_lea/stm_structure.c | 21 + .../fft_lea/fft_lea/tpl_app_config.c | 449 + .../fft_lea/fft_lea/tpl_app_config.h | 65 + .../fft_lea/fft_lea/tpl_app_custom_types.h | 157 + .../fft_lea/fft_lea/tpl_app_define.h | 266 + .../fft_lea/fft_lea/tpl_dispatch_table.c | 65 + .../fft_lea/fft_lea/tpl_interrupt_vectors.c | 59 + .../launchpad/fft_lea/fft_lea/tpl_invoque.S | 337 + .../fft_lea/fft_lea/tpl_irq_handlers.S | 128 + .../launchpad/fft_lea/fft_lea/tpl_os.h | 269 + .../fft_lea/fft_lea/tpl_service_ids.h | 199 + .../fft_lea/fft_lea/tpl_static_info.json | 32 + .../launchpad/fft_lea/fft_lea_exe | Bin 0 -> 1073404 bytes .../msp430fr5994/launchpad/fft_lea/init.gdb | 3 + .../msp430fr5994/launchpad/fft_lea/make.py | 119 + .../small/tpl_interrupt_vectors.goilTemplate | 7 + .../gcc/msp430x/MemMap_h.goilTemplate | 33 + goil/templates/config/msp430x/config.oil | 6 +- .../small/msp430fr5994/launchpad/config.oil | 113 +- .../msp430fr5994/memory_map.goilTemplate | 15 + .../small/msp430fr5994/script.goilTemplate | 35 +- .../launchpad/dsplib/include/DSPLib.h | 50 + .../launchpad/dsplib/include/DSPLib_ROM.h | 321 + .../launchpad/dsplib/include/DSPLib_filter.h | 862 + .../launchpad/dsplib/include/DSPLib_lea.h | 1285 ++ .../launchpad/dsplib/include/DSPLib_matrix.h | 867 + .../launchpad/dsplib/include/DSPLib_support.h | 632 + .../dsplib/include/DSPLib_transform.h | 1092 ++ .../launchpad/dsplib/include/DSPLib_types.h | 182 + .../launchpad/dsplib/include/DSPLib_utility.h | 667 + .../launchpad/dsplib/include/DSPLib_vector.h | 1852 +++ .../filter/msp_biquad_cascade_df1_q15.c | 69 + .../filter/msp_biquad_cascade_df2_ext_q15.c | 69 + .../filter/msp_biquad_cascade_df2_q15.c | 69 + .../dsplib/source/filter/msp_biquad_df1_q15.c | 207 + .../source/filter/msp_biquad_df2_ext_q15.c | 226 + .../dsplib/source/filter/msp_biquad_df2_q15.c | 209 + .../dsplib/source/filter/msp_cmplx_fir_iq31.c | 278 + .../dsplib/source/filter/msp_cmplx_fir_q15.c | 384 + .../dsplib/source/filter/msp_fir_iq31.c | 250 + .../dsplib/source/filter/msp_fir_q15.c | 272 + .../dsplib/source/lea/msp_lea_flags.c | 41 + .../dsplib/source/lea/msp_lea_init.c | 69 + .../launchpad/dsplib/source/lea/msp_lea_isr.c | 52 + .../dsplib/source/lea/msp_lea_patch.c | 343 + .../source/matrix/msp_matrix_abs_iq31.c | 48 + .../dsplib/source/matrix/msp_matrix_abs_q15.c | 48 + .../source/matrix/msp_matrix_add_iq31.c | 48 + .../dsplib/source/matrix/msp_matrix_add_q15.c | 48 + .../source/matrix/msp_matrix_mpy_iq31.c | 271 + .../dsplib/source/matrix/msp_matrix_mpy_q15.c | 239 + .../source/matrix/msp_matrix_neg_iq31.c | 46 + .../dsplib/source/matrix/msp_matrix_neg_q15.c | 46 + .../source/matrix/msp_matrix_offset_iq31.c | 49 + .../source/matrix/msp_matrix_offset_q15.c | 50 + .../source/matrix/msp_matrix_scale_iq31.c | 48 + .../source/matrix/msp_matrix_scale_q15.c | 51 + .../source/matrix/msp_matrix_shift_iq31.c | 47 + .../source/matrix/msp_matrix_shift_q15.c | 47 + .../source/matrix/msp_matrix_sub_iq31.c | 48 + .../dsplib/source/matrix/msp_matrix_sub_q15.c | 48 + .../source/matrix/msp_matrix_trans_iq31.c | 65 + .../source/matrix/msp_matrix_trans_q15.c | 74 + .../source/transform/msp_cmplx_bitrev_iq31.c | 175 + .../source/transform/msp_cmplx_bitrev_q15.c | 175 + .../source/transform/msp_cmplx_fft_auto_q15.c | 433 + .../transform/msp_cmplx_fft_fixed_q15.c | 310 + .../source/transform/msp_cmplx_fft_iq31.c | 328 + .../transform/msp_cmplx_ifft_auto_q15.c | 82 + .../transform/msp_cmplx_ifft_fixed_q15.c | 73 + .../source/transform/msp_cmplx_ifft_iq31.c | 110 + .../source/transform/msp_fft_auto_q15.c | 63 + .../source/transform/msp_fft_fixed_q15.c | 63 + .../dsplib/source/transform/msp_fft_iq31.c | 63 + .../source/transform/msp_ifft_auto_q15.c | 94 + .../source/transform/msp_ifft_fixed_q15.c | 85 + .../dsplib/source/transform/msp_ifft_iq31.c | 121 + .../dsplib/source/transform/msp_split_iq31.c | 274 + .../dsplib/source/transform/msp_split_q15.c | 273 + .../source/transform/msp_transform_tables.c | 1161 ++ .../source/utility/msp_cmplx_fill_iq31.c | 145 + .../source/utility/msp_cmplx_fill_q15.c | 130 + .../dsplib/source/utility/msp_cmplx_iq31.c | 57 + .../dsplib/source/utility/msp_cmplx_q15.c | 57 + .../dsplib/source/utility/msp_copy_iq31.c | 121 + .../dsplib/source/utility/msp_copy_q15.c | 120 + .../source/utility/msp_deinterleave_iq31.c | 142 + .../source/utility/msp_deinterleave_q15.c | 165 + .../dsplib/source/utility/msp_fill_iq31.c | 127 + .../dsplib/source/utility/msp_fill_q15.c | 127 + .../source/utility/msp_interleave_iq31.c | 145 + .../source/utility/msp_interleave_q15.c | 175 + .../dsplib/source/utility/msp_iq31_to_q15.c | 51 + .../dsplib/source/utility/msp_q15_to_iq31.c | 60 + .../dsplib/source/utility/msp_sinusoid_q15.c | 96 + .../dsplib/source/vector/msp_abs_iq31.c | 57 + .../dsplib/source/vector/msp_abs_q15.c | 64 + .../dsplib/source/vector/msp_add_iq31.c | 125 + .../dsplib/source/vector/msp_add_q15.c | 137 + .../dsplib/source/vector/msp_cmplx_add_iq31.c | 46 + .../dsplib/source/vector/msp_cmplx_add_q15.c | 46 + .../source/vector/msp_cmplx_conj_iq31.c | 150 + .../dsplib/source/vector/msp_cmplx_conj_q15.c | 53 + .../dsplib/source/vector/msp_cmplx_mac_iq31.c | 122 + .../dsplib/source/vector/msp_cmplx_mac_q15.c | 190 + .../dsplib/source/vector/msp_cmplx_mpy_iq31.c | 97 + .../dsplib/source/vector/msp_cmplx_mpy_q15.c | 158 + .../source/vector/msp_cmplx_mpy_real_iq31.c | 183 + .../source/vector/msp_cmplx_mpy_real_q15.c | 72 + .../source/vector/msp_cmplx_scale_iq31.c | 49 + .../source/vector/msp_cmplx_scale_q15.c | 49 + .../source/vector/msp_cmplx_shift_iq31.c | 216 + .../source/vector/msp_cmplx_shift_q15.c | 186 + .../dsplib/source/vector/msp_cmplx_sub_iq31.c | 46 + .../dsplib/source/vector/msp_cmplx_sub_q15.c | 46 + .../dsplib/source/vector/msp_mac_iq31.c | 153 + .../dsplib/source/vector/msp_mac_q15.c | 168 + .../dsplib/source/vector/msp_max_iq31.c | 162 + .../dsplib/source/vector/msp_max_q15.c | 173 + .../dsplib/source/vector/msp_max_uq15.c | 161 + .../dsplib/source/vector/msp_max_uq31.c | 162 + .../dsplib/source/vector/msp_min_iq31.c | 162 + .../dsplib/source/vector/msp_min_q15.c | 173 + .../dsplib/source/vector/msp_min_uq15.c | 173 + .../dsplib/source/vector/msp_min_uq31.c | 162 + .../dsplib/source/vector/msp_mpy_iq31.c | 162 + .../dsplib/source/vector/msp_mpy_q15.c | 154 + .../dsplib/source/vector/msp_neg_iq31.c | 139 + .../dsplib/source/vector/msp_neg_q15.c | 136 + .../dsplib/source/vector/msp_offset_iq31.c | 134 + .../dsplib/source/vector/msp_offset_q15.c | 147 + .../dsplib/source/vector/msp_scale_iq31.c | 117 + .../dsplib/source/vector/msp_scale_q15.c | 97 + .../dsplib/source/vector/msp_shift_iq31.c | 199 + .../dsplib/source/vector/msp_shift_q15.c | 179 + .../dsplib/source/vector/msp_sub_iq31.c | 125 + .../dsplib/source/vector/msp_sub_q15.c | 137 + .../msp430fr5994/launchpad/serial/serial.c | 6 + 148 files changed, 47070 insertions(+), 3 deletions(-) create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/README.md create mode 100755 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/build.py create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea.c create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea.map create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea.oil create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/AsMemMap.h create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/Compiler.h create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/Compiler_Cfg.h create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/MemMap.h create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/script.ld create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/stm_structure.c create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_config.c create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_config.h create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_custom_types.h create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_define.h create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_dispatch_table.c create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_interrupt_vectors.c create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_invoque.S create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_irq_handlers.S create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_os.h create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_service_ids.h create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_static_info.json create mode 100755 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea_exe create mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/init.gdb create mode 100755 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/make.py create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib.h create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_ROM.h create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_filter.h create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_lea.h create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_matrix.h create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_support.h create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_transform.h create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_types.h create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_utility.h create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_vector.h create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c create mode 100755 machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/README.md b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/README.md new file mode 100644 index 000000000..46d2adcfe --- /dev/null +++ b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/README.md @@ -0,0 +1,12 @@ +# Basic example using LEA to perform fft + +This application is a simple example with a variable defined in LEA_SRAM. +To define the appropriate section that is used, with follow the rules given by the AUTOSAR standard, using a symbol definition, followed by the inclusion of a tpl_memmap.h header file. + +This approach make the application independant of the linker directives. + +The SystemCounter is at 1ms. The serial configuration is 9600, 8N1, with the serial line connected to the debugger (/dev/ttyACM1 on Linux). + +` +goil --target=msp430x/small/msp430fr5994/launchpad --templates=../../../../../../goil/templates/ fft_lea.oil +` diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/build.py b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/build.py new file mode 100755 index 000000000..46d3f75ce --- /dev/null +++ b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/build.py @@ -0,0 +1,406 @@ +#! /usr/bin/env python +# -*- coding: UTF-8 -*- +#---------------------------------------------------------------------- +#--- Python Build file for application checkpoint +#--- automatically generated by goil on Wed May 12 23:14:32 2021 +#--- from root OIL file fft_lea.oil +#--- +#--- Compiling a Trampoline application is done in 2 stages +#--- 1 - From the OIL file, a set of files is generated as long as +#--- build options. Among these files are the build.py and make.py +#--- files. make.py contains compilation rules when the OIL file +#--- and the included OIL files are modified. make.py is only +#--- written once when the goil command is typed. +#--- 2 - From all the C/assembly files (OS, Application, librairies, +#--- configuration, ...), the objects and the executable are +#--- produced. This is done by the build.py file. +#--- build.py is generated each time goil is called by make.py +#---------------------------------------------------------------------- + +import sys, os, subprocess, string, distutils.spawn +from string import Template + +#--- Add some function for Python3 support + +if sys.version_info[0] >=3 : + def bytesdecode(obj) : + return obj.decode(sys.stdout.encoding) +else : + def bytesdecode(obj) : + return obj + +#--- Add the location of makefile.py to the import path +sys.path.append("../../../../../../make") + +#--- Import the makefile system in python +import makefile, projfile + +#--- To work with relative paths +scriptDir = os.path.dirname (os.path.abspath (sys.argv[0])) +os.chdir (scriptDir) + +#--- Get goal as first argument +askedGoal = "all" +if len (sys.argv) > 1 : + askedGoal = sys.argv [1] + +if askedGoal == "all" or askedGoal == "clean" : + goal = askedGoal +else : + goal = "all" + +#--- Get max parallel jobs as second argument +maxParallelJobs = 0 # 0 means use host processor count +if len (sys.argv) > 2 : + maxParallelJobs = int (sys.argv [2]) + +#--- Instanciate a new makefile object +make = makefile.Make(goal) + +#---------------------------------------------------------------------- +#--- Various variables used after +#---------------------------------------------------------------------- +compiler = r"msp430-elf-gcc" +cppCompiler = r"msp430-elf-g++" +linker = r"msp430-elf-ld" +assembler = r"msp430-elf-gcc" +autosar = False +autosar_sc = 0 +autosar_osapplications = False +with_ioc = False +with_com = False +scheduler = "osek" +trampoline_base_path = "../../../../../../" +cflags = [] +cppflags = [] +ldflags = [] +asflags = [] +# flags that should appear at the beginning of the command. +precflags = [] +precppflags = [] +preldflags = [] +preasflags = [] +includeDirs = [] + +cflags += "-O0 -g3 -gdwarf-2 -ggdb".split() +cflags += "-I /home/user/Source/msp430-gcc-support-files-1.211/msp430-gcc-support-files/include".split() +cppflags += "-fno-rtti".split() +cppflags += "-felide-constructors".split() +cppflags += "-fno-threadsafe-statics".split() +cppflags += "-fno-use-cxa-get-exception-ptr".split() +cppflags += "-fno-enforce-eh-specs".split() +cflags += "-g".split() +cppflags += "-g".split() +cflags += "-Wall".split() +cppflags += "-Wall".split() +cflags += "-Wno-unused-but-set-variable".split() +cppflags += "-Wno-unused-but-set-variable".split() +cflags += "-Wmissing-field-initializers".split() +cppflags += "-Wmissing-field-initializers".split() +cflags += "-mmcu=msp430fr5994".split() +cppflags += "-mmcu=msp430fr5994".split() +cflags += "-nostartfiles".split() +cppflags += "-nostartfiles".split() +cflags += "-fno-builtin".split() +cppflags += "-fno-builtin".split() +cflags += "-fno-exceptions".split() +cppflags += "-fno-exceptions".split() +cflags += "-nostdlib".split() +cppflags += "-nostdlib".split() +cflags += "-ffunction-sections".split() +cppflags += "-ffunction-sections".split() +cflags += "-fdata-sections".split() +cppflags += "-fdata-sections".split() +includeDirs += ["-I","../../../../../../machines/msp430x/small"] +includeDirs += ["-I","../../../../../../machines/msp430x/small/msp430fr5994/launchpad/dsplib"] +includeDirs += ["-I","../../../../../../machines/msp430x/small/msp430fr5994/launchpad/serial"] +if with_ioc: + includeDirs += ["-I", "../../../../../../ioc"] +includeDirs += ["-I", "../../../../../../os"] +includeDirs += ["-I", "../../../../../../debug"] +includeDirs += ["-I", "fft_lea"] +cflags += includeDirs +cppflags += includeDirs +asflags += includeDirs + +ldflags += "--fatal-warnings".split() +ldflags += "--warn-common".split() +ldflags += "--no-undefined".split() +ldflags += "--gc-sections".split() +ldflags += "-Map=fft_lea.map".split() +ldflags += ["-T", "fft_lea/script.ld"] +asflags += "-g".split() +asflags += "-Wall".split() +asflags += "-mmcu=msp430fr5994".split() + +#---------------------------------------------------------------------- +#--- Try to detect automatically the location of libc and libgcc +#--- This supposes the compiler has a (something)-gcc name +#--- for non posix target +#---------------------------------------------------------------------- +if "gcc" in compiler: + compilerFullPath = makefile.find_executable(compiler) + if compilerFullPath != None: + #--- Extract the (something) from the compiler executable name + compilerParts = compiler.split('-') + compilerParts.pop() + compilerPrefix = "-".join(compilerParts) + #--- Get the full path of the compiler + compilerToolChainPath = os.path.dirname(os.path.dirname(compilerFullPath)) + #--- Get the version of the compiler, [:-1] removes the carriage return + compilerVersion = subprocess.check_output([compiler, '-dumpversion'])[:-1] + #--- Build the libc and libgcc paths + procLibc =subprocess.Popen([compilerFullPath,"-print-file-name=libc.a"]+cflags,stdout=subprocess.PIPE) + procLibgcc=subprocess.Popen([compilerFullPath,"-print-libgcc-file-name"]+cflags,stdout=subprocess.PIPE) + procLibc.wait() + procLibgcc.wait() + libcPath = os.path.dirname(procLibc.stdout.readline().strip()) + libgccPath = os.path.dirname(procLibgcc.stdout.readline().strip()) + #--- Add both to linker flags + ldflags += ['-L' + bytesdecode(libcPath), '-lc'] + ldflags += ['-L' + bytesdecode(libgccPath), '-lgcc'] + +#---------------------------------------------------------------------- +#--- Build the source files list +#---------------------------------------------------------------------- +cSourceList = [] +cppSourceList = [] +sSourceList = [] +oilSourceList = [] + +#--- OIL file +oilSourceList.append("fft_lea.oil") + +#--- Kernel files +cSourceList.append(projfile.ProjectFile("os/tpl_os_kernel.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("os/tpl_os_timeobj_kernel.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("os/tpl_os_action.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("os/tpl_os_error.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("os/tpl_os_os_kernel.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("os/tpl_os_os.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("os/tpl_os_interrupt_kernel.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("os/tpl_os_task_kernel.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("os/tpl_os_resource_kernel.c", trampoline_base_path)) + +#--- Add C files of the application +cSourceList.append(projfile.ProjectFile("fft_lea.c")) + +#--- Add generated files +cSourceList.append(projfile.ProjectFile("fft_lea/tpl_app_config.c")) + +cSourceList.append(projfile.ProjectFile("fft_lea/tpl_dispatch_table.c")) +cSourceList.append(projfile.ProjectFile("fft_lea/tpl_invoque.S")) +cSourceList.append(projfile.ProjectFile("fft_lea/tpl_interrupt_vectors.c")) +sSourceList.append(projfile.ProjectFile("fft_lea/tpl_irq_handlers.S")) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/tpl_machine_msp430x.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/tpl_startup.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/tpl_clocks.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/tpl_trace.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/tpl_checkpointing.c", trampoline_base_path)) +sSourceList.append(projfile.ProjectFile("machines/msp430x/small/tpl_startup.S", trampoline_base_path)) +sSourceList.append(projfile.ProjectFile("machines/msp430x/small/tpl_sc_handler.S", trampoline_base_path)) +sSourceList.append(projfile.ProjectFile("machines/msp430x/small/framtr.S", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c", trampoline_base_path)) +cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c", trampoline_base_path)) +#---------------------------------------------------------------------- +#--- Build the object list and the compiler dependancies +#---------------------------------------------------------------------- +objectList = [] + +for sourceFile in cSourceList: + source = sourceFile.src() + object = sourceFile.obj("build") + depObject = sourceFile.dep("build") + objectList.append(object) + rule = makefile.Rule([object], "Compiling " + source) + rule.deleteTargetDirectoryOnClean() + rule.mDependences.append(source) + rule.mCommand.append(compiler) + rule.mCommand += precflags + rule.mCommand += ["-c", source] + rule.mCommand += ["-o", object] + rule.mCommand += ["-MD", "-MP", "-MF", depObject] + rule.mCommand += cflags + rule.enterSecondaryDependanceFile (depObject, make) + make.addRule(rule) + +for sourceFile in cppSourceList: + source = sourceFile.src() + object = sourceFile.obj("build") + depObject = sourceFile.dep("build") + objectList.append(object) + rule = makefile.Rule([object], "Compiling " + source) + rule.deleteTargetDirectoryOnClean() + rule.mDependences.append(source) + rule.mCommand.append(cppCompiler) + rule.mCommand += precppflags + rule.mCommand += ["-c", source] + rule.mCommand += ["-o", object] + rule.mCommand += ["-MD", "-MP", "-MF", depObject] + rule.mCommand += cppflags + rule.enterSecondaryDependanceFile (depObject, make) + make.addRule(rule) + +for sourceFile in sSourceList: + source = sourceFile.src() + object = sourceFile.obj("build") + objectList.append(object) + rule = makefile.Rule([object], "Assembling " + source) + rule.mDependences.append(source) + rule.mCommand.append(assembler) + rule.mCommand += preasflags + rule.mCommand += ["-c", source] + rule.mCommand += ["-o", object] + rule.mCommand += asflags + make.addRule(rule) + +product = "fft_lea_exe" +rule = makefile.Rule ([product], "Linking " + product) +rule.deleteTargetFileOnClean() +rule.mDeleteTargetOnError = True +rule.mDependences += objectList +rule.mCommand += [linker] +rule.mCommand += ["-o", product] +rule.mCommand += preldflags +rule.mCommand += objectList +rule.mCommand += ldflags + +make.addRule (rule) + +make.addGoal("all", [product], "Building all") +make.addGoal("compile", objectList, "Compile source files") + + +make.runGoal(maxParallelJobs, maxParallelJobs == 1) + +postVariableMapping = dict( + MACHINE_PATH='../../../../../../machines', + ARCH_PATH='../../../../../../machines/msp430x', + BOARD_PATH='../../../../../../machines/msp430x/small/msp430fr5994/launchpad', + TARGET='msp430x/small/msp430fr5994/launchpad' +) + + +#---------------------------------------------------------------------- +#--- post commands +#---------------------------------------------------------------------- +if make.errorCount() == 0: + if askedGoal == "flash" : + commandLine = "DSLite load -c $ARCH_PATH/ccxml/MSP-EXP430FR5994LP.ccxml -f " + commandLine += "fft_lea_exe " + commandLineTemplate = Template(commandLine) + commandLine = commandLineTemplate.safe_substitute(postVariableMapping) + if makefile.find_executable("DSLite") != None: + print("\033[1m\033[95mFlashing fft_lea_exe on msp430x/small/msp430fr5994/launchpad\033[0m") + subprocess.call(commandLine, shell=True) + else: + print("Command 'DSLite' not in PATH") + +#---------------------------------------------------------------------- +#-- End of build.py +#---------------------------------------------------------------------- diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea.c b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea.c new file mode 100644 index 000000000..083f4fdce --- /dev/null +++ b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea.c @@ -0,0 +1,101 @@ +#include "tpl_os.h" +#include "msp430.h" +#include +#include +#include +#include "tpl_clocks.h" + +/* Input signal parameters */ +#define FS 8192 +#define SAMPLES 256 +#define SIGNAL_FREQUENCY1 200 +#define SIGNAL_AMPLITUDE1 0.6 + +/* Constants */ +#define PI 3.1415926536 + +#define APP_Task_fft_START_SEC_LEA_VAR_LEA_16BIT +#include "tpl_memmap.h" + +VAR(_q15, AUTOMATIC) input[SAMPLES]; + +#define APP_Task_fft_STOP_SEC_LEA_VAR_LEA_16BIT +#include "tpl_memmap.h" + +/* Function prototypes */ +extern void initSignal(void); + +#define APP_Task_fft_START_SEC_CODE +#include "tpl_memmap.h" + + +/*----------------------------------------------------------------------------*/ +/* main function */ +/*----------------------------------------------------------------------------*/ +FUNC(int, OS_APPL_CODE) main(void) +{ + /* Disable WDT */ + WDTCTL = WDTPW + WDTHOLD; + + P1DIR |= BIT0 + BIT1; + P1OUT &= ~BIT0; + P1OUT &= ~BIT1; + + PM5CTL0 &= ~LOCKLPM5; + + tpl_serial_begin(); + StartOS(OSDEFAULTAPPMODE); + return 0; +} + +void initSignal(void){ + msp_status status; + msp_sinusoid_q15_params sinParams; + /* Generate Q15 input signal */ + sinParams.length = SAMPLES; + sinParams.amplitude = _Q15(SIGNAL_AMPLITUDE1); + sinParams.cosOmega = _Q15(cosf(2*PI*SIGNAL_FREQUENCY1/FS)); + sinParams.sinOmega = _Q15(sinf(2*PI*SIGNAL_FREQUENCY1/FS)); + status = msp_sinusoid_q15(&sinParams, input); + msp_checkStatus(status); +} + +//#define APP_COMMON_STOP_SEC_CODE +//#include "tpl_memmap.h" + +//#define APP_Task_fft_START_SEC_CODE +//#include "tpl_memmap.h" +/*----------------------------------------------------------------------------*/ +/* TASK fft */ +/*----------------------------------------------------------------------------*/ +TASK(fft) +{ + P1OUT |= BIT0; + msp_status status; + msp_fft_q15_params fftParams; + int i; + + initSignal(); + + for(i=0; i */ +/* - NO_INIT : used for variables that are never cleared and never */ +/* initialized. */ +/* - CLEARED : used for variables that are cleared to zero after */ +/* every reset. */ +/* - POWER_ON_CLEARED : used for variables that are cleared to zero only */ +/* after power on reset. */ +/* - INIT : used for variables that are initialized with values */ +/* after every reset. */ +/* - POWER_ON_INIT : used for variables that are initialized with values */ +/* only after power on reset. */ +/* */ +/*----------------------------------------------------------------------------*/ +/*----------------------------------------------------------------------------*/ +/* */ +/* Peripheral registers definition */ +/* */ +/*----------------------------------------------------------------------------*/ +/* ============================================================================ */ +/* Copyright (c) 2019, Texas Instruments Incorporated */ +/* All rights reserved. */ +/* */ +/* Redistribution and use in source and binary forms, with or without */ +/* modification, are permitted provided that the following conditions */ +/* are met: */ +/* */ +/* * Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* */ +/* * Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in the */ +/* documentation and/or other materials provided with the distribution. */ +/* */ +/* * Neither the name of Texas Instruments Incorporated nor the names of */ +/* its contributors may be used to endorse or promote products derived */ +/* from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" */ +/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, */ +/* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ +/* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ +/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, */ +/* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, */ +/* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; */ +/* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, */ +/* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ +/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ +/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* ============================================================================ */ + +/* This file supports MSP430FR5994 devices. */ + +/* 1.208 */ + +/************************************************************ +* PERIPHERAL FILE MAP +************************************************************/ + + +/***************************************************************************** + ADC12_B +*****************************************************************************/ +PROVIDE(ADC12CTL0 = 0x0800); +PROVIDE(ADC12CTL0_L = 0x0800); +PROVIDE(ADC12CTL0_H = 0x0801); +PROVIDE(ADC12CTL1 = 0x0802); +PROVIDE(ADC12CTL1_L = 0x0802); +PROVIDE(ADC12CTL1_H = 0x0803); +PROVIDE(ADC12CTL2 = 0x0804); +PROVIDE(ADC12CTL2_L = 0x0804); +PROVIDE(ADC12CTL2_H = 0x0805); +PROVIDE(ADC12CTL3 = 0x0806); +PROVIDE(ADC12CTL3_L = 0x0806); +PROVIDE(ADC12CTL3_H = 0x0807); +PROVIDE(ADC12LO = 0x0808); +PROVIDE(ADC12LO_L = 0x0808); +PROVIDE(ADC12LO_H = 0x0809); +PROVIDE(ADC12HI = 0x080A); +PROVIDE(ADC12HI_L = 0x080A); +PROVIDE(ADC12HI_H = 0x080B); +PROVIDE(ADC12IFGR0 = 0x080C); +PROVIDE(ADC12IFGR0_L = 0x080C); +PROVIDE(ADC12IFGR0_H = 0x080D); +PROVIDE(ADC12IFGR1 = 0x080E); +PROVIDE(ADC12IFGR1_L = 0x080E); +PROVIDE(ADC12IFGR1_H = 0x080F); +PROVIDE(ADC12IFGR2 = 0x0810); +PROVIDE(ADC12IFGR2_L = 0x0810); +PROVIDE(ADC12IFGR2_H = 0x0811); +PROVIDE(ADC12IER0 = 0x0812); +PROVIDE(ADC12IER0_L = 0x0812); +PROVIDE(ADC12IER0_H = 0x0813); +PROVIDE(ADC12IER1 = 0x0814); +PROVIDE(ADC12IER1_L = 0x0814); +PROVIDE(ADC12IER1_H = 0x0815); +PROVIDE(ADC12IER2 = 0x0816); +PROVIDE(ADC12IER2_L = 0x0816); +PROVIDE(ADC12IER2_H = 0x0817); +PROVIDE(ADC12IV = 0x0818); +PROVIDE(ADC12IV_L = 0x0818); +PROVIDE(ADC12IV_H = 0x0819); +PROVIDE(ADC12MCTL0 = 0x0820); +PROVIDE(ADC12MCTL0_L = 0x0820); +PROVIDE(ADC12MCTL0_H = 0x0821); +PROVIDE(ADC12MCTL1 = 0x0822); +PROVIDE(ADC12MCTL1_L = 0x0822); +PROVIDE(ADC12MCTL1_H = 0x0823); +PROVIDE(ADC12MCTL2 = 0x0824); +PROVIDE(ADC12MCTL2_L = 0x0824); +PROVIDE(ADC12MCTL2_H = 0x0825); +PROVIDE(ADC12MCTL3 = 0x0826); +PROVIDE(ADC12MCTL3_L = 0x0826); +PROVIDE(ADC12MCTL3_H = 0x0827); +PROVIDE(ADC12MCTL4 = 0x0828); +PROVIDE(ADC12MCTL4_L = 0x0828); +PROVIDE(ADC12MCTL4_H = 0x0829); +PROVIDE(ADC12MCTL5 = 0x082A); +PROVIDE(ADC12MCTL5_L = 0x082A); +PROVIDE(ADC12MCTL5_H = 0x082B); +PROVIDE(ADC12MCTL6 = 0x082C); +PROVIDE(ADC12MCTL6_L = 0x082C); +PROVIDE(ADC12MCTL6_H = 0x082D); +PROVIDE(ADC12MCTL7 = 0x082E); +PROVIDE(ADC12MCTL7_L = 0x082E); +PROVIDE(ADC12MCTL7_H = 0x082F); +PROVIDE(ADC12MCTL8 = 0x0830); +PROVIDE(ADC12MCTL8_L = 0x0830); +PROVIDE(ADC12MCTL8_H = 0x0831); +PROVIDE(ADC12MCTL9 = 0x0832); +PROVIDE(ADC12MCTL9_L = 0x0832); +PROVIDE(ADC12MCTL9_H = 0x0833); +PROVIDE(ADC12MCTL10 = 0x0834); +PROVIDE(ADC12MCTL10_L = 0x0834); +PROVIDE(ADC12MCTL10_H = 0x0835); +PROVIDE(ADC12MCTL11 = 0x0836); +PROVIDE(ADC12MCTL11_L = 0x0836); +PROVIDE(ADC12MCTL11_H = 0x0837); +PROVIDE(ADC12MCTL12 = 0x0838); +PROVIDE(ADC12MCTL12_L = 0x0838); +PROVIDE(ADC12MCTL12_H = 0x0839); +PROVIDE(ADC12MCTL13 = 0x083A); +PROVIDE(ADC12MCTL13_L = 0x083A); +PROVIDE(ADC12MCTL13_H = 0x083B); +PROVIDE(ADC12MCTL14 = 0x083C); +PROVIDE(ADC12MCTL14_L = 0x083C); +PROVIDE(ADC12MCTL14_H = 0x083D); +PROVIDE(ADC12MCTL15 = 0x083E); +PROVIDE(ADC12MCTL15_L = 0x083E); +PROVIDE(ADC12MCTL15_H = 0x083F); +PROVIDE(ADC12MCTL16 = 0x0840); +PROVIDE(ADC12MCTL16_L = 0x0840); +PROVIDE(ADC12MCTL16_H = 0x0841); +PROVIDE(ADC12MCTL17 = 0x0842); +PROVIDE(ADC12MCTL17_L = 0x0842); +PROVIDE(ADC12MCTL17_H = 0x0843); +PROVIDE(ADC12MCTL18 = 0x0844); +PROVIDE(ADC12MCTL18_L = 0x0844); +PROVIDE(ADC12MCTL18_H = 0x0845); +PROVIDE(ADC12MCTL19 = 0x0846); +PROVIDE(ADC12MCTL19_L = 0x0846); +PROVIDE(ADC12MCTL19_H = 0x0847); +PROVIDE(ADC12MCTL20 = 0x0848); +PROVIDE(ADC12MCTL20_L = 0x0848); +PROVIDE(ADC12MCTL20_H = 0x0849); +PROVIDE(ADC12MCTL21 = 0x084A); +PROVIDE(ADC12MCTL21_L = 0x084A); +PROVIDE(ADC12MCTL21_H = 0x084B); +PROVIDE(ADC12MCTL22 = 0x084C); +PROVIDE(ADC12MCTL22_L = 0x084C); +PROVIDE(ADC12MCTL22_H = 0x084D); +PROVIDE(ADC12MCTL23 = 0x084E); +PROVIDE(ADC12MCTL23_L = 0x084E); +PROVIDE(ADC12MCTL23_H = 0x084F); +PROVIDE(ADC12MCTL24 = 0x0850); +PROVIDE(ADC12MCTL24_L = 0x0850); +PROVIDE(ADC12MCTL24_H = 0x0851); +PROVIDE(ADC12MCTL25 = 0x0852); +PROVIDE(ADC12MCTL25_L = 0x0852); +PROVIDE(ADC12MCTL25_H = 0x0853); +PROVIDE(ADC12MCTL26 = 0x0854); +PROVIDE(ADC12MCTL26_L = 0x0854); +PROVIDE(ADC12MCTL26_H = 0x0855); +PROVIDE(ADC12MCTL27 = 0x0856); +PROVIDE(ADC12MCTL27_L = 0x0856); +PROVIDE(ADC12MCTL27_H = 0x0857); +PROVIDE(ADC12MCTL28 = 0x0858); +PROVIDE(ADC12MCTL28_L = 0x0858); +PROVIDE(ADC12MCTL28_H = 0x0859); +PROVIDE(ADC12MCTL29 = 0x085A); +PROVIDE(ADC12MCTL29_L = 0x085A); +PROVIDE(ADC12MCTL29_H = 0x085B); +PROVIDE(ADC12MCTL30 = 0x085C); +PROVIDE(ADC12MCTL30_L = 0x085C); +PROVIDE(ADC12MCTL30_H = 0x085D); +PROVIDE(ADC12MCTL31 = 0x085E); +PROVIDE(ADC12MCTL31_L = 0x085E); +PROVIDE(ADC12MCTL31_H = 0x085F); +PROVIDE(ADC12MEM0 = 0x0860); +PROVIDE(ADC12MEM0_L = 0x0860); +PROVIDE(ADC12MEM0_H = 0x0861); +PROVIDE(ADC12MEM1 = 0x0862); +PROVIDE(ADC12MEM1_L = 0x0862); +PROVIDE(ADC12MEM1_H = 0x0863); +PROVIDE(ADC12MEM2 = 0x0864); +PROVIDE(ADC12MEM2_L = 0x0864); +PROVIDE(ADC12MEM2_H = 0x0865); +PROVIDE(ADC12MEM3 = 0x0866); +PROVIDE(ADC12MEM3_L = 0x0866); +PROVIDE(ADC12MEM3_H = 0x0867); +PROVIDE(ADC12MEM4 = 0x0868); +PROVIDE(ADC12MEM4_L = 0x0868); +PROVIDE(ADC12MEM4_H = 0x0869); +PROVIDE(ADC12MEM5 = 0x086A); +PROVIDE(ADC12MEM5_L = 0x086A); +PROVIDE(ADC12MEM5_H = 0x086B); +PROVIDE(ADC12MEM6 = 0x086C); +PROVIDE(ADC12MEM6_L = 0x086C); +PROVIDE(ADC12MEM6_H = 0x086D); +PROVIDE(ADC12MEM7 = 0x086E); +PROVIDE(ADC12MEM7_L = 0x086E); +PROVIDE(ADC12MEM7_H = 0x086F); +PROVIDE(ADC12MEM8 = 0x0870); +PROVIDE(ADC12MEM8_L = 0x0870); +PROVIDE(ADC12MEM8_H = 0x0871); +PROVIDE(ADC12MEM9 = 0x0872); +PROVIDE(ADC12MEM9_L = 0x0872); +PROVIDE(ADC12MEM9_H = 0x0873); +PROVIDE(ADC12MEM10 = 0x0874); +PROVIDE(ADC12MEM10_L = 0x0874); +PROVIDE(ADC12MEM10_H = 0x0875); +PROVIDE(ADC12MEM11 = 0x0876); +PROVIDE(ADC12MEM11_L = 0x0876); +PROVIDE(ADC12MEM11_H = 0x0877); +PROVIDE(ADC12MEM12 = 0x0878); +PROVIDE(ADC12MEM12_L = 0x0878); +PROVIDE(ADC12MEM12_H = 0x0879); +PROVIDE(ADC12MEM13 = 0x087A); +PROVIDE(ADC12MEM13_L = 0x087A); +PROVIDE(ADC12MEM13_H = 0x087B); +PROVIDE(ADC12MEM14 = 0x087C); +PROVIDE(ADC12MEM14_L = 0x087C); +PROVIDE(ADC12MEM14_H = 0x087D); +PROVIDE(ADC12MEM15 = 0x087E); +PROVIDE(ADC12MEM15_L = 0x087E); +PROVIDE(ADC12MEM15_H = 0x087F); +PROVIDE(ADC12MEM16 = 0x0880); +PROVIDE(ADC12MEM16_L = 0x0880); +PROVIDE(ADC12MEM16_H = 0x0881); +PROVIDE(ADC12MEM17 = 0x0882); +PROVIDE(ADC12MEM17_L = 0x0882); +PROVIDE(ADC12MEM17_H = 0x0883); +PROVIDE(ADC12MEM18 = 0x0884); +PROVIDE(ADC12MEM18_L = 0x0884); +PROVIDE(ADC12MEM18_H = 0x0885); +PROVIDE(ADC12MEM19 = 0x0886); +PROVIDE(ADC12MEM19_L = 0x0886); +PROVIDE(ADC12MEM19_H = 0x0887); +PROVIDE(ADC12MEM20 = 0x0888); +PROVIDE(ADC12MEM20_L = 0x0888); +PROVIDE(ADC12MEM20_H = 0x0889); +PROVIDE(ADC12MEM21 = 0x088A); +PROVIDE(ADC12MEM21_L = 0x088A); +PROVIDE(ADC12MEM21_H = 0x088B); +PROVIDE(ADC12MEM22 = 0x088C); +PROVIDE(ADC12MEM22_L = 0x088C); +PROVIDE(ADC12MEM22_H = 0x088D); +PROVIDE(ADC12MEM23 = 0x088E); +PROVIDE(ADC12MEM23_L = 0x088E); +PROVIDE(ADC12MEM23_H = 0x088F); +PROVIDE(ADC12MEM24 = 0x0890); +PROVIDE(ADC12MEM24_L = 0x0890); +PROVIDE(ADC12MEM24_H = 0x0891); +PROVIDE(ADC12MEM25 = 0x0892); +PROVIDE(ADC12MEM25_L = 0x0892); +PROVIDE(ADC12MEM25_H = 0x0893); +PROVIDE(ADC12MEM26 = 0x0894); +PROVIDE(ADC12MEM26_L = 0x0894); +PROVIDE(ADC12MEM26_H = 0x0895); +PROVIDE(ADC12MEM27 = 0x0896); +PROVIDE(ADC12MEM27_L = 0x0896); +PROVIDE(ADC12MEM27_H = 0x0897); +PROVIDE(ADC12MEM28 = 0x0898); +PROVIDE(ADC12MEM28_L = 0x0898); +PROVIDE(ADC12MEM28_H = 0x0899); +PROVIDE(ADC12MEM29 = 0x089A); +PROVIDE(ADC12MEM29_L = 0x089A); +PROVIDE(ADC12MEM29_H = 0x089B); +PROVIDE(ADC12MEM30 = 0x089C); +PROVIDE(ADC12MEM30_L = 0x089C); +PROVIDE(ADC12MEM30_H = 0x089D); +PROVIDE(ADC12MEM31 = 0x089E); +PROVIDE(ADC12MEM31_L = 0x089E); +PROVIDE(ADC12MEM31_H = 0x089F); + + +/***************************************************************************** + AES256 +*****************************************************************************/ +PROVIDE(AESACTL0 = 0x09C0); +PROVIDE(AESACTL0_L = 0x09C0); +PROVIDE(AESACTL0_H = 0x09C1); +PROVIDE(AESACTL1 = 0x09C2); +PROVIDE(AESACTL1_L = 0x09C2); +PROVIDE(AESACTL1_H = 0x09C3); +PROVIDE(AESASTAT = 0x09C4); +PROVIDE(AESASTAT_L = 0x09C4); +PROVIDE(AESASTAT_H = 0x09C5); +PROVIDE(AESAKEY = 0x09C6); +PROVIDE(AESAKEY_L = 0x09C6); +PROVIDE(AESAKEY_H = 0x09C7); +PROVIDE(AESADIN = 0x09C8); +PROVIDE(AESADIN_L = 0x09C8); +PROVIDE(AESADIN_H = 0x09C9); +PROVIDE(AESADOUT = 0x09CA); +PROVIDE(AESADOUT_L = 0x09CA); +PROVIDE(AESADOUT_H = 0x09CB); +PROVIDE(AESAXDIN = 0x09CC); +PROVIDE(AESAXDIN_L = 0x09CC); +PROVIDE(AESAXDIN_H = 0x09CD); +PROVIDE(AESAXIN = 0x09CE); +PROVIDE(AESAXIN_L = 0x09CE); +PROVIDE(AESAXIN_H = 0x09CF); + + +/***************************************************************************** + CAPTIO0 +*****************************************************************************/ +PROVIDE(CAPTIO0CTL = 0x043E); +PROVIDE(CAPTIO0CTL_L = 0x043E); +PROVIDE(CAPTIO0CTL_H = 0x043F); + + +/***************************************************************************** + CAPTIO1 +*****************************************************************************/ +PROVIDE(CAPTIO1CTL = 0x047E); +PROVIDE(CAPTIO1CTL_L = 0x047E); +PROVIDE(CAPTIO1CTL_H = 0x047F); + + +/***************************************************************************** + COMP_E +*****************************************************************************/ +PROVIDE(CECTL0 = 0x08C0); +PROVIDE(CECTL0_L = 0x08C0); +PROVIDE(CECTL0_H = 0x08C1); +PROVIDE(CECTL1 = 0x08C2); +PROVIDE(CECTL1_L = 0x08C2); +PROVIDE(CECTL1_H = 0x08C3); +PROVIDE(CECTL2 = 0x08C4); +PROVIDE(CECTL2_L = 0x08C4); +PROVIDE(CECTL2_H = 0x08C5); +PROVIDE(CECTL3 = 0x08C6); +PROVIDE(CECTL3_L = 0x08C6); +PROVIDE(CECTL3_H = 0x08C7); +PROVIDE(CEINT = 0x08CC); +PROVIDE(CEINT_L = 0x08CC); +PROVIDE(CEINT_H = 0x08CD); +PROVIDE(CEIV = 0x08CE); +PROVIDE(CEIV_L = 0x08CE); +PROVIDE(CEIV_H = 0x08CF); + + +/***************************************************************************** + CRC +*****************************************************************************/ +PROVIDE(CRCDI = 0x0150); +PROVIDE(CRCDI_L = 0x0150); +PROVIDE(CRCDI_H = 0x0151); +PROVIDE(CRCDIRB = 0x0152); +PROVIDE(CRCDIRB_L = 0x0152); +PROVIDE(CRCDIRB_H = 0x0153); +PROVIDE(CRCINIRES = 0x0154); +PROVIDE(CRCINIRES_L = 0x0154); +PROVIDE(CRCINIRES_H = 0x0155); +PROVIDE(CRCRESR = 0x0156); +PROVIDE(CRCRESR_L = 0x0156); +PROVIDE(CRCRESR_H = 0x0157); + + +/***************************************************************************** + CRC32 +*****************************************************************************/ +PROVIDE(CRC32DIW0 = 0x0980); +PROVIDE(CRC32DIW0_L = 0x0980); +PROVIDE(CRC32DIW0_H = 0x0981); +PROVIDE(CRC32DIW1 = 0x0982); +PROVIDE(CRC32DIW1_L = 0x0982); +PROVIDE(CRC32DIW1_H = 0x0983); +PROVIDE(CRC32DIRBW1 = 0x0984); +PROVIDE(CRC32DIRBW1_L = 0x0984); +PROVIDE(CRC32DIRBW1_H = 0x0985); +PROVIDE(CRC32DIRBW0 = 0x0986); +PROVIDE(CRC32DIRBW0_L = 0x0986); +PROVIDE(CRC32DIRBW0_H = 0x0987); +PROVIDE(CRC32INIRESW0 = 0x0988); +PROVIDE(CRC32INIRESW0_L = 0x0988); +PROVIDE(CRC32INIRESW0_H = 0x0989); +PROVIDE(CRC32INIRESW1 = 0x098A); +PROVIDE(CRC32INIRESW1_L = 0x098A); +PROVIDE(CRC32INIRESW1_H = 0x098B); +PROVIDE(CRC32RESRW1 = 0x098C); +PROVIDE(CRC32RESRW1_L = 0x098C); +PROVIDE(CRC32RESRW1_H = 0x098D); +PROVIDE(CRC32RESRW0 = 0x098E); +PROVIDE(CRC32RESRW0_L = 0x098E); +PROVIDE(CRC32RESRW0_H = 0x098F); +PROVIDE(CRC16DIW0 = 0x0990); +PROVIDE(CRC16DIW0_L = 0x0990); +PROVIDE(CRC16DIW0_H = 0x0991); +PROVIDE(CRC16DIRBW0 = 0x0996); +PROVIDE(CRC16DIRBW0_L = 0x0996); +PROVIDE(CRC16DIRBW0_H = 0x0997); +PROVIDE(CRC16INIRESW0 = 0x0998); +PROVIDE(CRC16INIRESW0_L = 0x0998); +PROVIDE(CRC16INIRESW0_H = 0x0999); +PROVIDE(CRC16RESRW0 = 0x099E); +PROVIDE(CRC16RESRW0_L = 0x099E); +PROVIDE(CRC16RESRW0_H = 0x099F); + + +/***************************************************************************** + CS +*****************************************************************************/ +PROVIDE(CSCTL0 = 0x0160); +PROVIDE(CSCTL0_L = 0x0160); +PROVIDE(CSCTL0_H = 0x0161); +PROVIDE(CSCTL1 = 0x0162); +PROVIDE(CSCTL1_L = 0x0162); +PROVIDE(CSCTL1_H = 0x0163); +PROVIDE(CSCTL2 = 0x0164); +PROVIDE(CSCTL2_L = 0x0164); +PROVIDE(CSCTL2_H = 0x0165); +PROVIDE(CSCTL3 = 0x0166); +PROVIDE(CSCTL3_L = 0x0166); +PROVIDE(CSCTL3_H = 0x0167); +PROVIDE(CSCTL4 = 0x0168); +PROVIDE(CSCTL4_L = 0x0168); +PROVIDE(CSCTL4_H = 0x0169); +PROVIDE(CSCTL5 = 0x016A); +PROVIDE(CSCTL5_L = 0x016A); +PROVIDE(CSCTL5_H = 0x016B); +PROVIDE(CSCTL6 = 0x016C); +PROVIDE(CSCTL6_L = 0x016C); +PROVIDE(CSCTL6_H = 0x016D); + + +/***************************************************************************** + DIO +*****************************************************************************/ +PROVIDE(PAIN = 0x0200); +PROVIDE(PAIN_L = 0x0200); +PROVIDE(PAIN_H = 0x0201); +PROVIDE(PAOUT = 0x0202); +PROVIDE(PAOUT_L = 0x0202); +PROVIDE(PAOUT_H = 0x0203); +PROVIDE(PADIR = 0x0204); +PROVIDE(PADIR_L = 0x0204); +PROVIDE(PADIR_H = 0x0205); +PROVIDE(PAREN = 0x0206); +PROVIDE(PAREN_L = 0x0206); +PROVIDE(PAREN_H = 0x0207); +PROVIDE(PASEL0 = 0x020A); +PROVIDE(PASEL0_L = 0x020A); +PROVIDE(PASEL0_H = 0x020B); +PROVIDE(PASEL1 = 0x020C); +PROVIDE(PASEL1_L = 0x020C); +PROVIDE(PASEL1_H = 0x020D); +PROVIDE(P1IV = 0x020E); +PROVIDE(P1IV_L = 0x020E); +PROVIDE(P1IV_H = 0x020F); +PROVIDE(PASELC = 0x0216); +PROVIDE(PASELC_L = 0x0216); +PROVIDE(PASELC_H = 0x0217); +PROVIDE(PAIES = 0x0218); +PROVIDE(PAIES_L = 0x0218); +PROVIDE(PAIES_H = 0x0219); +PROVIDE(PAIE = 0x021A); +PROVIDE(PAIE_L = 0x021A); +PROVIDE(PAIE_H = 0x021B); +PROVIDE(PAIFG = 0x021C); +PROVIDE(PAIFG_L = 0x021C); +PROVIDE(PAIFG_H = 0x021D); +PROVIDE(P2IV = 0x021E); +PROVIDE(P2IV_L = 0x021E); +PROVIDE(P2IV_H = 0x021F); +PROVIDE(PBIN = 0x0220); +PROVIDE(PBIN_L = 0x0220); +PROVIDE(PBIN_H = 0x0221); +PROVIDE(PBOUT = 0x0222); +PROVIDE(PBOUT_L = 0x0222); +PROVIDE(PBOUT_H = 0x0223); +PROVIDE(PBDIR = 0x0224); +PROVIDE(PBDIR_L = 0x0224); +PROVIDE(PBDIR_H = 0x0225); +PROVIDE(PBREN = 0x0226); +PROVIDE(PBREN_L = 0x0226); +PROVIDE(PBREN_H = 0x0227); +PROVIDE(PBSEL0 = 0x022A); +PROVIDE(PBSEL0_L = 0x022A); +PROVIDE(PBSEL0_H = 0x022B); +PROVIDE(PBSEL1 = 0x022C); +PROVIDE(PBSEL1_L = 0x022C); +PROVIDE(PBSEL1_H = 0x022D); +PROVIDE(P3IV = 0x022E); +PROVIDE(P3IV_L = 0x022E); +PROVIDE(P3IV_H = 0x022F); +PROVIDE(PBSELC = 0x0236); +PROVIDE(PBSELC_L = 0x0236); +PROVIDE(PBSELC_H = 0x0237); +PROVIDE(PBIES = 0x0238); +PROVIDE(PBIES_L = 0x0238); +PROVIDE(PBIES_H = 0x0239); +PROVIDE(PBIE = 0x023A); +PROVIDE(PBIE_L = 0x023A); +PROVIDE(PBIE_H = 0x023B); +PROVIDE(PBIFG = 0x023C); +PROVIDE(PBIFG_L = 0x023C); +PROVIDE(PBIFG_H = 0x023D); +PROVIDE(P4IV = 0x023E); +PROVIDE(P4IV_L = 0x023E); +PROVIDE(P4IV_H = 0x023F); +PROVIDE(PCIN = 0x0240); +PROVIDE(PCIN_L = 0x0240); +PROVIDE(PCIN_H = 0x0241); +PROVIDE(PCOUT = 0x0242); +PROVIDE(PCOUT_L = 0x0242); +PROVIDE(PCOUT_H = 0x0243); +PROVIDE(PCDIR = 0x0244); +PROVIDE(PCDIR_L = 0x0244); +PROVIDE(PCDIR_H = 0x0245); +PROVIDE(PCREN = 0x0246); +PROVIDE(PCREN_L = 0x0246); +PROVIDE(PCREN_H = 0x0247); +PROVIDE(PCSEL0 = 0x024A); +PROVIDE(PCSEL0_L = 0x024A); +PROVIDE(PCSEL0_H = 0x024B); +PROVIDE(PCSEL1 = 0x024C); +PROVIDE(PCSEL1_L = 0x024C); +PROVIDE(PCSEL1_H = 0x024D); +PROVIDE(P5IV = 0x024E); +PROVIDE(P5IV_L = 0x024E); +PROVIDE(P5IV_H = 0x024F); +PROVIDE(PCSELC = 0x0256); +PROVIDE(PCSELC_L = 0x0256); +PROVIDE(PCSELC_H = 0x0257); +PROVIDE(PCIES = 0x0258); +PROVIDE(PCIES_L = 0x0258); +PROVIDE(PCIES_H = 0x0259); +PROVIDE(PCIE = 0x025A); +PROVIDE(PCIE_L = 0x025A); +PROVIDE(PCIE_H = 0x025B); +PROVIDE(PCIFG = 0x025C); +PROVIDE(PCIFG_L = 0x025C); +PROVIDE(PCIFG_H = 0x025D); +PROVIDE(P6IV = 0x025E); +PROVIDE(P6IV_L = 0x025E); +PROVIDE(P6IV_H = 0x025F); +PROVIDE(PDIN = 0x0260); +PROVIDE(PDIN_L = 0x0260); +PROVIDE(PDIN_H = 0x0261); +PROVIDE(PDOUT = 0x0262); +PROVIDE(PDOUT_L = 0x0262); +PROVIDE(PDOUT_H = 0x0263); +PROVIDE(PDDIR = 0x0264); +PROVIDE(PDDIR_L = 0x0264); +PROVIDE(PDDIR_H = 0x0265); +PROVIDE(PDREN = 0x0266); +PROVIDE(PDREN_L = 0x0266); +PROVIDE(PDREN_H = 0x0267); +PROVIDE(PDSEL0 = 0x026A); +PROVIDE(PDSEL0_L = 0x026A); +PROVIDE(PDSEL0_H = 0x026B); +PROVIDE(PDSEL1 = 0x026C); +PROVIDE(PDSEL1_L = 0x026C); +PROVIDE(PDSEL1_H = 0x026D); +PROVIDE(P7IV = 0x026E); +PROVIDE(P7IV_L = 0x026E); +PROVIDE(P7IV_H = 0x026F); +PROVIDE(PDSELC = 0x0276); +PROVIDE(PDSELC_L = 0x0276); +PROVIDE(PDSELC_H = 0x0277); +PROVIDE(PDIES = 0x0278); +PROVIDE(PDIES_L = 0x0278); +PROVIDE(PDIES_H = 0x0279); +PROVIDE(PDIE = 0x027A); +PROVIDE(PDIE_L = 0x027A); +PROVIDE(PDIE_H = 0x027B); +PROVIDE(PDIFG = 0x027C); +PROVIDE(PDIFG_L = 0x027C); +PROVIDE(PDIFG_H = 0x027D); +PROVIDE(P8IV = 0x027E); +PROVIDE(P8IV_L = 0x027E); +PROVIDE(P8IV_H = 0x027F); +PROVIDE(PJIN = 0x0320); +PROVIDE(PJIN_L = 0x0320); +PROVIDE(PJIN_H = 0x0321); +PROVIDE(PJOUT = 0x0322); +PROVIDE(PJOUT_L = 0x0322); +PROVIDE(PJOUT_H = 0x0323); +PROVIDE(PJDIR = 0x0324); +PROVIDE(PJDIR_L = 0x0324); +PROVIDE(PJDIR_H = 0x0325); +PROVIDE(PJREN = 0x0326); +PROVIDE(PJREN_L = 0x0326); +PROVIDE(PJREN_H = 0x0327); +PROVIDE(PJSEL0 = 0x032A); +PROVIDE(PJSEL0_L = 0x032A); +PROVIDE(PJSEL0_H = 0x032B); +PROVIDE(PJSEL1 = 0x032C); +PROVIDE(PJSEL1_L = 0x032C); +PROVIDE(PJSEL1_H = 0x032D); +PROVIDE(PJSELC = 0x0336); +PROVIDE(PJSELC_L = 0x0336); +PROVIDE(PJSELC_H = 0x0337); +PROVIDE(P1IN = 0x0200); + +PROVIDE(P2IN = 0x0201); + +PROVIDE(P2OUT = 0x0203); + +PROVIDE(P1OUT = 0x0202); + +PROVIDE(P1DIR = 0x0204); + +PROVIDE(P2DIR = 0x0205); + +PROVIDE(P1REN = 0x0206); + +PROVIDE(P2REN = 0x0207); + +PROVIDE(P1SEL0 = 0x020A); + +PROVIDE(P2SEL0 = 0x020B); + +PROVIDE(P1SEL1 = 0x020C); + +PROVIDE(P2SEL1 = 0x020D); + +PROVIDE(P1SELC = 0x0216); + +PROVIDE(P2SELC = 0x0217); + +PROVIDE(P1IES = 0x0218); + +PROVIDE(P2IES = 0x0219); + +PROVIDE(P1IE = 0x021A); + +PROVIDE(P2IE = 0x021B); + +PROVIDE(P1IFG = 0x021C); + +PROVIDE(P2IFG = 0x021D); + +PROVIDE(P3IN = 0x0220); + +PROVIDE(P4IN = 0x0221); + +PROVIDE(P3OUT = 0x0222); + +PROVIDE(P4OUT = 0x0223); + +PROVIDE(P3DIR = 0x0224); + +PROVIDE(P4DIR = 0x0225); + +PROVIDE(P3REN = 0x0226); + +PROVIDE(P4REN = 0x0227); + +PROVIDE(P4SEL0 = 0x022B); + +PROVIDE(P3SEL0 = 0x022A); + +PROVIDE(P3SEL1 = 0x022C); + +PROVIDE(P4SEL1 = 0x022D); + +PROVIDE(P3SELC = 0x0236); + +PROVIDE(P4SELC = 0x0237); + +PROVIDE(P3IES = 0x0238); + +PROVIDE(P4IES = 0x0239); + +PROVIDE(P3IE = 0x023A); + +PROVIDE(P4IE = 0x023B); + +PROVIDE(P3IFG = 0x023C); + +PROVIDE(P4IFG = 0x023D); + +PROVIDE(P5IN = 0x0240); + +PROVIDE(P6IN = 0x0241); + +PROVIDE(P5OUT = 0x0242); + +PROVIDE(P6OUT = 0x0243); + +PROVIDE(P5DIR = 0x0244); + +PROVIDE(P6DIR = 0x0245); + +PROVIDE(P5REN = 0x0246); + +PROVIDE(P6REN = 0x0247); + +PROVIDE(P5SEL0 = 0x024A); + +PROVIDE(P6SEL0 = 0x024B); + +PROVIDE(P5SEL1 = 0x024C); + +PROVIDE(P6SEL1 = 0x024D); + +PROVIDE(P5SELC = 0x0256); + +PROVIDE(P6SELC = 0x0257); + +PROVIDE(P5IES = 0x0258); + +PROVIDE(P6IES = 0x0259); + +PROVIDE(P5IE = 0x025A); + +PROVIDE(P6IE = 0x025B); + +PROVIDE(P5IFG = 0x025C); + +PROVIDE(P6IFG = 0x025D); + +PROVIDE(P7IN = 0x0260); + +PROVIDE(P8IN = 0x0261); + +PROVIDE(P7OUT = 0x0262); + +PROVIDE(P8OUT = 0x0263); + +PROVIDE(P7DIR = 0x0264); + +PROVIDE(P8DIR = 0x0265); + +PROVIDE(P7REN = 0x0266); + +PROVIDE(P8REN = 0x0267); + +PROVIDE(P7SEL0 = 0x026A); + +PROVIDE(P8SEL0 = 0x026B); + +PROVIDE(P7SEL1 = 0x026C); + +PROVIDE(P8SEL1 = 0x026D); + +PROVIDE(P7SELC = 0x0276); + +PROVIDE(P8SELC = 0x0277); + +PROVIDE(P7IES = 0x0278); + +PROVIDE(P8IES = 0x0279); + +PROVIDE(P7IE = 0x027A); + +PROVIDE(P8IE = 0x027B); + +PROVIDE(P7IFG = 0x027C); + +PROVIDE(P8IFG = 0x027D); + + + +/***************************************************************************** + DMA +*****************************************************************************/ +PROVIDE(DMACTL0 = 0x0500); +PROVIDE(DMACTL0_L = 0x0500); +PROVIDE(DMACTL0_H = 0x0501); +PROVIDE(DMACTL1 = 0x0502); +PROVIDE(DMACTL1_L = 0x0502); +PROVIDE(DMACTL1_H = 0x0503); +PROVIDE(DMACTL2 = 0x0504); +PROVIDE(DMACTL2_L = 0x0504); +PROVIDE(DMACTL2_H = 0x0505); +PROVIDE(DMACTL4 = 0x0508); +PROVIDE(DMACTL4_L = 0x0508); +PROVIDE(DMACTL4_H = 0x0509); +PROVIDE(DMAIV = 0x050E); +PROVIDE(DMAIV_L = 0x050E); +PROVIDE(DMAIV_H = 0x050F); +PROVIDE(DMA0CTL = 0x0510); +PROVIDE(DMA0CTL_L = 0x0510); +PROVIDE(DMA0CTL_H = 0x0511); +PROVIDE(DMA0SA = 0x0512); +PROVIDE(DMA0SAL = 0x0512); +PROVIDE(DMA0SAH = 0x0514); + +PROVIDE(DMA0DA = 0x0516); +PROVIDE(DMA0DAL = 0x0516); +PROVIDE(DMA0DAH = 0x0518); + +PROVIDE(DMA0SZ = 0x051A); +PROVIDE(DMA0SZ_L = 0x051A); +PROVIDE(DMA0SZ_H = 0x051B); +PROVIDE(DMA1CTL = 0x0520); +PROVIDE(DMA1CTL_L = 0x0520); +PROVIDE(DMA1CTL_H = 0x0521); +PROVIDE(DMA1SA = 0x0522); +PROVIDE(DMA1SAL = 0x0522); +PROVIDE(DMA1SAH = 0x0524); + +PROVIDE(DMA1DA = 0x0526); +PROVIDE(DMA1DAL = 0x0526); +PROVIDE(DMA1DAH = 0x0528); + +PROVIDE(DMA1SZ = 0x052A); +PROVIDE(DMA1SZ_L = 0x052A); +PROVIDE(DMA1SZ_H = 0x052B); +PROVIDE(DMA2CTL = 0x0530); +PROVIDE(DMA2CTL_L = 0x0530); +PROVIDE(DMA2CTL_H = 0x0531); +PROVIDE(DMA2SA = 0x0532); +PROVIDE(DMA2SAL = 0x0532); +PROVIDE(DMA2SAH = 0x0534); + +PROVIDE(DMA2DA = 0x0536); +PROVIDE(DMA2DAL = 0x0536); +PROVIDE(DMA2DAH = 0x0538); + +PROVIDE(DMA2SZ = 0x053A); +PROVIDE(DMA2SZ_L = 0x053A); +PROVIDE(DMA2SZ_H = 0x053B); +PROVIDE(DMA3CTL = 0x0540); +PROVIDE(DMA3CTL_L = 0x0540); +PROVIDE(DMA3CTL_H = 0x0541); +PROVIDE(DMA3SA = 0x0542); +PROVIDE(DMA3SAL = 0x0542); +PROVIDE(DMA3SAH = 0x0544); + +PROVIDE(DMA3DA = 0x0546); +PROVIDE(DMA3DAL = 0x0546); +PROVIDE(DMA3DAH = 0x0548); + +PROVIDE(DMA3SZ = 0x054A); +PROVIDE(DMA3SZ_L = 0x054A); +PROVIDE(DMA3SZ_H = 0x054B); +PROVIDE(DMA4CTL = 0x0550); +PROVIDE(DMA4CTL_L = 0x0550); +PROVIDE(DMA4CTL_H = 0x0551); +PROVIDE(DMA4SA = 0x0552); +PROVIDE(DMA4SAL = 0x0552); +PROVIDE(DMA4SAH = 0x0554); + +PROVIDE(DMA4DA = 0x0556); +PROVIDE(DMA4DAL = 0x0556); +PROVIDE(DMA4DAH = 0x0558); + +PROVIDE(DMA4SZ = 0x055A); +PROVIDE(DMA4SZ_L = 0x055A); +PROVIDE(DMA4SZ_H = 0x055B); +PROVIDE(DMA5CTL = 0x0560); +PROVIDE(DMA5CTL_L = 0x0560); +PROVIDE(DMA5CTL_H = 0x0561); +PROVIDE(DMA5SA = 0x0562); +PROVIDE(DMA5SAL = 0x0562); +PROVIDE(DMA5SAH = 0x0564); + +PROVIDE(DMA5DA = 0x0566); +PROVIDE(DMA5DAL = 0x0566); +PROVIDE(DMA5DAH = 0x0568); + +PROVIDE(DMA5SZ = 0x056A); +PROVIDE(DMA5SZ_L = 0x056A); +PROVIDE(DMA5SZ_H = 0x056B); + + +/***************************************************************************** + FRCTL_A +*****************************************************************************/ +PROVIDE(FRCTL0 = 0x0140); +PROVIDE(FRCTL0_L = 0x0140); +PROVIDE(FRCTL0_H = 0x0141); +PROVIDE(GCCTL0 = 0x0144); +PROVIDE(GCCTL0_L = 0x0144); +PROVIDE(GCCTL0_H = 0x0145); +PROVIDE(GCCTL1 = 0x0146); +PROVIDE(GCCTL1_L = 0x0146); +PROVIDE(GCCTL1_H = 0x0147); + + +/***************************************************************************** + LEA +*****************************************************************************/ +PROVIDE(LEACAP = 0x0A80); +PROVIDE(LEACAPL = 0x0A80); +PROVIDE(LEACAPH = 0x0A82); + +PROVIDE(LEACNF0 = 0x0A84); +PROVIDE(LEACNF0L = 0x0A84); +PROVIDE(LEACNF0H = 0x0A86); + +PROVIDE(LEACNF1 = 0x0A88); +PROVIDE(LEACNF1L = 0x0A88); +PROVIDE(LEACNF1H = 0x0A8A); + +PROVIDE(LEACNF2 = 0x0A8C); +PROVIDE(LEACNF2L = 0x0A8C); +PROVIDE(LEACNF2H = 0x0A8E); + +PROVIDE(LEAMB = 0x0A90); +PROVIDE(LEAMBL = 0x0A90); +PROVIDE(LEAMBH = 0x0A92); + +PROVIDE(LEAMT = 0x0A94); +PROVIDE(LEAMTL = 0x0A94); +PROVIDE(LEAMTH = 0x0A96); + +PROVIDE(LEACMA = 0x0A98); +PROVIDE(LEACMAL = 0x0A98); +PROVIDE(LEACMAH = 0x0A9A); + +PROVIDE(LEACMCTL = 0x0A9C); +PROVIDE(LEACMCTLL = 0x0A9C); +PROVIDE(LEACMCTLH = 0x0A9E); + +PROVIDE(LEACMDSTAT = 0x0AA8); +PROVIDE(LEACMDSTATL = 0x0AA8); +PROVIDE(LEACMDSTATH = 0x0AAA); + +PROVIDE(LEAS1STAT = 0x0AAC); +PROVIDE(LEAS1STATL = 0x0AAC); +PROVIDE(LEAS1STATH = 0x0AAE); + +PROVIDE(LEAS0STAT = 0x0AB0); +PROVIDE(LEAS0STATL = 0x0AB0); +PROVIDE(LEAS0STATH = 0x0AB2); + +PROVIDE(LEADSTSTAT = 0x0AB4); +PROVIDE(LEADSTSTATL = 0x0AB4); +PROVIDE(LEADSTSTATH = 0x0AB6); + +PROVIDE(LEAPMCTL = 0x0AC0); +PROVIDE(LEAPMCTLL = 0x0AC0); +PROVIDE(LEAPMCTLH = 0x0AC2); + +PROVIDE(LEAPMDST = 0x0AC4); +PROVIDE(LEAPMDSTL = 0x0AC4); +PROVIDE(LEAPMDSTH = 0x0AC6); + +PROVIDE(LEAPMS1 = 0x0AC8); +PROVIDE(LEAPMS1L = 0x0AC8); +PROVIDE(LEAPMS1H = 0x0ACA); + +PROVIDE(LEAPMS0 = 0x0ACC); +PROVIDE(LEAPMS0L = 0x0ACC); +PROVIDE(LEAPMS0H = 0x0ACE); + +PROVIDE(LEAPMCB = 0x0AD0); +PROVIDE(LEAPMCBL = 0x0AD0); +PROVIDE(LEAPMCBH = 0x0AD2); + +PROVIDE(LEAIFGSET = 0x0AF0); +PROVIDE(LEAIFGSETL = 0x0AF0); +PROVIDE(LEAIFGSETH = 0x0AF2); + +PROVIDE(LEAIE = 0x0AF4); +PROVIDE(LEAIEL = 0x0AF4); +PROVIDE(LEAIEH = 0x0AF6); + +PROVIDE(LEAIFG = 0x0AF8); +PROVIDE(LEAIFGL = 0x0AF8); +PROVIDE(LEAIFGH = 0x0AFA); + +PROVIDE(LEAIV = 0x0AFC); +PROVIDE(LEAIVL = 0x0AFC); +PROVIDE(LEAIVH = 0x0AFE); + + + +/***************************************************************************** + MPU +*****************************************************************************/ +PROVIDE(MPUCTL0 = 0x05A0); +PROVIDE(MPUCTL0_L = 0x05A0); +PROVIDE(MPUCTL0_H = 0x05A1); +PROVIDE(MPUCTL1 = 0x05A2); +PROVIDE(MPUCTL1_L = 0x05A2); +PROVIDE(MPUCTL1_H = 0x05A3); +PROVIDE(MPUSEGB2 = 0x05A4); +PROVIDE(MPUSEGB2_L = 0x05A4); +PROVIDE(MPUSEGB2_H = 0x05A5); +PROVIDE(MPUSEGB1 = 0x05A6); +PROVIDE(MPUSEGB1_L = 0x05A6); +PROVIDE(MPUSEGB1_H = 0x05A7); +PROVIDE(MPUSAM = 0x05A8); +PROVIDE(MPUSAM_L = 0x05A8); +PROVIDE(MPUSAM_H = 0x05A9); +PROVIDE(MPUIPC0 = 0x05AA); +PROVIDE(MPUIPC0_L = 0x05AA); +PROVIDE(MPUIPC0_H = 0x05AB); +PROVIDE(MPUIPSEGB2 = 0x05AC); +PROVIDE(MPUIPSEGB2_L = 0x05AC); +PROVIDE(MPUIPSEGB2_H = 0x05AD); +PROVIDE(MPUIPSEGB1 = 0x05AE); +PROVIDE(MPUIPSEGB1_L = 0x05AE); +PROVIDE(MPUIPSEGB1_H = 0x05AF); + + +/***************************************************************************** + MPY32 +*****************************************************************************/ +PROVIDE(MPY = 0x04C0); +PROVIDE(MPY_L = 0x04C0); +PROVIDE(MPY_H = 0x04C1); +PROVIDE(MPYS = 0x04C2); +PROVIDE(MPYS_L = 0x04C2); +PROVIDE(MPYS_H = 0x04C3); +PROVIDE(MAC = 0x04C4); +PROVIDE(MAC_L = 0x04C4); +PROVIDE(MAC_H = 0x04C5); +PROVIDE(MACS = 0x04C6); +PROVIDE(MACS_L = 0x04C6); +PROVIDE(MACS_H = 0x04C7); +PROVIDE(OP2 = 0x04C8); +PROVIDE(OP2_L = 0x04C8); +PROVIDE(OP2_H = 0x04C9); +PROVIDE(RESLO = 0x04CA); +PROVIDE(RESLO_L = 0x04CA); +PROVIDE(RESLO_H = 0x04CB); +PROVIDE(RESHI = 0x04CC); +PROVIDE(RESHI_L = 0x04CC); +PROVIDE(RESHI_H = 0x04CD); +PROVIDE(SUMEXT = 0x04CE); +PROVIDE(SUMEXT_L = 0x04CE); +PROVIDE(SUMEXT_H = 0x04CF); +PROVIDE(MPY32L = 0x04D0); +PROVIDE(MPY32L_L = 0x04D0); +PROVIDE(MPY32L_H = 0x04D1); +PROVIDE(MPY32H = 0x04D2); +PROVIDE(MPY32H_L = 0x04D2); +PROVIDE(MPY32H_H = 0x04D3); +PROVIDE(MPYS32L = 0x04D4); +PROVIDE(MPYS32L_L = 0x04D4); +PROVIDE(MPYS32L_H = 0x04D5); +PROVIDE(MPYS32H = 0x04D6); +PROVIDE(MPYS32H_L = 0x04D6); +PROVIDE(MPYS32H_H = 0x04D7); +PROVIDE(MAC32L = 0x04D8); +PROVIDE(MAC32L_L = 0x04D8); +PROVIDE(MAC32L_H = 0x04D9); +PROVIDE(MAC32H = 0x04DA); +PROVIDE(MAC32H_L = 0x04DA); +PROVIDE(MAC32H_H = 0x04DB); +PROVIDE(MACS32L = 0x04DC); +PROVIDE(MACS32L_L = 0x04DC); +PROVIDE(MACS32L_H = 0x04DD); +PROVIDE(MACS32H = 0x04DE); +PROVIDE(MACS32H_L = 0x04DE); +PROVIDE(MACS32H_H = 0x04DF); +PROVIDE(OP2L = 0x04E0); +PROVIDE(OP2L_L = 0x04E0); +PROVIDE(OP2L_H = 0x04E1); +PROVIDE(OP2H = 0x04E2); +PROVIDE(OP2H_L = 0x04E2); +PROVIDE(OP2H_H = 0x04E3); +PROVIDE(RES0 = 0x04E4); +PROVIDE(RES0_L = 0x04E4); +PROVIDE(RES0_H = 0x04E5); +PROVIDE(RES1 = 0x04E6); +PROVIDE(RES1_L = 0x04E6); +PROVIDE(RES1_H = 0x04E7); +PROVIDE(RES2 = 0x04E8); +PROVIDE(RES2_L = 0x04E8); +PROVIDE(RES2_H = 0x04E9); +PROVIDE(RES3 = 0x04EA); +PROVIDE(RES3_L = 0x04EA); +PROVIDE(RES3_H = 0x04EB); +PROVIDE(MPY32CTL0 = 0x04EC); +PROVIDE(MPY32CTL0_L = 0x04EC); +PROVIDE(MPY32CTL0_H = 0x04ED); + + +/***************************************************************************** + PMM +*****************************************************************************/ +PROVIDE(PMMCTL0 = 0x0120); +PROVIDE(PMMCTL0_L = 0x0120); +PROVIDE(PMMCTL0_H = 0x0121); +PROVIDE(PMMIFG = 0x012A); +PROVIDE(PMMIFG_L = 0x012A); +PROVIDE(PMMIFG_H = 0x012B); +PROVIDE(PM5CTL0 = 0x0130); +PROVIDE(PM5CTL0_L = 0x0130); +PROVIDE(PM5CTL0_H = 0x0131); + + +/***************************************************************************** + RAMCTL +*****************************************************************************/ +PROVIDE(RCCTL0 = 0x0158); +PROVIDE(RCCTL0_L = 0x0158); +PROVIDE(RCCTL0_H = 0x0159); + + +/***************************************************************************** + REF_A +*****************************************************************************/ +PROVIDE(REFCTL0 = 0x01B0); +PROVIDE(REFCTL0_L = 0x01B0); +PROVIDE(REFCTL0_H = 0x01B1); + + +/***************************************************************************** + RTC_C +*****************************************************************************/ +PROVIDE(RTCCTL0 = 0x04A0); +PROVIDE(RTCCTL0_L = 0x04A0); +PROVIDE(RTCCTL0_H = 0x04A1); +PROVIDE(RTCCTL13 = 0x04A2); +PROVIDE(RTCCTL13_L = 0x04A2); +PROVIDE(RTCCTL13_H = 0x04A3); +PROVIDE(RTCOCAL = 0x04A4); +PROVIDE(RTCOCAL_L = 0x04A4); +PROVIDE(RTCOCAL_H = 0x04A5); +PROVIDE(RTCTCMP = 0x04A6); +PROVIDE(RTCTCMP_L = 0x04A6); +PROVIDE(RTCTCMP_H = 0x04A7); +PROVIDE(RTCPS0CTL = 0x04A8); +PROVIDE(RTCPS0CTL_L = 0x04A8); +PROVIDE(RTCPS0CTL_H = 0x04A9); +PROVIDE(RTCPS1CTL = 0x04AA); +PROVIDE(RTCPS1CTL_L = 0x04AA); +PROVIDE(RTCPS1CTL_H = 0x04AB); +PROVIDE(RTCPS = 0x04AC); +PROVIDE(RTCPS_L = 0x04AC); +PROVIDE(RTCPS_H = 0x04AD); +PROVIDE(RTCIV = 0x04AE); +PROVIDE(RTCIV_L = 0x04AE); +PROVIDE(RTCIV_H = 0x04AF); +PROVIDE(RTCTIM0 = 0x04B0); +PROVIDE(RTCTIM0_L = 0x04B0); +PROVIDE(RTCTIM0_H = 0x04B1); +PROVIDE(RTCCNT12 = 0x04B0); +PROVIDE(RTCCNT12_L = 0x04B0); +PROVIDE(RTCCNT12_H = 0x04B1); +PROVIDE(RTCTIM1 = 0x04B2); +PROVIDE(RTCTIM1_L = 0x04B2); +PROVIDE(RTCTIM1_H = 0x04B3); +PROVIDE(RTCCNT34 = 0x04B2); +PROVIDE(RTCCNT34_L = 0x04B2); +PROVIDE(RTCCNT34_H = 0x04B3); +PROVIDE(RTCDATE = 0x04B4); +PROVIDE(RTCDATE_L = 0x04B4); +PROVIDE(RTCDATE_H = 0x04B5); +PROVIDE(RTCYEAR = 0x04B6); +PROVIDE(RTCYEAR_L = 0x04B6); +PROVIDE(RTCYEAR_H = 0x04B7); +PROVIDE(RTCAMINHR = 0x04B8); +PROVIDE(RTCAMINHR_L = 0x04B8); +PROVIDE(RTCAMINHR_H = 0x04B9); +PROVIDE(RTCADOWDAY = 0x04BA); +PROVIDE(RTCADOWDAY_L = 0x04BA); +PROVIDE(RTCADOWDAY_H = 0x04BB); +PROVIDE(BIN2BCD = 0x04BC); +PROVIDE(BIN2BCD_L = 0x04BC); +PROVIDE(BIN2BCD_H = 0x04BD); +PROVIDE(BCD2BIN = 0x04BE); +PROVIDE(BCD2BIN_L = 0x04BE); +PROVIDE(BCD2BIN_H = 0x04BF); +PROVIDE(RT0PS = 0x04AC); + +PROVIDE(RT1PS = 0x04AD); + +PROVIDE(RTCCNT1 = 0x04B0); + +PROVIDE(RTCCNT2 = 0x04B1); + +PROVIDE(RTCCNT3 = 0x04B2); + +PROVIDE(RTCCNT4 = 0x04B3); + + + +/***************************************************************************** + SFR +*****************************************************************************/ +PROVIDE(SFRIE1 = 0x0100); +PROVIDE(SFRIE1_L = 0x0100); +PROVIDE(SFRIE1_H = 0x0101); +PROVIDE(SFRIFG1 = 0x0102); +PROVIDE(SFRIFG1_L = 0x0102); +PROVIDE(SFRIFG1_H = 0x0103); +PROVIDE(SFRRPCR = 0x0104); +PROVIDE(SFRRPCR_L = 0x0104); +PROVIDE(SFRRPCR_H = 0x0105); + + +/***************************************************************************** + SYS +*****************************************************************************/ +PROVIDE(SYSCTL = 0x0180); +PROVIDE(SYSCTL_L = 0x0180); +PROVIDE(SYSCTL_H = 0x0181); +PROVIDE(SYSJMBC = 0x0186); +PROVIDE(SYSJMBC_L = 0x0186); +PROVIDE(SYSJMBC_H = 0x0187); +PROVIDE(SYSJMBI0 = 0x0188); +PROVIDE(SYSJMBI0_L = 0x0188); +PROVIDE(SYSJMBI0_H = 0x0189); +PROVIDE(SYSJMBI1 = 0x018A); +PROVIDE(SYSJMBI1_L = 0x018A); +PROVIDE(SYSJMBI1_H = 0x018B); +PROVIDE(SYSJMBO0 = 0x018C); +PROVIDE(SYSJMBO0_L = 0x018C); +PROVIDE(SYSJMBO0_H = 0x018D); +PROVIDE(SYSJMBO1 = 0x018E); +PROVIDE(SYSJMBO1_L = 0x018E); +PROVIDE(SYSJMBO1_H = 0x018F); +PROVIDE(SYSUNIV = 0x019A); +PROVIDE(SYSUNIV_L = 0x019A); +PROVIDE(SYSUNIV_H = 0x019B); +PROVIDE(SYSSNIV = 0x019C); +PROVIDE(SYSSNIV_L = 0x019C); +PROVIDE(SYSSNIV_H = 0x019D); +PROVIDE(SYSRSTIV = 0x019E); +PROVIDE(SYSRSTIV_L = 0x019E); +PROVIDE(SYSRSTIV_H = 0x019F); + + +/***************************************************************************** + TA0 +*****************************************************************************/ +PROVIDE(TA0CTL = 0x0340); +PROVIDE(TA0CTL_L = 0x0340); +PROVIDE(TA0CTL_H = 0x0341); +PROVIDE(TA0CCTL0 = 0x0342); +PROVIDE(TA0CCTL0_L = 0x0342); +PROVIDE(TA0CCTL0_H = 0x0343); +PROVIDE(TA0CCTL1 = 0x0344); +PROVIDE(TA0CCTL1_L = 0x0344); +PROVIDE(TA0CCTL1_H = 0x0345); +PROVIDE(TA0CCTL2 = 0x0346); +PROVIDE(TA0CCTL2_L = 0x0346); +PROVIDE(TA0CCTL2_H = 0x0347); +PROVIDE(TA0R = 0x0350); +PROVIDE(TA0R_L = 0x0350); +PROVIDE(TA0R_H = 0x0351); +PROVIDE(TA0CCR0 = 0x0352); +PROVIDE(TA0CCR0_L = 0x0352); +PROVIDE(TA0CCR0_H = 0x0353); +PROVIDE(TA0CCR1 = 0x0354); +PROVIDE(TA0CCR1_L = 0x0354); +PROVIDE(TA0CCR1_H = 0x0355); +PROVIDE(TA0CCR2 = 0x0356); +PROVIDE(TA0CCR2_L = 0x0356); +PROVIDE(TA0CCR2_H = 0x0357); +PROVIDE(TA0EX0 = 0x0360); +PROVIDE(TA0EX0_L = 0x0360); +PROVIDE(TA0EX0_H = 0x0361); +PROVIDE(TA0IV = 0x036E); +PROVIDE(TA0IV_L = 0x036E); +PROVIDE(TA0IV_H = 0x036F); + + +/***************************************************************************** + TA1 +*****************************************************************************/ +PROVIDE(TA1CTL = 0x0380); +PROVIDE(TA1CTL_L = 0x0380); +PROVIDE(TA1CTL_H = 0x0381); +PROVIDE(TA1CCTL0 = 0x0382); +PROVIDE(TA1CCTL0_L = 0x0382); +PROVIDE(TA1CCTL0_H = 0x0383); +PROVIDE(TA1CCTL1 = 0x0384); +PROVIDE(TA1CCTL1_L = 0x0384); +PROVIDE(TA1CCTL1_H = 0x0385); +PROVIDE(TA1CCTL2 = 0x0386); +PROVIDE(TA1CCTL2_L = 0x0386); +PROVIDE(TA1CCTL2_H = 0x0387); +PROVIDE(TA1R = 0x0390); +PROVIDE(TA1R_L = 0x0390); +PROVIDE(TA1R_H = 0x0391); +PROVIDE(TA1CCR0 = 0x0392); +PROVIDE(TA1CCR0_L = 0x0392); +PROVIDE(TA1CCR0_H = 0x0393); +PROVIDE(TA1CCR1 = 0x0394); +PROVIDE(TA1CCR1_L = 0x0394); +PROVIDE(TA1CCR1_H = 0x0395); +PROVIDE(TA1CCR2 = 0x0396); +PROVIDE(TA1CCR2_L = 0x0396); +PROVIDE(TA1CCR2_H = 0x0397); +PROVIDE(TA1EX0 = 0x03A0); +PROVIDE(TA1EX0_L = 0x03A0); +PROVIDE(TA1EX0_H = 0x03A1); +PROVIDE(TA1IV = 0x03AE); +PROVIDE(TA1IV_L = 0x03AE); +PROVIDE(TA1IV_H = 0x03AF); + + +/***************************************************************************** + TA2 +*****************************************************************************/ +PROVIDE(TA2CTL = 0x0400); +PROVIDE(TA2CTL_L = 0x0400); +PROVIDE(TA2CTL_H = 0x0401); +PROVIDE(TA2CCTL0 = 0x0402); +PROVIDE(TA2CCTL0_L = 0x0402); +PROVIDE(TA2CCTL0_H = 0x0403); +PROVIDE(TA2CCTL1 = 0x0404); +PROVIDE(TA2CCTL1_L = 0x0404); +PROVIDE(TA2CCTL1_H = 0x0405); +PROVIDE(TA2R = 0x0410); +PROVIDE(TA2R_L = 0x0410); +PROVIDE(TA2R_H = 0x0411); +PROVIDE(TA2CCR0 = 0x0412); +PROVIDE(TA2CCR0_L = 0x0412); +PROVIDE(TA2CCR0_H = 0x0413); +PROVIDE(TA2CCR1 = 0x0414); +PROVIDE(TA2CCR1_L = 0x0414); +PROVIDE(TA2CCR1_H = 0x0415); +PROVIDE(TA2EX0 = 0x0420); +PROVIDE(TA2EX0_L = 0x0420); +PROVIDE(TA2EX0_H = 0x0421); +PROVIDE(TA2IV = 0x042E); +PROVIDE(TA2IV_L = 0x042E); +PROVIDE(TA2IV_H = 0x042F); + + +/***************************************************************************** + TA3 +*****************************************************************************/ +PROVIDE(TA3CTL = 0x0440); +PROVIDE(TA3CTL_L = 0x0440); +PROVIDE(TA3CTL_H = 0x0441); +PROVIDE(TA3CCTL0 = 0x0442); +PROVIDE(TA3CCTL0_L = 0x0442); +PROVIDE(TA3CCTL0_H = 0x0443); +PROVIDE(TA3CCTL1 = 0x0444); +PROVIDE(TA3CCTL1_L = 0x0444); +PROVIDE(TA3CCTL1_H = 0x0445); +PROVIDE(TA3R = 0x0450); +PROVIDE(TA3R_L = 0x0450); +PROVIDE(TA3R_H = 0x0451); +PROVIDE(TA3CCR0 = 0x0452); +PROVIDE(TA3CCR0_L = 0x0452); +PROVIDE(TA3CCR0_H = 0x0453); +PROVIDE(TA3CCR1 = 0x0454); +PROVIDE(TA3CCR1_L = 0x0454); +PROVIDE(TA3CCR1_H = 0x0455); +PROVIDE(TA3EX0 = 0x0460); +PROVIDE(TA3EX0_L = 0x0460); +PROVIDE(TA3EX0_H = 0x0461); +PROVIDE(TA3IV = 0x046E); +PROVIDE(TA3IV_L = 0x046E); +PROVIDE(TA3IV_H = 0x046F); + + +/***************************************************************************** + TA4 +*****************************************************************************/ +PROVIDE(TA4CTL = 0x07C0); +PROVIDE(TA4CTL_L = 0x07C0); +PROVIDE(TA4CTL_H = 0x07C1); +PROVIDE(TA4CCTL0 = 0x07C2); +PROVIDE(TA4CCTL0_L = 0x07C2); +PROVIDE(TA4CCTL0_H = 0x07C3); +PROVIDE(TA4CCTL1 = 0x07C4); +PROVIDE(TA4CCTL1_L = 0x07C4); +PROVIDE(TA4CCTL1_H = 0x07C5); +PROVIDE(TA4CCTL2 = 0x07C6); +PROVIDE(TA4CCTL2_L = 0x07C6); +PROVIDE(TA4CCTL2_H = 0x07C7); +PROVIDE(TA4R = 0x07D0); +PROVIDE(TA4R_L = 0x07D0); +PROVIDE(TA4R_H = 0x07D1); +PROVIDE(TA4CCR0 = 0x07D2); +PROVIDE(TA4CCR0_L = 0x07D2); +PROVIDE(TA4CCR0_H = 0x07D3); +PROVIDE(TA4CCR1 = 0x07D4); +PROVIDE(TA4CCR1_L = 0x07D4); +PROVIDE(TA4CCR1_H = 0x07D5); +PROVIDE(TA4CCR2 = 0x07D6); +PROVIDE(TA4CCR2_L = 0x07D6); +PROVIDE(TA4CCR2_H = 0x07D7); +PROVIDE(TA4EX0 = 0x07E0); +PROVIDE(TA4EX0_L = 0x07E0); +PROVIDE(TA4EX0_H = 0x07E1); +PROVIDE(TA4IV = 0x07EE); +PROVIDE(TA4IV_L = 0x07EE); +PROVIDE(TA4IV_H = 0x07EF); + + +/***************************************************************************** + TB0 +*****************************************************************************/ +PROVIDE(TB0CTL = 0x03C0); +PROVIDE(TB0CTL_L = 0x03C0); +PROVIDE(TB0CTL_H = 0x03C1); +PROVIDE(TB0CCTL0 = 0x03C2); +PROVIDE(TB0CCTL0_L = 0x03C2); +PROVIDE(TB0CCTL0_H = 0x03C3); +PROVIDE(TB0CCTL1 = 0x03C4); +PROVIDE(TB0CCTL1_L = 0x03C4); +PROVIDE(TB0CCTL1_H = 0x03C5); +PROVIDE(TB0CCTL2 = 0x03C6); +PROVIDE(TB0CCTL2_L = 0x03C6); +PROVIDE(TB0CCTL2_H = 0x03C7); +PROVIDE(TB0CCTL3 = 0x03C8); +PROVIDE(TB0CCTL3_L = 0x03C8); +PROVIDE(TB0CCTL3_H = 0x03C9); +PROVIDE(TB0CCTL4 = 0x03CA); +PROVIDE(TB0CCTL4_L = 0x03CA); +PROVIDE(TB0CCTL4_H = 0x03CB); +PROVIDE(TB0CCTL5 = 0x03CC); +PROVIDE(TB0CCTL5_L = 0x03CC); +PROVIDE(TB0CCTL5_H = 0x03CD); +PROVIDE(TB0CCTL6 = 0x03CE); +PROVIDE(TB0CCTL6_L = 0x03CE); +PROVIDE(TB0CCTL6_H = 0x03CF); +PROVIDE(TB0R = 0x03D0); +PROVIDE(TB0R_L = 0x03D0); +PROVIDE(TB0R_H = 0x03D1); +PROVIDE(TB0CCR0 = 0x03D2); +PROVIDE(TB0CCR0_L = 0x03D2); +PROVIDE(TB0CCR0_H = 0x03D3); +PROVIDE(TB0CCR1 = 0x03D4); +PROVIDE(TB0CCR1_L = 0x03D4); +PROVIDE(TB0CCR1_H = 0x03D5); +PROVIDE(TB0CCR2 = 0x03D6); +PROVIDE(TB0CCR2_L = 0x03D6); +PROVIDE(TB0CCR2_H = 0x03D7); +PROVIDE(TB0CCR3 = 0x03D8); +PROVIDE(TB0CCR3_L = 0x03D8); +PROVIDE(TB0CCR3_H = 0x03D9); +PROVIDE(TB0CCR4 = 0x03DA); +PROVIDE(TB0CCR4_L = 0x03DA); +PROVIDE(TB0CCR4_H = 0x03DB); +PROVIDE(TB0CCR5 = 0x03DC); +PROVIDE(TB0CCR5_L = 0x03DC); +PROVIDE(TB0CCR5_H = 0x03DD); +PROVIDE(TB0CCR6 = 0x03DE); +PROVIDE(TB0CCR6_L = 0x03DE); +PROVIDE(TB0CCR6_H = 0x03DF); +PROVIDE(TB0EX0 = 0x03E0); +PROVIDE(TB0EX0_L = 0x03E0); +PROVIDE(TB0EX0_H = 0x03E1); +PROVIDE(TB0IV = 0x03EE); +PROVIDE(TB0IV_L = 0x03EE); +PROVIDE(TB0IV_H = 0x03EF); + + +/***************************************************************************** + WDT_A +*****************************************************************************/ +PROVIDE(WDTCTL = 0x015C); +PROVIDE(WDTCTL_L = 0x015C); +PROVIDE(WDTCTL_H = 0x015D); + + +/***************************************************************************** + eUSCI_A0 +*****************************************************************************/ +PROVIDE(UCA0CTLW0 = 0x05C0); +PROVIDE(UCA0CTLW0_L = 0x05C0); +PROVIDE(UCA0CTLW0_H = 0x05C1); +PROVIDE(UCA0CTLW1 = 0x05C2); +PROVIDE(UCA0CTLW1_L = 0x05C2); +PROVIDE(UCA0CTLW1_H = 0x05C3); +PROVIDE(UCA0BRW = 0x05C6); +PROVIDE(UCA0BRW_L = 0x05C6); +PROVIDE(UCA0BRW_H = 0x05C7); +PROVIDE(UCA0MCTLW = 0x05C8); +PROVIDE(UCA0MCTLW_L = 0x05C8); +PROVIDE(UCA0MCTLW_H = 0x05C9); +PROVIDE(UCA0STATW = 0x05CA); +PROVIDE(UCA0STATW_L = 0x05CA); +PROVIDE(UCA0STATW_H = 0x05CB); +PROVIDE(UCA0RXBUF = 0x05CC); +PROVIDE(UCA0RXBUF_L = 0x05CC); +PROVIDE(UCA0RXBUF_H = 0x05CD); +PROVIDE(UCA0TXBUF = 0x05CE); +PROVIDE(UCA0TXBUF_L = 0x05CE); +PROVIDE(UCA0TXBUF_H = 0x05CF); +PROVIDE(UCA0ABCTL = 0x05D0); +PROVIDE(UCA0ABCTL_L = 0x05D0); +PROVIDE(UCA0ABCTL_H = 0x05D1); +PROVIDE(UCA0IRCTL = 0x05D2); +PROVIDE(UCA0IRCTL_L = 0x05D2); +PROVIDE(UCA0IRCTL_H = 0x05D3); +PROVIDE(UCA0IE = 0x05DA); +PROVIDE(UCA0IE_L = 0x05DA); +PROVIDE(UCA0IE_H = 0x05DB); +PROVIDE(UCA0IFG = 0x05DC); +PROVIDE(UCA0IFG_L = 0x05DC); +PROVIDE(UCA0IFG_H = 0x05DD); +PROVIDE(UCA0IV = 0x05DE); +PROVIDE(UCA0IV_L = 0x05DE); +PROVIDE(UCA0IV_H = 0x05DF); + + +/***************************************************************************** + eUSCI_A1 +*****************************************************************************/ +PROVIDE(UCA1CTLW0 = 0x05E0); +PROVIDE(UCA1CTLW0_L = 0x05E0); +PROVIDE(UCA1CTLW0_H = 0x05E1); +PROVIDE(UCA1CTLW1 = 0x05E2); +PROVIDE(UCA1CTLW1_L = 0x05E2); +PROVIDE(UCA1CTLW1_H = 0x05E3); +PROVIDE(UCA1BRW = 0x05E6); +PROVIDE(UCA1BRW_L = 0x05E6); +PROVIDE(UCA1BRW_H = 0x05E7); +PROVIDE(UCA1MCTLW = 0x05E8); +PROVIDE(UCA1MCTLW_L = 0x05E8); +PROVIDE(UCA1MCTLW_H = 0x05E9); +PROVIDE(UCA1STATW = 0x05EA); +PROVIDE(UCA1STATW_L = 0x05EA); +PROVIDE(UCA1STATW_H = 0x05EB); +PROVIDE(UCA1RXBUF = 0x05EC); +PROVIDE(UCA1RXBUF_L = 0x05EC); +PROVIDE(UCA1RXBUF_H = 0x05ED); +PROVIDE(UCA1TXBUF = 0x05EE); +PROVIDE(UCA1TXBUF_L = 0x05EE); +PROVIDE(UCA1TXBUF_H = 0x05EF); +PROVIDE(UCA1ABCTL = 0x05F0); +PROVIDE(UCA1ABCTL_L = 0x05F0); +PROVIDE(UCA1ABCTL_H = 0x05F1); +PROVIDE(UCA1IRCTL = 0x05F2); +PROVIDE(UCA1IRCTL_L = 0x05F2); +PROVIDE(UCA1IRCTL_H = 0x05F3); +PROVIDE(UCA1IE = 0x05FA); +PROVIDE(UCA1IE_L = 0x05FA); +PROVIDE(UCA1IE_H = 0x05FB); +PROVIDE(UCA1IFG = 0x05FC); +PROVIDE(UCA1IFG_L = 0x05FC); +PROVIDE(UCA1IFG_H = 0x05FD); +PROVIDE(UCA1IV = 0x05FE); +PROVIDE(UCA1IV_L = 0x05FE); +PROVIDE(UCA1IV_H = 0x05FF); + + +/***************************************************************************** + eUSCI_A2 +*****************************************************************************/ +PROVIDE(UCA2CTLW0 = 0x0600); +PROVIDE(UCA2CTLW0_L = 0x0600); +PROVIDE(UCA2CTLW0_H = 0x0601); +PROVIDE(UCA2CTLW1 = 0x0602); +PROVIDE(UCA2CTLW1_L = 0x0602); +PROVIDE(UCA2CTLW1_H = 0x0603); +PROVIDE(UCA2BRW = 0x0606); +PROVIDE(UCA2BRW_L = 0x0606); +PROVIDE(UCA2BRW_H = 0x0607); +PROVIDE(UCA2MCTLW = 0x0608); +PROVIDE(UCA2MCTLW_L = 0x0608); +PROVIDE(UCA2MCTLW_H = 0x0609); +PROVIDE(UCA2STATW = 0x060A); +PROVIDE(UCA2STATW_L = 0x060A); +PROVIDE(UCA2STATW_H = 0x060B); +PROVIDE(UCA2RXBUF = 0x060C); +PROVIDE(UCA2RXBUF_L = 0x060C); +PROVIDE(UCA2RXBUF_H = 0x060D); +PROVIDE(UCA2TXBUF = 0x060E); +PROVIDE(UCA2TXBUF_L = 0x060E); +PROVIDE(UCA2TXBUF_H = 0x060F); +PROVIDE(UCA2ABCTL = 0x0610); +PROVIDE(UCA2ABCTL_L = 0x0610); +PROVIDE(UCA2ABCTL_H = 0x0611); +PROVIDE(UCA2IRCTL = 0x0612); +PROVIDE(UCA2IRCTL_L = 0x0612); +PROVIDE(UCA2IRCTL_H = 0x0613); +PROVIDE(UCA2IE = 0x061A); +PROVIDE(UCA2IE_L = 0x061A); +PROVIDE(UCA2IE_H = 0x061B); +PROVIDE(UCA2IFG = 0x061C); +PROVIDE(UCA2IFG_L = 0x061C); +PROVIDE(UCA2IFG_H = 0x061D); +PROVIDE(UCA2IV = 0x061E); +PROVIDE(UCA2IV_L = 0x061E); +PROVIDE(UCA2IV_H = 0x061F); + + +/***************************************************************************** + eUSCI_A3 +*****************************************************************************/ +PROVIDE(UCA3CTLW0 = 0x0620); +PROVIDE(UCA3CTLW0_L = 0x0620); +PROVIDE(UCA3CTLW0_H = 0x0621); +PROVIDE(UCA3CTLW1 = 0x0622); +PROVIDE(UCA3CTLW1_L = 0x0622); +PROVIDE(UCA3CTLW1_H = 0x0623); +PROVIDE(UCA3BRW = 0x0626); +PROVIDE(UCA3BRW_L = 0x0626); +PROVIDE(UCA3BRW_H = 0x0627); +PROVIDE(UCA3MCTLW = 0x0628); +PROVIDE(UCA3MCTLW_L = 0x0628); +PROVIDE(UCA3MCTLW_H = 0x0629); +PROVIDE(UCA3STATW = 0x062A); +PROVIDE(UCA3STATW_L = 0x062A); +PROVIDE(UCA3STATW_H = 0x062B); +PROVIDE(UCA3RXBUF = 0x062C); +PROVIDE(UCA3RXBUF_L = 0x062C); +PROVIDE(UCA3RXBUF_H = 0x062D); +PROVIDE(UCA3TXBUF = 0x062E); +PROVIDE(UCA3TXBUF_L = 0x062E); +PROVIDE(UCA3TXBUF_H = 0x062F); +PROVIDE(UCA3ABCTL = 0x0630); +PROVIDE(UCA3ABCTL_L = 0x0630); +PROVIDE(UCA3ABCTL_H = 0x0631); +PROVIDE(UCA3IRCTL = 0x0632); +PROVIDE(UCA3IRCTL_L = 0x0632); +PROVIDE(UCA3IRCTL_H = 0x0633); +PROVIDE(UCA3IE = 0x063A); +PROVIDE(UCA3IE_L = 0x063A); +PROVIDE(UCA3IE_H = 0x063B); +PROVIDE(UCA3IFG = 0x063C); +PROVIDE(UCA3IFG_L = 0x063C); +PROVIDE(UCA3IFG_H = 0x063D); +PROVIDE(UCA3IV = 0x063E); +PROVIDE(UCA3IV_L = 0x063E); +PROVIDE(UCA3IV_H = 0x063F); + + +/***************************************************************************** + eUSCI_B0 +*****************************************************************************/ +PROVIDE(UCB0CTLW0 = 0x0640); +PROVIDE(UCB0CTLW0_L = 0x0640); +PROVIDE(UCB0CTLW0_H = 0x0641); +PROVIDE(UCB0CTLW1 = 0x0642); +PROVIDE(UCB0CTLW1_L = 0x0642); +PROVIDE(UCB0CTLW1_H = 0x0643); +PROVIDE(UCB0BRW = 0x0646); +PROVIDE(UCB0BRW_L = 0x0646); +PROVIDE(UCB0BRW_H = 0x0647); +PROVIDE(UCB0STATW = 0x0648); +PROVIDE(UCB0STATW_L = 0x0648); +PROVIDE(UCB0STATW_H = 0x0649); +PROVIDE(UCB0TBCNT = 0x064A); +PROVIDE(UCB0TBCNT_L = 0x064A); +PROVIDE(UCB0TBCNT_H = 0x064B); +PROVIDE(UCB0RXBUF = 0x064C); +PROVIDE(UCB0RXBUF_L = 0x064C); +PROVIDE(UCB0RXBUF_H = 0x064D); +PROVIDE(UCB0TXBUF = 0x064E); +PROVIDE(UCB0TXBUF_L = 0x064E); +PROVIDE(UCB0TXBUF_H = 0x064F); +PROVIDE(UCB0I2COA0 = 0x0654); +PROVIDE(UCB0I2COA0_L = 0x0654); +PROVIDE(UCB0I2COA0_H = 0x0655); +PROVIDE(UCB0I2COA1 = 0x0656); +PROVIDE(UCB0I2COA1_L = 0x0656); +PROVIDE(UCB0I2COA1_H = 0x0657); +PROVIDE(UCB0I2COA2 = 0x0658); +PROVIDE(UCB0I2COA2_L = 0x0658); +PROVIDE(UCB0I2COA2_H = 0x0659); +PROVIDE(UCB0I2COA3 = 0x065A); +PROVIDE(UCB0I2COA3_L = 0x065A); +PROVIDE(UCB0I2COA3_H = 0x065B); +PROVIDE(UCB0ADDRX = 0x065C); +PROVIDE(UCB0ADDRX_L = 0x065C); +PROVIDE(UCB0ADDRX_H = 0x065D); +PROVIDE(UCB0ADDMASK = 0x065E); +PROVIDE(UCB0ADDMASK_L = 0x065E); +PROVIDE(UCB0ADDMASK_H = 0x065F); +PROVIDE(UCB0I2CSA = 0x0660); +PROVIDE(UCB0I2CSA_L = 0x0660); +PROVIDE(UCB0I2CSA_H = 0x0661); +PROVIDE(UCB0IE = 0x066A); +PROVIDE(UCB0IE_L = 0x066A); +PROVIDE(UCB0IE_H = 0x066B); +PROVIDE(UCB0IFG = 0x066C); +PROVIDE(UCB0IFG_L = 0x066C); +PROVIDE(UCB0IFG_H = 0x066D); +PROVIDE(UCB0IV = 0x066E); +PROVIDE(UCB0IV_L = 0x066E); +PROVIDE(UCB0IV_H = 0x066F); + + +/***************************************************************************** + eUSCI_B1 +*****************************************************************************/ +PROVIDE(UCB1CTLW0 = 0x0680); +PROVIDE(UCB1CTLW0_L = 0x0680); +PROVIDE(UCB1CTLW0_H = 0x0681); +PROVIDE(UCB1CTLW1 = 0x0682); +PROVIDE(UCB1CTLW1_L = 0x0682); +PROVIDE(UCB1CTLW1_H = 0x0683); +PROVIDE(UCB1BRW = 0x0686); +PROVIDE(UCB1BRW_L = 0x0686); +PROVIDE(UCB1BRW_H = 0x0687); +PROVIDE(UCB1STATW = 0x0688); +PROVIDE(UCB1STATW_L = 0x0688); +PROVIDE(UCB1STATW_H = 0x0689); +PROVIDE(UCB1TBCNT = 0x068A); +PROVIDE(UCB1TBCNT_L = 0x068A); +PROVIDE(UCB1TBCNT_H = 0x068B); +PROVIDE(UCB1RXBUF = 0x068C); +PROVIDE(UCB1RXBUF_L = 0x068C); +PROVIDE(UCB1RXBUF_H = 0x068D); +PROVIDE(UCB1TXBUF = 0x068E); +PROVIDE(UCB1TXBUF_L = 0x068E); +PROVIDE(UCB1TXBUF_H = 0x068F); +PROVIDE(UCB1I2COA0 = 0x0694); +PROVIDE(UCB1I2COA0_L = 0x0694); +PROVIDE(UCB1I2COA0_H = 0x0695); +PROVIDE(UCB1I2COA1 = 0x0696); +PROVIDE(UCB1I2COA1_L = 0x0696); +PROVIDE(UCB1I2COA1_H = 0x0697); +PROVIDE(UCB1I2COA2 = 0x0698); +PROVIDE(UCB1I2COA2_L = 0x0698); +PROVIDE(UCB1I2COA2_H = 0x0699); +PROVIDE(UCB1I2COA3 = 0x069A); +PROVIDE(UCB1I2COA3_L = 0x069A); +PROVIDE(UCB1I2COA3_H = 0x069B); +PROVIDE(UCB1ADDRX = 0x069C); +PROVIDE(UCB1ADDRX_L = 0x069C); +PROVIDE(UCB1ADDRX_H = 0x069D); +PROVIDE(UCB1ADDMASK = 0x069E); +PROVIDE(UCB1ADDMASK_L = 0x069E); +PROVIDE(UCB1ADDMASK_H = 0x069F); +PROVIDE(UCB1I2CSA = 0x06A0); +PROVIDE(UCB1I2CSA_L = 0x06A0); +PROVIDE(UCB1I2CSA_H = 0x06A1); +PROVIDE(UCB1IE = 0x06AA); +PROVIDE(UCB1IE_L = 0x06AA); +PROVIDE(UCB1IE_H = 0x06AB); +PROVIDE(UCB1IFG = 0x06AC); +PROVIDE(UCB1IFG_L = 0x06AC); +PROVIDE(UCB1IFG_H = 0x06AD); +PROVIDE(UCB1IV = 0x06AE); +PROVIDE(UCB1IV_L = 0x06AE); +PROVIDE(UCB1IV_H = 0x06AF); + + +/***************************************************************************** + eUSCI_B2 +*****************************************************************************/ +PROVIDE(UCB2CTLW0 = 0x06C0); +PROVIDE(UCB2CTLW0_L = 0x06C0); +PROVIDE(UCB2CTLW0_H = 0x06C1); +PROVIDE(UCB2CTLW1 = 0x06C2); +PROVIDE(UCB2CTLW1_L = 0x06C2); +PROVIDE(UCB2CTLW1_H = 0x06C3); +PROVIDE(UCB2BRW = 0x06C6); +PROVIDE(UCB2BRW_L = 0x06C6); +PROVIDE(UCB2BRW_H = 0x06C7); +PROVIDE(UCB2STATW = 0x06C8); +PROVIDE(UCB2STATW_L = 0x06C8); +PROVIDE(UCB2STATW_H = 0x06C9); +PROVIDE(UCB2TBCNT = 0x06CA); +PROVIDE(UCB2TBCNT_L = 0x06CA); +PROVIDE(UCB2TBCNT_H = 0x06CB); +PROVIDE(UCB2RXBUF = 0x06CC); +PROVIDE(UCB2RXBUF_L = 0x06CC); +PROVIDE(UCB2RXBUF_H = 0x06CD); +PROVIDE(UCB2TXBUF = 0x06CE); +PROVIDE(UCB2TXBUF_L = 0x06CE); +PROVIDE(UCB2TXBUF_H = 0x06CF); +PROVIDE(UCB2I2COA0 = 0x06D4); +PROVIDE(UCB2I2COA0_L = 0x06D4); +PROVIDE(UCB2I2COA0_H = 0x06D5); +PROVIDE(UCB2I2COA1 = 0x06D6); +PROVIDE(UCB2I2COA1_L = 0x06D6); +PROVIDE(UCB2I2COA1_H = 0x06D7); +PROVIDE(UCB2I2COA2 = 0x06D8); +PROVIDE(UCB2I2COA2_L = 0x06D8); +PROVIDE(UCB2I2COA2_H = 0x06D9); +PROVIDE(UCB2I2COA3 = 0x06DA); +PROVIDE(UCB2I2COA3_L = 0x06DA); +PROVIDE(UCB2I2COA3_H = 0x06DB); +PROVIDE(UCB2ADDRX = 0x06DC); +PROVIDE(UCB2ADDRX_L = 0x06DC); +PROVIDE(UCB2ADDRX_H = 0x06DD); +PROVIDE(UCB2ADDMASK = 0x06DE); +PROVIDE(UCB2ADDMASK_L = 0x06DE); +PROVIDE(UCB2ADDMASK_H = 0x06DF); +PROVIDE(UCB2I2CSA = 0x06E0); +PROVIDE(UCB2I2CSA_L = 0x06E0); +PROVIDE(UCB2I2CSA_H = 0x06E1); +PROVIDE(UCB2IE = 0x06EA); +PROVIDE(UCB2IE_L = 0x06EA); +PROVIDE(UCB2IE_H = 0x06EB); +PROVIDE(UCB2IFG = 0x06EC); +PROVIDE(UCB2IFG_L = 0x06EC); +PROVIDE(UCB2IFG_H = 0x06ED); +PROVIDE(UCB2IV = 0x06EE); +PROVIDE(UCB2IV_L = 0x06EE); +PROVIDE(UCB2IV_H = 0x06EF); + + +/***************************************************************************** + eUSCI_B3 +*****************************************************************************/ +PROVIDE(UCB3CTLW0 = 0x0700); +PROVIDE(UCB3CTLW0_L = 0x0700); +PROVIDE(UCB3CTLW0_H = 0x0701); +PROVIDE(UCB3CTLW1 = 0x0702); +PROVIDE(UCB3CTLW1_L = 0x0702); +PROVIDE(UCB3CTLW1_H = 0x0703); +PROVIDE(UCB3BRW = 0x0706); +PROVIDE(UCB3BRW_L = 0x0706); +PROVIDE(UCB3BRW_H = 0x0707); +PROVIDE(UCB3STATW = 0x0708); +PROVIDE(UCB3STATW_L = 0x0708); +PROVIDE(UCB3STATW_H = 0x0709); +PROVIDE(UCB3TBCNT = 0x070A); +PROVIDE(UCB3TBCNT_L = 0x070A); +PROVIDE(UCB3TBCNT_H = 0x070B); +PROVIDE(UCB3RXBUF = 0x070C); +PROVIDE(UCB3RXBUF_L = 0x070C); +PROVIDE(UCB3RXBUF_H = 0x070D); +PROVIDE(UCB3TXBUF = 0x070E); +PROVIDE(UCB3TXBUF_L = 0x070E); +PROVIDE(UCB3TXBUF_H = 0x070F); +PROVIDE(UCB3I2COA0 = 0x0714); +PROVIDE(UCB3I2COA0_L = 0x0714); +PROVIDE(UCB3I2COA0_H = 0x0715); +PROVIDE(UCB3I2COA1 = 0x0716); +PROVIDE(UCB3I2COA1_L = 0x0716); +PROVIDE(UCB3I2COA1_H = 0x0717); +PROVIDE(UCB3I2COA2 = 0x0718); +PROVIDE(UCB3I2COA2_L = 0x0718); +PROVIDE(UCB3I2COA2_H = 0x0719); +PROVIDE(UCB3I2COA3 = 0x071A); +PROVIDE(UCB3I2COA3_L = 0x071A); +PROVIDE(UCB3I2COA3_H = 0x071B); +PROVIDE(UCB3ADDRX = 0x071C); +PROVIDE(UCB3ADDRX_L = 0x071C); +PROVIDE(UCB3ADDRX_H = 0x071D); +PROVIDE(UCB3ADDMASK = 0x071E); +PROVIDE(UCB3ADDMASK_L = 0x071E); +PROVIDE(UCB3ADDMASK_H = 0x071F); +PROVIDE(UCB3I2CSA = 0x0720); +PROVIDE(UCB3I2CSA_L = 0x0720); +PROVIDE(UCB3I2CSA_H = 0x0721); +PROVIDE(UCB3IE = 0x072A); +PROVIDE(UCB3IE_L = 0x072A); +PROVIDE(UCB3IE_H = 0x072B); +PROVIDE(UCB3IFG = 0x072C); +PROVIDE(UCB3IFG_L = 0x072C); +PROVIDE(UCB3IFG_H = 0x072D); +PROVIDE(UCB3IV = 0x072E); +PROVIDE(UCB3IV_L = 0x072E); +PROVIDE(UCB3IV_H = 0x072F); + +/************************************************************ +* End of Modules +************************************************************/ + +/* ============================================================================ */ +/* Copyright (c) 2016, Texas Instruments Incorporated */ +/* All rights reserved. */ +/* */ +/* Redistribution and use in source and binary forms, with or without */ +/* modification, are permitted provided that the following conditions */ +/* are met: */ +/* */ +/* * Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* */ +/* * Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in the */ +/* documentation and/or other materials provided with the distribution. */ +/* */ +/* * Neither the name of Texas Instruments Incorporated nor the names of */ +/* its contributors may be used to endorse or promote products derived */ +/* from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" */ +/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, */ +/* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ +/* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ +/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, */ +/* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, */ +/* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; */ +/* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, */ +/* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ +/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ +/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* ============================================================================ */ + +/* This file supports MSP430FR5994 devices. */ + +/* Version: 1.192 (Beta-Build-Tag: #0049) */ + +/************************************************************ +* PERIPHERAL FILE MAP +************************************************************/ + + +/***************************************************************************** + ADC12_B +*****************************************************************************/ +__ADC12CTL0 = 0x0800; +__ADC12CTL0_L = 0x0800; +__ADC12CTL0_H = 0x0801; +__ADC12CTL1 = 0x0802; +__ADC12CTL1_L = 0x0802; +__ADC12CTL1_H = 0x0803; +__ADC12CTL2 = 0x0804; +__ADC12CTL2_L = 0x0804; +__ADC12CTL2_H = 0x0805; +__ADC12CTL3 = 0x0806; +__ADC12CTL3_L = 0x0806; +__ADC12CTL3_H = 0x0807; +__ADC12LO = 0x0808; +__ADC12LO_L = 0x0808; +__ADC12LO_H = 0x0809; +__ADC12HI = 0x080A; +__ADC12HI_L = 0x080A; +__ADC12HI_H = 0x080B; +__ADC12IFGR0 = 0x080C; +__ADC12IFGR0_L = 0x080C; +__ADC12IFGR0_H = 0x080D; +__ADC12IFGR1 = 0x080E; +__ADC12IFGR1_L = 0x080E; +__ADC12IFGR1_H = 0x080F; +__ADC12IFGR2 = 0x0810; +__ADC12IFGR2_L = 0x0810; +__ADC12IFGR2_H = 0x0811; +__ADC12IER0 = 0x0812; +__ADC12IER0_L = 0x0812; +__ADC12IER0_H = 0x0813; +__ADC12IER1 = 0x0814; +__ADC12IER1_L = 0x0814; +__ADC12IER1_H = 0x0815; +__ADC12IER2 = 0x0816; +__ADC12IER2_L = 0x0816; +__ADC12IER2_H = 0x0817; +__ADC12IV = 0x0818; +__ADC12IV_L = 0x0818; +__ADC12IV_H = 0x0819; +__ADC12MCTL0 = 0x0820; +__ADC12MCTL0_L = 0x0820; +__ADC12MCTL0_H = 0x0821; +__ADC12MCTL1 = 0x0822; +__ADC12MCTL1_L = 0x0822; +__ADC12MCTL1_H = 0x0823; +__ADC12MCTL2 = 0x0824; +__ADC12MCTL2_L = 0x0824; +__ADC12MCTL2_H = 0x0825; +__ADC12MCTL3 = 0x0826; +__ADC12MCTL3_L = 0x0826; +__ADC12MCTL3_H = 0x0827; +__ADC12MCTL4 = 0x0828; +__ADC12MCTL4_L = 0x0828; +__ADC12MCTL4_H = 0x0829; +__ADC12MCTL5 = 0x082A; +__ADC12MCTL5_L = 0x082A; +__ADC12MCTL5_H = 0x082B; +__ADC12MCTL6 = 0x082C; +__ADC12MCTL6_L = 0x082C; +__ADC12MCTL6_H = 0x082D; +__ADC12MCTL7 = 0x082E; +__ADC12MCTL7_L = 0x082E; +__ADC12MCTL7_H = 0x082F; +__ADC12MCTL8 = 0x0830; +__ADC12MCTL8_L = 0x0830; +__ADC12MCTL8_H = 0x0831; +__ADC12MCTL9 = 0x0832; +__ADC12MCTL9_L = 0x0832; +__ADC12MCTL9_H = 0x0833; +__ADC12MCTL10 = 0x0834; +__ADC12MCTL10_L = 0x0834; +__ADC12MCTL10_H = 0x0835; +__ADC12MCTL11 = 0x0836; +__ADC12MCTL11_L = 0x0836; +__ADC12MCTL11_H = 0x0837; +__ADC12MCTL12 = 0x0838; +__ADC12MCTL12_L = 0x0838; +__ADC12MCTL12_H = 0x0839; +__ADC12MCTL13 = 0x083A; +__ADC12MCTL13_L = 0x083A; +__ADC12MCTL13_H = 0x083B; +__ADC12MCTL14 = 0x083C; +__ADC12MCTL14_L = 0x083C; +__ADC12MCTL14_H = 0x083D; +__ADC12MCTL15 = 0x083E; +__ADC12MCTL15_L = 0x083E; +__ADC12MCTL15_H = 0x083F; +__ADC12MCTL16 = 0x0840; +__ADC12MCTL16_L = 0x0840; +__ADC12MCTL16_H = 0x0841; +__ADC12MCTL17 = 0x0842; +__ADC12MCTL17_L = 0x0842; +__ADC12MCTL17_H = 0x0843; +__ADC12MCTL18 = 0x0844; +__ADC12MCTL18_L = 0x0844; +__ADC12MCTL18_H = 0x0845; +__ADC12MCTL19 = 0x0846; +__ADC12MCTL19_L = 0x0846; +__ADC12MCTL19_H = 0x0847; +__ADC12MCTL20 = 0x0848; +__ADC12MCTL20_L = 0x0848; +__ADC12MCTL20_H = 0x0849; +__ADC12MCTL21 = 0x084A; +__ADC12MCTL21_L = 0x084A; +__ADC12MCTL21_H = 0x084B; +__ADC12MCTL22 = 0x084C; +__ADC12MCTL22_L = 0x084C; +__ADC12MCTL22_H = 0x084D; +__ADC12MCTL23 = 0x084E; +__ADC12MCTL23_L = 0x084E; +__ADC12MCTL23_H = 0x084F; +__ADC12MCTL24 = 0x0850; +__ADC12MCTL24_L = 0x0850; +__ADC12MCTL24_H = 0x0851; +__ADC12MCTL25 = 0x0852; +__ADC12MCTL25_L = 0x0852; +__ADC12MCTL25_H = 0x0853; +__ADC12MCTL26 = 0x0854; +__ADC12MCTL26_L = 0x0854; +__ADC12MCTL26_H = 0x0855; +__ADC12MCTL27 = 0x0856; +__ADC12MCTL27_L = 0x0856; +__ADC12MCTL27_H = 0x0857; +__ADC12MCTL28 = 0x0858; +__ADC12MCTL28_L = 0x0858; +__ADC12MCTL28_H = 0x0859; +__ADC12MCTL29 = 0x085A; +__ADC12MCTL29_L = 0x085A; +__ADC12MCTL29_H = 0x085B; +__ADC12MCTL30 = 0x085C; +__ADC12MCTL30_L = 0x085C; +__ADC12MCTL30_H = 0x085D; +__ADC12MCTL31 = 0x085E; +__ADC12MCTL31_L = 0x085E; +__ADC12MCTL31_H = 0x085F; +__ADC12MEM0 = 0x0860; +__ADC12MEM0_L = 0x0860; +__ADC12MEM0_H = 0x0861; +__ADC12MEM1 = 0x0862; +__ADC12MEM1_L = 0x0862; +__ADC12MEM1_H = 0x0863; +__ADC12MEM2 = 0x0864; +__ADC12MEM2_L = 0x0864; +__ADC12MEM2_H = 0x0865; +__ADC12MEM3 = 0x0866; +__ADC12MEM3_L = 0x0866; +__ADC12MEM3_H = 0x0867; +__ADC12MEM4 = 0x0868; +__ADC12MEM4_L = 0x0868; +__ADC12MEM4_H = 0x0869; +__ADC12MEM5 = 0x086A; +__ADC12MEM5_L = 0x086A; +__ADC12MEM5_H = 0x086B; +__ADC12MEM6 = 0x086C; +__ADC12MEM6_L = 0x086C; +__ADC12MEM6_H = 0x086D; +__ADC12MEM7 = 0x086E; +__ADC12MEM7_L = 0x086E; +__ADC12MEM7_H = 0x086F; +__ADC12MEM8 = 0x0870; +__ADC12MEM8_L = 0x0870; +__ADC12MEM8_H = 0x0871; +__ADC12MEM9 = 0x0872; +__ADC12MEM9_L = 0x0872; +__ADC12MEM9_H = 0x0873; +__ADC12MEM10 = 0x0874; +__ADC12MEM10_L = 0x0874; +__ADC12MEM10_H = 0x0875; +__ADC12MEM11 = 0x0876; +__ADC12MEM11_L = 0x0876; +__ADC12MEM11_H = 0x0877; +__ADC12MEM12 = 0x0878; +__ADC12MEM12_L = 0x0878; +__ADC12MEM12_H = 0x0879; +__ADC12MEM13 = 0x087A; +__ADC12MEM13_L = 0x087A; +__ADC12MEM13_H = 0x087B; +__ADC12MEM14 = 0x087C; +__ADC12MEM14_L = 0x087C; +__ADC12MEM14_H = 0x087D; +__ADC12MEM15 = 0x087E; +__ADC12MEM15_L = 0x087E; +__ADC12MEM15_H = 0x087F; +__ADC12MEM16 = 0x0880; +__ADC12MEM16_L = 0x0880; +__ADC12MEM16_H = 0x0881; +__ADC12MEM17 = 0x0882; +__ADC12MEM17_L = 0x0882; +__ADC12MEM17_H = 0x0883; +__ADC12MEM18 = 0x0884; +__ADC12MEM18_L = 0x0884; +__ADC12MEM18_H = 0x0885; +__ADC12MEM19 = 0x0886; +__ADC12MEM19_L = 0x0886; +__ADC12MEM19_H = 0x0887; +__ADC12MEM20 = 0x0888; +__ADC12MEM20_L = 0x0888; +__ADC12MEM20_H = 0x0889; +__ADC12MEM21 = 0x088A; +__ADC12MEM21_L = 0x088A; +__ADC12MEM21_H = 0x088B; +__ADC12MEM22 = 0x088C; +__ADC12MEM22_L = 0x088C; +__ADC12MEM22_H = 0x088D; +__ADC12MEM23 = 0x088E; +__ADC12MEM23_L = 0x088E; +__ADC12MEM23_H = 0x088F; +__ADC12MEM24 = 0x0890; +__ADC12MEM24_L = 0x0890; +__ADC12MEM24_H = 0x0891; +__ADC12MEM25 = 0x0892; +__ADC12MEM25_L = 0x0892; +__ADC12MEM25_H = 0x0893; +__ADC12MEM26 = 0x0894; +__ADC12MEM26_L = 0x0894; +__ADC12MEM26_H = 0x0895; +__ADC12MEM27 = 0x0896; +__ADC12MEM27_L = 0x0896; +__ADC12MEM27_H = 0x0897; +__ADC12MEM28 = 0x0898; +__ADC12MEM28_L = 0x0898; +__ADC12MEM28_H = 0x0899; +__ADC12MEM29 = 0x089A; +__ADC12MEM29_L = 0x089A; +__ADC12MEM29_H = 0x089B; +__ADC12MEM30 = 0x089C; +__ADC12MEM30_L = 0x089C; +__ADC12MEM30_H = 0x089D; +__ADC12MEM31 = 0x089E; +__ADC12MEM31_L = 0x089E; +__ADC12MEM31_H = 0x089F; + + +/***************************************************************************** + AES256 +*****************************************************************************/ +__AESACTL0 = 0x09C0; +__AESACTL0_L = 0x09C0; +__AESACTL0_H = 0x09C1; +__AESACTL1 = 0x09C2; +__AESACTL1_L = 0x09C2; +__AESACTL1_H = 0x09C3; +__AESASTAT = 0x09C4; +__AESASTAT_L = 0x09C4; +__AESASTAT_H = 0x09C5; +__AESAKEY = 0x09C6; +__AESAKEY_L = 0x09C6; +__AESAKEY_H = 0x09C7; +__AESADIN = 0x09C8; +__AESADIN_L = 0x09C8; +__AESADIN_H = 0x09C9; +__AESADOUT = 0x09CA; +__AESADOUT_L = 0x09CA; +__AESADOUT_H = 0x09CB; +__AESAXDIN = 0x09CC; +__AESAXDIN_L = 0x09CC; +__AESAXDIN_H = 0x09CD; +__AESAXIN = 0x09CE; +__AESAXIN_L = 0x09CE; +__AESAXIN_H = 0x09CF; + + +/***************************************************************************** + CAPTIO0 +*****************************************************************************/ +__CAPTIO0CTL = 0x043E; +__CAPTIO0CTL_L = 0x043E; +__CAPTIO0CTL_H = 0x043F; + + +/***************************************************************************** + CAPTIO1 +*****************************************************************************/ +__CAPTIO1CTL = 0x047E; +__CAPTIO1CTL_L = 0x047E; +__CAPTIO1CTL_H = 0x047F; + + +/***************************************************************************** + COMP_E +*****************************************************************************/ +__CECTL0 = 0x08C0; +__CECTL0_L = 0x08C0; +__CECTL0_H = 0x08C1; +__CECTL1 = 0x08C2; +__CECTL1_L = 0x08C2; +__CECTL1_H = 0x08C3; +__CECTL2 = 0x08C4; +__CECTL2_L = 0x08C4; +__CECTL2_H = 0x08C5; +__CECTL3 = 0x08C6; +__CECTL3_L = 0x08C6; +__CECTL3_H = 0x08C7; +__CEINT = 0x08CC; +__CEINT_L = 0x08CC; +__CEINT_H = 0x08CD; +__CEIV = 0x08CE; +__CEIV_L = 0x08CE; +__CEIV_H = 0x08CF; + + +/***************************************************************************** + CRC +*****************************************************************************/ +__CRCDI = 0x0150; +__CRCDI_L = 0x0150; +__CRCDI_H = 0x0151; +__CRCDIRB = 0x0152; +__CRCDIRB_L = 0x0152; +__CRCDIRB_H = 0x0153; +__CRCINIRES = 0x0154; +__CRCINIRES_L = 0x0154; +__CRCINIRES_H = 0x0155; +__CRCRESR = 0x0156; +__CRCRESR_L = 0x0156; +__CRCRESR_H = 0x0157; + + +/***************************************************************************** + CRC32 +*****************************************************************************/ +__CRC32DIW0 = 0x0980; +__CRC32DIW0_L = 0x0980; +__CRC32DIW0_H = 0x0981; +__CRC32DIW1 = 0x0982; +__CRC32DIW1_L = 0x0982; +__CRC32DIW1_H = 0x0983; +__CRC32DIRBW1 = 0x0984; +__CRC32DIRBW1_L = 0x0984; +__CRC32DIRBW1_H = 0x0985; +__CRC32DIRBW0 = 0x0986; +__CRC32DIRBW0_L = 0x0986; +__CRC32DIRBW0_H = 0x0987; +__CRC32INIRESW0 = 0x0988; +__CRC32INIRESW0_L = 0x0988; +__CRC32INIRESW0_H = 0x0989; +__CRC32INIRESW1 = 0x098A; +__CRC32INIRESW1_L = 0x098A; +__CRC32INIRESW1_H = 0x098B; +__CRC32RESRW1 = 0x098C; +__CRC32RESRW1_L = 0x098C; +__CRC32RESRW1_H = 0x098D; +__CRC32RESRW0 = 0x098E; +__CRC32RESRW0_L = 0x098E; +__CRC32RESRW0_H = 0x098F; +__CRC16DIW0 = 0x0990; +__CRC16DIW0_L = 0x0990; +__CRC16DIW0_H = 0x0991; +__CRC16DIRBW0 = 0x0996; +__CRC16DIRBW0_L = 0x0996; +__CRC16DIRBW0_H = 0x0997; +__CRC16INIRESW0 = 0x0998; +__CRC16INIRESW0_L = 0x0998; +__CRC16INIRESW0_H = 0x0999; +__CRC16RESRW0 = 0x099E; +__CRC16RESRW0_L = 0x099E; +__CRC16RESRW0_H = 0x099F; + + +/***************************************************************************** + CS +*****************************************************************************/ +__CSCTL0 = 0x0160; +__CSCTL0_L = 0x0160; +__CSCTL0_H = 0x0161; +__CSCTL1 = 0x0162; +__CSCTL1_L = 0x0162; +__CSCTL1_H = 0x0163; +__CSCTL2 = 0x0164; +__CSCTL2_L = 0x0164; +__CSCTL2_H = 0x0165; +__CSCTL3 = 0x0166; +__CSCTL3_L = 0x0166; +__CSCTL3_H = 0x0167; +__CSCTL4 = 0x0168; +__CSCTL4_L = 0x0168; +__CSCTL4_H = 0x0169; +__CSCTL5 = 0x016A; +__CSCTL5_L = 0x016A; +__CSCTL5_H = 0x016B; +__CSCTL6 = 0x016C; +__CSCTL6_L = 0x016C; +__CSCTL6_H = 0x016D; + + +/***************************************************************************** + DIO +*****************************************************************************/ +__PAIN = 0x0200; +__PAIN_L = 0x0200; +__PAIN_H = 0x0201; +__PAOUT = 0x0202; +__PAOUT_L = 0x0202; +__PAOUT_H = 0x0203; +__PADIR = 0x0204; +__PADIR_L = 0x0204; +__PADIR_H = 0x0205; +__PAREN = 0x0206; +__PAREN_L = 0x0206; +__PAREN_H = 0x0207; +__PASEL0 = 0x020A; +__PASEL0_L = 0x020A; +__PASEL0_H = 0x020B; +__PASEL1 = 0x020C; +__PASEL1_L = 0x020C; +__PASEL1_H = 0x020D; +__P1IV = 0x020E; +__P1IV_L = 0x020E; +__P1IV_H = 0x020F; +__PASELC = 0x0216; +__PASELC_L = 0x0216; +__PASELC_H = 0x0217; +__PAIES = 0x0218; +__PAIES_L = 0x0218; +__PAIES_H = 0x0219; +__PAIE = 0x021A; +__PAIE_L = 0x021A; +__PAIE_H = 0x021B; +__PAIFG = 0x021C; +__PAIFG_L = 0x021C; +__PAIFG_H = 0x021D; +__P2IV = 0x021E; +__P2IV_L = 0x021E; +__P2IV_H = 0x021F; +__PBIN = 0x0220; +__PBIN_L = 0x0220; +__PBIN_H = 0x0221; +__PBOUT = 0x0222; +__PBOUT_L = 0x0222; +__PBOUT_H = 0x0223; +__PBDIR = 0x0224; +__PBDIR_L = 0x0224; +__PBDIR_H = 0x0225; +__PBREN = 0x0226; +__PBREN_L = 0x0226; +__PBREN_H = 0x0227; +__PBSEL0 = 0x022A; +__PBSEL0_L = 0x022A; +__PBSEL0_H = 0x022B; +__PBSEL1 = 0x022C; +__PBSEL1_L = 0x022C; +__PBSEL1_H = 0x022D; +__P3IV = 0x022E; +__P3IV_L = 0x022E; +__P3IV_H = 0x022F; +__PBSELC = 0x0236; +__PBSELC_L = 0x0236; +__PBSELC_H = 0x0237; +__PBIES = 0x0238; +__PBIES_L = 0x0238; +__PBIES_H = 0x0239; +__PBIE = 0x023A; +__PBIE_L = 0x023A; +__PBIE_H = 0x023B; +__PBIFG = 0x023C; +__PBIFG_L = 0x023C; +__PBIFG_H = 0x023D; +__P4IV = 0x023E; +__P4IV_L = 0x023E; +__P4IV_H = 0x023F; +__PCIN = 0x0240; +__PCIN_L = 0x0240; +__PCIN_H = 0x0241; +__PCOUT = 0x0242; +__PCOUT_L = 0x0242; +__PCOUT_H = 0x0243; +__PCDIR = 0x0244; +__PCDIR_L = 0x0244; +__PCDIR_H = 0x0245; +__PCREN = 0x0246; +__PCREN_L = 0x0246; +__PCREN_H = 0x0247; +__PCSEL0 = 0x024A; +__PCSEL0_L = 0x024A; +__PCSEL0_H = 0x024B; +__PCSEL1 = 0x024C; +__PCSEL1_L = 0x024C; +__PCSEL1_H = 0x024D; +__P5IV = 0x024E; +__P5IV_L = 0x024E; +__P5IV_H = 0x024F; +__PCSELC = 0x0256; +__PCSELC_L = 0x0256; +__PCSELC_H = 0x0257; +__PCIES = 0x0258; +__PCIES_L = 0x0258; +__PCIES_H = 0x0259; +__PCIE = 0x025A; +__PCIE_L = 0x025A; +__PCIE_H = 0x025B; +__PCIFG = 0x025C; +__PCIFG_L = 0x025C; +__PCIFG_H = 0x025D; +__P6IV = 0x025E; +__P6IV_L = 0x025E; +__P6IV_H = 0x025F; +__PDIN = 0x0260; +__PDIN_L = 0x0260; +__PDIN_H = 0x0261; +__PDOUT = 0x0262; +__PDOUT_L = 0x0262; +__PDOUT_H = 0x0263; +__PDDIR = 0x0264; +__PDDIR_L = 0x0264; +__PDDIR_H = 0x0265; +__PDREN = 0x0266; +__PDREN_L = 0x0266; +__PDREN_H = 0x0267; +__PDSEL0 = 0x026A; +__PDSEL0_L = 0x026A; +__PDSEL0_H = 0x026B; +__PDSEL1 = 0x026C; +__PDSEL1_L = 0x026C; +__PDSEL1_H = 0x026D; +__P7IV = 0x026E; +__P7IV_L = 0x026E; +__P7IV_H = 0x026F; +__PDSELC = 0x0276; +__PDSELC_L = 0x0276; +__PDSELC_H = 0x0277; +__PDIES = 0x0278; +__PDIES_L = 0x0278; +__PDIES_H = 0x0279; +__PDIE = 0x027A; +__PDIE_L = 0x027A; +__PDIE_H = 0x027B; +__PDIFG = 0x027C; +__PDIFG_L = 0x027C; +__PDIFG_H = 0x027D; +__P8IV = 0x027E; +__P8IV_L = 0x027E; +__P8IV_H = 0x027F; +__PJIN = 0x0320; +__PJIN_L = 0x0320; +__PJIN_H = 0x0321; +__PJOUT = 0x0322; +__PJOUT_L = 0x0322; +__PJOUT_H = 0x0323; +__PJDIR = 0x0324; +__PJDIR_L = 0x0324; +__PJDIR_H = 0x0325; +__PJREN = 0x0326; +__PJREN_L = 0x0326; +__PJREN_H = 0x0327; +__PJSEL0 = 0x032A; +__PJSEL0_L = 0x032A; +__PJSEL0_H = 0x032B; +__PJSEL1 = 0x032C; +__PJSEL1_L = 0x032C; +__PJSEL1_H = 0x032D; +__PJSELC = 0x0336; +__PJSELC_L = 0x0336; +__PJSELC_H = 0x0337; +__P1IN = 0x0200; + +__P2IN = 0x0201; + +__P2OUT = 0x0203; + +__P1OUT = 0x0202; + +__P1DIR = 0x0204; + +__P2DIR = 0x0205; + +__P1REN = 0x0206; + +__P2REN = 0x0207; + +__P1SEL0 = 0x020A; + +__P2SEL0 = 0x020B; + +__P1SEL1 = 0x020C; + +__P2SEL1 = 0x020D; + +__P1SELC = 0x0216; + +__P2SELC = 0x0217; + +__P1IES = 0x0218; + +__P2IES = 0x0219; + +__P1IE = 0x021A; + +__P2IE = 0x021B; + +__P1IFG = 0x021C; + +__P2IFG = 0x021D; + +__P3IN = 0x0220; + +__P4IN = 0x0221; + +__P3OUT = 0x0222; + +__P4OUT = 0x0223; + +__P3DIR = 0x0224; + +__P4DIR = 0x0225; + +__P3REN = 0x0226; + +__P4REN = 0x0227; + +__P4SEL0 = 0x022B; + +__P3SEL0 = 0x022A; + +__P3SEL1 = 0x022C; + +__P4SEL1 = 0x022D; + +__P3SELC = 0x0236; + +__P4SELC = 0x0237; + +__P3IES = 0x0238; + +__P4IES = 0x0239; + +__P3IE = 0x023A; + +__P4IE = 0x023B; + +__P3IFG = 0x023C; + +__P4IFG = 0x023D; + +__P5IN = 0x0240; + +__P6IN = 0x0241; + +__P5OUT = 0x0242; + +__P6OUT = 0x0243; + +__P5DIR = 0x0244; + +__P6DIR = 0x0245; + +__P5REN = 0x0246; + +__P6REN = 0x0247; + +__P5SEL0 = 0x024A; + +__P6SEL0 = 0x024B; + +__P5SEL1 = 0x024C; + +__P6SEL1 = 0x024D; + +__P5SELC = 0x0256; + +__P6SELC = 0x0257; + +__P5IES = 0x0258; + +__P6IES = 0x0259; + +__P5IE = 0x025A; + +__P6IE = 0x025B; + +__P5IFG = 0x025C; + +__P6IFG = 0x025D; + +__P7IN = 0x0260; + +__P8IN = 0x0261; + +__P7OUT = 0x0262; + +__P8OUT = 0x0263; + +__P7DIR = 0x0264; + +__P8DIR = 0x0265; + +__P7REN = 0x0266; + +__P8REN = 0x0267; + +__P7SEL0 = 0x026A; + +__P8SEL0 = 0x026B; + +__P7SEL1 = 0x026C; + +__P8SEL1 = 0x026D; + +__P7SELC = 0x0276; + +__P8SELC = 0x0277; + +__P7IES = 0x0278; + +__P8IES = 0x0279; + +__P7IE = 0x027A; + +__P8IE = 0x027B; + +__P7IFG = 0x027C; + +__P8IFG = 0x027D; + + + +/***************************************************************************** + DMA +*****************************************************************************/ +__DMACTL0 = 0x0500; +__DMACTL0_L = 0x0500; +__DMACTL0_H = 0x0501; +__DMACTL1 = 0x0502; +__DMACTL1_L = 0x0502; +__DMACTL1_H = 0x0503; +__DMACTL2 = 0x0504; +__DMACTL2_L = 0x0504; +__DMACTL2_H = 0x0505; +__DMACTL4 = 0x0508; +__DMACTL4_L = 0x0508; +__DMACTL4_H = 0x0509; +__DMAIV = 0x050E; +__DMAIV_L = 0x050E; +__DMAIV_H = 0x050F; +__DMA0CTL = 0x0510; +__DMA0CTL_L = 0x0510; +__DMA0CTL_H = 0x0511; +__DMA0SA = 0x0512; +__DMA0SAL = 0x0512; +__DMA0SAH = 0x0514; + +__DMA0DA = 0x0516; +__DMA0DAL = 0x0516; +__DMA0DAH = 0x0518; + +__DMA0SZ = 0x051A; +__DMA0SZ_L = 0x051A; +__DMA0SZ_H = 0x051B; +__DMA1CTL = 0x0520; +__DMA1CTL_L = 0x0520; +__DMA1CTL_H = 0x0521; +__DMA1SA = 0x0522; +__DMA1SAL = 0x0522; +__DMA1SAH = 0x0524; + +__DMA1DA = 0x0526; +__DMA1DAL = 0x0526; +__DMA1DAH = 0x0528; + +__DMA1SZ = 0x052A; +__DMA1SZ_L = 0x052A; +__DMA1SZ_H = 0x052B; +__DMA2CTL = 0x0530; +__DMA2CTL_L = 0x0530; +__DMA2CTL_H = 0x0531; +__DMA2SA = 0x0532; +__DMA2SAL = 0x0532; +__DMA2SAH = 0x0534; + +__DMA2DA = 0x0536; +__DMA2DAL = 0x0536; +__DMA2DAH = 0x0538; + +__DMA2SZ = 0x053A; +__DMA2SZ_L = 0x053A; +__DMA2SZ_H = 0x053B; +__DMA3CTL = 0x0540; +__DMA3CTL_L = 0x0540; +__DMA3CTL_H = 0x0541; +__DMA3SA = 0x0542; +__DMA3SAL = 0x0542; +__DMA3SAH = 0x0544; + +__DMA3DA = 0x0546; +__DMA3DAL = 0x0546; +__DMA3DAH = 0x0548; + +__DMA3SZ = 0x054A; +__DMA3SZ_L = 0x054A; +__DMA3SZ_H = 0x054B; +__DMA4CTL = 0x0550; +__DMA4CTL_L = 0x0550; +__DMA4CTL_H = 0x0551; +__DMA4SA = 0x0552; +__DMA4SAL = 0x0552; +__DMA4SAH = 0x0554; + +__DMA4DA = 0x0556; +__DMA4DAL = 0x0556; +__DMA4DAH = 0x0558; + +__DMA4SZ = 0x055A; +__DMA4SZ_L = 0x055A; +__DMA4SZ_H = 0x055B; +__DMA5CTL = 0x0560; +__DMA5CTL_L = 0x0560; +__DMA5CTL_H = 0x0561; +__DMA5SA = 0x0562; +__DMA5SAL = 0x0562; +__DMA5SAH = 0x0564; + +__DMA5DA = 0x0566; +__DMA5DAL = 0x0566; +__DMA5DAH = 0x0568; + +__DMA5SZ = 0x056A; +__DMA5SZ_L = 0x056A; +__DMA5SZ_H = 0x056B; + + +/***************************************************************************** + FRCTL_A +*****************************************************************************/ +__FRCTL0 = 0x0140; +__FRCTL0_L = 0x0140; +__FRCTL0_H = 0x0141; +__GCCTL0 = 0x0144; +__GCCTL0_L = 0x0144; +__GCCTL0_H = 0x0145; +__GCCTL1 = 0x0146; +__GCCTL1_L = 0x0146; +__GCCTL1_H = 0x0147; + + +/***************************************************************************** + LEA +*****************************************************************************/ +__LEACAP = 0x0A80; +__LEACAPL = 0x0A80; +__LEACAPH = 0x0A82; + +__LEACNF0 = 0x0A84; +__LEACNF0L = 0x0A84; +__LEACNF0H = 0x0A86; + +__LEACNF1 = 0x0A88; +__LEACNF1L = 0x0A88; +__LEACNF1H = 0x0A8A; + +__LEACNF2 = 0x0A8C; +__LEACNF2L = 0x0A8C; +__LEACNF2H = 0x0A8E; + +__LEAMB = 0x0A90; +__LEAMBL = 0x0A90; +__LEAMBH = 0x0A92; + +__LEAMT = 0x0A94; +__LEAMTL = 0x0A94; +__LEAMTH = 0x0A96; + +__LEACMA = 0x0A98; +__LEACMAL = 0x0A98; +__LEACMAH = 0x0A9A; + +__LEACMCTL = 0x0A9C; +__LEACMCTLL = 0x0A9C; +__LEACMCTLH = 0x0A9E; + +__LEACMDSTAT = 0x0AA8; +__LEACMDSTATL = 0x0AA8; +__LEACMDSTATH = 0x0AAA; + +__LEAS1STAT = 0x0AAC; +__LEAS1STATL = 0x0AAC; +__LEAS1STATH = 0x0AAE; + +__LEAS0STAT = 0x0AB0; +__LEAS0STATL = 0x0AB0; +__LEAS0STATH = 0x0AB2; + +__LEADSTSTAT = 0x0AB4; +__LEADSTSTATL = 0x0AB4; +__LEADSTSTATH = 0x0AB6; + +__LEAPMCTL = 0x0AC0; +__LEAPMCTLL = 0x0AC0; +__LEAPMCTLH = 0x0AC2; + +__LEAPMDST = 0x0AC4; +__LEAPMDSTL = 0x0AC4; +__LEAPMDSTH = 0x0AC6; + +__LEAPMS1 = 0x0AC8; +__LEAPMS1L = 0x0AC8; +__LEAPMS1H = 0x0ACA; + +__LEAPMS0 = 0x0ACC; +__LEAPMS0L = 0x0ACC; +__LEAPMS0H = 0x0ACE; + +__LEAPMCB = 0x0AD0; +__LEAPMCBL = 0x0AD0; +__LEAPMCBH = 0x0AD2; + +__LEAIFGSET = 0x0AF0; +__LEAIFGSETL = 0x0AF0; +__LEAIFGSETH = 0x0AF2; + +__LEAIE = 0x0AF4; +__LEAIEL = 0x0AF4; +__LEAIEH = 0x0AF6; + +__LEAIFG = 0x0AF8; +__LEAIFGL = 0x0AF8; +__LEAIFGH = 0x0AFA; + +__LEAIV = 0x0AFC; +__LEAIVL = 0x0AFC; +__LEAIVH = 0x0AFE; + + + +/***************************************************************************** + MPU +*****************************************************************************/ +__MPUCTL0 = 0x05A0; +__MPUCTL0_L = 0x05A0; +__MPUCTL0_H = 0x05A1; +__MPUCTL1 = 0x05A2; +__MPUCTL1_L = 0x05A2; +__MPUCTL1_H = 0x05A3; +__MPUSEGB2 = 0x05A4; +__MPUSEGB2_L = 0x05A4; +__MPUSEGB2_H = 0x05A5; +__MPUSEGB1 = 0x05A6; +__MPUSEGB1_L = 0x05A6; +__MPUSEGB1_H = 0x05A7; +__MPUSAM = 0x05A8; +__MPUSAM_L = 0x05A8; +__MPUSAM_H = 0x05A9; +__MPUIPC0 = 0x05AA; +__MPUIPC0_L = 0x05AA; +__MPUIPC0_H = 0x05AB; +__MPUIPSEGB2 = 0x05AC; +__MPUIPSEGB2_L = 0x05AC; +__MPUIPSEGB2_H = 0x05AD; +__MPUIPSEGB1 = 0x05AE; +__MPUIPSEGB1_L = 0x05AE; +__MPUIPSEGB1_H = 0x05AF; + + +/***************************************************************************** + MPY32 +*****************************************************************************/ +__MPY = 0x04C0; +__MPY_L = 0x04C0; +__MPY_H = 0x04C1; +__MPYS = 0x04C2; +__MPYS_L = 0x04C2; +__MPYS_H = 0x04C3; +__MAC = 0x04C4; +__MAC_L = 0x04C4; +__MAC_H = 0x04C5; +__MACS = 0x04C6; +__MACS_L = 0x04C6; +__MACS_H = 0x04C7; +__OP2 = 0x04C8; +__OP2_L = 0x04C8; +__OP2_H = 0x04C9; +__RESLO = 0x04CA; +__RESLO_L = 0x04CA; +__RESLO_H = 0x04CB; +__RESHI = 0x04CC; +__RESHI_L = 0x04CC; +__RESHI_H = 0x04CD; +__SUMEXT = 0x04CE; +__SUMEXT_L = 0x04CE; +__SUMEXT_H = 0x04CF; +__MPY32L = 0x04D0; +__MPY32L_L = 0x04D0; +__MPY32L_H = 0x04D1; +__MPY32H = 0x04D2; +__MPY32H_L = 0x04D2; +__MPY32H_H = 0x04D3; +__MPYS32L = 0x04D4; +__MPYS32L_L = 0x04D4; +__MPYS32L_H = 0x04D5; +__MPYS32H = 0x04D6; +__MPYS32H_L = 0x04D6; +__MPYS32H_H = 0x04D7; +__MAC32L = 0x04D8; +__MAC32L_L = 0x04D8; +__MAC32L_H = 0x04D9; +__MAC32H = 0x04DA; +__MAC32H_L = 0x04DA; +__MAC32H_H = 0x04DB; +__MACS32L = 0x04DC; +__MACS32L_L = 0x04DC; +__MACS32L_H = 0x04DD; +__MACS32H = 0x04DE; +__MACS32H_L = 0x04DE; +__MACS32H_H = 0x04DF; +__OP2L = 0x04E0; +__OP2L_L = 0x04E0; +__OP2L_H = 0x04E1; +__OP2H = 0x04E2; +__OP2H_L = 0x04E2; +__OP2H_H = 0x04E3; +__RES0 = 0x04E4; +__RES0_L = 0x04E4; +__RES0_H = 0x04E5; +__RES1 = 0x04E6; +__RES1_L = 0x04E6; +__RES1_H = 0x04E7; +__RES2 = 0x04E8; +__RES2_L = 0x04E8; +__RES2_H = 0x04E9; +__RES3 = 0x04EA; +__RES3_L = 0x04EA; +__RES3_H = 0x04EB; +__MPY32CTL0 = 0x04EC; +__MPY32CTL0_L = 0x04EC; +__MPY32CTL0_H = 0x04ED; + + +/***************************************************************************** + PMM +*****************************************************************************/ +__PMMCTL0 = 0x0120; +__PMMCTL0_L = 0x0120; +__PMMCTL0_H = 0x0121; +__PMMIFG = 0x012A; +__PMMIFG_L = 0x012A; +__PMMIFG_H = 0x012B; +__PM5CTL0 = 0x0130; +__PM5CTL0_L = 0x0130; +__PM5CTL0_H = 0x0131; + + +/***************************************************************************** + RAMCTL +*****************************************************************************/ +__RCCTL0 = 0x0158; +__RCCTL0_L = 0x0158; +__RCCTL0_H = 0x0159; + + +/***************************************************************************** + REF_A +*****************************************************************************/ +__REFCTL0 = 0x01B0; +__REFCTL0_L = 0x01B0; +__REFCTL0_H = 0x01B1; + + +/***************************************************************************** + RTC_C +*****************************************************************************/ +__RTCCTL0 = 0x04A0; +__RTCCTL0_L = 0x04A0; +__RTCCTL0_H = 0x04A1; +__RTCCTL13 = 0x04A2; +__RTCCTL13_L = 0x04A2; +__RTCCTL13_H = 0x04A3; +__RTCOCAL = 0x04A4; +__RTCOCAL_L = 0x04A4; +__RTCOCAL_H = 0x04A5; +__RTCTCMP = 0x04A6; +__RTCTCMP_L = 0x04A6; +__RTCTCMP_H = 0x04A7; +__RTCPS0CTL = 0x04A8; +__RTCPS0CTL_L = 0x04A8; +__RTCPS0CTL_H = 0x04A9; +__RTCPS1CTL = 0x04AA; +__RTCPS1CTL_L = 0x04AA; +__RTCPS1CTL_H = 0x04AB; +__RTCPS = 0x04AC; +__RTCPS_L = 0x04AC; +__RTCPS_H = 0x04AD; +__RTCIV = 0x04AE; +__RTCIV_L = 0x04AE; +__RTCIV_H = 0x04AF; +__RTCTIM0 = 0x04B0; +__RTCTIM0_L = 0x04B0; +__RTCTIM0_H = 0x04B1; +__RTCCNT12 = 0x04B0; +__RTCCNT12_L = 0x04B0; +__RTCCNT12_H = 0x04B1; +__RTCTIM1 = 0x04B2; +__RTCTIM1_L = 0x04B2; +__RTCTIM1_H = 0x04B3; +__RTCCNT34 = 0x04B2; +__RTCCNT34_L = 0x04B2; +__RTCCNT34_H = 0x04B3; +__RTCDATE = 0x04B4; +__RTCDATE_L = 0x04B4; +__RTCDATE_H = 0x04B5; +__RTCYEAR = 0x04B6; +__RTCYEAR_L = 0x04B6; +__RTCYEAR_H = 0x04B7; +__RTCAMINHR = 0x04B8; +__RTCAMINHR_L = 0x04B8; +__RTCAMINHR_H = 0x04B9; +__RTCADOWDAY = 0x04BA; +__RTCADOWDAY_L = 0x04BA; +__RTCADOWDAY_H = 0x04BB; +__BIN2BCD = 0x04BC; +__BIN2BCD_L = 0x04BC; +__BIN2BCD_H = 0x04BD; +__BCD2BIN = 0x04BE; +__BCD2BIN_L = 0x04BE; +__BCD2BIN_H = 0x04BF; +__RT0PS = 0x04AC; + +__RT1PS = 0x04AD; + +__RTCCNT1 = 0x04B0; + +__RTCCNT2 = 0x04B1; + +__RTCCNT3 = 0x04B2; + +__RTCCNT4 = 0x04B3; + + + +/***************************************************************************** + SFR +*****************************************************************************/ +__SFRIE1 = 0x0100; +__SFRIE1_L = 0x0100; +__SFRIE1_H = 0x0101; +__SFRIFG1 = 0x0102; +__SFRIFG1_L = 0x0102; +__SFRIFG1_H = 0x0103; +__SFRRPCR = 0x0104; +__SFRRPCR_L = 0x0104; +__SFRRPCR_H = 0x0105; + + +/***************************************************************************** + SYS +*****************************************************************************/ +__SYSCTL = 0x0180; +__SYSCTL_L = 0x0180; +__SYSCTL_H = 0x0181; +__SYSJMBC = 0x0186; +__SYSJMBC_L = 0x0186; +__SYSJMBC_H = 0x0187; +__SYSJMBI0 = 0x0188; +__SYSJMBI0_L = 0x0188; +__SYSJMBI0_H = 0x0189; +__SYSJMBI1 = 0x018A; +__SYSJMBI1_L = 0x018A; +__SYSJMBI1_H = 0x018B; +__SYSJMBO0 = 0x018C; +__SYSJMBO0_L = 0x018C; +__SYSJMBO0_H = 0x018D; +__SYSJMBO1 = 0x018E; +__SYSJMBO1_L = 0x018E; +__SYSJMBO1_H = 0x018F; +__SYSUNIV = 0x019A; +__SYSUNIV_L = 0x019A; +__SYSUNIV_H = 0x019B; +__SYSSNIV = 0x019C; +__SYSSNIV_L = 0x019C; +__SYSSNIV_H = 0x019D; +__SYSRSTIV = 0x019E; +__SYSRSTIV_L = 0x019E; +__SYSRSTIV_H = 0x019F; + + +/***************************************************************************** + TA0 +*****************************************************************************/ +__TA0CTL = 0x0340; +__TA0CTL_L = 0x0340; +__TA0CTL_H = 0x0341; +__TA0CCTL0 = 0x0342; +__TA0CCTL0_L = 0x0342; +__TA0CCTL0_H = 0x0343; +__TA0CCTL1 = 0x0344; +__TA0CCTL1_L = 0x0344; +__TA0CCTL1_H = 0x0345; +__TA0CCTL2 = 0x0346; +__TA0CCTL2_L = 0x0346; +__TA0CCTL2_H = 0x0347; +__TA0R = 0x0350; +__TA0R_L = 0x0350; +__TA0R_H = 0x0351; +__TA0CCR0 = 0x0352; +__TA0CCR0_L = 0x0352; +__TA0CCR0_H = 0x0353; +__TA0CCR1 = 0x0354; +__TA0CCR1_L = 0x0354; +__TA0CCR1_H = 0x0355; +__TA0CCR2 = 0x0356; +__TA0CCR2_L = 0x0356; +__TA0CCR2_H = 0x0357; +__TA0EX0 = 0x0360; +__TA0EX0_L = 0x0360; +__TA0EX0_H = 0x0361; +__TA0IV = 0x036E; +__TA0IV_L = 0x036E; +__TA0IV_H = 0x036F; + + +/***************************************************************************** + TA1 +*****************************************************************************/ +__TA1CTL = 0x0380; +__TA1CTL_L = 0x0380; +__TA1CTL_H = 0x0381; +__TA1CCTL0 = 0x0382; +__TA1CCTL0_L = 0x0382; +__TA1CCTL0_H = 0x0383; +__TA1CCTL1 = 0x0384; +__TA1CCTL1_L = 0x0384; +__TA1CCTL1_H = 0x0385; +__TA1CCTL2 = 0x0386; +__TA1CCTL2_L = 0x0386; +__TA1CCTL2_H = 0x0387; +__TA1R = 0x0390; +__TA1R_L = 0x0390; +__TA1R_H = 0x0391; +__TA1CCR0 = 0x0392; +__TA1CCR0_L = 0x0392; +__TA1CCR0_H = 0x0393; +__TA1CCR1 = 0x0394; +__TA1CCR1_L = 0x0394; +__TA1CCR1_H = 0x0395; +__TA1CCR2 = 0x0396; +__TA1CCR2_L = 0x0396; +__TA1CCR2_H = 0x0397; +__TA1EX0 = 0x03A0; +__TA1EX0_L = 0x03A0; +__TA1EX0_H = 0x03A1; +__TA1IV = 0x03AE; +__TA1IV_L = 0x03AE; +__TA1IV_H = 0x03AF; + + +/***************************************************************************** + TA2 +*****************************************************************************/ +__TA2CTL = 0x0400; +__TA2CTL_L = 0x0400; +__TA2CTL_H = 0x0401; +__TA2CCTL0 = 0x0402; +__TA2CCTL0_L = 0x0402; +__TA2CCTL0_H = 0x0403; +__TA2CCTL1 = 0x0404; +__TA2CCTL1_L = 0x0404; +__TA2CCTL1_H = 0x0405; +__TA2R = 0x0410; +__TA2R_L = 0x0410; +__TA2R_H = 0x0411; +__TA2CCR0 = 0x0412; +__TA2CCR0_L = 0x0412; +__TA2CCR0_H = 0x0413; +__TA2CCR1 = 0x0414; +__TA2CCR1_L = 0x0414; +__TA2CCR1_H = 0x0415; +__TA2EX0 = 0x0420; +__TA2EX0_L = 0x0420; +__TA2EX0_H = 0x0421; +__TA2IV = 0x042E; +__TA2IV_L = 0x042E; +__TA2IV_H = 0x042F; + + +/***************************************************************************** + TA3 +*****************************************************************************/ +__TA3CTL = 0x0440; +__TA3CTL_L = 0x0440; +__TA3CTL_H = 0x0441; +__TA3CCTL0 = 0x0442; +__TA3CCTL0_L = 0x0442; +__TA3CCTL0_H = 0x0443; +__TA3CCTL1 = 0x0444; +__TA3CCTL1_L = 0x0444; +__TA3CCTL1_H = 0x0445; +__TA3R = 0x0450; +__TA3R_L = 0x0450; +__TA3R_H = 0x0451; +__TA3CCR0 = 0x0452; +__TA3CCR0_L = 0x0452; +__TA3CCR0_H = 0x0453; +__TA3CCR1 = 0x0454; +__TA3CCR1_L = 0x0454; +__TA3CCR1_H = 0x0455; +__TA3EX0 = 0x0460; +__TA3EX0_L = 0x0460; +__TA3EX0_H = 0x0461; +__TA3IV = 0x046E; +__TA3IV_L = 0x046E; +__TA3IV_H = 0x046F; + + +/***************************************************************************** + TA4 +*****************************************************************************/ +__TA4CTL = 0x07C0; +__TA4CTL_L = 0x07C0; +__TA4CTL_H = 0x07C1; +__TA4CCTL0 = 0x07C2; +__TA4CCTL0_L = 0x07C2; +__TA4CCTL0_H = 0x07C3; +__TA4CCTL1 = 0x07C4; +__TA4CCTL1_L = 0x07C4; +__TA4CCTL1_H = 0x07C5; +__TA4CCTL2 = 0x07C6; +__TA4CCTL2_L = 0x07C6; +__TA4CCTL2_H = 0x07C7; +__TA4R = 0x07D0; +__TA4R_L = 0x07D0; +__TA4R_H = 0x07D1; +__TA4CCR0 = 0x07D2; +__TA4CCR0_L = 0x07D2; +__TA4CCR0_H = 0x07D3; +__TA4CCR1 = 0x07D4; +__TA4CCR1_L = 0x07D4; +__TA4CCR1_H = 0x07D5; +__TA4CCR2 = 0x07D6; +__TA4CCR2_L = 0x07D6; +__TA4CCR2_H = 0x07D7; +__TA4EX0 = 0x07E0; +__TA4EX0_L = 0x07E0; +__TA4EX0_H = 0x07E1; +__TA4IV = 0x07EE; +__TA4IV_L = 0x07EE; +__TA4IV_H = 0x07EF; + + +/***************************************************************************** + TB0 +*****************************************************************************/ +__TB0CTL = 0x03C0; +__TB0CTL_L = 0x03C0; +__TB0CTL_H = 0x03C1; +__TB0CCTL0 = 0x03C2; +__TB0CCTL0_L = 0x03C2; +__TB0CCTL0_H = 0x03C3; +__TB0CCTL1 = 0x03C4; +__TB0CCTL1_L = 0x03C4; +__TB0CCTL1_H = 0x03C5; +__TB0CCTL2 = 0x03C6; +__TB0CCTL2_L = 0x03C6; +__TB0CCTL2_H = 0x03C7; +__TB0CCTL3 = 0x03C8; +__TB0CCTL3_L = 0x03C8; +__TB0CCTL3_H = 0x03C9; +__TB0CCTL4 = 0x03CA; +__TB0CCTL4_L = 0x03CA; +__TB0CCTL4_H = 0x03CB; +__TB0CCTL5 = 0x03CC; +__TB0CCTL5_L = 0x03CC; +__TB0CCTL5_H = 0x03CD; +__TB0CCTL6 = 0x03CE; +__TB0CCTL6_L = 0x03CE; +__TB0CCTL6_H = 0x03CF; +__TB0R = 0x03D0; +__TB0R_L = 0x03D0; +__TB0R_H = 0x03D1; +__TB0CCR0 = 0x03D2; +__TB0CCR0_L = 0x03D2; +__TB0CCR0_H = 0x03D3; +__TB0CCR1 = 0x03D4; +__TB0CCR1_L = 0x03D4; +__TB0CCR1_H = 0x03D5; +__TB0CCR2 = 0x03D6; +__TB0CCR2_L = 0x03D6; +__TB0CCR2_H = 0x03D7; +__TB0CCR3 = 0x03D8; +__TB0CCR3_L = 0x03D8; +__TB0CCR3_H = 0x03D9; +__TB0CCR4 = 0x03DA; +__TB0CCR4_L = 0x03DA; +__TB0CCR4_H = 0x03DB; +__TB0CCR5 = 0x03DC; +__TB0CCR5_L = 0x03DC; +__TB0CCR5_H = 0x03DD; +__TB0CCR6 = 0x03DE; +__TB0CCR6_L = 0x03DE; +__TB0CCR6_H = 0x03DF; +__TB0EX0 = 0x03E0; +__TB0EX0_L = 0x03E0; +__TB0EX0_H = 0x03E1; +__TB0IV = 0x03EE; +__TB0IV_L = 0x03EE; +__TB0IV_H = 0x03EF; + + +/***************************************************************************** + WDT_A +*****************************************************************************/ +__WDTCTL = 0x015C; +__WDTCTL_L = 0x015C; +__WDTCTL_H = 0x015D; + + +/***************************************************************************** + eUSCI_A0 +*****************************************************************************/ +__UCA0CTLW0 = 0x05C0; +__UCA0CTLW0_L = 0x05C0; +__UCA0CTLW0_H = 0x05C1; +__UCA0CTLW1 = 0x05C2; +__UCA0CTLW1_L = 0x05C2; +__UCA0CTLW1_H = 0x05C3; +__UCA0BRW = 0x05C6; +__UCA0BRW_L = 0x05C6; +__UCA0BRW_H = 0x05C7; +__UCA0MCTLW = 0x05C8; +__UCA0MCTLW_L = 0x05C8; +__UCA0MCTLW_H = 0x05C9; +__UCA0STATW = 0x05CA; +__UCA0STATW_L = 0x05CA; +__UCA0STATW_H = 0x05CB; +__UCA0RXBUF = 0x05CC; +__UCA0RXBUF_L = 0x05CC; +__UCA0RXBUF_H = 0x05CD; +__UCA0TXBUF = 0x05CE; +__UCA0TXBUF_L = 0x05CE; +__UCA0TXBUF_H = 0x05CF; +__UCA0ABCTL = 0x05D0; +__UCA0ABCTL_L = 0x05D0; +__UCA0ABCTL_H = 0x05D1; +__UCA0IRCTL = 0x05D2; +__UCA0IRCTL_L = 0x05D2; +__UCA0IRCTL_H = 0x05D3; +__UCA0IE = 0x05DA; +__UCA0IE_L = 0x05DA; +__UCA0IE_H = 0x05DB; +__UCA0IFG = 0x05DC; +__UCA0IFG_L = 0x05DC; +__UCA0IFG_H = 0x05DD; +__UCA0IV = 0x05DE; +__UCA0IV_L = 0x05DE; +__UCA0IV_H = 0x05DF; + + +/***************************************************************************** + eUSCI_A1 +*****************************************************************************/ +__UCA1CTLW0 = 0x05E0; +__UCA1CTLW0_L = 0x05E0; +__UCA1CTLW0_H = 0x05E1; +__UCA1CTLW1 = 0x05E2; +__UCA1CTLW1_L = 0x05E2; +__UCA1CTLW1_H = 0x05E3; +__UCA1BRW = 0x05E6; +__UCA1BRW_L = 0x05E6; +__UCA1BRW_H = 0x05E7; +__UCA1MCTLW = 0x05E8; +__UCA1MCTLW_L = 0x05E8; +__UCA1MCTLW_H = 0x05E9; +__UCA1STATW = 0x05EA; +__UCA1STATW_L = 0x05EA; +__UCA1STATW_H = 0x05EB; +__UCA1RXBUF = 0x05EC; +__UCA1RXBUF_L = 0x05EC; +__UCA1RXBUF_H = 0x05ED; +__UCA1TXBUF = 0x05EE; +__UCA1TXBUF_L = 0x05EE; +__UCA1TXBUF_H = 0x05EF; +__UCA1ABCTL = 0x05F0; +__UCA1ABCTL_L = 0x05F0; +__UCA1ABCTL_H = 0x05F1; +__UCA1IRCTL = 0x05F2; +__UCA1IRCTL_L = 0x05F2; +__UCA1IRCTL_H = 0x05F3; +__UCA1IE = 0x05FA; +__UCA1IE_L = 0x05FA; +__UCA1IE_H = 0x05FB; +__UCA1IFG = 0x05FC; +__UCA1IFG_L = 0x05FC; +__UCA1IFG_H = 0x05FD; +__UCA1IV = 0x05FE; +__UCA1IV_L = 0x05FE; +__UCA1IV_H = 0x05FF; + + +/***************************************************************************** + eUSCI_A2 +*****************************************************************************/ +__UCA2CTLW0 = 0x0600; +__UCA2CTLW0_L = 0x0600; +__UCA2CTLW0_H = 0x0601; +__UCA2CTLW1 = 0x0602; +__UCA2CTLW1_L = 0x0602; +__UCA2CTLW1_H = 0x0603; +__UCA2BRW = 0x0606; +__UCA2BRW_L = 0x0606; +__UCA2BRW_H = 0x0607; +__UCA2MCTLW = 0x0608; +__UCA2MCTLW_L = 0x0608; +__UCA2MCTLW_H = 0x0609; +__UCA2STATW = 0x060A; +__UCA2STATW_L = 0x060A; +__UCA2STATW_H = 0x060B; +__UCA2RXBUF = 0x060C; +__UCA2RXBUF_L = 0x060C; +__UCA2RXBUF_H = 0x060D; +__UCA2TXBUF = 0x060E; +__UCA2TXBUF_L = 0x060E; +__UCA2TXBUF_H = 0x060F; +__UCA2ABCTL = 0x0610; +__UCA2ABCTL_L = 0x0610; +__UCA2ABCTL_H = 0x0611; +__UCA2IRCTL = 0x0612; +__UCA2IRCTL_L = 0x0612; +__UCA2IRCTL_H = 0x0613; +__UCA2IE = 0x061A; +__UCA2IE_L = 0x061A; +__UCA2IE_H = 0x061B; +__UCA2IFG = 0x061C; +__UCA2IFG_L = 0x061C; +__UCA2IFG_H = 0x061D; +__UCA2IV = 0x061E; +__UCA2IV_L = 0x061E; +__UCA2IV_H = 0x061F; + + +/***************************************************************************** + eUSCI_A3 +*****************************************************************************/ +__UCA3CTLW0 = 0x0620; +__UCA3CTLW0_L = 0x0620; +__UCA3CTLW0_H = 0x0621; +__UCA3CTLW1 = 0x0622; +__UCA3CTLW1_L = 0x0622; +__UCA3CTLW1_H = 0x0623; +__UCA3BRW = 0x0626; +__UCA3BRW_L = 0x0626; +__UCA3BRW_H = 0x0627; +__UCA3MCTLW = 0x0628; +__UCA3MCTLW_L = 0x0628; +__UCA3MCTLW_H = 0x0629; +__UCA3STATW = 0x062A; +__UCA3STATW_L = 0x062A; +__UCA3STATW_H = 0x062B; +__UCA3RXBUF = 0x062C; +__UCA3RXBUF_L = 0x062C; +__UCA3RXBUF_H = 0x062D; +__UCA3TXBUF = 0x062E; +__UCA3TXBUF_L = 0x062E; +__UCA3TXBUF_H = 0x062F; +__UCA3ABCTL = 0x0630; +__UCA3ABCTL_L = 0x0630; +__UCA3ABCTL_H = 0x0631; +__UCA3IRCTL = 0x0632; +__UCA3IRCTL_L = 0x0632; +__UCA3IRCTL_H = 0x0633; +__UCA3IE = 0x063A; +__UCA3IE_L = 0x063A; +__UCA3IE_H = 0x063B; +__UCA3IFG = 0x063C; +__UCA3IFG_L = 0x063C; +__UCA3IFG_H = 0x063D; +__UCA3IV = 0x063E; +__UCA3IV_L = 0x063E; +__UCA3IV_H = 0x063F; + + +/***************************************************************************** + eUSCI_B0 +*****************************************************************************/ +__UCB0CTLW0 = 0x0640; +__UCB0CTLW0_L = 0x0640; +__UCB0CTLW0_H = 0x0641; +__UCB0CTLW1 = 0x0642; +__UCB0CTLW1_L = 0x0642; +__UCB0CTLW1_H = 0x0643; +__UCB0BRW = 0x0646; +__UCB0BRW_L = 0x0646; +__UCB0BRW_H = 0x0647; +__UCB0STATW = 0x0648; +__UCB0STATW_L = 0x0648; +__UCB0STATW_H = 0x0649; +__UCB0TBCNT = 0x064A; +__UCB0TBCNT_L = 0x064A; +__UCB0TBCNT_H = 0x064B; +__UCB0RXBUF = 0x064C; +__UCB0RXBUF_L = 0x064C; +__UCB0RXBUF_H = 0x064D; +__UCB0TXBUF = 0x064E; +__UCB0TXBUF_L = 0x064E; +__UCB0TXBUF_H = 0x064F; +__UCB0I2COA0 = 0x0654; +__UCB0I2COA0_L = 0x0654; +__UCB0I2COA0_H = 0x0655; +__UCB0I2COA1 = 0x0656; +__UCB0I2COA1_L = 0x0656; +__UCB0I2COA1_H = 0x0657; +__UCB0I2COA2 = 0x0658; +__UCB0I2COA2_L = 0x0658; +__UCB0I2COA2_H = 0x0659; +__UCB0I2COA3 = 0x065A; +__UCB0I2COA3_L = 0x065A; +__UCB0I2COA3_H = 0x065B; +__UCB0ADDRX = 0x065C; +__UCB0ADDRX_L = 0x065C; +__UCB0ADDRX_H = 0x065D; +__UCB0ADDMASK = 0x065E; +__UCB0ADDMASK_L = 0x065E; +__UCB0ADDMASK_H = 0x065F; +__UCB0I2CSA = 0x0660; +__UCB0I2CSA_L = 0x0660; +__UCB0I2CSA_H = 0x0661; +__UCB0IE = 0x066A; +__UCB0IE_L = 0x066A; +__UCB0IE_H = 0x066B; +__UCB0IFG = 0x066C; +__UCB0IFG_L = 0x066C; +__UCB0IFG_H = 0x066D; +__UCB0IV = 0x066E; +__UCB0IV_L = 0x066E; +__UCB0IV_H = 0x066F; + + +/***************************************************************************** + eUSCI_B1 +*****************************************************************************/ +__UCB1CTLW0 = 0x0680; +__UCB1CTLW0_L = 0x0680; +__UCB1CTLW0_H = 0x0681; +__UCB1CTLW1 = 0x0682; +__UCB1CTLW1_L = 0x0682; +__UCB1CTLW1_H = 0x0683; +__UCB1BRW = 0x0686; +__UCB1BRW_L = 0x0686; +__UCB1BRW_H = 0x0687; +__UCB1STATW = 0x0688; +__UCB1STATW_L = 0x0688; +__UCB1STATW_H = 0x0689; +__UCB1TBCNT = 0x068A; +__UCB1TBCNT_L = 0x068A; +__UCB1TBCNT_H = 0x068B; +__UCB1RXBUF = 0x068C; +__UCB1RXBUF_L = 0x068C; +__UCB1RXBUF_H = 0x068D; +__UCB1TXBUF = 0x068E; +__UCB1TXBUF_L = 0x068E; +__UCB1TXBUF_H = 0x068F; +__UCB1I2COA0 = 0x0694; +__UCB1I2COA0_L = 0x0694; +__UCB1I2COA0_H = 0x0695; +__UCB1I2COA1 = 0x0696; +__UCB1I2COA1_L = 0x0696; +__UCB1I2COA1_H = 0x0697; +__UCB1I2COA2 = 0x0698; +__UCB1I2COA2_L = 0x0698; +__UCB1I2COA2_H = 0x0699; +__UCB1I2COA3 = 0x069A; +__UCB1I2COA3_L = 0x069A; +__UCB1I2COA3_H = 0x069B; +__UCB1ADDRX = 0x069C; +__UCB1ADDRX_L = 0x069C; +__UCB1ADDRX_H = 0x069D; +__UCB1ADDMASK = 0x069E; +__UCB1ADDMASK_L = 0x069E; +__UCB1ADDMASK_H = 0x069F; +__UCB1I2CSA = 0x06A0; +__UCB1I2CSA_L = 0x06A0; +__UCB1I2CSA_H = 0x06A1; +__UCB1IE = 0x06AA; +__UCB1IE_L = 0x06AA; +__UCB1IE_H = 0x06AB; +__UCB1IFG = 0x06AC; +__UCB1IFG_L = 0x06AC; +__UCB1IFG_H = 0x06AD; +__UCB1IV = 0x06AE; +__UCB1IV_L = 0x06AE; +__UCB1IV_H = 0x06AF; + + +/***************************************************************************** + eUSCI_B2 +*****************************************************************************/ +__UCB2CTLW0 = 0x06C0; +__UCB2CTLW0_L = 0x06C0; +__UCB2CTLW0_H = 0x06C1; +__UCB2CTLW1 = 0x06C2; +__UCB2CTLW1_L = 0x06C2; +__UCB2CTLW1_H = 0x06C3; +__UCB2BRW = 0x06C6; +__UCB2BRW_L = 0x06C6; +__UCB2BRW_H = 0x06C7; +__UCB2STATW = 0x06C8; +__UCB2STATW_L = 0x06C8; +__UCB2STATW_H = 0x06C9; +__UCB2TBCNT = 0x06CA; +__UCB2TBCNT_L = 0x06CA; +__UCB2TBCNT_H = 0x06CB; +__UCB2RXBUF = 0x06CC; +__UCB2RXBUF_L = 0x06CC; +__UCB2RXBUF_H = 0x06CD; +__UCB2TXBUF = 0x06CE; +__UCB2TXBUF_L = 0x06CE; +__UCB2TXBUF_H = 0x06CF; +__UCB2I2COA0 = 0x06D4; +__UCB2I2COA0_L = 0x06D4; +__UCB2I2COA0_H = 0x06D5; +__UCB2I2COA1 = 0x06D6; +__UCB2I2COA1_L = 0x06D6; +__UCB2I2COA1_H = 0x06D7; +__UCB2I2COA2 = 0x06D8; +__UCB2I2COA2_L = 0x06D8; +__UCB2I2COA2_H = 0x06D9; +__UCB2I2COA3 = 0x06DA; +__UCB2I2COA3_L = 0x06DA; +__UCB2I2COA3_H = 0x06DB; +__UCB2ADDRX = 0x06DC; +__UCB2ADDRX_L = 0x06DC; +__UCB2ADDRX_H = 0x06DD; +__UCB2ADDMASK = 0x06DE; +__UCB2ADDMASK_L = 0x06DE; +__UCB2ADDMASK_H = 0x06DF; +__UCB2I2CSA = 0x06E0; +__UCB2I2CSA_L = 0x06E0; +__UCB2I2CSA_H = 0x06E1; +__UCB2IE = 0x06EA; +__UCB2IE_L = 0x06EA; +__UCB2IE_H = 0x06EB; +__UCB2IFG = 0x06EC; +__UCB2IFG_L = 0x06EC; +__UCB2IFG_H = 0x06ED; +__UCB2IV = 0x06EE; +__UCB2IV_L = 0x06EE; +__UCB2IV_H = 0x06EF; + + +/***************************************************************************** + eUSCI_B3 +*****************************************************************************/ +__UCB3CTLW0 = 0x0700; +__UCB3CTLW0_L = 0x0700; +__UCB3CTLW0_H = 0x0701; +__UCB3CTLW1 = 0x0702; +__UCB3CTLW1_L = 0x0702; +__UCB3CTLW1_H = 0x0703; +__UCB3BRW = 0x0706; +__UCB3BRW_L = 0x0706; +__UCB3BRW_H = 0x0707; +__UCB3STATW = 0x0708; +__UCB3STATW_L = 0x0708; +__UCB3STATW_H = 0x0709; +__UCB3TBCNT = 0x070A; +__UCB3TBCNT_L = 0x070A; +__UCB3TBCNT_H = 0x070B; +__UCB3RXBUF = 0x070C; +__UCB3RXBUF_L = 0x070C; +__UCB3RXBUF_H = 0x070D; +__UCB3TXBUF = 0x070E; +__UCB3TXBUF_L = 0x070E; +__UCB3TXBUF_H = 0x070F; +__UCB3I2COA0 = 0x0714; +__UCB3I2COA0_L = 0x0714; +__UCB3I2COA0_H = 0x0715; +__UCB3I2COA1 = 0x0716; +__UCB3I2COA1_L = 0x0716; +__UCB3I2COA1_H = 0x0717; +__UCB3I2COA2 = 0x0718; +__UCB3I2COA2_L = 0x0718; +__UCB3I2COA2_H = 0x0719; +__UCB3I2COA3 = 0x071A; +__UCB3I2COA3_L = 0x071A; +__UCB3I2COA3_H = 0x071B; +__UCB3ADDRX = 0x071C; +__UCB3ADDRX_L = 0x071C; +__UCB3ADDRX_H = 0x071D; +__UCB3ADDMASK = 0x071E; +__UCB3ADDMASK_L = 0x071E; +__UCB3ADDMASK_H = 0x071F; +__UCB3I2CSA = 0x0720; +__UCB3I2CSA_L = 0x0720; +__UCB3I2CSA_H = 0x0721; +__UCB3IE = 0x072A; +__UCB3IE_L = 0x072A; +__UCB3IE_H = 0x072B; +__UCB3IFG = 0x072C; +__UCB3IFG_L = 0x072C; +__UCB3IFG_H = 0x072D; +__UCB3IV = 0x072E; +__UCB3IV_L = 0x072E; +__UCB3IV_H = 0x072F; + +/************************************************************ +* End of Modules +************************************************************/ + + +/*----------------------------------------------------------------------------*/ +/* */ +/* Configuration */ +/* */ +/*----------------------------------------------------------------------------*/ + +ENTRY(tpl_reset_handler) + +/* Highest address of the user mode stack */ +_estack = 0x3C00; /* end of 8K RAM */ + +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0; /* required amount of heap */ +_Min_Stack_Size = 0x100; /* required amount of stack */ + +/*----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------*/ +/* */ +/* Memory */ +/* */ +/*----------------------------------------------------------------------------*/ + +/* Specify the memory areas for msp430fr5994 + * basic first version: + * - upper FRAM bank 0x10000 (208kb) not configured + */ + +MEMORY +{ + VECTOR (rx) : ORIGIN = 0x0FFB4, LENGTH = 0x4C /* ends at 0x10000, 76 bytes - 38 vectors */ + FRAM (rx) : ORIGIN = 0x04000, LENGTH = 0xBF80 /* ends at 0xff80. size is 47,875k */ + + RAM (xrw) : ORIGIN = 0x01C00, LENGTH = 4096 /* size is [4k - 8k] */ + LEA_RAM (xrw) : ORIGIN = 11263, LENGTH = 4096 /* size is [0k - 4k] */ + +} + +/*----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------*/ +/* */ +/* ISR Vectors */ +/* */ +/*----------------------------------------------------------------------------*/ + +SECTIONS { + .isr_vector : { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* vector table */ + . = ALIGN(4); + } >VECTOR +} + +/*----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------*/ +/* */ +/* Code */ +/* */ +/*----------------------------------------------------------------------------*/ + +/* + * Sections for Non Volatile variables. They should be inserted + * at the beginning of the FRAM, so that the MPU is easier to configure. + */ +SECTIONS { + .NVdata ORIGIN(FRAM) : AT ( __nvdata_load_start) { + . = ALIGN(4); + __nvdata_start = .; /* create a global symbol at non volatile data start */ + *(.osVar_NON_VOLATILE_32BIT) + *(.osVar_NON_VOLATILE_16BIT) + *(.osVar_NON_VOLATILE_8BIT) + *(.osVar_NON_VOLATILE_BOOLEAN) + *(.osVar_NON_VOLATILE_UNSPECIFIED) + + /* --- Non volatile variables section of Task fft */ + *(.Task_fft_SEC_VAR_NON_VOLATILE_32BIT ) + *(.Task_fft_SEC_VAR_NON_VOLATILE_16BIT ) + *(.Task_fft_SEC_VAR_NON_VOLATILE_8BIT ) + *(.Task_fft_SEC_VAR_NON_VOLATILE_BOOLEAN ) + *(.Task_fft_SEC_VAR_NON_VOLATILE_UNSPECIFIED ) + + + . = ALIGN(2); + __nvdata_end = .; /* define a global symbol at non volatile data end */ + __nvdata_size = SIZEOF(.NVdata); /* define a global symbol at non volatile data end */ + } >FRAM + + .NVdataInit : { + . = ALIGN(1024); /* MSP430 MPU minimal segment size */ + TPL_MPU_B1_BOUNDARY = .; /* useful for MPU initialization - start of code */ + __nvdata_load_start = .; + . += SIZEOF(.NVdata); /* reserve space for NVdata init values*/ + __nvdata_load_end = .; + } >FRAM +} + +/* init section for msp430. + * execution starts at the beginning of the fram. */ +SECTIONS { + /* we make sure that both + * - VMA (virtual memory address) and + * - LMA (load memory address) + * are the same */ + .textInit __nvdata_load_end : AT(__nvdata_load_end) { + KEEP(*(.init)) /* start here after reset */ + } > FRAM +} + +/* + * code and const of the operating system (Trampoline). + * this section is not accessible from an untrusted process + */ +SECTIONS { + . = ALIGN(4); + /* --- code of OS --- */ + ostext : { + *(.SC_handler) + *(.EI_handler) + *(.osCode) + *(.osApiCode) /* API functions */ + *(.appCommonCode) + } >FRAM + . = ALIGN(4); + /* --- const of OS --- */ + osconst : { + *(.osConst) + *(.osApiConst) /* API constants */ + } >FRAM +} + +/* + * code and const of the processes of the applications ] + */ +SECTIONS { + . = ALIGN(4); + apptext : { + __PROGCONST_SECTION_START = .; + __SEG_START_APP_CODE_CONST_RGN = .; + . = ALIGN(4); + /* --- Sections for application code --- */ + + /* --- Sections for code of tasks and ISR --- */ + *(.Task_fftCode) + + } >FRAM + . = ALIGN(4); + appconst : { + /* --- Sections for application const --- */ + *(.rodata) /* litteral strings (constants, strings, etc.) */ + *(.rodata*) /* litteral strings (constants, strings, etc.) */ + + } >FRAM +} + +/* + * Sections for const of tasks and ISR + */ +SECTIONS { + . = ALIGN(4); + procconst : { + *(.Task_fft_SEC_CONST_32BIT) + *(.Task_fft_SEC_CALIB_32BIT) + *(.Task_fft_SEC_CARTO_32BIT) + *(.Task_fft_SEC_CONFIG_DATA_32BIT) + *(.Task_fft_SEC_CONST_16BIT) + *(.Task_fft_SEC_CALIB_16BIT) + *(.Task_fft_SEC_CARTO_16BIT) + *(.Task_fft_SEC_CONFIG_DATA_16BIT) + *(.Task_fft_SEC_CONST_8BIT) + *(.Task_fft_SEC_CALIB_8BIT) + *(.Task_fft_SEC_CARTO_8BIT) + *(.Task_fft_SEC_CONFIG_DATA_8BIT) + *(.Task_fft_SEC_CONST_BOOLEAN) + *(.Task_fft_SEC_CALIB_BOOLEAN) + *(.Task_fft_SEC_CARTO_BOOLEAN) + *(.Task_fft_SEC_CONFIG_DATA_BOOLEAN) + *(.Task_fft_SEC_CONST_UNSPECIFIED) + *(.Task_fft_SEC_CALIB_UNSPECIFIED) + *(.Task_fft_SEC_CARTO_UNSPECIFIED) + *(.Task_fft_SEC_CONFIG_DATA_UNSPECIFIED) + + . = ALIGN(4); + __SEG_STOP_APP_CODE_CONST_RGN = . - 1; + __PROGCONST_SECTION_STOP = . - 1; + } >FRAM +} + + /* remaining .text (ie no section given) */ +SECTIONS { + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.eh_frame) + + /* Constructors sections (list of pointers) + * from https://gcc.gnu.org/onlinedocs/gccint/Initialization.html + * set in .text section to be effectively loaded in flash + **/ + PROVIDE_HIDDEN (__ctors_start = .); + KEEP (*(.ctors*)) + KEEP (*(SORT(.ctors.*))) + PROVIDE_HIDDEN (__ctors_end = .); + + /* Destructors sections (list of pointers) + * from https://gcc.gnu.org/onlinedocs/gccint/Initialization.html + * set in .text section to be effectively loaded in flash + **/ + PROVIDE_HIDDEN (__dtors_start = .); + KEEP (*(.dtors*)) + KEEP (*(SORT(.dtors.*))) + PROVIDE_HIDDEN (__dtors_end = .); + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + _exit = .; + } >FRAM +} + +/* used by the startup to initialize data */ +SECTIONS { + _sramStartAddress = .; + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : AT ( __data_load_start ) + { + . = ALIGN(4); + __data_start = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + *(.osVar) + *(.osVar_POWER_ON_INIT_32BIT) + *(.osVar_FAST_32BIT) + *(.osVar_32BIT) + *(.osVar_POWER_ON_INIT_16BIT) + *(.osVar_FAST_16BIT) + *(.osVar_16BIT) + *(.osVar_POWER_ON_INIT_8BIT) + *(.osVar_FAST_8BIT) + *(.osVar_8BIT) + *(.osVar_POWER_ON_INIT_BOOLEAN) + *(.osVar_FAST_BOOLEAN) + *(.osVar_BOOLEAN) + *(.osVar_POWER_ON_INIT_UNSPECIFIED) + *(.osVar_FAST_UNSPECIFIED) + *(.osVar_UNSPECIFIED) + +/* Initialized variables section of Task fft */ + *(.Task_fft_SEC_VAR_POWER_ON_INIT_32BIT) + *(.Task_fft_SEC_VAR_POWER_ON_INIT_16BIT) + *(.Task_fft_SEC_VAR_POWER_ON_INIT_8BIT) + *(.Task_fft_SEC_VAR_POWER_ON_INIT_BOOLEAN) + *(.Task_fft_SEC_VAR_POWER_ON_INIT_UNSPECIFIED) + + . = ALIGN(4); + __data_end = .; /* define a global symbol at data end */ + __data_size = SIZEOF(.data); + } >RAM + + .dataInit : { + . = ALIGN(16); + __data_load_start = .; + /* reserve space for data init value */ + . += SIZEOF(.data); + } >FRAM +} + +SECTIONS { +.data_lea : { + +/* Initialized LEA variables section of Task fft */ + *(.Task_fft_SEC_LEA_VAR_LEA_32BIT) + *(.Task_fft_SEC_LEA_VAR_LEA_16BIT) + *(.Task_fft_SEC_LEA_VAR_LEA_8BIT) + *(.Task_fft_SEC_LEA_VAR_LEA_BOOLEAN) + *(.Task_fft_SEC_LEA_VAR_LEA_UNSPECIFIED) + + . = ALIGN(4); + } > LEA_RAM +} + + /* + * private data of processes + */ +SECTIONS { + .Task_fft_SEC_VAR : { + /* . = ALIGN(__SEG_ALIGN_Task_fft_VAR_RGN); TODO check alignment*/ + __SEG_START_Task_fft_VAR_RGN = .; + /* --- Initialized variables section of Task fft */ + *(.Task_fft_SEC_VAR_NOINIT_32BIT) + *(.Task_fft_SEC_VAR_FAST_32BIT) + *(.Task_fft_SEC_VAR_32BIT) + *(.Task_fft_SEC_VAR_NOINIT_16BIT) + *(.Task_fft_SEC_VAR_FAST_16BIT) + *(.Task_fft_SEC_VAR_16BIT) + *(.Task_fft_SEC_VAR_NOINIT_8BIT) + *(.Task_fft_SEC_VAR_FAST_8BIT) + *(.Task_fft_SEC_VAR_8BIT) + *(.Task_fft_SEC_VAR_NOINIT_BOOLEAN) + *(.Task_fft_SEC_VAR_FAST_BOOLEAN) + *(.Task_fft_SEC_VAR_BOOLEAN) + *(.Task_fft_SEC_VAR_NOINIT_UNSPECIFIED) + *(.Task_fft_SEC_VAR_FAST_UNSPECIFIED) + *(.Task_fft_SEC_VAR_UNSPECIFIED) + __SEG_END_Task_fft_VAR_RGN = .; + __SEG_SIZE_Task_fft_VAR_RGN = (__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 4K ? 4K : __SEG_SIZE_Task_fft_VAR_RGN; + __SEG_SIZE_Task_fft_VAR_RGN = (__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 1K ? 1K : __SEG_SIZE_Task_fft_VAR_RGN; + __SEG_SIZE_Task_fft_VAR_RGN = (__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 512 ? 512 : __SEG_SIZE_Task_fft_VAR_RGN; + __SEG_SIZE_Task_fft_VAR_RGN = (__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 256 ? 256 : __SEG_SIZE_Task_fft_VAR_RGN; + __SEG_SIZE_Task_fft_VAR_RGN = (__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 128 ? 128 : __SEG_SIZE_Task_fft_VAR_RGN; + __SEG_SIZE_Task_fft_VAR_RGN = (__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 64 ? 64 : __SEG_SIZE_Task_fft_VAR_RGN; + __SEG_SIZE_Task_fft_VAR_RGN = (__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 32 ? 32 : __SEG_SIZE_Task_fft_VAR_RGN; + __SEG_ALIGN_Task_fft_VAR_RGN = __SEG_SIZE_Task_fft_VAR_RGN; + } >RAM +} + +/*----------------------------------------------------------------------------*/ +/* */ +/* Stack of processes */ +/* */ +/*----------------------------------------------------------------------------*/ + +SECTIONS { + /* --- Section of stack of Task fft */ + .Task_fft_SEC_STACK : { + /* . = ALIGN(__SEG_ALIGN_Task_fft_STACK_RGN); TODO: check alignment */ + __SEG_START_Task_fft_STACK_RGN = .; + *(.Task_fftStack) + . = ALIGN(4); + __SEG_END_Task_fft_STACK_RGN = .; + __SEG_SIZE_Task_fft_STACK_RGN = (__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 4K ? 4K : __SEG_SIZE_Task_fft_STACK_RGN; + __SEG_SIZE_Task_fft_STACK_RGN = (__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 1K ? 1K : __SEG_SIZE_Task_fft_STACK_RGN; + __SEG_SIZE_Task_fft_STACK_RGN = (__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 512 ? 512 : __SEG_SIZE_Task_fft_STACK_RGN; + __SEG_SIZE_Task_fft_STACK_RGN = (__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 256 ? 256 : __SEG_SIZE_Task_fft_STACK_RGN; + __SEG_SIZE_Task_fft_STACK_RGN = (__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 128 ? 128 : __SEG_SIZE_Task_fft_STACK_RGN; + __SEG_SIZE_Task_fft_STACK_RGN = (__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 64 ? 64 : __SEG_SIZE_Task_fft_STACK_RGN; + __SEG_SIZE_Task_fft_STACK_RGN = (__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 32 ? 32 : __SEG_SIZE_Task_fft_STACK_RGN; + __SEG_ALIGN_Task_fft_STACK_RGN = __SEG_SIZE_Task_fft_STACK_RGN; + } >RAM + +} + +/*----------------------------------------------------------------------------*/ +/* */ +/* OS application data */ +/* */ +/*----------------------------------------------------------------------------*/ + +SECTIONS { + /* + * os application data + */ + appvars : { + + } >RAM +} +/*----------------------------------------------------------------------------*/ +/* */ +/* OS unitialized data (useful?) */ +/* */ +/*----------------------------------------------------------------------------*/ +SECTIONS { + . = ALIGN(4); + .osVarNoInit : + { + *(.osVar_NOINIT_32BIT) + *(.osVar_NOINIT_16BIT) + *(.osVar_NOINIT_8BIT) + *(.osVar_NOINIT_BOOLEAN) + *(.osVar_NOINIT_UNSPECIFIED) + } >RAM +} + +/*----------------------------------------------------------------------------*/ +/* */ +/* Data (initialized data) */ +/* */ +/*----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------*/ +/* */ +/* BSS (uninitialized data) */ +/* */ +/*----------------------------------------------------------------------------*/ + +SECTIONS { + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM +} + +/*----------------------------------------------------------------------------*/ +/* */ +/* Heap */ +/* */ +/*----------------------------------------------------------------------------*/ + + /* _user_heap_stack section, used to check that there is enough RAM left */ +SECTIONS { + ._user_heap_stack : + { + . = ALIGN(4); + __heap_start__ = . ; + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(4); + } >RAM +} + + + + /* Remove information from the standard libraries */ +SECTIONS { + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } +} + +SECTIONS { + __tpl_end_of_checkpointing_zone = .; + .osVarKernStack : + { + . = ALIGN(2); + __os_kern_stack_start = .; /* OS kernel stack symbol start */ + *(.osVarKernStack) /* OS Kernel stack */ + __os_kern_stack_end = .; /* OS kernel stack symbol start */ + } >RAM +} + +/* vim:ft=ld + */ diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/stm_structure.c b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/stm_structure.c new file mode 100644 index 000000000..dbb6fa180 --- /dev/null +++ b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/stm_structure.c @@ -0,0 +1,21 @@ +#include "tpl_os_stm_internal_types.h" + + +/* + * Transaction descriptors' table (indexed by core IDs) + */ +VAR(tpl_stm_tx_descriptor, OS_APPL_DATA) trans_table[NUMBER_OF_CORES] = { + { + 0, /* core id */ + 0, /* status */ + { + { + 0 /* access_vector */ + } +}; + +/* + * Writers' table (indexed by object IDs) + */ +P2VAR(tpl_stm_tx_descriptor, AUTOMATIC, OS_APPL_DATA) writer_table[NUMBER_OF_OBJECTS] = { + \ No newline at end of file diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_config.c b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_config.c new file mode 100644 index 000000000..6281257fc --- /dev/null +++ b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_config.c @@ -0,0 +1,449 @@ +/** + * @file tpl_app_config.c + * + * @section desc File description + * + * OS data structure generated from application checkpoint + * Automatically generated by goil on Wed May 12 23:14:32 2021 + * from root OIL file fft_lea.oil + * + * @section copyright Copyright + * + * Trampoline OS + * + * Trampoline is copyright (c) IRCCyN 2005-2007 + * Trampoline is protected by the French intellectual property law. + * + * This software is distributed under the Lesser GNU Public Licence + * + * @section infos File informations + * + * $Date$ + * $Rev$ + * $Author$ + * $URL$ + */ + +#include +#include + +#include "tpl_app_config.h" + +#include "tpl_os_internal_types.h" +#include "tpl_machine.h" +#include "tpl_os_interrupt.h" +#include "tpl_os_interrupt_kernel.h" +#include "tpl_os_alarm_kernel.h" +#include "tpl_os_alarm.h" +#include "tpl_os_resource_kernel.h" +#include "tpl_os_resource.h" +#include "tpl_os_event_kernel.h" +#include "tpl_os_event.h" +#include "tpl_os_action.h" +#include "tpl_os_kernel.h" +#include "tpl_os_definitions.h" + + +/*============================================================================= + * Application Modes tables for tasks, alarms and schedule tables + * Application Modes masks are as follow: + * std = 1 + */ + +CONST(tpl_application_mode, OS_CONST) std = 0; /* mask = 1 */ +CONST(tpl_application_mode, OS_CONST) OSDEFAULTAPPMODE = 0; +CONST(tpl_appmode_mask, OS_CONST) tpl_task_app_mode[TASK_COUNT] = { + 1 /* task fft : std */ +}; + +#define API_START_SEC_CONST_UNSPECIFIED +#include "tpl_memmap.h" + +/*============================================================================= + * Declaration of processes IDs + */ + +/* Task fft identifier */ +#define fft_id 0 +CONST(TaskType, AUTOMATIC) fft = fft_id; + +#define API_STOP_SEC_CONST_UNSPECIFIED +#include "tpl_memmap.h" + +/** + * The scheduler resource descriptor. + * One scheduler resource is defined per core. + * + * @see #RES_SCHEDULER + */ + +#define OS_START_SEC_VAR_UNSPECIFIED +#include "tpl_memmap.h" +VAR(tpl_resource, OS_VAR) res_sched_rez_desc = { + RES_SCHEDULER_PRIORITY, /* ceiling priority */ + 0, /* owner_prev_priority */ + INVALID_PROC_ID, /* owner */ +#if WITH_OSAPPLICATION == YES + INVALID_OSAPPLICATION_ID, /* OS Application id */ +#endif + + NULL /* next_res */ +}; +#define OS_STOP_SEC_VAR_UNSPECIFIED +#include "tpl_memmap.h" + +#define OS_START_SEC_CONST_UNSPECIFIED +#include "tpl_memmap.h" +CONSTP2VAR(tpl_resource, AUTOMATIC, OS_APPL_DATA) +tpl_resource_table[RESOURCE_COUNT] = { + &res_sched_rez_desc +}; + +#define OS_STOP_SEC_CONST_UNSPECIFIED +#include "tpl_memmap.h" + +/*============================================================================= + * Definition and initialization of Counters related defines and structures + */ +/*----------------------------------------------------------------------------- + * Counter SystemCounter descriptor + */ + +#define API_START_SEC_CONST_UNSPECIFIED +#include "tpl_memmap.h" + +CONST(tpl_tick, OS_CONST) OSTICKSPERBASE = 1; +CONST(tpl_tick, OS_CONST) OSMAXALLOWEDVALUE = 65535; +CONST(tpl_tick, OS_CONST) OSMINCYCLE = 1; + +#define API_STOP_SEC_CONST_UNSPECIFIED +#include "tpl_memmap.h" + +#define OS_START_SEC_VAR_UNSPECIFIED +#include "tpl_memmap.h" + +VAR(tpl_counter, OS_VAR) SystemCounter_counter_desc = { + /* ticks per base */ 1, + /* max allowed value */ 65535, + /* minimum cycle */ 1, + /* current tick */ 0, + /* current date */ 0, +#if WITH_OSAPPLICATION == YES + /* OS Application id */ +#endif + /* first alarm */ NULL_PTR, + /* next alarm to raise */ NULL_PTR +}; + +#define OS_STOP_SEC_VAR_UNSPECIFIED +#include "tpl_memmap.h" + +#include "tpl_os_kernel.h" /* tpl_schedule */ +#include "tpl_os_timeobj_kernel.h" /* tpl_counter_tick */ +#include "tpl_machine_interface.h" /* tpl_switch_context_from_it */ + +#define OS_START_SEC_VAR_32BIT +#include "tpl_memmap.h" +volatile VAR(uint32, OS_VAR) tpl_time_counter = 0; +#define OS_STOP_SEC_VAR_32BIT +#include "tpl_memmap.h" + +#define OS_START_SEC_CODE +#include "tpl_memmap.h" + +FUNC(tpl_bool, OS_CODE) tpl_tick_TIMER3_A0_VECTOR(void) +{ + tpl_counter_tick(&SystemCounter_counter_desc); + tpl_time_counter++; + + if (tpl_kern.need_schedule == TRUE) + { + tpl_schedule_from_running(); + LOCAL_SWITCH_CONTEXT() + } + + return TRUE; +} + +#define OS_STOP_SEC_CODE +#include "tpl_memmap.h" + +/*============================================================================= + * Descriptor(s) of the idle task(s) + */ +/*----------------------------------------------------------------------------- + * Task IDLE_TASK descriptor + */ +#define OS_START_SEC_CODE +#include "tpl_memmap.h" +/* + * Task IDLE_TASK function prototype + */ + +FUNC(void, OS_APPL_CODE) idle_function(void); +#define OS_STOP_SEC_CODE +#include "tpl_memmap.h" + +/*----------------------------------------------------------------------------- + * Target specific structures + */ +/* + * Task IDLE_TASK stack + */ +#define APP_Task_IDLE_TASK_START_SEC_STACK +#include "tpl_memmap.h" +VAR(tpl_stack_word, OS_APPL_DATA) IDLE_TASK_stack_zone[IDLE_STACK_SIZE/sizeof(tpl_stack_word)]; +#define APP_Task_IDLE_TASK_STOP_SEC_STACK +#include "tpl_memmap.h" + +#define IDLE_TASK_STACK {IDLE_TASK_stack_zone, IDLE_STACK_SIZE} + +/* + * Task IDLE_TASK context + */ +#define OS_START_SEC_VAR_NOINIT_32BIT +#include "tpl_memmap.h" +VAR(msp430x_small_context, OS_VAR) IDLE_TASK_int_context; + +#define IDLE_TASK_CONTEXT &IDLE_TASK_int_context + +#define OS_STOP_SEC_VAR_NOINIT_32BIT +#include "tpl_memmap.h" + + + + +/* + No timing protection + */ + +#define OS_START_SEC_CONST_UNSPECIFIED +#include "tpl_memmap.h" + + +/* + * Static descriptor of task IDLE_TASK + */ +CONST(tpl_proc_static, OS_CONST) IDLE_TASK_task_stat_desc = { + /* context */ IDLE_TASK_CONTEXT, + /* stack */ IDLE_TASK_STACK, + /* entry point (function) */ idle_function, + /* internal ressource */ NULL, + /* task id */ IDLE_TASK_ID, +#if WITH_OSAPPLICATION == YES + /* OS application id */ +#endif + /* task base priority */ 0, + /* max activation count */ 1, + /* task type */ TASK_BASIC, +#if WITH_AUTOSAR_TIMING_PROTECTION == YES + + /* execution budget */ 0, + /* timeframe */ 0, + /* pointer to the timing + protection descriptor */ NULL + +#endif +}; + +#define OS_STOP_SEC_CONST_UNSPECIFIED +#include "tpl_memmap.h" + + +#define OS_START_SEC_VAR_UNSPECIFIED +#include "tpl_memmap.h" +/* + * Dynamic descriptor of task IDLE_TASK + */ +VAR(tpl_proc, OS_VAR) IDLE_TASK_task_desc = { + /* resources */ NULL, +#if WITH_OSAPPLICATION == YES + /* if > 0 the process is trusted */ 0, +#endif /* WITH_OSAPPLICATION */ + /* activate count */ 0, + /* task priority */ 0, + /* task state */ SUSPENDED +}; + +#define OS_STOP_SEC_VAR_UNSPECIFIED +#include "tpl_memmap.h" + + +/*============================================================================= + * Definition and initialization of Task related defines and structures + */ +/*----------------------------------------------------------------------------- + * Task fft descriptor + */ +#define APP_Task_fft_START_SEC_CODE + +#include "tpl_memmap.h" +/* + * Task fft function prototype + */ + +FUNC(void, OS_APPL_CODE) fft_function(void); +#define APP_Task_fft_STOP_SEC_CODE + +#include "tpl_memmap.h" + +/*----------------------------------------------------------------------------- + * Target specific structures + */ +/* + * Task fft stack + */ +#define APP_Task_fft_START_SEC_STACK +#include "tpl_memmap.h" +VAR(tpl_stack_word, OS_APPL_DATA) fft_stack_zone[100/sizeof(tpl_stack_word)]; +#define APP_Task_fft_STOP_SEC_STACK +#include "tpl_memmap.h" + +#define fft_STACK {fft_stack_zone, 100} + +/* + * Task fft context + */ +#define OS_START_SEC_VAR_NOINIT_32BIT +#include "tpl_memmap.h" +VAR(msp430x_small_context, OS_VAR) fft_int_context; + +#define fft_CONTEXT &fft_int_context + +#define OS_STOP_SEC_VAR_NOINIT_32BIT +#include "tpl_memmap.h" + + + + +/* + No timing protection + */ + +#define OS_START_SEC_CONST_UNSPECIFIED +#include "tpl_memmap.h" + + +/* + * Static descriptor of task fft + */ +CONST(tpl_proc_static, OS_CONST) fft_task_stat_desc = { + /* context */ fft_CONTEXT, + /* stack */ fft_STACK, + /* entry point (function) */ fft_function, + /* internal ressource */ NULL, + /* task id */ fft_id, +#if WITH_OSAPPLICATION == YES + /* OS application id */ +#endif + /* task base priority */ 1, + /* max activation count */ 1, + /* task type */ TASK_BASIC, +#if WITH_AUTOSAR_TIMING_PROTECTION == YES + + /* execution budget */ 0, + /* timeframe */ 0, + /* pointer to the timing + protection descriptor */ NULL + +#endif +}; + +#define OS_STOP_SEC_CONST_UNSPECIFIED +#include "tpl_memmap.h" + + +#define OS_START_SEC_VAR_UNSPECIFIED +#include "tpl_memmap.h" +/* + * Dynamic descriptor of task fft + */ +VAR(tpl_proc, OS_VAR) fft_task_desc = { + /* resources */ NULL, +#if WITH_OSAPPLICATION == YES + /* if > 0 the process is trusted */ 0, +#endif /* WITH_OSAPPLICATION */ + /* activate count */ 0, + /* task priority */ 1, + /* task state */ AUTOSTART +}; + +#define OS_STOP_SEC_VAR_UNSPECIFIED +#include "tpl_memmap.h" + + +#define OS_START_SEC_CONST_UNSPECIFIED +#include "tpl_memmap.h" +/*============================================================================= + * Definition and initialization of process tables (tasks and isrs) + */ +CONSTP2CONST(tpl_proc_static, AUTOMATIC, OS_APPL_DATA) +tpl_stat_proc_table[TASK_COUNT+ISR_COUNT+1] = { + &fft_task_stat_desc, + &IDLE_TASK_task_stat_desc +}; + +CONSTP2VAR(tpl_proc, AUTOMATIC, OS_APPL_DATA) +tpl_dyn_proc_table[TASK_COUNT+ISR_COUNT+1] = { + &fft_task_desc, + &IDLE_TASK_task_desc +}; + +#define OS_STOP_SEC_CONST_UNSPECIFIED +#include "tpl_memmap.h" + + +/*============================================================================= + * Declaration of flags functions + */ +/* $FLAGSFUNCTIONS$ */ + +/*============================================================================= + * Definition and initialization of Ready List structures + */ +#define OS_START_SEC_VAR_UNSPECIFIED +#include "tpl_memmap.h" + +VAR(tpl_heap_entry, OS_VAR) tpl_ready_list[3]; +VAR(tpl_rank_count, OS_VAR) tpl_tail_for_prio[3] = { + 0, + 0 +}; + +#define OS_STOP_SEC_VAR_UNSPECIFIED +#include "tpl_memmap.h" + +/** + * @internal + * + * tpl_kern gather informations on the current executing object and + * the previous one + */ +VAR(tpl_kern_state, OS_VAR) tpl_kern = +{ + NULL, /* no running task static descriptor */ + &IDLE_TASK_task_stat_desc, /* elected task to run is idle task */ + NULL, /* no running task dynamic descriptor */ + &IDLE_TASK_task_desc, /* elected task to run is idle task */ + INVALID_PROC_ID, /* no running task so no ID */ + INVALID_PROC_ID, /* idle task has no ID */ + NO_NEED_SWITCH, /* no context switch needed at start */ + FALSE, /* no schedule needed at start */ +#if WITH_MEMORY_PROTECTION == YES + 1, /* at early system startup, we run in */ + /* kernel mode, so in trusted mode */ +#endif /* WITH_MEMORY_PROTECTION */ +}; + +#define API_START_SEC_CONST_UNSPECIFIED +#include "tpl_memmap.h" +CONSTP2CONST(char, AUTOMATIC, OS_APPL_DATA) proc_name_table[TASK_COUNT + ISR_COUNT + 1] = { + + "fft", + "*idle*" +}; +#define API_STOP_SEC_CONST_UNSPECIFIED +#include "tpl_memmap.h" + + +/* End of file tpl_app_config.c */ diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_config.h b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_config.h new file mode 100644 index 000000000..0266a7d85 --- /dev/null +++ b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_config.h @@ -0,0 +1,65 @@ +/** + * @file tpl_app_config.h + * + * @section desc File description + * + * Header of the automatic generated constants usable + * by the application checkpoint + * Automatically generated by goil on Wed May 12 23:14:32 2021 + * from root OIL file fft_lea.oil + * + * @section copyright Copyright + * + * Trampoline OS + * + * Trampoline is copyright (c) IRCCyN 2005-2007 + * Trampoline is protected by the French intellectual property law. + * + * This software is distributed under the Lesser GNU Public Licence + * + * @section infos File informations + * + * $Date$ + * $Rev$ + * $Author$ + * $URL$ + */ + +#ifndef TPL_APP_CONFIG_H +#define TPL_APP_CONFIG_H + +#include "tpl_app_define.h" +#include "tpl_compiler.h" +#include "tpl_os_internal_types.h" +/*============================================================================= + * proc_name_table is an array of strings containing the name of the + * processes. It may be used by the application for debugging purpose + */ +#if !defined(NO_TASK) || !defined(NO_ISR) +#define API_START_SEC_CONST_UNSPECIFIED +#include "tpl_memmap.h" +extern CONSTP2CONST(char, AUTOMATIC, OS_APPL_DATA) + proc_name_table[TASK_COUNT + ISR_COUNT + 1]; +#define API_STOP_SEC_CONST_UNSPECIFIED +#include "tpl_memmap.h" +#endif + +/*============================================================================= + * Declaration of Counters constants + */ +/*----------------------------------------------------------------------------- + * Constants of the SystemCounter + */ +extern CONST(tpl_tick, OS_CONST) OSTICKSPERBASE; +extern CONST(tpl_tick, OS_CONST) OSMAXALLOWEDVALUE; +extern CONST(tpl_tick, OS_CONST) OSMINCYCLE; + + +/*============================================================================= + * Declaration of flags macros + */ + +#endif + +/* End of file TPL_APP_CONFIG_H */ + diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_custom_types.h b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_custom_types.h new file mode 100644 index 000000000..b2745ca49 --- /dev/null +++ b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_custom_types.h @@ -0,0 +1,157 @@ +/** + * @file tpl_app_custom_types.h + * + * @section File description + * + * This file gathers all data types which are generated from the application. + * Please refer to comment of each type for more details. + * Generated from application checkpoint + * Automatically generated by goil on Wed May 12 23:14:32 2021 + * from root OIL file fft_lea.oil + * + * @section File informations + * + * $Date$ + * $Rev$ + * $Author$ + * $URL$ + */ + +#ifndef TPL_APP_CUSTOM_TYPES_H +#define TPL_APP_CUSTOM_TYPES_H + +#include "tpl_compiler.h" +#include "tpl_os_std_types.h" + +/** + * tpl_heap_key is the datatype used to store the key of a heap entry. + */ +typedef uint8 tpl_heap_key; + +/** + * tpl_rank_count is the datatype used to store the rank of an activation + * It is the lower part of a tpl_heap_key + */ +typedef uint8 tpl_rank_count; + +/** + * tpl_proc_id is used for task and isrs identifiers. + * + * @warning This data type must be signed + * because -1 is used for INVALID_TASK and INVALID_ISR + */ +typedef sint8 tpl_proc_id; + +/** + * tpl_appmode_mask is used for AUTOSTART objects. + * + * Each bit in the mask corresponds to an application mode. The size of the mask + * is computed according to the number of application modes. + */ +typedef uint8 tpl_appmode_mask; + +/** + * tpl_priority represents a task's or a resource's priority. + * + * @warning This type must be signed. + */ +typedef sint8 tpl_priority; + +/** + * tpl_activate_counter is used to count + * how many time a task has been activated while + * it was not suspended. + */ +typedef uint8 tpl_activate_counter; + +/** + * tpl_event_mask is used for event. + * An event is a bit vector. According to the maximum number of events + * defined in the application, it can be uint8 (8 events), uint16 (16 events) or + * uint32 (32 events). + */ +typedef uint8 tpl_event_mask; + +/** + * tpl_alarm_type is used for alarm identifiers. + */ +typedef uint8 tpl_alarm_id; + +/** + * tpl_resource_id is used for resource identifiers. + * + * @warning RES_SCHEDULER is set to the higher resource id + 1 + */ +typedef uint8 tpl_resource_id; + +#if (WITH_TRACE == YES) +/** + * @internal + * + * Type used to store the id of an alarm or a schedule table + * This is used only for tracing + */ +typedef uint8 tpl_timeobj_id; + +/** + * @internal + * + * one id for each counter. + */ +typedef uint8 tpl_trace_counter_id; +#endif + +#ifdef WITH_AUTOSAR +/** + * @internal + * + * @todo: document this + */ +typedef uint8 tpl_counter_id; + +/** + * @internal + * + * @todo: document this + */ +typedef uint8 tpl_schedtable_id; + +/** + * @internal + * + * Type used to store the id of an OS Application + * Its size is computed according to the number of OS Applications + */ +typedef uint8 tpl_app_id; + +/** + * @internal + * + * Generic type used in OS Application API + * Its size is computed by doing the max of all object kind + */ +typedef uint8 tpl_generic_id; + + + +#endif /* WITH_AUTOSAR */ + +/* target specific types */ + +/** + * tpl_tick is used for relative and absolute dates. + * tpl_tick should be an unsigned datatype. + * + * On MSP430, tpl_ticks should be limited to 16 bits + * (on 32 bits, arguments for system call SetRelAlarm + * would be passed through the stack, which is not + * possible) + */ +typedef uint16 tpl_tick; + + + +#endif /* TPL_APP_CUSTOM_TYPES_H */ + +/* End of file tpl_app_custom_types.h */ + diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_define.h b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_define.h new file mode 100644 index 000000000..33832fe3a --- /dev/null +++ b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_define.h @@ -0,0 +1,266 @@ +/** + * @file tpl_app_define.h + * + * @section desc File description + * + * Header of the automatic generated defines usable + * by the application checkpoint + * Automatically generated by goil on Wed May 12 23:14:32 2021 + * from root OIL file fft_lea.oil + * + * @section copyright Copyright + * + * Trampoline OS + * + * Trampoline is copyright (c) IRCCyN 2005-2010 + * Trampoline is protected by the French intellectual property law. + * + * This software is distributed under the Lesser GNU Public Licence + * + * @section infos File informations + * + * $Date$ + * $Rev$ + * $Author$ + * $URL$ + */ + +#ifndef TPL_APP_DEFINE_H +#define TPL_APP_DEFINE_H + + + +#include "tpl_config_def.h" + +/*============================================================================= + * Configuration flags + */ +#define TARGET_ARCH "msp430x" +#define TARGET_CHIP "small" +#define TARGET_BOARD "msp430fr5994/launchpad" +#define NUMBER_OF_CORES 1 +#define WITH_OS_EXTENDED YES +#define WITH_ORTI NO +#define WITH_PAINT_STACK YES +#define WITH_PAINT_REGISTERS YES +#define WITH_STARTUP_HOOK NO +#define WITH_SHUTDOWN_HOOK NO +#define WITH_ERROR_HOOK NO +#define WITH_PRE_TASK_HOOK NO +#define WITH_POST_TASK_HOOK NO +#define WITH_ANY_HOOK NO +#define WITH_PANIC_HOOK NO +#define WITH_USEGETSERVICEID NO +#define WITH_USEPARAMETERACCESS NO +#define WITH_USERESSCHEDULER YES +#define WITH_SYSTEM_CALL YES +#define WITH_MEMORY_PROTECTION NO +#define WITH_MEMMAP YES +#define WITH_COMPILER_SETTINGS YES +#define WITH_AUTOSAR NO +#define WITH_PROTECTION_HOOK NO +#define WITH_STACK_MONITORING NO +#define WITH_AUTOSAR_TIMING_PROTECTION NO +#define AUTOSAR_SC 0 +#define WITH_OSAPPLICATION NO +#define WITH_OSAPPLICATION_STARTUP_HOOK NO +#define WITH_OSAPPLICATION_SHUTDOWN_HOOK NO +#define WITH_TRACE NO +#define WITH_ID NO +#define WITH_IT_TABLE NO +#define WITH_COM NO +#define WITH_IOC NO +#define WITH_MODULES_INIT NO +#define WITH_INIT_BOARD NO +#define WITH_ISR2_PRIORITY_MASKING NO + +/*============================================================================= + * Defines related to the key part of a ready list entry. + * The key part has in the most significant bits the priority of the job and + * in the least significant bits the rank of the job. So: + * - PRIORITY_SHIFT is the number of bit the key has to be shifted to the + * right) to get the priority only aligned to the right; + * - PRIORITY_MASK is the mask to get the priority only (not aligned to the + * right with the rank set to 0; + * - RANK_MASK is the mask to get only the rank. + */ +#define PRIORITY_SHIFT 1 +#define PRIORITY_MASK 6 +#define RANK_MASK 1 + +/*============================================================================= + * Number of objects used by the application + * These informations are used by Trampoline to avoid to + * alloc structures when some os objects are not present. + */ + +/*----------------------------------------------------------------------------- + * Number of priority levels + */ +#define PRIO_LEVEL_COUNT 2 + +/*----------------------------------------------------------------------------- + * Number of tasks + */ +#define TASK_COUNT 1 + +/*----------------------------------------------------------------------------- + * Number of spinlocks + */ +#define SPINLOCK_COUNT 0 + +/*----------------------------------------------------------------------------- + * Number of extended tasks + */ +#define EXTENDED_TASK_COUNT 0 + +/*----------------------------------------------------------------------------- + * Number of ISR2 + */ +#define ISR_COUNT 0 + +/*----------------------------------------------------------------------------- + * Number of alarms + */ +#define ALARM_COUNT 0 + +/*----------------------------------------------------------------------------- + * Number of regular resources (standard and linked) plus RES_SCHEDULER if used + */ +#define RESOURCE_COUNT 1 + +/*----------------------------------------------------------------------------- + * Number of events + */ +#define EVENT_COUNT 0 + +/*----------------------------------------------------------------------------- + * Number of messages + */ +#define MESSAGE_COUNT 0 + +/*----------------------------------------------------------------------------- + * Number of send messages + */ +#define SEND_MESSAGE_COUNT 0 + +/*----------------------------------------------------------------------------- + * Number of receive messages + */ +#define RECEIVE_MESSAGE_COUNT 0 + +/*----------------------------------------------------------------------------- + * Number of counters + */ +#define COUNTER_COUNT 1 + +/*----------------------------------------------------------------------------- + * Number of schedule tables + */ +#define SCHEDTABLE_COUNT 0 + +/*----------------------------------------------------------------------------- + * Number of OS Applications + */ +#define APP_COUNT 0 + +/*----------------------------------------------------------------------------- + * Number of trusted functions + */ +#define TRUSTED_FCT_COUNT 0 + +/*----------------------------------------------------------------------------- + * Number of IOC + */ +#define IOC_COUNT 0 +#define IOC_QUEUED_COUNT 0 +#define IOC_UNQUEUED_COUNT 0 + + +/*----------------------------------------------------------------------------- + * Priority of RES_SCHEDULER + */ +#define RES_SCHEDULER_PRIORITY 2 + +#define IDLE_TASK_ID TASK_COUNT + ISR_COUNT + +/*----------------------------------------------------------------------------- + * To fasten the SPINLOCK_IS_SUCCESSOR macro + */ +#define SPINLOCK_SUCCESSOR_BITFIELD_SHIFT 4 +#define SPINLOCK_SUCCESSOR_BITFIELD_MASK 7 + +/*----------------------------------------------------------------------------- + * Spinlocks max possessed spinlocks per core. + * This definition is used to maximize the size of possessed spinlocks. + * In OSExtended mode, as we're checking nesting spinlocks, we can set the max + * size of the LIFOS to the longest chain in the spinlocks graph. + * In OSStandard mode, we set the maximum to the number of spinlocks (a + * spinlock can only be taken once). + */ +#define MAX_POSSESSED_SPINLOCKS 0 + +/*----------------------------------------------------------------------------- + * Debugging + */ +#define WITH_DEBUG NO + +#include "tpl_config_check.h" + +#endif + +/*----------------------------------------------------------------------------- + * Configuration STM Flags + */ +#define NUMBER_OF_OBJECTS 0 +#define NUMBER_OF_TRANSACTIONS 0 + +/*----------------------------------------------------------------------------- + * Tick optimization + */ +#define TPL_OPTIMIZE_TICKS NO +/** + * set the CPU default frequency at startup in MHz. + * Value defined with .oil key CPU->OS->CPU_FREQ_MHZ; + * + * This frequency may be overriden using at runtime with + * void tpl_set_mcu_clock(uint16_t freqInMHz); + * (defined in tpl_clocks.h) + */ +#define CPU_FREQ_MHZ 8 + +/* + * Power mode to be used in the idle task + */ +#define ACTIVE_POWER_MODE -1 +#define LPM0_POWER_MODE 0 +#define LPM1_POWER_MODE 1 +#define LPM2_POWER_MODE 2 +#define LPM3_POWER_MODE 3 + +#define IDLE_POWER_MODE LPM3_POWER_MODE +#define IDLE_LPM LPM3 + +/* + * If YES, init the .data section using the DMA + */ +#define WITH_INIT_WITH_DMA NO + +/* + * If YES, use checkpointing with the msp430 + */ +#define WITH_CHECKPOINTING NO +/*============================================================================= + * libraries related defines + */ +/*----------------------------------------------------------------------------- + * Parameters of the serial interface library + * if the (RX or TX) buffer is set to 0, the associated + * interrupt is not implemented. + */ +#define SERIAL_TX_BUFFER_SIZE 32 +#define SERIAL_RX_BUFFER_SIZE 32 + + +/* End of file TPL_APP_DEFINE_H */ + diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_dispatch_table.c b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_dispatch_table.c new file mode 100644 index 000000000..5a5c07b0b --- /dev/null +++ b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_dispatch_table.c @@ -0,0 +1,65 @@ +/** + * @file tpl_dispatch_table.c + * + * @section desc File description + * + * Dispatch table for application checkpoint + * Automatically generated by goil on Wed May 12 23:14:32 2021 + * from root OIL file fft_lea.oil + * + * @section copyright Copyright + * + * Trampoline OS + * + * Trampoline is copyright (c) IRCCyN 2005-2010 + * Trampoline is protected by the French intellectual property law. + * + * This software is distributed under the Lesser GNU Public Licence + * + * @section infos File informations + * + * $Date$ + * $Rev$ + * $Author$ + * $URL$ + */ + +#include "tpl_dispatch_table.h" + +#include "tpl_os_os_kernel.h" +#include "tpl_os_os.h" +#include "tpl_os_interrupt_kernel.h" +#include "tpl_os_task_kernel.h" +#include "tpl_os_resource_kernel.h" + +#define OS_START_SEC_CONST_UNSPECIFIED +#include "tpl_memmap.h" +CONST(tpl_system_call, OS_CONST) tpl_dispatch_table[SYSCALL_COUNT] = { +/* os services */ + (tpl_system_call) tpl_call_terminate_isr2_service, + (tpl_system_call) tpl_suspend_all_interrupts_service, + (tpl_system_call) tpl_resume_os_interrupts_service, + (tpl_system_call) tpl_enable_all_interrupts_service, + (tpl_system_call) tpl_suspend_os_interrupts_service, + (tpl_system_call) tpl_resume_all_interrupts_service, + (tpl_system_call) tpl_call_terminate_task_service, + (tpl_system_call) tpl_disable_all_interrupts_service, + (tpl_system_call) tpl_release_resource_service, + (tpl_system_call) tpl_schedule_service, + (tpl_system_call) tpl_get_task_id_service, + (tpl_system_call) tpl_get_active_application_mode_service, + (tpl_system_call) tpl_get_task_state_service, + (tpl_system_call) tpl_terminate_task_service, + (tpl_system_call) tpl_start_os_service, + (tpl_system_call) tpl_shutdown_os_service, + (tpl_system_call) tpl_get_resource_service, + (tpl_system_call) tpl_chain_task_service, + (tpl_system_call) tpl_activate_task_service +}; + + +#define OS_STOP_SEC_CONST_UNSPECIFIED +#include "tpl_memmap.h" + +/* End of file tpl_dispatch_table.c */ + diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_interrupt_vectors.c b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_interrupt_vectors.c new file mode 100644 index 000000000..9fe0ecd17 --- /dev/null +++ b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_interrupt_vectors.c @@ -0,0 +1,59 @@ +/* Interrupt table vector */ +#include "tpl_compiler.h" +#include "tpl_os.h" +#include "tpl_os_interrupt_kernel.h" +#include "tpl_machine.h" + +/* External handlers */ + +extern FUNC(void, OS_CODE) tpl_reset_handler (P2CONST(void, OS_APPL_DATA, AUTOMATIC)); +extern FUNC(void, OS_CODE) tpl_MPU_violation (P2CONST(void, OS_APPL_DATA, AUTOMATIC)); +extern FUNC(void, OS_CODE) tpl_direct_irq_handler_LEA_VECTOR(P2CONST(void, OS_APPL_DATA, AUTOMATIC)); +extern FUNC(void, OS_CODE) tpl_primary_irq_handler_TIMER3_A0_VECTOR(P2CONST(void, OS_APPL_DATA, AUTOMATIC)); +extern FUNC(void, OS_CODE) tpl_direct_irq_handler_USCI_A0_VECTOR(P2CONST(void, OS_APPL_DATA, AUTOMATIC)); + +/* Interrupt table vector */ + +__attribute__ ((section(".isr_vector"))) CONST(tpl_it_handler, AUTOMATIC) tpl_it_vectors[38] = { + + /* 0xFFB4, LEA_VECTOR */ (tpl_it_handler)tpl_direct_irq_handler_LEA_VECTOR, + /* 0xFFB6, PORT8_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFB8, PORT7_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFBA, EUSCI_B3_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFBC, EUSCI_B2_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFBE, EUSCI_B1_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFC0, EUSCI_A3_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFC2, EUSCI_A2_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFC4, PORT6_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFC6, PORT5_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFC8, TIMER4_A1_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFCA, TIMER4_A0_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFCC, AES256_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFCE, RTC_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFD0, PORT4_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFD2, PORT3_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFD4, TIMER3_A1_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFD6, TIMER3_A0_VECTOR */ (tpl_it_handler)tpl_primary_irq_handler_TIMER3_A0_VECTOR, + /* 0xFFD8, PORT2_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFDA, TIMER2_A1_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFDC, TIMER2_A0_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFDE, PORT1_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFE0, TIMER1_A1_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFE2, TIMER1_A0_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFE4, DMA_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFE6, USCI_A1_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFE8, TIMER0_A1_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFEA, TIMER0_A0_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFEC, ADC12_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFEE, USCI_B0_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFF0, USCI_A0_VECTOR */ (tpl_it_handler)tpl_direct_irq_handler_USCI_A0_VECTOR, + /* 0xFFF2, WDT_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFF4, TIMER0_B1_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFF6, TIMER0_B0_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFF8, COMP_E_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFFA, UNMI_VECTOR */ (tpl_it_handler)tpl_null_it, + /* 0xFFFC, SYSNMI_VECTOR */ (tpl_it_handler)tpl_MPU_violation, + /* 0xFFFE, RESET_VECTOR */ (tpl_it_handler)tpl_reset_handler +}; + +/* End of file tpl_interrupt_vectors.c */ diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_invoque.S b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_invoque.S new file mode 100644 index 000000000..00c96f3cd --- /dev/null +++ b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_invoque.S @@ -0,0 +1,337 @@ +/** + * @file tpl_invoque.S + * + * @section descr File description + * + * System call user level invoque API. + * + * @warning this file is generated by gen_invoque.sh based on the + * tpl_os_service_ids.h header file. + * + * @section copyright Copyright + * + * Trampoline OS + * + * Trampoline is copyright (c) IRCCyN 2005+ + * Copyright ESEO for function and data structures documentation and ARM port + * Trampoline is protected by the French intellectual property law. + * + * This software is distributed under the Lesser GNU Public Licence + * + * @section infos File informations + * + * $$Date$$ + * $$Rev$$ + * $$Author$$ + * $$URL$$ + */ +#include "tpl_os_application_def.h" +#include "tpl_service_ids.h" + +#if WITH_SYSTEM_CALL == NO +#error "This file should not be part of your project since WITH_SYSTEM_CALL is not defined" +#endif + + +#include "tpl_assembler.h" + +#if WITH_MEMMAP == NO + +#endif /* WITH_MEMMAP == NO */ + +#define API_START_SEC_CODE +#include "tpl_as_memmap.h" + + +/*============================================================================ + * Service GetActiveApplicationMode + */ +.global GetActiveApplicationMode +.type GetActiveApplicationMode, %function +GetActiveApplicationMode: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_GetActiveApplicationMode, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + +/*============================================================================ + * Service StartOS + */ +.global tpl_start_os +.type tpl_start_os, %function +tpl_start_os: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_StartOS, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + +/*============================================================================ + * Service ShutdownOS + */ +.global ShutdownOS +.type ShutdownOS, %function +ShutdownOS: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_ShutdownOS, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + +/*============================================================================ + * Service EnableAllInterrupts + */ +.global EnableAllInterrupts +.type EnableAllInterrupts, %function +EnableAllInterrupts: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_EnableAllInterrupts, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + +/*============================================================================ + * Service DisableAllInterrupts + */ +.global DisableAllInterrupts +.type DisableAllInterrupts, %function +DisableAllInterrupts: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_DisableAllInterrupts, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + +/*============================================================================ + * Service ResumeAllInterrupts + */ +.global ResumeAllInterrupts +.type ResumeAllInterrupts, %function +ResumeAllInterrupts: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_ResumeAllInterrupts, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + +/*============================================================================ + * Service SuspendAllInterrupts + */ +.global SuspendAllInterrupts +.type SuspendAllInterrupts, %function +SuspendAllInterrupts: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_SuspendAllInterrupts, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + +/*============================================================================ + * Service ResumeOSInterrupts + */ +.global ResumeOSInterrupts +.type ResumeOSInterrupts, %function +ResumeOSInterrupts: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_ResumeOSInterrupts, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + +/*============================================================================ + * Service SuspendOSInterrupts + */ +.global SuspendOSInterrupts +.type SuspendOSInterrupts, %function +SuspendOSInterrupts: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_SuspendOSInterrupts, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + +/*============================================================================ + * Service CallTerminateISR2 + */ +.global CallTerminateISR2 +.type CallTerminateISR2, %function +CallTerminateISR2: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_CallTerminateISR2, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + +/*============================================================================ + * Service ActivateTask + */ +.global ActivateTask +.type ActivateTask, %function +ActivateTask: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_ActivateTask, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + +/*============================================================================ + * Service TerminateTask + */ +.global TerminateTask +.type TerminateTask, %function +TerminateTask: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_TerminateTask, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + +/*============================================================================ + * Service ChainTask + */ +.global ChainTask +.type ChainTask, %function +ChainTask: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_ChainTask, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + +/*============================================================================ + * Service Schedule + */ +.global Schedule +.type Schedule, %function +Schedule: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_Schedule, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + +/*============================================================================ + * Service GetTaskID + */ +.global GetTaskID +.type GetTaskID, %function +GetTaskID: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_GetTaskID, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + +/*============================================================================ + * Service GetTaskState + */ +.global GetTaskState +.type GetTaskState, %function +GetTaskState: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_GetTaskState, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + +/*============================================================================ + * Service CallTerminateTask + */ +.global CallTerminateTask +.type CallTerminateTask, %function +CallTerminateTask: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_CallTerminateTask, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + +/*============================================================================ + * Service GetResource + */ +.global GetResource +.type GetResource, %function +GetResource: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_GetResource, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + +/*============================================================================ + * Service ReleaseResource + */ +.global ReleaseResource +.type ReleaseResource, %function +ReleaseResource: + /*------------------------------------------------------------------------- + * Load the service id in REG_SID (R12 or R15, depending on the ABI) + */ + mov #OSServiceId_ReleaseResource, REG_SID + /*------------------------------------------------------------------------- + * Does the system call + */ + br #tpl_sc_handler + + +#define API_STOP_SEC_CODE +#include "tpl_as_memmap.h" + + +/* End of file tpl_invoque.S */ + diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_irq_handlers.S b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_irq_handlers.S new file mode 100644 index 000000000..829f045e3 --- /dev/null +++ b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_irq_handlers.S @@ -0,0 +1,128 @@ +/** + * @file tpl_irq_handlers.S + * + * @section descr File description + * + * Generated from application checkpoint + * Automatically generated by goil on Wed May 12 23:14:32 2021 + * from root OIL file fft_lea.oil + * + * @section infos File informations + * + */ + +#include "tpl_assembler.h" +#include "tpl_asm_definitions.h" +#include "tpl_kern_stack.h" + +.extern tpl_kern +.extern tpl_kern_stack + +#define OS_START_SEC_CODE +#include "tpl_as_memmap.h" + +/*============================================================================= + * After en interrupt on a CPUX, the process stack is as follow + * + * +----+--------------+ + * 0 | PC | SR | + 0 + * +----+--------------+ + * 1 | PC | + 2 + * +-------------------+ + * + */ + + +/*============================================================================= + * IRQ Handler for COUNTER with source vector TIMER3_A0_VECTOR + ******************************************************************************/ + +.global tpl_primary_irq_handler_TIMER3_A0_VECTOR +.type tpl_primary_irq_handler_TIMER3_A0_VECTOR, %function + +/*----------------------------------------------------------------------------- + */ +tpl_primary_irq_handler_TIMER3_A0_VECTOR: + +/*----------------------------------------------------------------------------- + * -1- Before doing anything we have to save the volatile registers, which + * are r11 (r11 is not volatile in the MSPGCC ABI but is volatile in GCC + * compiler for MSP ABI. Anyway, in order to limit variabilility, r11 is + * saved for both ABIs) to r15, because they will not be saved when we will + * call the underlying C function. + */ + pushm.w #5, r15 /* Push r11, r12, r13, r14 and r15 */ +/*----------------------------------------------------------------------------- + * -2- Switch to the kernel stack. + */ + mov r1, r11 /* Copy the PSP in r11 */ + mov #tpl_kern_stack + TPL_KERNEL_STACK_SIZE, r1 /* On kernel stack */ + push r11 /* Save PSP to kernel stack */ +/*----------------------------------------------------------------------------- + * -3- Init the NEED_SWITCH/SAVE in tpl_kern. + */ + mov #tpl_kern, r11 + mov.b #NO_NEED_SWITCH_NOR_SCHEDULE, TPL_KERN_OFFSET_NEED_SWITCH(r11) + mov.b #NO_NEED_SWITCH_NOR_SCHEDULE, TPL_KERN_OFFSET_NEED_SCHEDULE(r11) +/*----------------------------------------------------------------------------- + * -4- Call the underlying C function. + */ + call #tpl_tick_TIMER3_A0_VECTOR +/*----------------------------------------------------------------------------- + * -5- Switch back to the process stack + */ +tpl_direct_irq_handler_exit_TIMER3_A0_VECTOR: + mov r1, r13 /* get a copy of the KSP to restore it later */ + add #2, r13 /* and forget the pushed PSP (not useful anymore). */ + pop r1 /* get the saved process stack pointer back */ +/*----------------------------------------------------------------------------- + * -6- Check the context switch condition in tpl_kern. + */ + mov #tpl_kern, r11 + tst.b TPL_KERN_OFFSET_NEED_SWITCH(r11) + jz tpl_TIMER3_A0_VECTOR_no_context_switch +/*----------------------------------------------------------------------------- + * -7- Save the rest of the context. + */ + pushm.w #7, r10 /* Push r4 to r10 */ +/*----------------------------------------------------------------------------- + * -8- Now the stack pointer is saved in the dedicated location. + */ + mov &tpl_kern, r11 /* Get the s_running slot of tpl_kern in r11 */ + mov @r11, r11 /* Get the pointer to the context (SP alone) */ + mov r1, @r11 /* Save the stack pointer */ +/*----------------------------------------------------------------------------- + * -9- Call tpl_run_elected with argument 1 (aka save) after switching back + * to the kernel stack. + */ + mov r13, r1 /* Switch back to the kernel stack */ + mov #1, REG_RETARG + call #tpl_run_elected +/*----------------------------------------------------------------------------- + * -10- tpl_run_elected has copied the elected process slot of tpl_kern to the + * running slot. We load the stack pointer of the new running process. + */ + mov &tpl_kern, r11 /* Get the s_running slot of tpl_kern in r11 */ + mov @r11, r11 /* Get the pointer to the context (SP alone) */ + mov @r11, r1 /* Get the stack pointer */ +/*----------------------------------------------------------------------------- + * -11- Now, the context of the new running process is loaded. All registers + * are popped. + */ + popm.w #12,r15 /* Pop r4 to r15 */ + reti +/*----------------------------------------------------------------------------- + * -12- We get here from stage 6. Restore the volatile registers and return + * from the interrupt handler. + */ +tpl_TIMER3_A0_VECTOR_no_context_switch: + popm.w #5, r15 + reti +/*----------------------------------------------------------------------------- +*/ + + +#define OS_STOP_SEC_CODE +#include "tpl_as_memmap.h" + +/* End of file tpl_irq_handlers.S */ diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_os.h b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_os.h new file mode 100644 index 000000000..404dcb9da --- /dev/null +++ b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_os.h @@ -0,0 +1,269 @@ +/** + * @file tpl_os.h + * + * @section File description + * + * This file gathers system call declarations. + * + * Generated from application checkpoint + * Automatically generated by goil on Wed May 12 23:14:32 2021 + * from root OIL file fft_lea.oil + * + * @section File informations + * + */ + +#ifndef TPL_OS_H +#define TPL_OS_H + + +#ifdef __cplusplus +extern "C" { +#endif + +#include "tpl_os_definitions.h" +#include "tpl_os_application_def.h" +#include "tpl_os_error.h" +#include "include/DSPLib.h" +#include "serial.h" + +/*--------------------------------------------------------------------------* + * os system calls. + * corresponding kernel implementation is in files + * tpl_os_os_kernel.h and tpl_os_os_kernel.c + * tpl_os_os.h and tpl_os_os.c + *--------------------------------------------------------------------------*/ +#include "tpl_os_os.h" + +/* + * GetActiveApplicationMode + * + * This service returns the current application mode. It may be used to + * write mode dependent code. + * + * Return value: + * The active application mode + */ +FUNC(AppModeType, OS_CODE) GetActiveApplicationMode(void); + +/* + * ShutdownOS + * + * The user can call this system service to abort the overall system + * (e.g. emergency off). The operating system also calls this function + * internally, if it has reached an undefined internal state and is no + * longer ready to run. + * + * error: The error that occured + */ +FUNC(void, OS_CODE) ShutdownOS( + CONST(StatusType, AUTOMATIC) error); + + +/*--------------------------------------------------------------------------* + * interrupt system calls. + * corresponding kernel implementation is in files + * tpl_os_interrupt_kernel.h and tpl_os_interrupt_kernel.c + *--------------------------------------------------------------------------*/ +#include "tpl_os_interrupt.h" + +/* + * EnableAllInterrupts + * + * This service restores the state saved by DisableAllInterrupts. + */ +FUNC(void, OS_CODE) EnableAllInterrupts(void); + +/* + * DisableAllInterrupts + * + * This service disables all interrupts for which the hardware supports + * disabling. The state before is saved for the EnableAllInterrupts call. + */ +FUNC(void, OS_CODE) DisableAllInterrupts(void); + +/* + * ResumeAllInterrupts + * + * This service restores the recognition status of all interrupts saved + * by the SuspendAllInterrupts service. + */ +FUNC(void, OS_CODE) ResumeAllInterrupts(void); + +/* + * SuspendAllInterrupts + * + * This service saves the recognition status of all interrupts and + * disables all interrupts for which the hardware supports disabling. + */ +FUNC(void, OS_CODE) SuspendAllInterrupts(void); + +/* + * ResumeOSInterrupts + * + * This service restores the recognition status of interrupts saved by + * the SuspendOSInterrupts service. + */ +FUNC(void, OS_CODE) ResumeOSInterrupts(void); + +/* + * SuspendOSInterrupts + * + * This service saves the recognition status of interrupts of category 2 + * and disables the recognition of these interrupts. + */ +FUNC(void, OS_CODE) SuspendOSInterrupts(void); + + +/*--------------------------------------------------------------------------* + * task system calls. + * corresponding kernel implementation is in files + * tpl_os_task_kernel.h and tpl_os_task_kernel.c + *--------------------------------------------------------------------------*/ +#include "tpl_os_task.h" + +/* + * ActivateTask + * + * Activate a task + * + * task_id: The identifier of the task to activate + * + * Return value: + * E_OK: No error (Standard & Extended) + * E_OS_LIMIT: Too many activations of (Standard & Extended) + * E_OS_ID: is invalid (Extended) + */ +FUNC(StatusType, OS_CODE) ActivateTask( + CONST(TaskType, AUTOMATIC) task_id); + +/* + * TerminateTask + * + * Terminate the calling task + * + * Return value: + * E_OS_RESOURCE: The calling task still occupies a resource (Extended) + * E_OS_CALLEVEL: Call at interrupt level (Extended) + */ +FUNC(StatusType, OS_CODE) TerminateTask(void); + +/* + * ChainTask + * + * Terminate the calling task and activate task task_id + * + * task_id: The identifier of the task to chain to + * + * Return value: + * E_OS_LIMIT: Too many activations of (Standard & Extended) + * E_OS_ID: is invalid (Extended) + * E_OS_RESOURCE: The calling task still occupies a resource (Extended) + * E_OS_CALLEVEL: Call at interrupt level (Extended) + */ +FUNC(StatusType, OS_CODE) ChainTask( + CONST(TaskType, AUTOMATIC) task_id); + +/* + * Schedule + * + * Call the scheduler + * + * Return value: + * E_OK: No error (Standard & Extended) + * E_OS_RESOURCE: The calling task still occupies a resource (Extended) + * E_OS_CALLEVEL: Call at interrupt level (Extended) + */ +FUNC(StatusType, OS_CODE) Schedule(void); + +/* + * GetTaskID + * + * Get the id of the calling task + * + * task_id: A pointer to the var where the identifier of the task will be + * stored + * + * Return value: + * E_OK: No error (Standard & Extended) + */ +FUNC(StatusType, OS_CODE) GetTaskID( + VAR(TaskRefType, AUTOMATIC) task_id); + +/* + * GetTaskState + * + * Get the task state of a task + * + * task_id: The identifier of the task + * + * state: A pointer to the var where the state of the task will be stored + * + * Return value: + * E_OK: No error (Standard & Extended) + * E_OS_ID: is invalid (Extended) + */ +FUNC(StatusType, OS_CODE) GetTaskState( + CONST(TaskType, AUTOMATIC) task_id, + VAR(TaskStateRefType, AUTOMATIC) state); + + +/*--------------------------------------------------------------------------* + * resource system calls. + * corresponding kernel implementation is in files + * tpl_os_resource_kernel.h and tpl_os_resource_kernel.c + *--------------------------------------------------------------------------*/ +#include "tpl_os_resource.h" + +/* + * GetResource + * + * Get resource res_id. As a result, the priority of the caller may be + * raised to the priority of the resource if the latter is higher + * + * res_id: The id of the resource to get. + * + * Return value: + * E_OK: No error (Standard & Extended) + * E_OS_ID: is invalid (Extended) + */ +FUNC(StatusType, OS_CODE) GetResource( + CONST(ResourceType, AUTOMATIC) res_id); + +/* + * ReleaseResource + * + * Release resource res_id. The priority of the caller returns to the + * priority it had before getting the resource + * + * res_id: The id of the resource to release. + * + * Return value: + * E_OK: No error (Standard & Extended) + * E_OS_ID: is invalid (Extended) + * E_OS_ACCESS: Attempt to get a resource which is already occupied by + * any task or ISR, or the statically assigned priority of the + * calling task or interrupt routine is higher than the calculated + * ceiling priority (Extended) + */ +FUNC(StatusType, OS_CODE) ReleaseResource( + CONST(ResourceType, AUTOMATIC) res_id); + + +/* + * Objects declared in the OIL/ARXML file + */ +DeclareApplicationMode(std); +DeclareTask(fft); + +#ifdef __cplusplus +} +#endif + + + + +/* TPL_OS_H */ +#endif + +/* End of file tpl_os.h */ diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_service_ids.h b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_service_ids.h new file mode 100644 index 000000000..dd7ee84db --- /dev/null +++ b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_service_ids.h @@ -0,0 +1,199 @@ +/** + * @file tpl_service_ids.h + * + * @section desc File description + * + * Header of the service ids for application checkpoint + * Automatically generated by goil on Wed May 12 23:14:32 2021 + * from root OIL file fft_lea.oil + * + * @section copyright Copyright + * + * Trampoline OS + * + * Trampoline is copyright (c) IRCCyN 2005-2010 + * Trampoline is protected by the French intellectual property law. + * + * This software is distributed under the Lesser GNU Public Licence + * + * @section infos File informations + * + * $Date$ + * $Rev$ + * $Author$ + * $URL$ + */ + +#ifndef TPL_SERVICES_IDS_H +#define TPL_SERVICES_IDS_H + +#include "tpl_config_def.h" + +/*============================================================================= + * service ids + */ + +/** + * @def OSServiceId_CallTerminateISR2 + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #CallTerminateISR2 + */ +#define OSServiceId_CallTerminateISR2 0 + +/** + * @def OSServiceId_SuspendAllInterrupts + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #SuspendAllInterrupts + */ +#define OSServiceId_SuspendAllInterrupts 1 + +/** + * @def OSServiceId_ResumeOSInterrupts + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #ResumeOSInterrupts + */ +#define OSServiceId_ResumeOSInterrupts 2 + +/** + * @def OSServiceId_EnableAllInterrupts + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #EnableAllInterrupts + */ +#define OSServiceId_EnableAllInterrupts 3 + +/** + * @def OSServiceId_SuspendOSInterrupts + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #SuspendOSInterrupts + */ +#define OSServiceId_SuspendOSInterrupts 4 + +/** + * @def OSServiceId_ResumeAllInterrupts + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #ResumeAllInterrupts + */ +#define OSServiceId_ResumeAllInterrupts 5 + +/** + * @def OSServiceId_CallTerminateTask + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #CallTerminateTask + */ +#define OSServiceId_CallTerminateTask 6 + +/** + * @def OSServiceId_DisableAllInterrupts + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #DisableAllInterrupts + */ +#define OSServiceId_DisableAllInterrupts 7 + +/** + * @def OSServiceId_ReleaseResource + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #ReleaseResource + */ +#define OSServiceId_ReleaseResource 8 + +/** + * @def OSServiceId_Schedule + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #Schedule + */ +#define OSServiceId_Schedule 9 + +/** + * @def OSServiceId_GetTaskID + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #GetTaskID + */ +#define OSServiceId_GetTaskID 10 + +/** + * @def OSServiceId_GetActiveApplicationMode + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #GetActiveApplicationMode + */ +#define OSServiceId_GetActiveApplicationMode 11 + +/** + * @def OSServiceId_GetTaskState + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #GetTaskState + */ +#define OSServiceId_GetTaskState 12 + +/** + * @def OSServiceId_TerminateTask + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #TerminateTask + */ +#define OSServiceId_TerminateTask 13 + +/** + * @def OSServiceId_StartOS + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #StartOS + */ +#define OSServiceId_StartOS 14 + +/** + * @def OSServiceId_ShutdownOS + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #ShutdownOS + */ +#define OSServiceId_ShutdownOS 15 + +/** + * @def OSServiceId_GetResource + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #GetResource + */ +#define OSServiceId_GetResource 16 + +/** + * @def OSServiceId_ChainTask + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #ChainTask + */ +#define OSServiceId_ChainTask 17 + +/** + * @def OSServiceId_ActivateTask + * + * @see #SERVICE_CALL_DESCRIPTOR + * @see #ActivateTask + */ +#define OSServiceId_ActivateTask 18 + +/** + * @def SYSCALL_COUNT + * + * Number of system calls + */ +#define SYSCALL_COUNT 19 +#define SYSCALL_COUNT_ISR1 8 + +#endif + +/* End of file TPL_SERVICES_IDS_H */ + diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_static_info.json b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_static_info.json new file mode 100644 index 000000000..414085653 --- /dev/null +++ b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_static_info.json @@ -0,0 +1,32 @@ + +{ + "alarm" : [], + "event" : [], + "isr" : [], + "resource" : [], + "task" : + [ + + { + "ACTIVATION" : 1, + "AUTOSTART" : "true", + "AUTOSTART_S" : + { + "APPMODE" : + [ + + { + "VALUE" : "std" + } + ] + }, + "KIND" : "Task", + "NAME" : "fft", + "NONPREEMPTABLE" : "false", + "PRIORITY" : 1, + "SCHEDULE" : "FULL", + "STACKSIZE" : 100, + "USEINTERNALRESOURCE" : "false" + } + ] +} \ No newline at end of file diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea_exe b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea_exe new file mode 100755 index 0000000000000000000000000000000000000000..ec03a2b8c247b2707e19d8c3e6417d3acb60b965 GIT binary patch literal 1073404 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ⅇ4rdj}izttovgg*X4vH!mEt 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 #B1$cuNTB? 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 literal 0 HcmV?d00001 diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/init.gdb b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/init.gdb new file mode 100644 index 000000000..9ec3a9b07 --- /dev/null +++ b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/init.gdb @@ -0,0 +1,3 @@ +target remote localhost:2000 +delete + diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/make.py b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/make.py new file mode 100755 index 000000000..bfd60c9be --- /dev/null +++ b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/make.py @@ -0,0 +1,119 @@ +#! /usr/bin/env python +# -*- coding: UTF-8 -*- +#---------------------------------------------------------------------- +#--- Python Make file for application checkpoint +#--- automatically generated by goil on Wed May 12 23:14:32 2021 +#--- from root OIL file fft_lea.oil +#--- +#--- Compiling a Trampoline application is done in 2 stages +#--- 1 - From the OIL file, a set of files is generated as long as +#--- build options. Among these files are the build.py and make.py +#--- files. make.py contains compilation rules when the OIL file +#--- and the included OIL files are modified. make.py is only +#--- written once when the goil command is typed. +#--- 2 - From all the C/assembly files (OS, Application, librairies, +#--- configuration, ...), the objects and the executable are +#--- produced. This is done by the build.py file. +#--- build.py is generated each time goil is called by make.py +#---------------------------------------------------------------------- +from __future__ import print_function +import sys, os, subprocess, atexit, string + +#--- Add the location of makefile.py to the import path +sys.path.append("../../../../../../make") + +#--- Import the makefile system in python +try: + import makefile, projfile +except ImportError: + #it defines inline the red color, as other are defined in the makefile.py + print("\033[91mThe OS->BUILD->TRAMPOLINE_BASE_PATH key is not set correctly in the oil file fft_lea.oil.") + print("Set the correct Trampoline installation path in the oil file and run goil again:\033[0m") + print("goil -t=msp430x/small/msp430fr5994/launchpad --templates=../../../../../../goil/templates/ fft_lea.oil") + sys.exit(1) + +#--- To work with relative paths +scriptDir = os.path.dirname (os.path.abspath (sys.argv[0])) +os.chdir (scriptDir) + +#--- Get goal as first argument +askedGoal = "all" +if len (sys.argv) > 1 : + askedGoal = sys.argv [1] + +if askedGoal == "all" or askedGoal == "clean" : + goal = askedGoal +else : + goal = "all" + +#--- Get max parallel jobs as second argument +maxParallelJobs = 0 # 0 means use host processor count +if len (sys.argv) > 2 : + maxParallelJobs = int (sys.argv [2]) + +#--- Instanciate a new makefile object +make = makefile.Make(goal) + +#---------------------------------------------------------------------- +#--- Various variables used after +#---------------------------------------------------------------------- +oilFile = "fft_lea.oil" +oilFileDep = "build/" + oilFile + ".dep" +oilCompiler = "goil" +oilFlags = ["-t=msp430x/small/msp430fr5994/launchpad", "--templates=../../../../../../goil/templates/"] +trampoline_base_path = "../../../../../../" + +#---------------------------------------------------------------------- +#--- Build the source files list +#---------------------------------------------------------------------- +oilSourceList = [] +sourceList = [] + +#--- Add generated files +sourceList.append("fft_lea/tpl_app_config.c") + +sourceList.append("fft_lea/tpl_dispatch_table.c") +sourceList.append("fft_lea/tpl_invoque.S") +sourceList.append("fft_lea/tpl_interrupt_vectors.c") +sourceList.append("fft_lea/tpl_irq_handlers.S") + +rule = makefile.Rule (sourceList, "Compiling OIL file " + oilFile) +rule.deleteTargetFileOnClean() +rule.mDeleteTargetOnError = True +rule.mDependences.append(oilFile) +rule.enterSecondaryDependanceFile(oilFileDep, make) +rule.mCommand.append("goil") +rule.mCommand += oilFlags +rule.mCommand.append(oilFile) + +make.addRule (rule) +make.addGoal("all", sourceList, "Building all") + +if goal == "all" or goal == "clean" : + make.runGoal(maxParallelJobs, maxParallelJobs == 1) + +#---------------------------------------------------------------------- +#--- Call the seconde stage of make +#---------------------------------------------------------------------- + +def cleanup(): + if childProcess.poll () == None : + childProcess.kill () + +#--- Register a function for killing subprocess +atexit.register (cleanup) + +#--- Get script absolute path +scriptDir = os.path.dirname (os.path.abspath (sys.argv [0])) +os.chdir (scriptDir) + +#--- Launch build.py +childProcess = subprocess.Popen (["python", "build.py", askedGoal, str(maxParallelJobs)]) + +#--- Wait for subprocess termination +if childProcess.poll () == None : + childProcess.wait () +if childProcess.returncode != 0 : + sys.exit (childProcess.returncode) + +#---------------------------------------------------------------------- diff --git a/goil/templates/code/msp430x/small/tpl_interrupt_vectors.goilTemplate b/goil/templates/code/msp430x/small/tpl_interrupt_vectors.goilTemplate index 92af05601..0a1b89d9f 100755 --- a/goil/templates/code/msp430x/small/tpl_interrupt_vectors.goilTemplate +++ b/goil/templates/code/msp430x/small/tpl_interrupt_vectors.goilTemplate @@ -17,6 +17,13 @@ if exists OS::BUILD_S::LIBRARY then } end if end if + if exists libMap["dsplib"] then + let ISR += @{ + SOURCE : "LEA_VECTOR", + CATEGORY : 1, + PRIORITY : 1 + } + end if end if #------------------------------------------------------------------------------* diff --git a/goil/templates/compiler/gcc/msp430x/MemMap_h.goilTemplate b/goil/templates/compiler/gcc/msp430x/MemMap_h.goilTemplate index 38a469e6b..dabfa6001 100755 --- a/goil/templates/compiler/gcc/msp430x/MemMap_h.goilTemplate +++ b/goil/templates/compiler/gcc/msp430x/MemMap_h.goilTemplate @@ -394,6 +394,39 @@ foreach proc in PROCESSES do end foreach % +/* + * LEA Variables sections + */ +% + foreach SECTION_KIND in @( "_LEA_" ) do + foreach DATA_SIZE in @( "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" ) do +% +#ifdef APP_% !proc::KIND %_% !proc::NAME %_START_SEC_LEA_VAR% !SECTION_KIND !DATA_SIZE % + #undef APP_% !proc::KIND %_% !proc::NAME %_START_SEC_LEA_VAR% !SECTION_KIND !DATA_SIZE % + #ifdef CURRENT_LINKER_DATA_SECTION + #error "Starting a new % !proc::KIND % % !proc::NAME % lea data section while a section is already started" + #else + #undef MEMMAP_ERROR + #undef CURRENT_LINKER_DATA_SECTION_NAME + #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".% !proc::KIND %_% !proc::NAME %_SEC_LEA_VAR% !SECTION_KIND !DATA_SIZE %"))) + #define CURRENT_LINKER_DATA_SECTION + #endif +#endif +#ifdef APP_% !proc::KIND %_% !proc::NAME %_STOP_SEC_LEA_VAR% !SECTION_KIND !DATA_SIZE % + #undef APP_% !proc::KIND %_% !proc::NAME %_STOP_SEC_LEA_VAR% !SECTION_KIND !DATA_SIZE % + #ifdef CURRENT_LINKER_DATA_SECTION + #undef MEMMAP_ERROR + #undef CURRENT_LINKER_DATA_SECTION + #undef CURRENT_LINKER_DATA_SECTION_NAME + #define CURRENT_LINKER_DATA_SECTION_NAME + #else + #error "No section started" + #endif +#endif +% + end foreach + end foreach +% /* * Non Volatile Variables sections */ diff --git a/goil/templates/config/msp430x/config.oil b/goil/templates/config/msp430x/config.oil index b8506b56b..57a38afb1 100644 --- a/goil/templates/config/msp430x/config.oil +++ b/goil/templates/config/msp430x/config.oil @@ -34,7 +34,11 @@ IMPLEMENTATION msp430x { TRUE {UINT32 CYCLETIME = 5000;}, FALSE ] CHECKPOINTING = FALSE; - + /* enable use of LEA and size of LEA RAM */ + BOOLEAN [ + TRUE {UINT32 LEA_RAM = 4096;}, + FALSE {UINT32 LEA_RAM = 0;} + ] LEA = FALSE; /* trace */ BOOLEAN [ TRUE { diff --git a/goil/templates/config/msp430x/small/msp430fr5994/launchpad/config.oil b/goil/templates/config/msp430x/small/msp430fr5994/launchpad/config.oil index f23f28de2..8d3cbb23e 100644 --- a/goil/templates/config/msp430x/small/msp430fr5994/launchpad/config.oil +++ b/goil/templates/config/msp430x/small/msp430fr5994/launchpad/config.oil @@ -14,7 +14,8 @@ IMPLEMENTATION lauchpad { }, adc, ref_a, - checkpointing + checkpointing, + dsplib ] LIBRARY[]; }, FALSE @@ -50,4 +51,114 @@ CPU launchpad { // NEEDS = adc; // NEEDS = ref_a; }; + LIBRARY dsplib { + PATH = "msp430x/small/msp430fr5994/launchpad/dsplib"; + CHEADER = "include/DSPLib.h"; + CFILE = "source/filter/msp_biquad_cascade_df1_q15.c"; + CFILE = "source/filter/msp_biquad_cascade_df2_ext_q15.c"; + CFILE = "source/filter/msp_biquad_cascade_df2_q15.c"; + CFILE = "source/filter/msp_biquad_df1_q15.c"; + CFILE = "source/filter/msp_biquad_df2_ext_q15.c"; + CFILE = "source/filter/msp_biquad_df2_q15.c"; + CFILE = "source/filter/msp_cmplx_fir_iq31.c"; + CFILE = "source/filter/msp_cmplx_fir_q15.c"; + CFILE = "source/filter/msp_fir_q15.c"; + CFILE = "source/filter/msp_fir_iq31.c"; + CFILE = "source/lea/msp_lea_flags.c"; + CFILE = "source/lea/msp_lea_init.c"; + CFILE = "source/lea/msp_lea_isr.c"; + CFILE = "source/lea/msp_lea_patch.c"; + CFILE = "source/matrix/msp_matrix_abs_iq31.c"; + CFILE = "source/matrix/msp_matrix_abs_q15.c"; + CFILE = "source/matrix/msp_matrix_add_iq31.c"; + CFILE = "source/matrix/msp_matrix_add_q15.c"; + CFILE = "source/matrix/msp_matrix_mpy_iq31.c"; + CFILE = "source/matrix/msp_matrix_mpy_q15.c"; + CFILE = "source/matrix/msp_matrix_neg_iq31.c"; + CFILE = "source/matrix/msp_matrix_neg_q15.c"; + CFILE = "source/matrix/msp_matrix_offset_iq31.c"; + CFILE = "source/matrix/msp_matrix_offset_q15.c"; + CFILE = "source/matrix/msp_matrix_scale_iq31.c"; + CFILE = "source/matrix/msp_matrix_scale_q15.c"; + CFILE = "source/matrix/msp_matrix_shift_iq31.c"; + CFILE = "source/matrix/msp_matrix_shift_q15.c"; + CFILE = "source/matrix/msp_matrix_sub_iq31.c"; + CFILE = "source/matrix/msp_matrix_sub_q15.c"; + CFILE = "source/matrix/msp_matrix_trans_iq31.c"; + CFILE = "source/matrix/msp_matrix_trans_q15.c"; + CFILE = "source/transform/msp_cmplx_bitrev_iq31.c"; + CFILE = "source/transform/msp_cmplx_bitrev_q15.c"; + CFILE = "source/transform/msp_cmplx_fft_auto_q15.c"; + CFILE = "source/transform/msp_cmplx_fft_fixed_q15.c"; + CFILE = "source/transform/msp_cmplx_fft_iq31.c"; + CFILE = "source/transform/msp_cmplx_ifft_auto_q15.c"; + CFILE = "source/transform/msp_cmplx_ifft_fixed_q15.c"; + CFILE = "source/transform/msp_cmplx_ifft_iq31.c"; + CFILE = "source/transform/msp_fft_auto_q15.c"; + CFILE = "source/transform/msp_fft_fixed_q15.c"; + CFILE = "source/transform/msp_fft_iq31.c"; + CFILE = "source/transform/msp_ifft_auto_q15.c"; + CFILE = "source/transform/msp_ifft_fixed_q15.c"; + CFILE = "source/transform/msp_ifft_iq31.c"; + CFILE = "source/transform/msp_split_iq31.c"; + CFILE = "source/transform/msp_split_q15.c"; + CFILE = "source/transform/msp_transform_tables.c"; + CFILE = "source/utility/msp_cmplx_fill_iq31.c"; + CFILE = "source/utility/msp_cmplx_fill_q15.c"; + CFILE = "source/utility/msp_cmplx_iq31.c"; + CFILE = "source/utility/msp_cmplx_q15.c"; + CFILE = "source/utility/msp_copy_iq31.c"; + CFILE = "source/utility/msp_copy_q15.c"; + CFILE = "source/utility/msp_deinterleave_iq31.c"; + CFILE = "source/utility/msp_deinterleave_q15.c"; + CFILE = "source/utility/msp_fill_iq31.c"; + CFILE = "source/utility/msp_fill_q15.c"; + CFILE = "source/utility/msp_interleave_iq31.c"; + CFILE = "source/utility/msp_interleave_q15.c"; + CFILE = "source/utility/msp_iq31_to_q15.c"; + CFILE = "source/utility/msp_q15_to_iq31.c"; + CFILE = "source/utility/msp_sinusoid_q15.c"; + CFILE = "source/vector/msp_abs_iq31.c"; + CFILE = "source/vector/msp_abs_q15.c"; + CFILE = "source/vector/msp_add_iq31.c"; + CFILE = "source/vector/msp_add_q15.c"; + CFILE = "source/vector/msp_cmplx_add_iq31.c"; + CFILE = "source/vector/msp_cmplx_add_q15.c"; + CFILE = "source/vector/msp_cmplx_conj_iq31.c"; + CFILE = "source/vector/msp_cmplx_conj_q15.c"; + CFILE = "source/vector/msp_cmplx_mac_iq31.c"; + CFILE = "source/vector/msp_cmplx_mac_q15.c"; + CFILE = "source/vector/msp_cmplx_mpy_iq31.c"; + CFILE = "source/vector/msp_cmplx_mpy_q15.c"; + CFILE = "source/vector/msp_cmplx_mpy_real_iq31.c"; + CFILE = "source/vector/msp_cmplx_mpy_real_q15.c"; + CFILE = "source/vector/msp_cmplx_scale_iq31.c"; + CFILE = "source/vector/msp_cmplx_scale_q15.c"; + CFILE = "source/vector/msp_cmplx_shift_iq31.c"; + CFILE = "source/vector/msp_cmplx_shift_q15.c"; + CFILE = "source/vector/msp_cmplx_sub_iq31.c"; + CFILE = "source/vector/msp_cmplx_sub_q15.c"; + CFILE = "source/vector/msp_mac_iq31.c"; + CFILE = "source/vector/msp_mac_q15.c"; + CFILE = "source/vector/msp_max_iq31.c"; + CFILE = "source/vector/msp_max_q15.c"; + CFILE = "source/vector/msp_max_uq31.c"; + CFILE = "source/vector/msp_max_uq15.c"; + CFILE = "source/vector/msp_min_iq31.c"; + CFILE = "source/vector/msp_min_q15.c"; + CFILE = "source/vector/msp_min_uq31.c"; + CFILE = "source/vector/msp_min_uq15.c"; + CFILE = "source/vector/msp_mpy_iq31.c"; + CFILE = "source/vector/msp_mpy_q15.c"; + CFILE = "source/vector/msp_neg_iq31.c"; + CFILE = "source/vector/msp_neg_q15.c"; + CFILE = "source/vector/msp_offset_iq31.c"; + CFILE = "source/vector/msp_offset_q15.c"; + CFILE = "source/vector/msp_scale_iq31.c"; + CFILE = "source/vector/msp_scale_q15.c"; + CFILE = "source/vector/msp_shift_iq31.c"; + CFILE = "source/vector/msp_shift_q15.c"; + CFILE = "source/vector/msp_sub_iq31.c"; + CFILE = "source/vector/msp_sub_q15.c"; + }; }; diff --git a/goil/templates/linker/gnu_ld/msp430x/small/msp430fr5994/memory_map.goilTemplate b/goil/templates/linker/gnu_ld/msp430x/small/msp430fr5994/memory_map.goilTemplate index 8e81a9dba..d9bfa36d1 100755 --- a/goil/templates/linker/gnu_ld/msp430x/small/msp430fr5994/memory_map.goilTemplate +++ b/goil/templates/linker/gnu_ld/msp430x/small/msp430fr5994/memory_map.goilTemplate @@ -36,5 +36,20 @@ MEMORY ! size % bytes - % ! size / 2 % vectors */ FRAM (rx) : ORIGIN = 0x04000, LENGTH = 0xBF80 /* ends at 0xff80. size is 47,875k */ +% +if OS::LEA then + if OS::LEA_S::LEA_RAM > 4096 then + let OS::LEA_S::LEA_RAM := 4096 + end if + let lea_origin := 0x3BFF - OS::LEA_S::LEA_RAM + let size_ram := 0x1000 + 0x1000 - OS::LEA_S::LEA_RAM +% + RAM (xrw) : ORIGIN = 0x01C00, LENGTH = %!size_ram% /* size is [4k - 8k] */ + LEA_RAM (xrw) : ORIGIN = %!lea_origin%, LENGTH = %!OS::LEA_S::LEA_RAM% /* size is [0k - 4k] */ +% +else% RAM (xrw) : ORIGIN = 0x01C00, LENGTH = 0x2000 /* size is 8k */ +% +end if +% } diff --git a/goil/templates/linker/gnu_ld/msp430x/small/msp430fr5994/script.goilTemplate b/goil/templates/linker/gnu_ld/msp430x/small/msp430fr5994/script.goilTemplate index d567fb248..5cfc4f0a9 100755 --- a/goil/templates/linker/gnu_ld/msp430x/small/msp430fr5994/script.goilTemplate +++ b/goil/templates/linker/gnu_ld/msp430x/small/msp430fr5994/script.goilTemplate @@ -303,7 +303,40 @@ end foreach . += SIZEOF(.data); } >FRAM } - +% +if OS::LEA then +% +SECTIONS { +.data_lea : { +% +foreach proc in PROCESSES do +% +/* Initialized LEA variables section of % !proc::KIND % % !proc::NAME % */ +% + foreach DATA_SIZE in @( "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" ) do + foreach SECTION_KIND in @( "_LEA_" ) do +% *(.% !proc::KIND %_% !proc::NAME %_SEC_LEA_VAR% !SECTION_KIND !DATA_SIZE %) +% + end foreach + end foreach +end foreach +foreach app in APPLICATIONS do +%/* Initialized variables sections of OS_APP % !app::NAME % */ +% + foreach DATA_SIZE in @( "32BIT","16BIT","8BIT","BOOLEAN","UNSPECIFIED" ) do + foreach SECTION_KIND in @( "_POWER_ON_INIT_" ) do +% *(.OS_APP_% !app::NAME %_SEC_LEA_VAR% !SECTION_KIND !DATA_SIZE %) +% + end foreach + end foreach +end foreach +% + . = ALIGN(4); + } > LEA_RAM +} +% +end if +% /* * private data of processes */ diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib.h b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib.h new file mode 100755 index 000000000..d8c42a1b1 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib.h @@ -0,0 +1,50 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +#ifndef __DSPLIB_H__ +#define __DSPLIB_H__ + +#include "msp430.h" + +#include +#include + +#include "DSPLib_types.h" // Include DSPLib type definitions +#include "DSPLib_lea.h" // Include DSPLib LEA definitions +#include "DSPLib_support.h" // Include DSPLib support functions +#include "DSPLib_vector.h" // Include DSPLib vector functions +#include "DSPLib_matrix.h" // Include DSPLib matrix functions +#include "DSPLib_filter.h" // Include DSPLib filter functions +#include "DSPLib_transform.h" // Include DSPLib transform functions +#include "DSPLib_utility.h" // Include DSPLib utility functions +#include "DSPLib_ROM.h" // Include DSPLib ROM functions + +#endif //__DSPLIB_H__ diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_ROM.h b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_ROM.h new file mode 100755 index 000000000..13469b187 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_ROM.h @@ -0,0 +1,321 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +#ifndef __DSPLIB_ROM_H__ +#define __DSPLIB_ROM_H__ + +//****************************************************************************** +// +//! \addtogroup dsplib_support Support +//! @{ +//! +//! \defgroup dsplib_support_rom ROM +//! Definitions required to support the use of DSPLib functions in ROM. +//! +//! @} +// +//****************************************************************************** + +//***************************************************************************** +// +// If building with a C++ compiler, make all of the definitions in this header +// have a C binding. +// +//***************************************************************************** +#ifdef __cplusplus +extern "C" +{ +#endif + +#if (defined(__MSP430FR2355__) || defined(__MSP430FR2353__) || \ + defined(__MSP430FR2155__) || defined(__MSP430FR2153__)) && !defined(MSP_DISABLE_ROM) + +//****************************************************************************** +// +//! \ingroup dsplib_support_rom +//! +//! \brief Use DSPLib functions located in ROM. The default is to use ROM +//! functions when available, to disable use of ROM functions define +//! MSP_DISABLE_ROM in the compiler settings. +//! +//! It is always recommended to use ROM functions for lowest power and best +//! performance. Disabling ROM functions is only recommended for debugging. +// +//****************************************************************************** +#define MSP_USE_ROM 1 + +// Check for compatible code model +#if (defined(__TI_COMPILER_VERSION__) && !defined(__LARGE_CODE_MODEL__)) || \ + (defined(__IAR_SYSTEMS_ICC__) && (__CODE_MODEL__!=__CODE_MODEL_LARGE__)) +#error "Incompatible code model selected, switch to large code model or \ +disable ROM functions by defining MSP_DISABLE_ROM in compiler settings." +#endif + +// Check for compatible data model +#if (defined(__TI_COMPILER_VERSION__) && !defined(__LARGE_DATA_MODEL__)) || \ + (defined(__IAR_SYSTEMS_ICC__) && (__DATA_MODEL__!=__DATA_MODEL_LARGE__)) +#error "Incompatible data model selected, switch to large code model or \ +disable ROM functions by defining MSP_DISABLE_ROM in compiler settings." +#endif + +// Check CCS compiler version for ROM compatability +#if defined(__TI_COMPILER_VERSION__) +#if __TI_COMPILER_VERSION__ >= 18001001 +#define __cc_rom __attribute__((call_conv("cc_rom"))) +#else +#error "The cc_rom attribute requires MSP TI COMPILER 18.1.1.LTS or newer, \ +please upgrade your compiler to use this version of DSPLib with ROM funcitons." +#endif +#endif + +// Check IAR register model +#if defined(__IAR_SYSTEMS_ICC__) +#if __REGISTER_R4__ != __REGISTER_FREE__ +#error "Incorrect setting for R4, expected it to be free." +#endif +#if __REGISTER_R5__ != __REGISTER_FREE__ +#error "Incorrect setting for R5, expected it to be free." +#endif +#endif + +// Suppress CCS type conversion warning +#if defined (__TI_COMPILER_VERSION__) +#pragma diag_suppress 173 +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_support_rom +//! +//! \brief DSPLib API table for functions located in ROM. +// +//****************************************************************************** +#define ROM_DSPLIB_TABLE ((uint32_t *)(((uint32_t *)ROMLIB_START)[1])) + +//****************************************************************************** +// +//! \ingroup dsplib_support_rom +//! +//! \brief Definition for ROM msp_fft_auto_q15() function. +// +//****************************************************************************** +#define ROM_msp_fft_auto_q15 \ + ((msp_status (__cc_rom *) \ + (const msp_fft_q15_params *params, int16_t *src, uint16_t *shift)) \ + ROM_DSPLIB_TABLE[0]) + +//****************************************************************************** +// +//! \ingroup dsplib_support_rom +//! +//! \brief Definition for ROM msp_fft_fixed_q15() function. +// +//****************************************************************************** +#define ROM_msp_fft_fixed_q15 \ + ((msp_status (__cc_rom *) \ + (const msp_fft_q15_params *params, int16_t *src)) \ + ROM_DSPLIB_TABLE[1]) + +//****************************************************************************** +// +//! \ingroup dsplib_support_rom +//! +//! \brief Definition for ROM msp_fft_iq31() function. +// +//****************************************************************************** +#define ROM_msp_fft_iq31 \ + ((msp_status (__cc_rom *) \ + (const msp_fft_iq31_params *params, int32_t *src)) \ + ROM_DSPLIB_TABLE[2]) + +//****************************************************************************** +// +//! \ingroup dsplib_support_rom +//! +//! \brief Definition for ROM msp_cmplx_fft_auto_q15() function. +// +//****************************************************************************** +#define ROM_msp_cmplx_fft_auto_q15 \ + ((msp_status (__cc_rom *) \ + (const msp_cmplx_fft_q15_params *params, int16_t *src, uint16_t *shift)) \ + ROM_DSPLIB_TABLE[3]) + +//****************************************************************************** +// +//! \ingroup dsplib_support_rom +//! +//! \brief Definition for ROM msp_cmplx_fft_fixed_q15() function. +// +//****************************************************************************** +#define ROM_msp_cmplx_fft_fixed_q15 \ + ((msp_status (__cc_rom *) \ + (const msp_cmplx_fft_q15_params *params, int16_t *src)) \ + ROM_DSPLIB_TABLE[4]) + +//****************************************************************************** +// +//! \ingroup dsplib_support_rom +//! +//! \brief Definition for ROM msp_cmplx_fft_iq31() function. +// +//****************************************************************************** +#define ROM_msp_cmplx_fft_iq31 \ + ((msp_status (__cc_rom *) \ + (const msp_cmplx_fft_iq31_params *params, int32_t *src)) \ + ROM_DSPLIB_TABLE[5]) + +//****************************************************************************** +// +//! \ingroup dsplib_support_rom +//! +//! \brief Definition for ROM twiddle table. +// +//****************************************************************************** +#define ROM_msp_cmplx_twiddle_table_2048_q15 \ + ((_q15 *)ROM_DSPLIB_TABLE[6]) + +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_support_rom +//! +//! \brief Definition for MAP msp_fft_auto_q15() function. +// +//****************************************************************************** +#ifdef ROM_msp_fft_auto_q15 +#define MAP_msp_fft_auto_q15 \ + ROM_msp_fft_auto_q15 +#else +#define MAP_msp_fft_auto_q15 \ + msp_fft_auto_q15 +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_support_rom +//! +//! \brief Definition for MAP msp_fft_fixed_q15() function. +// +//****************************************************************************** +#ifdef ROM_msp_fft_fixed_q15 +#define MAP_msp_fft_fixed_q15 \ + ROM_msp_fft_fixed_q15 +#else +#define MAP_msp_fft_fixed_q15 \ + msp_fft_fixed_q15 +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_support_rom +//! +//! \brief Definition for MAP msp_fft_iq31() function. +// +//****************************************************************************** +#ifdef ROM_msp_fft_iq31 +#define MAP_msp_fft_iq31 \ + ROM_msp_fft_iq31 +#else +#define MAP_msp_fft_iq31 \ + msp_fft_iq31 +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_support_rom +//! +//! \brief Definition for MAP msp_cmplx_fft_auto_q15() function. +// +//****************************************************************************** +#ifdef ROM_msp_cmplx_fft_auto_q15 +#define MAP_msp_cmplx_fft_auto_q15 \ + ROM_msp_cmplx_fft_auto_q15 +#else +#define MAP_msp_cmplx_fft_auto_q15 \ + msp_cmplx_fft_auto_q15 +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_support_rom +//! +//! \brief Definition for MAP msp_cmplx_fft_fixed_q15() function. +// +//****************************************************************************** +#ifdef ROM_msp_cmplx_fft_fixed_q15 +#define MAP_msp_cmplx_fft_fixed_q15 \ + ROM_msp_cmplx_fft_fixed_q15 +#else +#define MAP_msp_cmplx_fft_fixed_q15 \ + msp_cmplx_fft_fixed_q15 +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_support_rom +//! +//! \brief Definition for MAP msp_cmplx_fft_iq31() function. +// +//****************************************************************************** +#ifdef ROM_msp_cmplx_fft_iq31 +#define MAP_msp_cmplx_fft_iq31 \ + ROM_msp_cmplx_fft_iq31 +#else +#define MAP_msp_cmplx_fft_iq31 \ + msp_cmplx_fft_iq31 +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_support_rom +// +//! \brief Definition for MAP twiddle table. +// +//****************************************************************************** +#ifdef ROM_msp_cmplx_twiddle_table_2048_q15 +#define MAP_msp_cmplx_twiddle_table_2048_q15 \ + ROM_msp_cmplx_twiddle_table_2048_q15 +#else +#define MAP_msp_cmplx_twiddle_table_2048_q15 \ + msp_cmplx_twiddle_table_2048_q15 +#endif + +//***************************************************************************** +// +// Mark the end of the C bindings section for C++ compilers. +// +//***************************************************************************** +#ifdef __cplusplus +} +#endif + +#endif //__DSPLIB_ROM_H__ diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_filter.h b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_filter.h new file mode 100755 index 000000000..46c319857 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_filter.h @@ -0,0 +1,862 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +#ifndef __DSPLIB_FILTER_H__ +#define __DSPLIB_FILTER_H__ + +//****************************************************************************** +// +//! \addtogroup dsplib_filter_api Filter +//! @{ +//! +//! Functions for common digital filters such as Finite Impulse Response (FIR) +//! and Infinite Impulse Response (IIR). The filter functions support real and +//! complex inputs as well as 16-bit and 32-bit data types. +//! +//! \defgroup dsplib_filter_real_fir Real FIR +//! Functions for performing real Finite Impulse Response (FIR) filters. +//! +//! \defgroup dsplib_filter_complex_fir Complex FIR +//! Functions for performing complex Finite Impulse Response (FIR) filters. +//! +//! \defgroup dsplib_filter_real_iir Real IIR +//! Functions for performing real Infinite Impulse Response (IIR) filters. +//! +//! @} +// +//****************************************************************************** + +//****************************************************************************** +// +// If building with a C++ compiler, make all of the definitions in this header +// have a C binding. +// +//****************************************************************************** +#ifdef __cplusplus +extern "C" +{ +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_fir +//! +//! \brief Calculate the alignment for a 16-bit real FIR filter from length +//! parameter. +// +//****************************************************************************** +#define MSP_ALIGN_FIR_Q15(n) (n*4) + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_fir +//! +//! \brief Calculate the alignment for a 32-bit real FIR filter from length +//! parameter. +// +//****************************************************************************** +#define MSP_ALIGN_FIR_IQ31(n) (n*8) + +//****************************************************************************** +// +//! \ingroup dsplib_filter_complex_fir +//! +//! \brief Calculate the alignment for a 16-bit complex FIR filter from length +//! parameter. +// +//****************************************************************************** +#define MSP_ALIGN_CMPLX_FIR_Q15(n) (n*8) + +//****************************************************************************** +// +//! \ingroup dsplib_filter_complex_fir +//! +//! \brief Calculate the alignment for a 32-bit complex FIR filter from length +//! parameter. +// +//****************************************************************************** +#define MSP_ALIGN_CMPLX_FIR_IQ31(n) (n*16) + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_fir +//! +//! \brief Parameter structure for FIR filter. +// +//****************************************************************************** +typedef struct msp_fir_q15_params { + //! \details + //! Length of the source data, must be a multiple of two. + uint16_t length; + //! \details + //! Length of FIR coefficients, must be a multiple of two. + uint16_t tapLength; + //! \details + //! Pointer to real FIR filter coefficients. + const _q15 *coeffs; + //! \details + //! Enable circular buffer. + bool enableCircularBuffer; +} msp_fir_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_fir +//! +//! \brief Parameter structure for FIR filter. +// +//****************************************************************************** +typedef struct msp_fir_iq31_params { + //! \details + //! Length of the output, must be a multiple of two. + uint16_t length; + //! \details + //! Length of FIR coefficients, must be a multiple of two. + uint16_t tapLength; + //! \details + //! Pointer to real FIR filter coefficients. + const _iq31 *coeffs; + //! \details + //! Enable circular buffer. + bool enableCircularBuffer; +} msp_fir_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_filter_complex_fir +//! +//! \brief Parameter structure for complex FIR filter. +// +//****************************************************************************** +typedef struct msp_cmplx_fir_q15_params{ + //! \details + //! Length of the output, must be a multiple of two. + uint16_t length; + //! \details + //! Length of FIR coefficients, must be a multiple of two. + uint16_t tapLength; + //! \details + //! Pointer to complex FIR filter coefficients. + const _q15 *coeffs; + //! \details + //! Enable circular buffer. + bool enableCircularBuffer; +} msp_cmplx_fir_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_filter_complex_fir +//! +//! \brief Parameter structure for complex FIR filter. +// +//****************************************************************************** +typedef struct msp_cmplx_fir_iq31_params{ + //! \details + //! Length of the source data, must be a multiple of two. + uint16_t length; + //! \details + //! Length of FIR coefficients, must be a multiple of two. + uint16_t tapLength; + //! \details + //! Pointer to complex FIR filter coefficients. + const _iq31 *coeffs; + //! \details + //! Enable circular buffer. + bool enableCircularBuffer; +} msp_cmplx_fir_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_iir +//! +//! \brief Coefficients for direct form 1 biquad filter. +// +//****************************************************************************** +typedef struct msp_biquad_df1_q15_coeffs { + //! \details + //! Coefficient b2 + _q15 b2; + //! \details + //! Coefficient b1 divided by two + _q15 b1By2; + //! \details + //! Coefficient b0 + _q15 b0; + //! \details + //! Reserved, do not remove + uint16_t reserved1; + //! \details + //! Coefficient a2 + _q15 a2; + //! \details + //! Coefficient a1 divided by two + _q15 a1By2; +} msp_biquad_df1_q15_coeffs; + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_iir +//! +//! \brief States for direct form 1 biquad filter. +// +//****************************************************************************** +typedef struct msp_biquad_df1_q15_states { + //! \details + //! Input x[n-2] + _q15 x2; + //! \details + //! Input x[n-1] + _q15 x1; + //! \details + //! Output y[n-2] + _q15 y2; + //! \details + //! Output y[n-1] + _q15 y1; +} msp_biquad_df1_q15_states; + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_iir +//! +//! \brief Parameter structure for direct form 1 biquad filter. +// +//****************************************************************************** +typedef struct msp_biquad_df1_q15_params { + //! \details + //! Length of the source data, must be a multiple of two. + uint16_t length; + //! \details + //! Pointer to DF1 filter coefficients. This data block must be allocated in + //! shared RAM when using LEA. + const msp_biquad_df1_q15_coeffs *coeffs; + //! \details + //! Pointer to an array of length four used to store the state of the + //! operation. When continuous operation is desired the previous state + //! needs to be passed to the next biquad operation. This data block must be + //! allocated in shared RAM when using LEA. + msp_biquad_df1_q15_states *states; +} msp_biquad_df1_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_iir +//! +//! \brief Parameter structure for cascaded direct form 1 biquad filter. +// +//****************************************************************************** +typedef struct msp_biquad_cascade_df1_q15_params { + //! \details + //! Length of the source data, must be a multiple of two. + uint16_t length; + //! \details + //! Number of cascaded biquad filters, typically the filter order divided by + //! two. + uint16_t stages; + //! \details + //! Pointer to an array of DF1 filter coefficients of length stages. This + //! data block must be allocated in shared RAM when using LEA. + const msp_biquad_df1_q15_coeffs *coeffs; + //! \details + //! Pointer to an array of DF1 filter states of length stages. When + //! continuous operation is desired the previous states must be passed to + //! the next cascaded biquad operation. This data block must be allocated in + //! shared RAM when using LEA. + msp_biquad_df1_q15_states *states; +} msp_biquad_cascade_df1_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_iir +//! +//! \brief Coefficients for direct form 2 biquad filter. When using LEA these +//! coefficients must be placed into shared RAM. +// +//****************************************************************************** +typedef struct msp_biquad_df2_q15_coeffs { + //! \details + //! Reserved, do not remove + uint16_t reserved1; + //! \details + //! Coefficient a2 + _q15 a2; + //! \details + //! Coefficient a1 divided by two + _q15 a1By2; + //! \details + //! Coefficient a0 + _q15 a0; + //! \details + //! Coefficient b0 + _q15 b0; + //! \details + //! Coefficient b1 divided by two + _q15 b1By2; + //! \details + //! Coefficient b2 + _q15 b2; + //! \details + //! Reserved, do not remove + uint16_t reserved2; +} msp_biquad_df2_q15_coeffs; + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_iir +//! +//! \brief States for direct form 2 biquad filter. +// +//****************************************************************************** +typedef struct msp_biquad_df2_q15_states { + //! \details + //! State Q1 + _q15 q1; + //! \details + //! State Q2 + _q15 q2; +} msp_biquad_df2_q15_states; + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_iir +//! +//! \brief Parameter structure for direct form 2 biquad filter. +// +//****************************************************************************** +typedef struct msp_biquad_df2_q15_params { + //! \details + //! Length of the source data, must be a multiple of two. + uint16_t length; + //! \details + //! Pointer to DF2 filter coefficients. This data block must be allocated in + //! shared RAM when using LEA. + const msp_biquad_df2_q15_coeffs *coeffs; + //! \details + //! Pointer to an array of length two used to store the state of the + //! operation. When continuous operation is desired the previous state + //! needs to be passed to the next biquad operation. This data block must be + //! allocated in shared RAM when using LEA. + msp_biquad_df2_q15_states *states; +} msp_biquad_df2_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_iir +//! +//! \brief Parameter structure for cascaded direct form 2 biquad filter. +// +//****************************************************************************** +typedef struct msp_biquad_cascade_df2_q15_params { + //! \details + //! Length of the source data, must be a multiple of two. + uint16_t length; + //! \details + //! Number of cascaded biquad filters, typically the filter order divided by + //! two. + uint16_t stages; + //! \details + //! Pointer to an array of DF2 filter coefficients of length stages. This + //! data block must be allocated in shared RAM when using LEA. + const msp_biquad_df2_q15_coeffs *coeffs; + //! \details + //! Pointer to an array of DF2 filter states of length stages. When + //! continuous operation is desired the previous states must be passed to + //! the next cascaded biquad operation. This data block must be allocated in + //! shared RAM when using LEA. + msp_biquad_df2_q15_states *states; +} msp_biquad_cascade_df2_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_iir +//! +//! \brief Coefficients for extended direct form 2 biquad filter. When using +//! LEA these coefficients must be placed into shared RAM. +// +//****************************************************************************** +typedef struct msp_biquad_df2_ext_q15_coeffs { + //! \details + //! Constant bias added to input. + _iq31 bias; + //! \details + //! Reserved, do not remove + uint16_t reserved1; + //! \details + //! Coefficient a2 + _q15 a2; + //! \details + //! Coefficient a1 divided by two + _q15 a1By2; + //! \details + //! Coefficient a0 + _q15 a0; + //! \details + //! Coefficient b0 + _q15 b0; + //! \details + //! Coefficient b1 divided by two + _q15 b1By2; + //! \details + //! Coefficient b2 + _q15 b2; + //! \details + //! Reserved, do not remove + uint16_t reserved2; +} msp_biquad_df2_ext_q15_coeffs; + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_iir +//! +//! \brief States for extended direct form 2 biquad filter. +// +//****************************************************************************** +typedef struct msp_biquad_df2_ext_q15_states { + //! \details + //! State Q1 + _q15 q1; + //! \details + //! State Q2 + _q15 q2; + //! \details + //! Minimum of even states + _q15 minEven; + //! \details + //! Minimum of odd states + _q15 minOdd; + //! \details + //! Maximum of even states + _q15 maxEven; + //! \details + //! Maximum of odd states + _q15 maxOdd; + //! \details + //! Minimum intermediate state + _q15 min; + //! \details + //! Maximum intermediate state + _q15 max; +} msp_biquad_df2_ext_q15_states; + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_iir +//! +//! \brief Parameter structure for extended direct form 2 biquad filter. +// +//****************************************************************************** +typedef struct msp_biquad_df2_ext_q15_params { + //! \details + //! Length of the source data, must be a multiple of two. + uint16_t length; + //! \details + //! Pointer to extended DF2 filter coefficients. This data block must be + //! allocated in shared RAM when using LEA. + const msp_biquad_df2_ext_q15_coeffs *coeffs; + //! \details + //! Pointer to an array of length eight used to store the state of the + //! operation. When continuous operation is desired the previous state + //! needs to be passed to the next biquad operation. This data block must be + //! allocated in shared RAM when using LEA. + msp_biquad_df2_ext_q15_states *states; +} msp_biquad_df2_ext_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_iir +//! +//! \brief Parameter structure for cascaded extended direct form 2 biquad +//! filter. +// +//****************************************************************************** +typedef struct msp_biquad_cascade_df2_ext_q15_params { + //! \details + //! Length of the source data, must be a multiple of two. + uint16_t length; + //! \details + //! Number of cascaded biquad filters, typically the filter order divided by + //! two. + uint16_t stages; + //! \details + //! Pointer to an array of DF2 filter coefficients of length stages. This + //! data block must be allocated in shared RAM when using LEA. + const msp_biquad_df2_ext_q15_coeffs *coeffs; + //! \details + //! Pointer to an array of DF2 filter states of length stages. When + //! continuous operation is desired the previous states must be passed to + //! the next cascaded biquad operation. This data block must be allocated in + //! shared RAM when using LEA. + msp_biquad_df2_ext_q15_states *states; +} msp_biquad_cascade_df2_ext_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_fir +//! +//! \brief Discrete-time convolution of a source vector with real coefficients +//! to apply an FIR filter. +//! +//! \par Details +//! FIR filter implementation utilizing discrete-time convolution. Q15 +//! multiplication is performed with a 32-bit accumulator to avoid intermediate +//! overflow. +//! +//! \par Pseudo code +//! `dst = conv([stateBuffer, src], taps)(0:1:length)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment when circular buffer is disabled or +//! aligned to four times the FIR data length if circular buffer is enabled +//! (e.g. a 64-sample FIR with 128-sample circular buffer must be aligned to a +//! 256-byte address). When allocating data the MSP\_ALIGN\_FIR\_Q15 macro can +//! be used to calculate the correct alignment. +//! +//! \param params Pointer to the FIR parameter structure. +//! \param src Pointer to the source vector to filter. +//! \param dst Pointer to the destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_fir_q15( + const msp_fir_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_fir +//! +//! \brief Discrete-time convolution of a source vector with real coefficients +//! to apply an FIR filter. +//! +//! \par Details +//! FIR filter implementation utilizing discrete-time convolution. IQ31 +//! multiplication is performed with a 32-bit accumulator to avoid intermediate +//! overflow. +//! +//! \par Pseudo code +//! `dst = conv([stateBuffer, src], taps)(0:1:length)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment when circular buffer is disabled or +//! aligned to eight times the FIR data length if circular buffer is enabled +//! (e.g. a 64-sample FIR with 128-sample circular buffer must be aligned to a +//! 512-byte address). When allocating data the MSP\_ALIGN\_FIR\_IQ31 macro can +//! be used to calculate the correct alignment. +//! +//! \param params Pointer to the FIR parameter structure. +//! \param src Pointer to the source vector to filter. +//! \param dst Pointer to the destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_fir_iq31( + const msp_fir_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_filter_complex_fir +//! +//! \brief Discrete-time convolution of a complex source vector with complex +//! coefficients to apply an FIR filter. +//! +//! \par Details +//! FIR filter implementation utilizing discrete-time convolution. Complex Q15 +//! multiplication is performed with a 32-bit accumulator to avoid intermediate +//! overflow. +//! +//! \par Pseudo code +//! `dst = conv([stateBuffer, src], taps)(0:1:length)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment when circular buffer is disabled or +//! aligned to eight times the FIR data length if circular buffer is enabled +//! (e.g. a 64-sample FIR with 128-sample circular buffer must be aligned to a +//! 512-byte address). When allocating data the MSP\_ALIGN\_CMPLX\_FIR\_Q15 +//! macro can be used to calculate the correct alignment. +//! +//! \param params Pointer to the complex FIR parameter structure. +//! \param src Pointer to the source vector to filter. +//! \param dst Pointer to the destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_fir_q15( + const msp_cmplx_fir_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_filter_complex_fir +//! +//! \brief Discrete-time convolution of a complex source vector with complex +//! coefficients to apply an FIR filter. +//! +//! \par Details +//! FIR filter implementation utilizing discrete-time convolution. Complex IQ31 +//! multiplication is performed with a 32-bit accumulator to avoid intermediate +//! overflow. +//! +//! \par Pseudo code +//! `dst = conv([stateBuffer, src], taps)(0:1:length)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment when circular buffer is disabled or +//! aligned to sixteen times the FIR data length if circular buffer is enabled +//! (e.g. a 64-sample FIR with 128-sample circular buffer must be aligned to a +//! 1024-byte address). When allocating data the MSP\_ALIGN\_CMPLX\_FIR\_IQ31 +//! macro can be used to calculate the correct alignment. +//! +//! \param params Pointer to the complex FIR parameter structure. +//! \param src Pointer to the source vector to filter. +//! \param dst Pointer to the destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_fir_iq31( + const msp_cmplx_fir_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_iir +//! +//! \brief Second-order direct form 1 biquad filter. +//! +//! \par Details +//! Second-order biquad filter with direct form 1 implementation. Q15 +//! multiplication is performed with a 32-bit accumulator to avoid intermediate +//! overflow with saturation to Q15 when storing the result. +//! +//! ![Biquad DF1 structure](images/biquad_df1.svg) +//! +//! \par Pseudo code +//! `y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the biquad direct form 1 parameter structure. +//! \param src Pointer to the source data to filter. +//! \param dst Pointer to the destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_biquad_df1_q15( + const msp_biquad_df1_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_iir +//! +//! \brief Cascaded direct form 1 biquad filter. +//! +//! \par Details +//! Cascaded biquad filter with direct form 1 implementation. The coefficients +//! are passed as an array of second-order sections (SOS matrix) and each +//! section is passed to msp_biquad_df1_q15 to filter the input. +//! +//! ![Example filter with three DF1 stages](images/biquad_cascade_df1.svg) +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the cascaded biquad direct form 1 parameter +//! structure. +//! \param src Pointer to the source data to filter. +//! \param dst Pointer to the destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_biquad_cascade_df1_q15( + const msp_biquad_cascade_df1_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_iir +//! +//! \brief Second-order direct form 2 biquad filter. +//! +//! \par Details +//! Second-order direct form 2 biquad filter. Q15 multiplication is performed +//! with a 32-bit accumulator to avoid intermediate overflow with saturation to +//! Q15 when storing the result. +//! +//! ![Biquad DF2 structure](images/biquad_df2.svg) +//! +//! \par Pseudo code +//! `y[n] = b0 * w[n] + b1 * w[n-1] + b2 * w[n-2]` \n +//! `w[n] = a0 * x[n] + a1 * x[n-1] + a2 * x[n-2]` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the biquad direct form 2 parameter structure. +//! \param src Pointer to the source data to filter. +//! \param dst Pointer to the destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_biquad_df2_q15( + const msp_biquad_df2_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_iir +//! +//! \brief Cascaded direct form 2 biquad filter. +//! +//! \par Details +//! Cascaded biquad filter with direct form 2 implementation. The coefficients +//! are passed as an array of second-order sections (SOS matrix) and each +//! section is passed to msp_biquad_df1_q15 to filter the input. +//! +//! ![Example filter with three DF2 stages](images/biquad_cascade_df2.svg) +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the cascaded biquad direct form 2 parameter +//! structure. +//! \param src Pointer to the source data to filter. +//! \param dst Pointer to the destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_biquad_cascade_df2_q15( + const msp_biquad_cascade_df2_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_iir +//! +//! \brief Second-order direct form 2 biquad filter extended with DC bias and +//! minimum and maximum tracking. +//! +//! \par Details +//! Second-order direct form 2 biquad filter extended to include bias and +//! minimum and maximum state tracking. Q15 multiplication is performed with a +//! 32-bit accumulator to avoid intermediate overflow with saturation to Q15 +//! when storing the result. The maximum and minimum of the intermediate states +//! are stored in the state structure. +//! +//! ![Biquad DF2 structure (extended)](images/biquad_df2_ext.svg) +//! +//! \par Pseudo code +//! `y[n] = b0 * w[n] + b1 * w[n-1] + b2 * w[n-2]` \n +//! `w[n] = a0 * x[n] + a1 * x[n-1] + a2 * x[n-2]` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the biquad direct form 2 parameter structure. +//! \param src Pointer to the source data to filter. +//! \param dst Pointer to the destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_biquad_df2_ext_q15( + const msp_biquad_df2_ext_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_filter_real_iir +//! +//! \brief Cascaded direct form 2 biquad filter extended with DC bias and +//! minimum and maximum tracking. +//! +//! \par Details +//! Cascaded biquad filter with direct form 2 implementation extended to include +//! bias and minimum and maximum state tracking. The coefficients are passed +//! as an array of second-order sections (SOS matrix) and each section is passed +//! to msp_biquad_df2_ext_q15 to filter the input. +//! +//! ![Example filter with three DF2 stages](images/biquad_cascade_df2_ext.svg) +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the cascaded biquad direct form 2 parameter +//! structure. +//! \param src Pointer to the source data to filter. +//! \param dst Pointer to the destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_biquad_cascade_df2_ext_q15( + const msp_biquad_cascade_df2_ext_q15_params *params, + const _q15 *src, + _q15 *dst); + +//***************************************************************************** +// +// Mark the end of the C bindings section for C++ compilers. +// +//***************************************************************************** +#ifdef __cplusplus +} +#endif + +#endif //__DSPLIB_FILTER_H__ diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_lea.h b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_lea.h new file mode 100755 index 000000000..d4e1d6d5e --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_lea.h @@ -0,0 +1,1285 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +#ifndef __DSPLIB_LEA_H__ +#define __DSPLIB_LEA_H__ + +//****************************************************************************** +// +//! \addtogroup dsplib_support Support +//! @{ +//! +//! \defgroup dsplib_support_lea LEA +//! Definitions required to support the use of LEA. +//! +//! @} +// +//****************************************************************************** + +//***************************************************************************** +// +// If building with a C++ compiler, make all of the definitions in this header +// have a C binding. +// +//***************************************************************************** +#ifdef __cplusplus +extern "C" +{ +#endif + +#if defined(__MSP430_HAS_LEA__) && !defined(MSP_DISABLE_LEA) + +#if __MSP430_HEADER_VERSION__ < 1192 +#error "DSPLib: Device header file is out of date, please upgrade to the \ +latest support package to use this version of DSPLib with LEA." +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Enable the LEA accelerator for DSPLib functions. The default is +//! to use LEA when available, to disable LEA define MSP_DISABLE_LEA in +//! the compiler settings. +//! +//! It is always recommended to use LEA for lowest power and best performance. +//! Disabling LEA is only intended to be used for benchmarking LEA +//! performance against the CPU and hardware multiplier or by users who would +//! like to dedicate the LEA peripheral to a specific function and run the +//! remainder on the CPU. +// +//****************************************************************************** +#define MSP_USE_LEA 1 + +// LEA revision A. +#define MSP_LEA_REVISION_A 0 + +// LEA revision B. +#define MSP_LEA_REVISION_B 1 + +// LEA revision B. +#define MSP_LEA_REVISION_C 2 + +// Unknown revision of LEA. +#define MSP_LEA_REVISION_UNKNOWN 255 + +#if !defined(MSP_LEA_REVISION) + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief If a LEA revision is not specified default to revision B. +// +//****************************************************************************** +#define MSP_LEA_REVISION MSP_LEA_REVISION_B + +#endif //MSP_LEA_REVISION + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Convert MSP430 address to internal LEA address mapping. +// +//****************************************************************************** +#define MSP_LEA_CONVERT_ADDRESS(x) ((uint16_t)(((uintptr_t)(x) >> 2) & 0xffff)) + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Convert LEA address to MSP430 address mapping. +// +//****************************************************************************** +#define MSP_LEA_REVERT_ADDRESS(x) ((uintptr_t)(((uint32_t)(x) << 2))) + +// Cast read-only registers to const to avoid compiler warnings. +#define MSP_LEA_BOTTOM (*((const uint16_t *)(&LEAMB))) +#define MSP_LEA_TOP (*((const uint16_t *)(&LEAMT))) + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Check that the address is aligned correctly. +// +//****************************************************************************** +#define MSP_LEA_RANGE(x) (((uintptr_t)(x) >= MSP_LEA_BOTTOM) \ + && ((uintptr_t)(x) < MSP_LEA_TOP)) + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Check that the address is within the LEA RAM. +// +//****************************************************************************** +#define MSP_LEA_ALIGNED(x,n) (!((uint32_t)(x) & ((n)-1))) + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Check that the address aligment is valid and within the LEA RAM. +// +//****************************************************************************** +#define MSP_LEA_VALID_ADDRESS(x,n) (MSP_LEA_RANGE(x) & MSP_LEA_ALIGNED(x,n)) + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA constant memory address for 0x0000 coefficients. +// +//****************************************************************************** +#define MSP_LEA_CONST_ZERO 0xA000 + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA constant memory address for 0x7fff coefficients. +// +//****************************************************************************** +#define MSP_LEA_CONST_ONE 0xAC00 + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA constant memory address for 0x8000 coefficients. +// +//****************************************************************************** +#define MSP_LEA_Q15_CONST_NEG_ONE 0xB000 + + //****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA constant memory address for 0x80000000 coefficients. +// +//****************************************************************************** +#define MSP_LEA_IQ31_CONST_NEG_ONE 0xE000 + + //****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA command ID for interleave even even command. +// +//****************************************************************************** +#define LEACMD__INTERLEAVEEVENEVEN (0x0000f000) + + //****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA command ID for interleave even odd command. +// +//****************************************************************************** +#define LEACMD__INTERLEAVEEVENODD (0x0000f001) + + //****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA command ID for interleave odd even command. +// +//****************************************************************************** +#define LEACMD__INTERLEAVEODDEVEN (0x0000f002) + + //****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA command ID for interleave odd odd command. +// +//****************************************************************************** +#define LEACMD__INTERLEAVEODDODD (0x0000f003) + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__ADDMATRIX command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector, must be a multiple of two. + uint16_t vectorSize; + //! Input data vector 2. + uint16_t input2; + //! Output data vector. + uint16_t output; + //! Offset of input vector 1. + uint16_t input1Offset; + //! Offset of input vector 2. + uint16_t input2Offset; + //! Offset of output vector. + uint16_t outputOffset; +} MSP_LEA_ADDMATRIX_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEAMD__ADDLONGMATRIX command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector. + uint16_t vectorSize; + //! Input data vector 2. + uint16_t input2; + //! Output data vector. + uint16_t output; + //! Offset of input vector 1. + uint16_t input1Offset; + //! Offset of input vector 2. + uint16_t input2Offset; + //! Offset of output vector. + uint16_t outputOffset; +} MSP_LEA_ADDLONGMATRIX_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__SUBMATRIX command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector, must be a multiple of two. + uint16_t vectorSize; + //! Input data vector 2. + uint16_t input2; + //! Output data vector. + uint16_t output; + //! Offset of input vector 1. + uint16_t input1Offset; + //! Offset of input vector 2. + uint16_t input2Offset; + //! Offset of output vector. + uint16_t outputOffset; +} MSP_LEA_SUBMATRIX_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__SUBLONGMATRIX command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector. + uint16_t vectorSize; + //! Input data vector 2. + uint16_t input2; + //! Output data vector. + uint16_t output; + //! Offset of input vector 1. + uint16_t input1Offset; + //! Offset of input vector 2. + uint16_t input2Offset; + //! Offset of output vector. + uint16_t outputOffset; +} MSP_LEA_SUBLONGMATRIX_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__MPYMATRIX command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector, must be a multiple of two. + uint16_t vectorSize; + //! Input data vector 2. + uint16_t input2; + //! Output data vector. + uint16_t output; + //! Offset of input vector 1. + uint16_t input1Offset; + //! Offset of input vector 2. + uint16_t input2Offset; + //! Offset of output vector. + uint16_t outputOffset; +} MSP_LEA_MPYMATRIX_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__MPYLONGMATRIX command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector. + uint16_t vectorSize; + //! Input data vector 2. + uint16_t input2; + //! Output data vector. + uint16_t output; + //! Offset of input vector 1. + uint16_t input1Offset; + //! Offset of input vector 2. + uint16_t input2Offset; + //! Offset of output vector. + uint16_t outputOffset; +} MSP_LEA_MPYLONGMATRIX_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__MAC command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector, must be a multiple of two. + uint16_t vectorSize; + //! Input data vector 2. + uint16_t input2; + //! Output data vector. + uint16_t output; + //! Reserved padding. + uint16_t reserved; +} MSP_LEA_MAC_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__MACLONGMATRIX command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector. + uint16_t vectorSize; + //! Input data vector 2. + uint16_t input2; + //! Output data vector. + uint16_t output; + //! Offset of input vector 1. + uint16_t input1Offset; + //! Offset of input vector 2. + uint16_t input2Offset; + //! Reserved padding. + uint16_t reserved; +} MSP_LEA_MACLONG_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__POLYNOMIAL command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector, must be a multiple of two. + uint16_t vectorSize; + //! Output data vector. + uint16_t output; + //! Polynomial coefficient vector. + uint16_t coeff; + //! Polynomial coefficient order. + uint16_t order; + //! Scale factor. + int32_t scaleFactor; +} MSP_LEA_POLY_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__MAX command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector, must be a multiple of two. + uint16_t vectorSize; + //! Output data vector. + uint16_t output; +} MSP_LEA_MAX_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__MAXLONGMATRIX command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector. + uint16_t vectorSize; + //! Output data vector. + uint16_t output; + //! Offset of input vector. + uint16_t inputOffset; + //! Reserved padding. + uint16_t reserved; +} MSP_LEA_MAXLONG_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__MAXUNSIGNED command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector, must be a multiple of two. + uint16_t vectorSize; + //! Output data vector. + uint16_t output; +} MSP_LEA_MAXUNSIGNED_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__MAXUNSIGNEDMATRIX command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector. + uint16_t vectorSize; + //! Output data vector. + uint16_t output; + //! Offset of input vector. + uint16_t inputOffset; + //! Reserved padding. + uint16_t reserved; +} MSP_LEA_MAXLONGUNSIGNED_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__MIN command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector, must be a multiple of two. + uint16_t vectorSize; + //! Output data vector. + uint16_t output; +} MSP_LEA_MIN_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__MINLONGMATRIX command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector. + uint16_t vectorSize; + //! Output data vector. + uint16_t output; + //! Offset of input vector. + uint16_t inputOffset; + //! Reserved padding. + uint16_t reserved; +} MSP_LEA_MINLONG_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__MINUNSIGNEDMATRIX command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector, must be a multiple of two. + uint16_t vectorSize; + //! Output data vector. + uint16_t output; + //! Offset of input vector. + uint16_t inputOffset; + //! Reserved padding. + uint16_t reserved; +} MSP_LEA_MINUNSIGNED_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__MINLONGUNSIGNED command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector. + uint16_t vectorSize; + //! Output data vector. + uint16_t output; + //! Offset of input vector. + uint16_t inputOffset; + //! Reserved padding. + uint16_t reserved; +} MSP_LEA_MINLONGUNSIGNED_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__MPYCOMPLEXMATRIX command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector, must be a multiple of two. + uint16_t vectorSize; + //! Input data vector 2. + uint16_t input2; + //! Output data vector. + uint16_t output; + //! Offset of input vector 1. + uint16_t input1Offset; + //! Offset of input vector 2. + uint16_t input2Offset; + //! Offset of output vector. + uint16_t outputOffset; +} MSP_LEA_MPYCOMPLEXMATRIX_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__MACCOMPLEXMATRIX command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector, must be a multiple of two. + uint16_t vectorSize; + //! Input data vector 2. + uint16_t input2; + //! Output data vector. + uint16_t output; + //! Offset of input vector 1. + uint16_t input1Offset; + //! Offset of input vector 2. + uint16_t input2Offset; + //! Reserved padding. + uint16_t reserved; +} MSP_LEA_MACCOMPLEXMATRIX_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__MPYMATRIXROW command. +// +//****************************************************************************** +typedef struct { + //! Input row size. + uint16_t rowSize; + //! Input column size. + uint16_t colSize; + //! Input column vector. + uint16_t colVector; + //! Output data vector. + uint16_t output; +} MSP_LEA_MPYMATRIXROW_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__FIR command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector, must be a multiple of two. + uint16_t vectorSize; + //! FIR coefficient vector. + uint16_t coeffs; + //! Output data vector. + uint16_t output; + //! Length of FIR coefficient vector. + uint16_t tapLength; + //! Input buffer increment mask. + uint16_t bufferMask; + //! Reserved padding. + uint16_t reserved; +} MSP_LEA_FIR_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__FIRLONG command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector. + uint16_t vectorSize; + //! FIR coefficient vector. + uint16_t coeffs; + //! Output data vector. + uint16_t output; + //! Length of FIR coefficient vector. + uint16_t tapLength; + //! Input buffer increment mask. + uint16_t bufferMask; + //! Reserved padding. + uint16_t reserved; +} MSP_LEA_FIRLONG_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__FIRCOMPLEX command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector. + uint16_t vectorSize; + //! FIR coefficient vector. + uint16_t coeffs; + //! Output data vector. + uint16_t output; + //! Length of FIR coefficient vector. + uint16_t tapLength; + //! Input buffer increment mask. + uint16_t bufferMask; + //! Reserved padding. + uint16_t reserved; +} MSP_LEA_FIRCOMPLEX_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__FIRLONGCOMPLEX command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector. + uint16_t vectorSize; + //! FIR coefficient vector. + uint16_t coeffs; + //! Output data vector. + uint16_t output; + //! Length of FIR coefficient vector. + uint16_t tapLength; + //! Input buffer increment mask. + uint16_t bufferMask; + //! Reserved padding. + uint16_t reserved; +} MSP_LEA_FIRLONGCOMPLEX_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__IIRBQ1 command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector divided by two. + uint16_t vectorSizeBy2; + //! Output data vector. + uint16_t output; + //! Biquad state structure. + uint16_t state; + //! Biquad coefficient structure. + uint16_t coeffs; + //! Input increment direction. + uint16_t direction; + //! Reserved padding. + uint16_t reserved; +} MSP_LEA_IIRBQ1_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__IIRBQ2 and LEACMD__IIRBQ2EXTENDED +//! commands. +// +//****************************************************************************** +typedef struct { + //! Length of data vector divided by two. + uint16_t vectorSizeBy2; + //! Output data vector. + uint16_t output; + //! Biquad state structure. + uint16_t state; + //! Biquad coefficient structure. + uint16_t coeffs; +} MSP_LEA_IIRBQ2_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__BITREVERSECOMPLEXEVEN or +//! LEACMD__BITREVERSECOMPLEXODD commands. +// +//****************************************************************************** +typedef struct { + //! Square root of data vector length. + uint16_t sqrtVectorSize; + //! Reserved padding. + uint16_t reserved; +} MSP_LEA_BITREVERSECOMPLEX_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__BITREVERSECOMPLEXLONGEVEN or +//! LEACMD__BITREVERSECOMPLEXLONGODD commands. +// +//****************************************************************************** +typedef struct { + //! Square root of data vector length. + uint16_t sqrtVectorSize; + //! Reserved padding. + uint16_t reserved; +} MSP_LEA_BITREVERSECOMPLEXLONG_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__FFTCOMPLEXAUTOSCALING command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector divided by two, must be a power of two. + uint16_t vectorSizeBy2; + //! Log base 2 of 2*vectorSizeBy2 parameter. + uint16_t log2Size; +} MSP_LEA_FFTCOMPLEXAUTOSCALING_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__FFTCOMPLEXFIXEDSCALING command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector divided by two, must be a power of two. + uint16_t vectorSizeBy2; + //! Log base 2 of 2*vectorSizeBy2 parameter. + uint16_t log2Size; +} MSP_LEA_FFTCOMPLEXFIXEDSCALING_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__FFTCOMPLEXLONG command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector, must be a power of two. + uint16_t vectorSize; + //! Log base 2 of vectorSize parameter. + uint16_t log2Size; +} MSP_LEA_FFTCOMPLEXLONG_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__FFT command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector, must be a power of two. + uint16_t vectorSize; + //! Log base 2 of vectorSize parameter. + uint16_t log2Size; +} MSP_LEA_FFT_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__FFTLONG command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector,must be a power of two. + uint16_t vectorSize; + //! Log base 2 of vectorSize parameter. + uint16_t log2Size; +} MSP_LEA_FFTLONG_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__INTERLEAVEEVENEVEN, +//! LEACMD__INTERLEAVEEVENODD, LEACMD__INTERLEAVEODDEVEN and +//! LEACMD__INTERLEAVEODDODD commands. +// +//****************************************************************************** +typedef struct { + //! Output data vector. + uint16_t output; + //! Channel to insert vector into. + uint16_t channel; + //! Number of destination channels. + uint16_t numChannels; + //! Length of data vector, must be a multiple of two. + uint16_t vectorSize; +} MSP_LEA_INTERLEAVE_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__DEINTERLEAVEEVENEVEN, +//! LEACMD__DEINTERLEAVEEVENODD, LEACMD__DEINTERLEAVEODDEVEN and +//! LEACMD__DEINTERLEAVEODDODD commands. +// +//****************************************************************************** +typedef struct { + //! Length of data vector, must be a multiple of two. + uint16_t vectorSize; + //! Depth of interleave operation. + uint16_t interleaveDepth; + //! Output data vector. + uint16_t output; + //! Reserved padding. + uint16_t reserved; +} MSP_LEA_DEINTERLEAVE_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Parameter structure for LEACMD__DEINTERLEAVELONG command. +// +//****************************************************************************** +typedef struct { + //! Length of data vector. + uint16_t vectorSize; + //! Depth of interleave operation. + uint16_t interleaveDepth; + //! Output data vector. + uint16_t output; + //! Reserved padding. + uint16_t reserved; +} MSP_LEA_DEINTERLEAVELONG_PARAMS; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA patch for the LEA__MIN command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_MIN[23]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA patch for the LEA__MINUNSIGNED command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_MINUNSIGNED[23]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA patch for the LEA__MINLONGMATRIX command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_MINLONGMATRIX[20]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA patch for the LEA__MINUNSIGNEDLONGMATRIX command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_MINUNSIGNEDLONGMATRIX[20]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA patch for the LEA__MAX command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_MAX[23]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA patch for the LEA__MAXUNSIGNED command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_MAXUNSIGNED[23]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA patch for the LEA__MAXLONGMATRIX command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_MAXLONGMATRIX[20]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA patch for the LEA__MAXUNSIGNEDLONGMATRIX command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_MAXUNSIGNEDLONGMATRIX[20]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA patch for the LEA__MACLONGMATRIX command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_MACLONGMATRIX[18]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA patch for the LEACMD__FFTCOMPLEXAUTOSCALING command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_FFTCOMPLEXAUTOSCALING[58]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA patch for the LEA__FFTCOMPLEXLONG command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_FFTCOMPLEXLONG[64]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA patch for the LEA__MPYLONGMATRIX command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_MPYLONGMATRIX[17]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA patch for the LEA__IIRBQ1 command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_IIRBQ1[31]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA patch for the LEA__IIRBQ2 command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_IIRBQ2[32]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA patch for the LEA__IIRBQ2EXTENDED command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_IIRBQ2EXTENDED[47]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA patch for the LEA__FIRLONG command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_FIRLONG[30]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA patch for the LEA__FIRCOMPLEXLONG command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_FIRCOMPLEXLONG[43]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA function for the LEACMD__INTERLEAVEEVENEVEN command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_INTERLEAVEEVENEVEN[22]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA function for the LEACMD__INTERLEAVEEVENODD command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_INTERLEAVEEVENODD[24]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA function for the LEACMD__INTERLEAVEODDEVEN command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_INTERLEAVEODDEVEN[22]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief LEA function for the LEACMD__INTERLEAVEODDODD command. +// +//****************************************************************************** +extern const uint32_t MSP_LEA_INTERLEAVEODDODD[24]; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief DSPLib interrupt flags. +// +//****************************************************************************** +extern volatile uint16_t msp_lea_ifg; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief DSPLib LEA-SC locked flag. +// +//****************************************************************************** +extern volatile uint16_t msp_lea_locked; + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief DSPLib initialization routine for LEA. +//! +//! \return none +// +//****************************************************************************** +extern void msp_lea_init(void); + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Invoke a command with interrupts enabled and enter low-power mode or +//! poll the interrupt flag. +//! +//! \return none +// +//****************************************************************************** +static inline void msp_lea_invokeCommand(uint16_t cmdId) +{ + /* Save interrupt state and disable interrupts. */ + uint16_t interruptState = __get_interrupt_state(); + __disable_interrupt(); + + /* Clear interrupt flag and invoke the command. */ + msp_lea_ifg = 0; + LEAPMCB = cmdId | LEAITFLG1; + +#if defined(MSP_DISABLE_LPM0) +#warning "DSPLib: LPM0 is disabled, undefine MSP_DISABLE_LPM0 to enable LPM0." + /* Do not enter LPM0, poll interrupt flags for command completion. */ + __bis_SR_register(GIE); + while(!msp_lea_ifg); +#elif ((MSP_LEA_REVISION==MSP_LEA_REVISION_A) && !defined(MSP_ENABLE_LPM0)) + /* Do not enter LPM0, poll interrupt flags for command completion. */ + __bis_SR_register(GIE); + while(!msp_lea_ifg); +#else + /* Enter LPM0 and wait for command complete interrupt to wake the device. */ + __bis_SR_register(GIE+LPM0_bits); +#endif + + /* Restore original interrupt state. */ + __set_interrupt_state(interruptState); +} + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Allocate LEA-SC memory from stack. +//! +//! \param length Length of memory to allocate in 32-bit words. +//! +//! \return Pointer to allocated memory. +// +//****************************************************************************** +static inline void *msp_lea_allocMemory(uint16_t length) +{ + LEACNF2 -= length; + return (void *)MSP_LEA_REVERT_ADDRESS(LEACNF2); +} + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Free LEA-SC memory from stack. +//! +//! \param length Length of memory to allocate in 32-bit words. +//! +//! \return none +// +//****************************************************************************** +static inline void msp_lea_freeMemory(uint16_t length) +{ + LEACNF2 += length; +} + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Acquire LEA-SC module if available. +//! +//! \return Status of the operation, true means lock was acquired. +// +//****************************************************************************** +static inline bool msp_lea_acquireLock(void) +{ +#ifndef MSP_DISABLE_DIAGNOSTICS + bool status; + + /* Save interrupt state and disable interrupts. */ + uint16_t interruptState = __get_interrupt_state(); + __disable_interrupt(); + + /* Check LEA-SC busy flag and DSPLib lock flags. */ + if ((LEACNF1 & LEABUSY) || msp_lea_locked) { + status = false; + } + else { + status = true; + msp_lea_locked = true; + } + + /* Restore interrupt state and return status. */ + __set_interrupt_state(interruptState); + return status; +#endif //MSP_DISABLE_DIAGNOSTICS +} + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Free LEA-SC module. +//! +//! \return none +// +//****************************************************************************** +static inline void msp_lea_freeLock(void) +{ +#ifndef MSP_DISABLE_DIAGNOSTICS + msp_lea_locked = false; +#endif //MSP_DISABLE_DIAGNOSTICS +} + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Initialize the table used for loading commands. +//! +//! \return none +// +//****************************************************************************** +extern void msp_lea_initCommandTable(void); + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Return the revision of LEA code ROM. +//! +//! \return LEA revision. +// +//****************************************************************************** +extern uint16_t msp_lea_getRevision(void); + +//****************************************************************************** +// +//! \ingroup dsplib_support_lea +//! +//! \brief Load a LEA command into code memory. +//! +//! \return LEA command ID for loaded command. +// +//****************************************************************************** +extern uint16_t msp_lea_loadCommand( + uint16_t commandId, const void *command, uint16_t length); + +#endif + +//***************************************************************************** +// +// Mark the end of the C bindings section for C++ compilers. +// +//***************************************************************************** +#ifdef __cplusplus +} +#endif + +#endif // __DSPLIB_LEA_H__ diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_matrix.h b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_matrix.h new file mode 100755 index 000000000..598e696ce --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_matrix.h @@ -0,0 +1,867 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +#ifndef __DSPLIB_MATRIX_H__ +#define __DSPLIB_MATRIX_H__ + +//****************************************************************************** +// +//! \addtogroup dsplib_matrix_api Matrix +//! @{ +//! +//! Functions for performing matrix operations on real data. +//! +//! \defgroup dsplib_matrix_real Real Matrix +//! Functions for performing matrix operations on real data. +//! +//! @} +// +//****************************************************************************** + +//****************************************************************************** +// +// If building with a C++ compiler, make all of the definitions in this header +// have a C binding. +// +//****************************************************************************** +#ifdef __cplusplus +extern "C" +{ +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Parameter structure for the matrix add function. +// +//****************************************************************************** +typedef struct msp_matrix_add_q15_params { + //! Number of rows in the source matrices, must be a multiple of two. + uint16_t rows; + //! Number of columns in the source matrices, must be a multiple of two. + uint16_t cols; +} msp_matrix_add_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Parameter structure for the matrix add function. +// +//****************************************************************************** +typedef struct msp_matrix_add_iq31_params { + //! Number of rows in the source matrices, must be a multiple of two. + uint16_t rows; + //! Number of columns in the source matrices, must be a multiple of two. + uint16_t cols; +} msp_matrix_add_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Parameter structure for the matrix subtract function. +// +//****************************************************************************** +typedef struct msp_matrix_sub_q15_params { + //! Number of rows in the source matrices, must be a multiple of two. + uint16_t rows; + //! Number of columns in the source matrices, must be a multiple of two. + uint16_t cols; +} msp_matrix_sub_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Parameter structure for the matrix subtract function. +// +//****************************************************************************** +typedef struct msp_matrix_sub_iq31_params { + //! Number of rows in the source matrices, must be a multiple of two. + uint16_t rows; + //! Number of columns in the source matrices, must be a multiple of two. + uint16_t cols; +} msp_matrix_sub_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Parameter structure for the matrix transpose function. +// +//****************************************************************************** +typedef struct msp_matrix_trans_q15_params { + //! Number of rows in the source matrices, must be a multiple of two. + uint16_t rows; + //! Number of columns in the source matrices, must be a multiple of two. + uint16_t cols; +} msp_matrix_trans_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Parameter structure for the matrix transpose function. +// +//****************************************************************************** +typedef struct msp_matrix_trans_iq31_params { + //! Number of rows in the source matrices, must be a multiple of two. + uint16_t rows; + //! Number of columns in the source matrices, must be a multiple of two. + uint16_t cols; +} msp_matrix_trans_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Parameter structure for the real matrix multiply function. +// +//****************************************************************************** +typedef struct msp_matrix_mpy_q15_params { + //! Number of rows in source A matrix, must be a multiple of two. + uint16_t srcARows; + //! Number of columns in source A matrix, must be a multiple of two. + uint16_t srcACols; + //! Number of rows in source B matrix, must be a multiple of two. + uint16_t srcBRows; + //! Number of columns in source B matrix, must be a multiple of two. + uint16_t srcBCols; +} msp_matrix_mpy_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Parameter structure for the real matrix multiply function. +// +//****************************************************************************** +typedef struct msp_matrix_mpy_iq31_params { + //! Number of rows in source A matrix, must be a multiple of two. + uint16_t srcARows; + //! Number of columns in source A matrix, must be a multiple of two. + uint16_t srcACols; + //! Number of rows in source B matrix, must be a multiple of two. + uint16_t srcBRows; + //! Number of columns in source B matrix, must be a multiple of two. + uint16_t srcBCols; +} msp_matrix_mpy_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Parameter structure for the real matrix negate function. +// +//****************************************************************************** +typedef struct msp_matrix_neg_q15_params { + //! Number of rows in the source matrices, must be a multiple of two. + uint16_t rows; + //! Number of columns in the source matrices, must be a multiple of two. + uint16_t cols; +} msp_matrix_neg_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Parameter structure for the real matrix negate function. +// +//****************************************************************************** +typedef struct msp_matrix_neg_iq31_params { + //! Number of rows in the source matrices, must be a multiple of two. + uint16_t rows; + //! Number of columns in the source matrices, must be a multiple of two. + uint16_t cols; +} msp_matrix_neg_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Parameter structure for the real matrix absolute value function. +// +//****************************************************************************** +typedef struct msp_matrix_abs_q15_params { + //! Number of rows in the source matrices, must be a multiple of two. + uint16_t rows; + //! Number of columns in the source matrices, must be a multiple of two. + uint16_t cols; +} msp_matrix_abs_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Parameter structure for the real matrix absolute value function. +// +//****************************************************************************** +typedef struct msp_matrix_abs_iq31_params { + //! Number of rows in the source matrices, must be a multiple of two. + uint16_t rows; + //! Number of columns in the source matrices, must be a multiple of two. + uint16_t cols; +} msp_matrix_abs_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Parameter structure for the real matrix offset function. +// +//****************************************************************************** +typedef struct msp_matrix_offset_q15_params { + //! Number of rows in the source matrices, must be a multiple of two. + uint16_t rows; + //! Number of columns in the source matrices, must be a multiple of two. + uint16_t cols; + //! Q15 constant to add to the source matrix. + int16_t offset; +} msp_matrix_offset_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Parameter structure for the real matrix offset function. +// +//****************************************************************************** +typedef struct msp_matrix_offset_iq31_params { + //! Number of rows in the source matrices, must be a multiple of two. + uint16_t rows; + //! Number of columns in the source matrices, must be a multiple of two. + uint16_t cols; + //! IQ31 constant to add to the source matrix. + int32_t offset; +} msp_matrix_offset_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Parameter structure for the real matrix scale function. +// +//****************************************************************************** +typedef struct msp_matrix_scale_q15_params { + //! Number of rows in the source matrices, must be a multiple of two. + uint16_t rows; + //! Number of columns in the source matrices, must be a multiple of two. + uint16_t cols; + //! Integer amount to shift result matrix by, must be positive. + uint8_t shift; + //! Q15 constant multiplied with the source matrix. + _q15 scale; +} msp_matrix_scale_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Parameter structure for the real matrix scale function. +// +//****************************************************************************** +typedef struct msp_matrix_scale_iq31_params { + //! Number of rows in the source matrices, must be a multiple of two. + uint16_t rows; + //! Number of columns in the source matrices, must be a multiple of two. + uint16_t cols; + //! Integer amount to shift result matrix by, must be positive. + uint8_t shift; + //! IQ31 constant multiplied with the source matrix. + _iq31 scale; +} msp_matrix_scale_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Parameter structure for the real matrix shift function. +// +//****************************************************************************** +typedef struct msp_matrix_shift_q15_params { + //! Number of rows in the source matrices, must be a multiple of two. + uint16_t rows; + //! Number of columns in the source matrices, must be a multiple of two. + uint16_t cols; + //! Integer value to shift each matrix element by. Positive values will + //! shift to the left and negative values will shift to the right. + int8_t shift; +} msp_matrix_shift_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Parameter structure for the real matrix shift function. +// +//****************************************************************************** +typedef struct msp_matrix_shift_iq31_params { + //! Number of rows in the source matrices, must be a multiple of two. + uint16_t rows; + //! Number of columns in the source matrices, must be a multiple of two. + uint16_t cols; + //! Integer value to shift each matrix element by. Positive values will + //! shift to the left and negative values will shift to the right. + int8_t shift; +} msp_matrix_shift_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Addition of two real source matrices. +//! +//! \par Details +//! Element-wise Q15 addition of two real matrices with saturation. This +//! function supports in-place operations. +//! +//! \par Pseudo code +//! `dst = srcA + srcB` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the matrix add parameter structure. +//! \param srcA Pointer to the first source data matrix. +//! \param srcB Pointer to the second source data matrix. +//! \param dst Pointer to the destination data matrix. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_matrix_add_q15(const msp_matrix_add_q15_params *params, + const _q15 *srcA, + const _q15 *srcB, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Addition of two real source matrices. +//! +//! \par Details +//! Element-wise IQ31 addition of two real matrices with saturation. This +//! function supports in-place operations. +//! +//! \par Pseudo code +//! `dst = srcA + srcB` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the matrix add parameter structure. +//! \param srcA Pointer to the first source data matrix. +//! \param srcB Pointer to the second source data matrix. +//! \param dst Pointer to the destination data matrix. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_matrix_add_iq31(const msp_matrix_add_iq31_params *params, + const _iq31 *srcA, + const _iq31 *srcB, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Subtraction of two real source matrices. +//! +//! \par Details +//! Element-wise Q15 subtraction of two real matrices with saturation. This +//! function supports in-place operations. +//! +//! \par Pseudo code +//! `dst = srcA - srcB` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the matrix subtraction parameter structure. +//! \param srcA Pointer to the first source data matrix. +//! \param srcB Pointer to the second source data matrix. +//! \param dst Pointer to the destination data matrix. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_matrix_sub_q15(const msp_matrix_sub_q15_params *params, + const _q15 *srcA, + const _q15 *srcB, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Subtraction of two real source matrices. +//! +//! \par Details +//! Element-wise IQ31 subtraction of two real matrices with saturation. This +//! function supports in-place operations. +//! +//! \par Pseudo code +//! `dst = srcA - srcB` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the matrix subtraction parameter structure. +//! \param srcA Pointer to the first source data matrix. +//! \param srcB Pointer to the second source data matrix. +//! \param dst Pointer to the destination data matrix. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_matrix_sub_iq31(const msp_matrix_sub_iq31_params *params, + const _iq31 *srcA, + const _iq31 *srcB, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Multiplication of two real source matrices. +//! +//! \par Details +//! Element-wise Q15 multiplication of two real source matrices without +//! saturation. This function supports in-place operation. +//! +//! \par Pseudo code +//! `dst = srcA * srcB` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the matrix multiply parameter structure. +//! \param srcA Pointer to the first source data matrix. +//! \param srcB Pointer to the second source data matrix. +//! \param dst Pointer to the destination data matrix. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_matrix_mpy_q15(const msp_matrix_mpy_q15_params *params, + const _q15 *srcA, + const _q15 *srcB, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Multiplication of two real source matrices. +//! +//! \par Details +//! Element-wise IQ31 multiplication of two real source matrices without +//! saturation. This function supports in-place operation. +//! +//! \par Pseudo code +//! `dst = srcA * srcB` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the matrix multiply parameter structure. +//! \param srcA Pointer to the first source data matrix. +//! \param srcB Pointer to the second source data matrix. +//! \param dst Pointer to the destination data matrix. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_matrix_mpy_iq31(const msp_matrix_mpy_iq31_params *params, + const _iq31 *srcA, + const _iq31 *srcB, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Transposition of a source matrix. +//! +//! \par Details +//! Transposition of the source matrix. The resulting matrix +//! will have same number of rows as the source does columns and +//! the same number of columns as the source has rows. This function +//! does not support in-place operations. +//! +//! \par Pseudo code +//! `dst = src'` +//! +//! \par LEA Support +//! This function is not currently supported by LEA. +//! +//! \param params Pointer to the matrix transpose parameter structure. +//! \param src Pointer to the source data matrix. +//! \param dst Pointer to the destination data matrix. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_matrix_trans_q15(const msp_matrix_trans_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Transposition of a source matrix. +//! +//! \par Details +//! Transposition of the source matrix. The resulting matrix +//! will have same number of rows as the source does columns and +//! the same number of columns as the source has rows. This function +//! does not support in-place operations. +//! +//! \par Pseudo code +//! `dst = src'` +//! +//! \par LEA Support +//! This function is not currently supported by LEA. +//! +//! \param params Pointer to the matrix transpose parameter structure. +//! \param src Pointer to the source data matrix. +//! \param dst Pointer to the destination data matrix. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_matrix_trans_iq31(const msp_matrix_trans_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Negation of a source matrix. +//! +//! \par Details +//! Element-wise Q15 multiplication by negative one with a real source matrix. +//! This function supports in-place operation. +//! +//! \par Pseudo code +//! `dst = -src` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the matrix negate parameter structure. +//! \param src Pointer to the source data matrix. +//! \param dst Pointer to the destination data matrix. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_matrix_neg_q15(const msp_matrix_neg_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Negation of a source matrix. +//! +//! \par Details +//! Element-wise IQ31 multiplication by negative one with a real source matrix. +//! This function supports in-place operation. +//! +//! \par Pseudo code +//! `dst = -src` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the matrix negate parameter structure. +//! \param src Pointer to the source data matrix. +//! \param dst Pointer to the destination data matrix. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_matrix_neg_iq31(const msp_matrix_neg_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Absolute value of a real source matrix. +//! +//! \par Details +//! Element-wise absolute value of a single source matrix. +//! +//! \par Pseudo code +//! `dst = |src|` +//! +//! \par LEA Support +//! This function is not currently supported by LEA. +//! +//! \param params Pointer to the matrix absolute value structure. +//! \param src Pointer to the source data matrix. +//! \param dst Pointer to the destination data matrix. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_matrix_abs_q15(const msp_matrix_abs_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Absolute value of a real source matrix. +//! +//! \par Details +//! Element-wise absolute value of a single source matrix. +//! +//! \par Pseudo code +//! `dst = |src|` +//! +//! \par LEA Support +//! This function is not currently supported by LEA. +//! +//! \param params Pointer to the matrix absolute value structure. +//! \param src Pointer to the source data matrix. +//! \param dst Pointer to the destination data matrix. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_matrix_abs_iq31(const msp_matrix_abs_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Constant offset of a real source matrix. +//! +//! \par Details +//! Element-wise Q15 addition with saturation of a single source matrix with a +//! Q15 constant. This function supports in-place operation. +//! +//! \par Pseudo code +//! `dst = src + offset` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the matrix offset structure. +//! \param src Pointer to the source data matrix. +//! \param dst Pointer to the destination data matrix. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_matrix_offset_q15( + const msp_matrix_offset_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Constant offset of a real source matrix. +//! +//! \par Details +//! Element-wise IQ31 addition with saturation of a single source matrix with a +//! IQ31 constant. This function supports in-place operation. +//! +//! \par Pseudo code +//! `dst = src + offset` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the matrix offset structure. +//! \param src Pointer to the source data matrix. +//! \param dst Pointer to the destination data matrix. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_matrix_offset_iq31( + const msp_matrix_offset_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Scale a real source matrix. +//! +//! \par Details +//! Element-wise scaling of a real matrix. Source data is multiplied by a IQ31 +//! constant and then shifted left. This function supports in-place operation. +//! +//! \par Pseudo code +//! `dst = src * 2^SHIFT * SCALE` +//! +//! \par LEA Support +//! This function is not currently supported by LEA. +//! +//! \param params Pointer to the matrix scale structure. +//! \param src Pointer to the source data matrix. +//! \param dst Pointer to the destination data matrix. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_matrix_scale_q15( + const msp_matrix_scale_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Scale a real source matrix. +//! +//! \par Details +//! Element-wise scaling of a real matrix. Source data is multiplied by a IQ31 +//! constant and then shifted left. This function supports in-place operation. +//! +//! \par Pseudo code +//! `dst = src * 2^SHIFT * SCALE` +//! +//! \par LEA Support +//! This function is not currently supported by LEA. +//! +//! \param params Pointer to the matrix scale structure. +//! \param src Pointer to the source data matrix. +//! \param dst Pointer to the destination data matrix. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_matrix_scale_iq31( + const msp_matrix_scale_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Bitwise shift of a real source matrix. +//! +//! \par Details +//! Element-wise bitwise shift of a real matrix to the left or right by a signed +//! integer value. This function does not saturate and supports in-place +//! operation. +//! +//! \par Pseudo code +//! `dst = src * 2^SHIFT` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the matrix shift structure. +//! \param src Pointer to the source data matrix. +//! \param dst Pointer to the destination data matrix. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_matrix_shift_q15( + const msp_matrix_shift_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_matrix_real +//! +//! \brief Bitwise shift of a real source matrix. +//! +//! \par Details +//! Element-wise bitwise shift of a real matrix to the left or right by a signed +//! integer value. This function does not saturate and supports in-place +//! operation. +//! +//! \par Pseudo code +//! `dst = src * 2^SHIFT` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the matrix shift structure. +//! \param src Pointer to the source data matrix. +//! \param dst Pointer to the destination data matrix. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_matrix_shift_iq31( + const msp_matrix_shift_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//***************************************************************************** +// +// Mark the end of the C bindings section for C++ compilers. +// +//***************************************************************************** +#ifdef __cplusplus +} +#endif + +#endif //__DSPLIB_MATRIX_H__ diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_support.h b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_support.h new file mode 100755 index 000000000..a6adb7d76 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_support.h @@ -0,0 +1,632 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +#ifndef __DSPLIB_SUPPORT_H__ +#define __DSPLIB_SUPPORT_H__ + +//****************************************************************************** +// +//! \addtogroup dsplib_support Support +//! @{ +//! +//! Definitions and abstraction for MSP devices. +//! +//! \defgroup dsplib_support_device Common +//! This file provides common definitions, useful conversion macros and +//! abstracted functions to support the core DSPLib functions. While not all +//! macros and functions in this file are useful outside of DSPLib the main +//! application can use any of them as needed. +//! +//! @} +// +//****************************************************************************** + +//****************************************************************************** +// +// If building with a C++ compiler, make all of the definitions in this header +// have a C binding. +// +//****************************************************************************** +#ifdef __cplusplus +extern "C" +{ +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Offset used to store table size. +// +//****************************************************************************** +#define DSPLIB_TABLE_OFFSET 2 + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Increment size for complex data. +// +//****************************************************************************** +#define CMPLX_INCREMENT (2) + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Access the real portion of complex data. +// +//****************************************************************************** +#define CMPLX_REAL(ptr) ((ptr)[0]) + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Access the imaginary portion of complex data. +// +//****************************************************************************** +#define CMPLX_IMAG(ptr) ((ptr)[1]) + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Convert number to Q15 fixed point. +// +//****************************************************************************** +#ifndef __QMATHLIB_H__ // Define _Q15 if not defined by QmathLib header. +#define _Q15(A) ((_q15)((((uint32_t)1 << 15) * \ + __saturate(A,-1.0,32767.0/32768.0)))) +#endif //__QMATHLIB_H__ + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Convert number to IQ31 fixed point. +// +//****************************************************************************** +#define _IQ31(A) ((_iq31)((((uint32_t)1 << 31) * \ + __saturate(A,-1.0,2147483647.0/2147483648.0)))) + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Convert number to IQ31 fixed point. +// +//****************************************************************************** +#define _Q31(A) (_IQ31(A)) + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Saturate input to minimum or maximum value and return value. +// +//****************************************************************************** +#define __saturate(x, min, max) (((x)>(max))?(max):(((x)<(min))?(min):(x))) + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Add Q15 arguments with saturation. +// +//****************************************************************************** +#if (defined(__TI_COMPILER_VERSION__) && (__TI_COMPILER_VERSION__ >= 15012001)) || \ + (defined(__IAR_SYSTEMS_ICC__) && (__VER__ >= 650)) +#define __saturated_add_q15 __saturated_add_signed_short +#else +static inline _q15 __saturated_add_q15(_q15 x, _q15 y) +{ + return (_q15)__saturate((int32_t)x + (int32_t)y, INT16_MIN, INT16_MAX); +} +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Subtract Q15 arguments with saturation. +// +//****************************************************************************** +#if (defined(__TI_COMPILER_VERSION__) && (__TI_COMPILER_VERSION__ >= 15012001)) || \ + (defined(__IAR_SYSTEMS_ICC__) && (__VER__ >= 650)) +#define __saturated_sub_q15 __saturated_sub_signed_short +#else +static inline _q15 __saturated_sub_q15(_q15 x, _q15 y) +{ + return (_q15)__saturate((int32_t)x - (int32_t)y, INT16_MIN, INT16_MAX); +} +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Add IQ31 arguments with saturation. +// +//****************************************************************************** +#if (defined(__TI_COMPILER_VERSION__) && (__TI_COMPILER_VERSION__ >= 15012001)) || \ + (defined(__IAR_SYSTEMS_ICC__) && (__VER__ >= 650)) +#define __saturated_add_iq31 __saturated_add_signed_long +#else +static inline _iq31 __saturated_add_iq31(_iq31 x, _iq31 y) +{ + return (_iq31)__saturate((int64_t)x + (int64_t)y, INT32_MIN, INT32_MAX); +} +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Subtract IQ31 arguments with saturation. +// +//****************************************************************************** +#if (defined(__TI_COMPILER_VERSION__) && (__TI_COMPILER_VERSION__ >= 15012001)) || \ + (defined(__IAR_SYSTEMS_ICC__) && (__VER__ >= 650)) +#define __saturated_sub_iq31 __saturated_sub_signed_long +#else +static inline _iq31 __saturated_sub_iq31(_iq31 x, _iq31 y) +{ + return (_iq31)__saturate((int64_t)x - (int64_t)y, INT32_MIN, INT32_MAX); +} +#endif + +//****************************************************************************** +// +//! \brief Circular buffer mask of a pointer. +//! +//! \param ptr Pointer to mask +//! \param mask Circular buffer mask +//! \return Pointer after applying circular buffer mask +// +//****************************************************************************** +static inline const void *__circular_mask(const void *ptr, uintptr_t mask) +{ + return (void *)((uintptr_t)ptr & ~mask); +} + +//****************************************************************************** +// +//! \brief Circular buffer increment of a pointer. +//! +//! \param ptr Pointer to increment +//! \param incr Increment size +//! \param mask Circular buffer mask +//! \return Pointer after incrementing and applying circular buffer +//! mask +// +//****************************************************************************** +static inline const void *__circular_increment( const void *ptr, + int16_t incr, + uintptr_t mask) +{ + uintptr_t base = (uintptr_t)__circular_mask(ptr, mask); + uintptr_t addr = base; + addr += (uintptr_t)__circular_mask( + (const void *)((uintptr_t)ptr + (uintptr_t)incr), + ~mask); + return (const void *)addr; +} + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Place data with alignment, when LEA is used data is placed into the +//! shared RAM section. +// +//****************************************************************************** +#if defined(__TI_COMPILER_VERSION__) +#define _PRAGMA(x) _Pragma (#x) +#if defined(MSP_USE_LEA) +#define DSPLIB_DATA(var,align) _PRAGMA(DATA_SECTION(var,".leaRAM"))\ + _PRAGMA(DATA_ALIGN(var,(align))) +#else +#define DSPLIB_DATA(var,align) _PRAGMA(DATA_ALIGN(var,(align))) +#endif +#elif defined(__IAR_SYSTEMS_ICC__) +#define _PRAGMA(x) _Pragma (#x) +#if defined(MSP_USE_LEA) +#define DSPLIB_DATA(var,align) _PRAGMA(location="LEARAM")\ + _PRAGMA(data_alignment=align)\ + _PRAGMA(object_attribute=__no_init) +#else +#define DSPLIB_DATA(var,align) _PRAGMA(data_alignment=align) +#endif +#elif defined(__GNUC__) +#if defined(MSP_USE_LEA) +#define DSPLIB_DATA(var,align) __attribute__((section(".leaRAM")))\ + __attribute__((aligned(align))) +#else +#define DSPLIB_DATA(var,align) __attribute__((aligned(align))) +#endif +#else +#define DSPLIB_DATA(var,align) +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Check status flag and loop forever if not MSP_SUCCESS. +//! +//! \param status Status of the operation. +//! +//! \return None +// +//****************************************************************************** +static inline void msp_checkStatus(msp_status status) +{ +#ifndef MSP_DISABLE_DIAGNOSTICS + switch (status) { + case MSP_SUCCESS: + break; + case MSP_SIZE_ERROR: + /* Invalid size error, loop forever. */ + while(true) __no_operation(); + case MSP_SHIFT_SIZE_ERROR: + /* Invalid shift size error, loop forever. */ + while(true) __no_operation(); + case MSP_TABLE_SIZE_ERROR: + /* Invalid table size error, loop forever. */ + while(true) __no_operation(); + case MSP_LEA_BUSY: + /* LEA is busy and cannot be invoked, loop forever. */ + while(true) __no_operation(); + case MSP_LEA_INVALID_ADDRESS: + /* Address is not within LEA RAM section, loop forever. */ + while(true) __no_operation(); + case MSP_LEA_OUT_OF_RANGE: + /* Command resulted in out of range memory access, loop forever. */ + while(true) __no_operation(); + case MSP_LEA_SCALAR_INCONSISTENCY: + /* LEA scalar data inconsistency error, loop forever. */ + while(true) __no_operation(); + case MSP_LEA_COMMAND_OVERFLOW: + /* LEA command overflow error, loop forever. */ + while(true) __no_operation(); + case MSP_LEA_INCORRECT_REVISION: + /* LEA incorrect revision, loop forever. */ + while(true) __no_operation(); + default: + /* Unknown error, loop forever. */ + while(true) __no_operation(); + } +#endif //MSP_DISABLE_DIAGNOSTICS +} + +// Benchmark register support +#define HWREG16(x) (*((volatile uint16_t *)((uint16_t)x))) +#define BENCHMARK_TAxR (0x0010) +#define BENCHMARK_TAxEX0 (0x0020) + +// Define default benchmark timer base address for examples +#if defined(TA0_BASE) +#define MSP_BENCHMARK_BASE TA0_BASE +#elif defined(TB0_BASE) +#define MSP_BENCHMARK_BASE TB0_BASE +#else +#define MSP_BENCHMARK_BASE TIMER_A0_BASE +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Start benchmark using Timer_A or Timer_B with SMCLK as the clock +//! source. +//! +//! \param baseAddress Base address of timer peripheral to use. +//! \param res Resolution of the benchmark, valid values are: +//! - 1 (16-bit result) +//! - 2 (17-bit result) +//! - 4 (18-bit result) +//! - 8 (19-bit result) +//! - 16 (20-bit result) +//! - 32 (21-bit result) +//! - 64 (22-bit result) +//! +//! \return None +// +//****************************************************************************** +static inline void msp_benchmarkStart(uint16_t baseAddress, uint8_t res) +{ + static const uint8_t TAx_ID[8] = { + 0x00, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0xC0 + }; + HWREG16(baseAddress) = 0x0004; + HWREG16(baseAddress+BENCHMARK_TAxEX0) = res < 7 ? 0 : ((0x07&(res >> 3))-1); + HWREG16(baseAddress) = 0x0220 + TAx_ID[res > 7 ? 7 : ((res-1)&7)]; +} + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Stop timer benchmark and return cycle counts. +//! +//! \param baseAddress Base address of timer peripheral to use. +//! +//! \return Benchmark cycle counts. +// +//****************************************************************************** +static inline uint32_t msp_benchmarkStop(uint16_t baseAddress) +{ + static const uint8_t TAx_IDEX_SCALE[8] = { + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 + }; + uint16_t cycles = HWREG16(baseAddress+BENCHMARK_TAxR); + uint16_t shift = (HWREG16(baseAddress) & 0x00C0) >> 6; + uint16_t scale = TAx_IDEX_SCALE[HWREG16(baseAddress+BENCHMARK_TAxEX0) & 7]; + HWREG16(baseAddress) = 0; + return (scale*((uint32_t)cycles << shift)); +} + +#if defined(__MSP430_HAS_MPY32__) + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Real Q15 multiply with result returned. +//! +//! \param a First Q15 input +//! \param b Second Q15 input +//! +//! \return Q15 result +// +//****************************************************************************** +static inline int16_t __q15mpy(int16_t a, int16_t b) +{ + MPYS = a; + OP2 = b; + return RESHI; +} + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Real Q15 multiply with 32-bit result returned. +//! +//! \param a First Q15 input +//! \param b Second Q15 input +//! +//! \return IQ31 result +// +//****************************************************************************** +static inline int32_t __q15mpyl(int16_t a, int16_t b) +{ + uint32_t result; + MPYS = a; + OP2 = b; + result = RESLO; + result |= ((uint32_t)RESHI << 16); + return (int32_t)result; +} + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Real Q31 multiply with result returned. +//! +//! \param a First Q31 input +//! \param b Second Q31 input +//! +//! \return Q31 result +// +//****************************************************************************** +static inline int32_t __q31mpy(int32_t a, int32_t b) +{ + uint32_t result; + MPYS32L = a & 0xFFFF; + MPYS32H = a >> 16; + OP2L = b & 0xFFFF; + OP2H = b >> 16; + result = RES2; + result |= ((uint32_t)RES3 << 16); + return (int32_t)result; +} + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Complex Q15 multiply with result stored back to a. +//! +//! \param aR First real Q15 input +//! \param aI First imaginary Q15 input +//! \param bR Second real Q15 input +//! \param bI Second imaginary Q15 input +//! +//! \return Q15 result +// +//****************************************************************************** +static inline void __q15cmpy(int16_t *aR, + int16_t *aI, + const int16_t *bR, + const int16_t *bI) +{ + MPYS = *aI; + OP2 = *bR; + MACS = *aR; + OP2 = *bI; + MPYS = -*aI; + *aI = RESHI; + OP2 = *bI; + MACS = *aR; + OP2 = *bR; + *aR = RESHI; +} + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Complex IQ31 by IQ31 multiply with result stored back to a. +//! +//! \param aR First real IQ31 input +//! \param aI First imaginary IQ31 input +//! \param bR Second real IQ31 input +//! \param bI Second imaginary IQ31 input +//! +//! \return IQ31 result +// +//****************************************************************************** +static inline void __q15iq31cmpy(int32_t *aR, + int32_t *aI, + const int32_t *bR, + const int32_t *bI) +{ + MPYS = *aI; + OP2L = (uint16_t)*bR; + OP2H = (uint16_t)(*bR >> 16); + MACS = *aR; + OP2L = (uint16_t)*bI; + OP2H = (uint16_t)(*bI >> 16); + MPYS = -*aI; + *aI = RES1; + *aI |= ((uint32_t)RES2 << 16); + OP2L = (uint16_t)*bI; + OP2H = (uint16_t)(*bI >> 16); + MACS = *aR; + OP2L = (uint16_t)*bR; + OP2H = (uint16_t)(*bR >> 16); + *aR = RES1; + *aR |= ((uint32_t)RES2 << 16); +} + +#else //__MSP430_HAS_MPY32__ + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Real Q15 multiply with result returned. +// +//****************************************************************************** +#define __q15mpy(A, B) ((int16_t)(((int32_t)(A) * (int32_t)(B)) >> 15)) + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Real Q15 multiply with 32-bit result returned. +// +//****************************************************************************** +#define __q15mpyl(A, B) ((int32_t)(((int32_t)(A) * (int32_t)(B)) << 1)) + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Real IQ31 multiply with result returned. +// +//****************************************************************************** +#define __q31mpy(A, B) ((int32_t)(((int64_t)(A) * (int64_t)(B)) >> 31)) + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Real Q15 by IQ31 multiply with result returned +// +//****************************************************************************** +#define __q15iq31mpy(A, B) ((int32_t)(((int64_t)(A) * (int64_t)(B)) >> 15)) + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Complex Q15 multiply with result stored back to a. +//! +//! \param aR First real Q15 input +//! \param aI First imaginary Q15 input +//! \param bR Second real Q15 input +//! \param bI Second imaginary Q15 input +//! +//! \return Q15 result +// +//****************************************************************************** +static inline void __q15cmpy(int16_t *aR, + int16_t *aI, + const int16_t *bR, + const int16_t *bI) +{ + int16_t resR = __q15mpy(*aR, *bR) - __q15mpy(*aI, *bI); + int16_t resI = __q15mpy(*aR, *bI) + __q15mpy(*aI, *bR); + *aR = resR; + *aI = resI; +} + +//****************************************************************************** +// +//! \ingroup dsplib_support_device +//! +//! \brief Complex IQ31 by IQ31 multiply with result stored back to a. +//! +//! \param aR First real IQ31 input +//! \param aI First imaginary IQ31 input +//! \param bR Second real IQ31 input +//! \param bI Second imaginary IQ31 input +//! +//! \return IQ31 result +// +//****************************************************************************** +static inline void __q15iq31cmpy(int32_t *aR, + int32_t *aI, + const int32_t *bR, + const int32_t *bI) +{ + int32_t resR = __q15iq31mpy(*aR, *bR) - __q15iq31mpy(*aI, *bI); + int32_t resI = __q15iq31mpy(*aR, *bI) + __q15iq31mpy(*aI, *bR); + *aR = resR; + *aI = resI; +} + +#endif //__MSP430_HAS_MPY32__ + +//***************************************************************************** +// +// Mark the end of the C bindings section for C++ compilers. +// +//***************************************************************************** +#ifdef __cplusplus +} +#endif + +#endif //__DSPLIB_SUPPORT_H__ diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_transform.h b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_transform.h new file mode 100755 index 000000000..fdeca32a4 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_transform.h @@ -0,0 +1,1092 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +#ifndef __DSPLIB_TRANSFORM_H__ +#define __DSPLIB_TRANSFORM_H__ + +//****************************************************************************** +// +//! \addtogroup dsplib_transform_api Transform +//! @{ +//! +//! Functions for performing Discreet Fourier Transforms (DFT), commonly +//! referred to as Fast Fourier Transforms (FFT), on MSP embedded devices. +//! Functions for both real and complex inputs, 16-bit and 32-bit data types as +//! well as forward and inverse transforms are included. +//! +//! \defgroup dsplib_transform_real Real FFT +//! Functions for performing forward and inverse FFT of real 16-bit and 32-bit +//! input data. +//! +//! \defgroup dsplib_transform_complex Complex FFT +//! Functions for performing forward and inverse FFT of complex 16-bit and +//! 32-bit input data. +//! +//! \defgroup dsplib_transform_tables Tables +//! Constant lookup tables used for real and complex FFT functions. Pointers to +//! these tables must be set in the FFT parameter blocks with the exception of +//! when LEA is used to accelerate the FFT functions. The size of table used +//! depends on the maximum FFT size required by the application. +//! +//! \defgroup dsplib_transform_support Support +//! Support functions used for real and complex FFT functions. These functions +//! do not need to be called outside of DSPLib. +//! +//! @} +// +//****************************************************************************** + +//****************************************************************************** +// +// If building with a C++ compiler, make all of the definitions in this header +// have a C binding. +// +//****************************************************************************** +#ifdef __cplusplus +extern "C" +{ +#endif + + +//****************************************************************************** +// +//! \ingroup dsplib_transform_support +//! +//! \brief Calculate the alignment for a 16-bit real FFT from length +//! parameter. +// +//****************************************************************************** +#define MSP_ALIGN_FFT_Q15(n) (n*2) + +//****************************************************************************** +// +//! \ingroup dsplib_transform_support +//! +//! \brief Calculate the alignment for a 32-bit real FFT from length +//! parameter. +// +//****************************************************************************** +#define MSP_ALIGN_FFT_IQ31(n) (n*4) + +//****************************************************************************** +// +//! \ingroup dsplib_transform_support +//! +//! \brief Calculate the alignment for a 16-bit complex FFT from length +//! parameter. +// +//****************************************************************************** +#define MSP_ALIGN_CMPLX_FFT_Q15(n) (n*4) + +//****************************************************************************** +// +//! \ingroup dsplib_transform_support +//! +//! \brief Calculate the alignment for a 32-bit complex FFT from length +//! parameter. +// +//****************************************************************************** +#define MSP_ALIGN_CMPLX_FFT_IQ31(n) (n*8) + +#if defined(MSP_USE_LEA) + +// Tables located in LEA ROM, define as null pointers +#define msp_cmplx_bitrev_table_ui8 0 +#define msp_cmplx_twiddle_table_16_q15 0 +#define msp_cmplx_twiddle_table_32_q15 0 +#define msp_cmplx_twiddle_table_64_q15 0 +#define msp_cmplx_twiddle_table_128_q15 0 +#define msp_cmplx_twiddle_table_256_q15 0 +#define msp_cmplx_twiddle_table_512_q15 0 +#define msp_cmplx_twiddle_table_1024_q15 0 +#define msp_cmplx_twiddle_table_2048_q15 0 +#define msp_cmplx_twiddle_table_4096_q15 0 + +#else //MSP_USE_LEA + +//****************************************************************************** +// +//! \ingroup dsplib_transform_tables +//! +//! \brief Bit reversal lookup table. +// +//****************************************************************************** +extern const uint8_t msp_cmplx_bitrev_table_ui8[256]; + +//****************************************************************************** +// +//! \ingroup dsplib_transform_tables +//! +//! \brief Twiddle factor table for FFT of size 16. +// +//****************************************************************************** +extern const _q15 msp_cmplx_twiddle_table_16_q15[DSPLIB_TABLE_OFFSET+16]; + +//****************************************************************************** +// +//! \ingroup dsplib_transform_tables +//! +//! \brief Twiddle factor table for FFT of size 32. +// +//****************************************************************************** +extern const _q15 msp_cmplx_twiddle_table_32_q15[DSPLIB_TABLE_OFFSET+32]; + +//****************************************************************************** +// +//! \ingroup dsplib_transform_tables +//! +//! \brief Twiddle factor table for FFT of size 64. +// +//****************************************************************************** +extern const _q15 msp_cmplx_twiddle_table_64_q15[DSPLIB_TABLE_OFFSET+64]; + +//****************************************************************************** +// +//! \ingroup dsplib_transform_tables +//! +//! \brief Twiddle factor table for FFT of size 128. +// +//****************************************************************************** +extern const _q15 msp_cmplx_twiddle_table_128_q15[DSPLIB_TABLE_OFFSET+128]; + +//****************************************************************************** +// +//! \ingroup dsplib_transform_tables +//! +//! \brief Twiddle factor table for FFT of size 256. +// +//****************************************************************************** +extern const _q15 msp_cmplx_twiddle_table_256_q15[DSPLIB_TABLE_OFFSET+256]; + +//****************************************************************************** +// +//! \ingroup dsplib_transform_tables +//! +//! \brief Twiddle factor table for FFT of size 512. +// +//****************************************************************************** +extern const _q15 msp_cmplx_twiddle_table_512_q15[DSPLIB_TABLE_OFFSET+512]; + +//****************************************************************************** +// +//! \ingroup dsplib_transform_tables +//! +//! \brief Twiddle factor table for FFT of size 1024. +// +//****************************************************************************** +extern const _q15 msp_cmplx_twiddle_table_1024_q15[DSPLIB_TABLE_OFFSET+1024]; + +//****************************************************************************** +// +//! \ingroup dsplib_transform_tables +//! +//! \brief Twiddle factor table for FFT of size 2048. +// +//****************************************************************************** +extern const _q15 msp_cmplx_twiddle_table_2048_q15[DSPLIB_TABLE_OFFSET+2048]; + +//****************************************************************************** +// +//! \ingroup dsplib_transform_tables +//! +//! \brief Twiddle factor table for FFT of size 4096. +// +//****************************************************************************** +extern const _q15 msp_cmplx_twiddle_table_4096_q15[DSPLIB_TABLE_OFFSET+4096]; + +#endif //MSP_USE_LEA + +//****************************************************************************** +// +//! \ingroup dsplib_transform_support +//! +//! \brief Parameter structure for Q15 complex bit-reversal. +// +//****************************************************************************** +typedef struct msp_cmplx_bitrev_q15_params { + //! \details + //! Length of the source data, must be a power of two. + uint16_t length; +} msp_cmplx_bitrev_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_transform_support +//! +//! \brief Parameter structure for IQ31 complex bit-reversal. +// +//****************************************************************************** +typedef struct msp_cmplx_bitrev_iq31_params { + //! \details + //! Length of the source data, must be a power of two. + uint16_t length; +} msp_cmplx_bitrev_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_transform_support +//! +//! \brief Parameter structure for Q15 split operation. +// +//****************************************************************************** +typedef struct msp_split_q15_params { + //! \details + //! Length of the source data, must be a power of two. + uint16_t length; + //! \details + //! Pointer to the twiddle coefficient table with size greater than or equal + //! to the source length. When using LEA this can be a NULL pointer. + const _q15 *twiddleTable; +} msp_split_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_transform_support +//! +//! \brief Parameter structure for IQ31 split operation. +// +//****************************************************************************** +typedef struct msp_split_iq31_params { + //! \details + //! Length of the source data, must be a power of two. + uint16_t length; + //! \details + //! Pointer to the twiddle coefficient table with size greater than or equal + //! to the source length. When using LEA this can be a NULL pointer. + const _q15 *twiddleTable; +} msp_split_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_transform_real +//! +//! \brief Parameter structure for Q15 real FFT functions. +// +//****************************************************************************** +typedef struct msp_fft_q15_params { + //! \details + //! Length of the source data, must be a power of two. + uint16_t length; + //! \details + //! Perform bit-reversal of the input before transformation. This step is + //! mandatory, this parameter only exists for applications that might handle + //! bit reversal when storing the data samples to memory. If not this needs + //! to be set to true. + bool bitReverse; + //! \details + //! Pointer to the twiddle coefficient table with size greater than or equal + //! to the source length. When using LEA this can be a NULL pointer. + const _q15 *twiddleTable; +} msp_fft_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_transform_real +//! +//! \brief Parameter structure for IQ31 real FFT functions. +// +//****************************************************************************** +typedef struct msp_fft_iq31_params { + //! \details + //! Length of the source data, must be a power of two. + uint16_t length; + //! \details + //! Perform bit-reversal of the input before transformation. This step is + //! mandatory, this parameter only exists for applications that might handle + //! bit reversal when storing the data samples to memory. If not this needs + //! to be set to true. + bool bitReverse; + //! \details + //! Pointer to the twiddle coefficient table with size greater than or equal + //! to the source length. When using LEA this can be a NULL pointer. + const _q15 *twiddleTable; +} msp_fft_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_transform_complex +//! +//! \brief Parameter structure for Q15 complex FFT functions. +// +//****************************************************************************** +typedef struct msp_cmplx_fft_q15_params { + //! \details + //! Length of the source data, must be a power of two. + uint16_t length; + //! \details + //! Perform bit-reversal of the input before transformation. This step is + //! mandatory, this parameter only exists for applications that might handle + //! bit reversal when storing the data samples to memory. If not this needs + //! to be set to true. + bool bitReverse; + //! \details + //! Pointer to the twiddle coefficient table with size greater than or equal + //! to the source length. When using LEA this can be a NULL pointer. + const _q15 *twiddleTable; +} msp_cmplx_fft_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_transform_complex +//! +//! \brief Parameter structure for IQ31 complex FFT functions. +// +//****************************************************************************** +typedef struct msp_cmplx_fft_iq31_params { + //! \details + //! Length of the source data, must be a power of two. + uint16_t length; + //! \details + //! Perform bit-reversal of the input before transformation. This step is + //! mandatory, this parameter only exists for applications that might handle + //! bit reversal when storing the data samples to memory. If not this needs + //! to be set to true. + bool bitReverse; + //! \details + //! Pointer to the twiddle coefficient table with size greater than or equal + //! to the source length. When using LEA this can be a NULL pointer. + const _q15 *twiddleTable; +} msp_cmplx_fft_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_transform_support +//! +//! \brief Complex bit-reversal function. +//! +//! \par Details +//! Inputs to the real and complex fft functions need to be in bit reversed +//! order before the result can be computed. The DSPLib fft functions contain +//! a parameter to perform the bit reversal and this API does not need to be +//! invoked directly. Alternatively the application can store input in bit +//! reversed order and skip this step although it may be more efficient to +//! store in linear order using pointer increment or DMA copy and performing +//! the bit reversal all at once. +//! +//! \par Pseudo code +//! `y = bitrevorder(x)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the complex bit-reversal parameter structure. +//! \param src Pointer to the complex data array to perform the bit-reversal on. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_bitrev_q15( + const msp_cmplx_bitrev_q15_params *params, + int16_t *src); + +//****************************************************************************** +// +//! \ingroup dsplib_transform_support +//! +//! \brief Complex bit-reversal function. +//! +//! \par Details +//! Inputs to the real and complex fft functions need to be in bit reversed +//! order before the result can be computed. The DSPLib fft functions contain +//! a parameter to perform the bit reversal and this API does not need to be +//! invoked directly. Alternatively the application can store input in bit +//! reversed order and skip this step although it may be more efficient to +//! store in linear order using pointer increment or DMA copy and performing +//! the bit reversal all at once. +//! +//! \par Pseudo code +//! `y = bitrevorder(x)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the complex bit-reversal parameter structure. +//! \param src Pointer to the complex data array to perform the bit-reversal on. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_bitrev_iq31( + const msp_cmplx_bitrev_iq31_params *params, + int32_t *src); + +//****************************************************************************** +// +//! \ingroup dsplib_transform_support +//! +//! \brief Split operation for performing the final step of a real FFT. +//! +//! \par Details +//! Performs the final stage of a discreet Fourier transform (DFT) of real +//! inputs. First a complex FFT of size length/2 with must be performed before +//! this function can be called. The DSPLib real fft functions invoke this +//! function directly and this API does not need to be called directly from the +//! application. +//! +//! \par Pseudo code +//! `G(k) = 0.5*(X(k) + X*(N-k)) - 0.5*j*(e^-j2*pi*k/2N)*(X(k) - X*(N-k))` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with alignment equal to twice the data length (e.g. +//! a 256-point real FFT requires 512-byte alignment). When allocating data the +//! MSP\_ALIGN\_FFT\_Q15 macro can be used to calculate correct alignment. The +//! twiddle table pointer parameter is not used with LEA and can be null or +//! uninitialized. +//! +//! \param params Pointer to the split parameter structure. +//! \param src Pointer to the data array to perform the split operation on. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_split_q15(const msp_split_q15_params *params, + int16_t *src); + +//****************************************************************************** +// +//! \ingroup dsplib_transform_support +//! +//! \brief Split operation for performing the final step of a real FFT. +//! +//! \par Details +//! Performs the final stage of a discreet Fourier transform (DFT) of real +//! inputs. First a complex FFT of size length/2 with must be performed before +//! this function can be called. The DSPLib real fft functions invoke this +//! function directly and this API does not need to be called directly from the +//! application. +//! +//! \par Pseudo code +//! `G(k) = 0.5*(X(k) + X*(N-k)) - 0.5*j*(e^-j2*pi*k/2N)*(X(k) - X*(N-k))` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with alignment equal to four times the data length (e.g. +//! a 256-point real FFT requires 1024-byte alignment). When allocating data the +//! MSP\_ALIGN\_FFT\_IQ31 macro can be used to calculate correct alignment. The +//! twiddle table pointer parameter is not used with LEA and can be null or +//! uninitialized. +//! +//! \param params Pointer to the split parameter structure. +//! \param src Pointer to the data array to perform the split operation on. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_split_iq31(const msp_split_iq31_params *params, + int32_t *src); + +//****************************************************************************** +// +//! \ingroup dsplib_transform_real +//! +//! \brief Real forward FFT function with auto-scaling. +//! +//! \par Details +//! Computes the forward discreet Fourier transform (DFT) of 16-bit real inputs. +//! If the inputs are not already in bit reversed order the bit reversal +//! parameter must be set. The output is monitored for overflow and scaled by a +//! factor of two when an overflow risk is detected. The shift parameter +//! contains the number of bit shifts that were applied to the output. +//! +//! \par +//! This functions requires half the data storage and consumes roughly half the +//! cycles and energy as running a complex FFT of the same length. When +//! transforming purely real inputs, such as samples from an ADC or analog +//! sensor, it is recommended to use the real FFT functions. +//! +//! \par Pseudo code +//! `y = fft(real(x)) * 2^-shift` +//! +//! \par Scaling +//! Scaling is applied as needed to prevent saturation of the output. The scale +//! factor that was applied to the output is returned in the shift parameter and +//! can be used to calculate the result by applying the following function. +//! +//! \par +//! `result = result * 2^shift` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with alignment equal to twice the data length (e.g. +//! a 256-point real FFT requires 512-byte alignment). When allocating data the +//! MSP\_ALIGN\_FFT\_Q15 macro can be used to calculate correct alignment. The +//! twiddle table pointer parameter is not used with LEA and can be null or +//! uninitialized. +//! +//! \param params Pointer to the real FFT parameter structure. +//! \param src Pointer to the real data array to perform the FFT on. +//! \param shift Auto-scaling shift that was applied to the output. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_fft_auto_q15(const msp_fft_q15_params *params, + int16_t *src, + uint16_t *shift); + +//****************************************************************************** +// +//! \ingroup dsplib_transform_real +//! +//! \brief Real forward FFT function with fixed scaling by two at each stage. +//! +//! \par Details +//! Computes the forward discreet Fourier transform (DFT) of 16-bit real inputs. +//! If the inputs are not already in bit reversed order the bit reversal +//! parameter must be set. The output is scaled by a factor of two for each +//! stage of the DFT. +//! +//! \par +//! This functions requires half the data storage and consumes roughly half the +//! cycles and energy as running a complex FFT of the same length. When +//! transforming purely real inputs, such as samples from an ADC or analog +//! sensor, it is recommended to use the real FFT functions. +//! +//! \par Pseudo code +//! `y = fft(real(x)) ./ (N/2)` +//! +//! \par Scaling +//! Each stage of the real FFT, with the exception of the final split stage, +//! scales the result by a factor of 0.5. The output format can either be +//! interpreted as the same type with (N/2) scaling or a different fixed point +//! data type. This can be helpful when using the IQmathLib to process the +//! results of the FFT, such as computing the magnitude or phase angle of the +//! complex result. +//! +//! \par +//!

+//! | Length | Input Type | Result Type | +//! | -------- |:----------:| :----------:| +//! | **16** | _q15 | _q12 | +//! | **32** | _q15 | _q11 | +//! | **64** | _q15 | _q10 | +//! | **128** | _q15 | _q9 | +//! | **256** | _q15 | _q8 | +//! | **512** | _q15 | _q7 | +//! | **1024** | _q15 | _q6 | +//! | **2048** | _q15 | _q5 | +//! | **4096** | _q15 | _q4 | +//!
+//! +//! \par +//! The following table lists the applied scaling factor and resulting data type +//! when the input is a 16-bit integer. +//! +//! \par +//!
+//! | Length | Input Type | Result Type | +//! | -------- |:----------:| :-----------------------:| +//! | **16** | int16_t | (int16_t)(result / 8) | +//! | **32** | int16_t | (int16_t)(result / 16) | +//! | **64** | int16_t | (int16_t)(result / 32) | +//! | **128** | int16_t | (int16_t)(result / 64) | +//! | **256** | int16_t | (int16_t)(result / 128) | +//! | **512** | int16_t | (int16_t)(result / 256) | +//! | **1024** | int16_t | (int16_t)(result / 512) | +//! | **2048** | int16_t | (int16_t)(result / 1024) | +//! | **4096** | int16_t | (int16_t)(result / 2048) | +//!
+//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with alignment equal to twice the data length (e.g. +//! a 256-point real FFT requires 512-byte alignment). When allocating data the +//! MSP\_ALIGN\_FFT\_Q15 macro can be used to calculate correct alignment. The +//! twiddle table pointer parameter is not used with LEA and can be null or +//! uninitialized. +//! +//! \param params Pointer to the real FFT parameter structure. +//! \param src Pointer to the real data array to perform the FFT on. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_fft_fixed_q15(const msp_fft_q15_params *params, + int16_t *src); + +//****************************************************************************** +// +//! \ingroup dsplib_transform_real +//! +//! \brief Real forward FFT function without scaling. +//! +//! \par Details +//! Computes the forward discreet Fourier transform (DFT) of 32-bit real inputs. +//! If the inputs are not already in bit reversed order the bit reversal +//! parameter must be set. The output is not scaled. +//! +//! \par +//! This functions requires half the data storage and consumes roughly half the +//! cycles and energy as running a complex FFT of the same length. When +//! transforming purely real inputs, such as samples from an ADC or analog +//! sensor, it is recommended to use the real FFT functions. +//! +//! \par Pseudo code +//! `y = fft(real(x))` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with alignment equal to four times the data length (e.g. +//! a 256-point real FFT requires 1024-byte alignment). When allocating data the +//! MSP\_ALIGN\_FFT\_IQ31 macro can be used to calculate correct alignment. The +//! twiddle table pointer parameter is not used with LEA and can be null or +//! uninitialized. +//! +//! \param params Pointer to the real FFT parameter structure. +//! \param src Pointer to the real data array to perform the FFT on. +//! +//! \return Status of the operation. +// +//****************************************************************************** + +extern msp_status msp_fft_iq31(const msp_fft_iq31_params *params, + int32_t *src); + +//****************************************************************************** +// +//! \ingroup dsplib_transform_real +//! +//! \brief Real result inverse FFT function with auto-scaling. +//! +//! \par Details +//! Computes the inverse discreet Fourier transform (DFT) of 16-bit complex +//! inputs with real result. If the inputs are not already in bit reversed order +//! the bit reversal parameter must be set. Automatic scaling is performed such +//! that this is the direct inverse of the forward FFT with auto scaling. +//! +//! \par +//! This functions uses half the data storage and consumes roughly half the +//! cycles and energy as running a complex IFFT of the same length. When +//! transforming purely real inputs, such as samples from an ADC or analog +//! sensor, it is recommended to use the real FFT functions. +//! +//! \par Pseudo code +//! `y = (real(ifft(x)) * 2^shift) ./ (N/2)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with alignment equal to twice the data length (e.g. +//! a 256-point real FFT requires 512-byte alignment). When allocating data the +//! MSP\_ALIGN\_FFT\_Q15 macro can be used to calculate correct alignment. The +//! twiddle table pointer parameter is not used with LEA and can be null or +//! uninitialized. +//! +//! \param params Pointer to the real FFT parameter structure. +//! \param src Pointer to the real data array to perform the FFT on. +//! \param shift Auto-scaling shift that was applied to the forward FFT. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_ifft_auto_q15(const msp_fft_q15_params *params, + int16_t *src, + uint16_t shift); + +//****************************************************************************** +// +//! \ingroup dsplib_transform_real +//! +//! \brief Real result inverse FFT function with fixed scaling by two at each +//! stage. +//! +//! \par Details +//! Computes the inverse discreet Fourier transform (DFT) of 16-bit complex +//! inputs with real result. If the inputs are not already in bit reversed order +//! the bit reversal parameter must be set. Fixed scaling is performed such +//! that this is the direct inverse of the forward FFT with fixed scaling. +//! +//! \par +//! This functions uses half the data storage and consumes roughly half the +//! cycles and energy as running a complex IFFT of the same length. When +//! transforming purely real inputs, such as samples from an ADC or analog +//! sensor, it is recommended to use the real FFT functions. +//! +//! \par Pseudo code +//! `y = real(ifft(x))` +//! +//! \par Scaling +//! This function is the direct inverse of the forward real FFT with fixed +//! scaling. The following fixed point input types will all result in Q15 +//! results. +//! +//! \par +//!
+//! | Length | Input Type | Result Type | +//! | -------- |:----------:| :----------:| +//! | **16** | _q12 | _q15 | +//! | **32** | _q11 | _q15 | +//! | **64** | _q10 | _q15 | +//! | **128** | _q9 | _q15 | +//! | **256** | _q8 | _q15 | +//! | **512** | _q7 | _q15 | +//! | **1024** | _q6 | _q15 | +//! | **2048** | _q5 | _q15 | +//! | **4096** | _q4 | _q15 | +//!
+//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with alignment equal to twice the data length (e.g. +//! a 256-point real FFT requires 512-byte alignment). When allocating data the +//! MSP\_ALIGN\_FFT\_Q15 macro can be used to calculate correct alignment. The +//! twiddle table pointer parameter is not used with LEA and can be null or +//! uninitialized. +//! +//! \param params Pointer to the real FFT parameter structure. +//! \param src Pointer to the real data array to perform the FFT on. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_ifft_fixed_q15(const msp_fft_q15_params *params, + int16_t *src); + +//****************************************************************************** +// +//! \ingroup dsplib_transform_real +//! +//! \brief Real result inverse FFT function without scaling. +//! +//! \par Details +//! Computes the inverse discreet Fourier transform (DFT) of 32-bit complex +//! inputs with real result. If the inputs are not already in bit reversed order +//! the bit reversal parameter must be set. Fixed scaling is performed such +//! that this is the direct inverse of the forward FFT without scaling. +//! +//! \par +//! This functions uses half the data storage and consumes roughly half the +//! cycles and energy as running a complex IFFT of the same length. When +//! transforming purely real inputs, such as samples from an ADC or analog +//! sensor, it is recommended to use the real FFT functions. +//! +//! \par Pseudo code +//! `y = real(ifft(x)) ./ N` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with alignment equal to four times the data length (e.g. +//! a 256-point real FFT requires 1024-byte alignment). When allocating data the +//! MSP\_ALIGN\_FFT\_IQ31 macro can be used to calculate correct alignment. The +//! twiddle table pointer parameter is not used with LEA and can be null or +//! uninitialized. +//! +//! \param params Pointer to the real FFT parameter structure. +//! \param src Pointer to the real data array to perform the FFT on. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_ifft_iq31(const msp_fft_iq31_params *params, + int32_t *src); + +//****************************************************************************** +// +//! \ingroup dsplib_transform_complex +//! +//! \brief Complex forward FFT function with auto-scaling. +//! +//! \par Details +//! Computes the forward discreet Fourier transform (DFT) of 16-bit complex +//! inputs. If the inputs are not already in bit reversed order the bit reversal +//! parameter must be set. The output is monitored for overflow and scaled by a +//! factor of two when an overflow risk is detected. The shift parameter contains +//! the number of bit shifts that were applied to the output. +//! +//! \par Pseudo code +//! `y = fft(x) * 2^-shift` +//! +//! \par Scaling +//! Scaling is applied as needed to prevent saturation of the output. The scale +//! factor that was applied to the output is returned in the shift parameter and +//! can be used to calculate the result by applying the following function. +//! +//! \par +//! `result = result * 2^shift` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with alignment equal to four times the data length (e.g. +//! a 256-point complex FFT requires 1024-byte alignment). When allocating data +//! the MSP\_CMPLX\_ALIGN\_FFT\_Q15 macro can be used to calculate correct +//! alignment. The twiddle table pointer parameter is not used with LEA and +//! can be null or uninitialized. +//! +//! \param params Pointer to the complex FFT parameter structure. +//! \param src Pointer to the complex data array to perform the FFT on. +//! \param shift Auto-scaling shift that was applied to the output. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_fft_auto_q15(const msp_cmplx_fft_q15_params *params, + int16_t *src, + uint16_t *shift); + +//****************************************************************************** +// +//! \ingroup dsplib_transform_complex +//! +//! \brief Complex forward FFT function with fixed scaling by two at each stage. +//! +//! \par Details +//! Computes the forward discreet Fourier transform (DFT) of 16-bit complex +//! inputs. If the inputs are not already in bit reversed order the bit +//! reversal parameter must be set. The output is scaled by a factor of two for +//! each stage of the DFT. +//! +//! \par Pseudo code +//! `y = fft(x) ./ N` +//! +//! \par Scaling +//! Each stage of the complex FFT scales the result by a factor of 0.5. The +//! output format can either be interpreted as the same type with (1/N) scaling +//! or a different fixed point data type. This can be helpful when using the +//! IQmathLib to process the results of the FFT, such as computing the magnitude +//! or phase angle of the complex result. +//! +//! \par +//!
+//! | Length | Input Type | Result Type | +//! | -------- |:----------:| :----------:| +//! | **16** | _q15 | _q11 | +//! | **32** | _q15 | _q10 | +//! | **64** | _q15 | _q9 | +//! | **128** | _q15 | _q8 | +//! | **256** | _q15 | _q7 | +//! | **512** | _q15 | _q6 | +//! | **1024** | _q15 | _q5 | +//! | **2048** | _q15 | _q4 | +//! | **4096** | _q15 | _q3 | +//!
+//! +//! \par +//! The following table lists the applied scaling factor and resulting data type +//! when the input is a 16-bit integer. +//! +//! \par +//!
+//! | Length | Input Type | Result Type | +//! | -------- |:----------:| :-----------------------:| +//! | **16** | int16_t | (int16_t)(result / 16) | +//! | **32** | int16_t | (int16_t)(result / 32) | +//! | **64** | int16_t | (int16_t)(result / 64) | +//! | **128** | int16_t | (int16_t)(result / 128) | +//! | **256** | int16_t | (int16_t)(result / 256) | +//! | **512** | int16_t | (int16_t)(result / 512) | +//! | **1024** | int16_t | (int16_t)(result / 1024) | +//! | **2048** | int16_t | (int16_t)(result / 2048) | +//! | **4096** | int16_t | (int16_t)(result / 4096) | +//!
+//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with alignment equal to four times the data length (e.g. +//! a 256-point complex FFT requires 1024-byte alignment). When allocating data +//! the MSP\_CMPLX\_ALIGN\_FFT\_Q15 macro can be used to calculate correct +//! alignment. The twiddle table pointer parameter is not used with LEA and +//! can be null or uninitialized. +//! +//! \param params Pointer to the complex FFT parameter structure. +//! \param src Pointer to the complex data array to perform the FFT on. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_fft_fixed_q15( + const msp_cmplx_fft_q15_params *params, + int16_t *src); + +//****************************************************************************** +// +//! \ingroup dsplib_transform_complex +//! +//! \brief Complex forward FFT function without scaling. +//! +//! \par Details +//! Computes the forward discreet Fourier transform (DFT) of 32-bit complex +//! inputs. If the inputs are not already in bit reversed order the bit +//! reversal parameter must be set. The output is not scaled. +//! +//! \par Pseudo code +//! `y = fft(x)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with alignment equal to eight times the data length +//! (e.g. a 256-point complex FFT requires 2048-byte alignment). When allocating +//! data the MSP\_CMPLX\_ALIGN\_FFT\_IQ31 macro can be used to calculate correct +//! alignment. The twiddle table pointer parameter is not used with LEA and +//! can be null or uninitialized. +//! +//! \param params Pointer to the complex FFT parameter structure. +//! \param src Pointer to the complex data array to perform the FFT on. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_fft_iq31(const msp_cmplx_fft_iq31_params *params, +int32_t *src); + +//****************************************************************************** +// +//! \ingroup dsplib_transform_complex +//! +//! \brief Complex inverse FFT function with auto-scaling. +//! +//! \par Details +//! Computes the inverse discreet Fourier transform (DFT) of 16-bit complex +//! inputs. If the inputs are not already in bit reversed order the bit reversal +//! parameter must be set. The output is monitored for overflow and scaled by a +//! factor of two when an overflow risk is detected. Automatic scaling is +//! performed such that this is the direct inverse of the forward FFT with auto +//! scaling. +//! +//! \par Pseudo code +//! `y = (ifft(x) * 2^shift) ./ N` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with alignment equal to four times the data length (e.g. +//! a 256-point complex FFT requires 1024-byte alignment). When allocating data +//! the MSP\_CMPLX\_ALIGN\_FFT\_Q15 macro can be used to calculate correct +//! alignment. The twiddle table pointer parameter is not used with LEA and +//! can be null or uninitialized. +//! +//! \param params Pointer to the complex FFT parameter structure. +//! \param src Pointer to the complex data array to perform the FFT on. +//! \param shift Auto-scaling shift that was applied to the output. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_ifft_auto_q15( + const msp_cmplx_fft_q15_params *params, + int16_t *src, + uint16_t shift); + +//****************************************************************************** +// +//! \ingroup dsplib_transform_complex +//! +//! \brief Complex inverse FFT function with fixed scaling by two at each stage. +//! +//! \par Details +//! Computes the inverse discreet Fourier transform (DFT) of 16-bit complex +//! inputs. If the inputs are not already in bit reversed order the bit reversal +//! parameter must be set. Fixed scaling is performed such that this is the +//! direct inverse of the forward FFT with fixed scaling. +//! +//! \par Pseudo code +//! `y = ifft(x)` +//! +//! \par Scaling +//! This function is the direct inverse of the forward complex FFT with fixed +//! scaling. The following fixed point input types will all result in Q15 +//! results. +//! +//! \par +//!
+//! | Length | Input Type | Result Type | +//! | -------- |:----------:| :----------:| +//! | **16** | _q11 | _q15 | +//! | **32** | _q10 | _q15 | +//! | **64** | _q9 | _q15 | +//! | **128** | _q8 | _q15 | +//! | **256** | _q7 | _q15 | +//! | **512** | _q6 | _q15 | +//! | **1024** | _q5 | _q15 | +//! | **2048** | _q4 | _q15 | +//! | **4096** | _q3 | _q15 | +//!
+//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with alignment equal to four times the data length (e.g. +//! a 256-point complex FFT requires 1024-byte alignment). When allocating data +//! the MSP\_CMPLX\_ALIGN\_FFT\_Q15 macro can be used to calculate correct +//! alignment. The twiddle table pointer parameter is not used with LEA and +//! can be null or uninitialized. +//! +//! \param params Pointer to the complex FFT parameter structure. +//! \param src Pointer to the complex data array to perform the FFT on. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_ifft_fixed_q15( + const msp_cmplx_fft_q15_params *params, + int16_t *src); + +//****************************************************************************** +// +//! \ingroup dsplib_transform_complex +//! +//! \brief Complex inverse FFT function without scaling. +//! +//! \par Details +//! Computes the inverse discreet Fourier transform (DFT) of 32-bit complex +//! inputs. If the inputs are not already in bit reversed order the bit reversal +//! parameter must be set. Fixed scaling is performed such that this is the +//! direct inverse of the forward FFT without scaling. +//! +//! \par Pseudo code +//! `y = ifft(x) ./ N` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with alignment equal to eight times the data length +//! (e.g. a 256-point complex FFT requires 2048-byte alignment). When allocating +//! data the MSP\_CMPLX\_ALIGN\_FFT\_IQ31 macro can be used to calculate correct +//! alignment. The twiddle table pointer parameter is not used with LEA and +//! can be null or uninitialized. +//! +//! \param params Pointer to the complex FFT parameter structure. +//! \param src Pointer to the complex data array to perform the FFT on. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_ifft_iq31(const msp_cmplx_fft_iq31_params *params, + int32_t *src); + +//***************************************************************************** +// +// Mark the end of the C bindings section for C++ compilers. +// +//***************************************************************************** +#ifdef __cplusplus +} +#endif + +#endif //__DSPLIB_TRANSFORM_H__ diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_types.h b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_types.h new file mode 100755 index 000000000..cb6ff519a --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_types.h @@ -0,0 +1,182 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +#ifndef __DSPLIB_TYPES_H__ +#define __DSPLIB_TYPES_H__ + +//****************************************************************************** +// +//! \addtogroup dsplib_types Types +//! @{ +//! +//! Definitions of types used in DSPLib. +//! +//! @} +// +//****************************************************************************** + +//****************************************************************************** +// +// If building with a C++ compiler, make all of the definitions in this header +// have a C binding. +// +//****************************************************************************** +#ifdef __cplusplus +extern "C" +{ +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_types +//! +//! \brief Define C std macros not available in C++ (for Energia). +// +//****************************************************************************** +#ifndef INT16_MIN +#define INT16_MIN 0x8000 +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_types +//! +//! \brief Define C std macros not available in C++ (for Energia). +// +//****************************************************************************** +#ifndef INT16_MAX +#define INT16_MAX 0x7fff +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_types +//! +//! \brief Define C std macros not available in C++ (for Energia). +// +//****************************************************************************** +#ifndef INT32_MIN +#define INT32_MIN 0x80000000 +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_types +//! +//! \brief Define C std macros not available in C++ (for Energia). +// +//****************************************************************************** +#ifndef INT32_MAX +#define INT32_MAX 0x7fffffff +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_types +//! +//! \brief Signed fixed point data type with 1 integer bit and 15 fractional +//! bits. +// +//****************************************************************************** +#ifndef __QMATHLIB_H__ // Define _q15 if not defined by QmathLib header. +typedef int16_t _q15; +#endif //__QMATHLIB_H__ + +//****************************************************************************** +// +//! \ingroup dsplib_types +//! +//! \brief Unsigned fixed point data type with 0 integer bit and 16 fractional +//! bits. +// +//****************************************************************************** +typedef uint16_t _uq15; + +//****************************************************************************** +// +//! \ingroup dsplib_types +//! +//! \brief Signed fixed point data type with 1 integer bit and 31 fractional +//! bits. +// +//****************************************************************************** +typedef int32_t _iq31; + +//****************************************************************************** +// +//! \ingroup dsplib_types +//! +//! \brief Unsigned fixed point data type with 0 integer bits and 32 fractional +//! bits. +// +//****************************************************************************** +typedef uint32_t _uq31; + +//****************************************************************************** +// +//! \ingroup dsplib_types +//! +//! \brief Enumerated type to return the status of an operation. +// +//****************************************************************************** +typedef enum { + //! Successful operation. + MSP_SUCCESS = 0, + //! Invalid size, see API for restrictions. + MSP_SIZE_ERROR = 1, + //! Invalid shift size, see API for restrictions. + MSP_SHIFT_SIZE_ERROR = 2, + //! Invalid table size, see API for restrictions. + MSP_TABLE_SIZE_ERROR = 3, + //! LEA is busy and cannot be invoked. + MSP_LEA_BUSY = 4, + //! Address is not within LEA RAM section. + MSP_LEA_INVALID_ADDRESS = 5, + //! Command resulted in out of range memory access. + MSP_LEA_OUT_OF_RANGE = 6, + //! LEA scalar data inconsistency error. + MSP_LEA_SCALAR_INCONSISTENCY = 7, + //! LEA command overflow error. + MSP_LEA_COMMAND_OVERFLOW = 8, + //! LEA incorrect revision. + MSP_LEA_INCORRECT_REVISION = 9 +} msp_status; + +//***************************************************************************** +// +// Mark the end of the C bindings section for C++ compilers. +// +//***************************************************************************** +#ifdef __cplusplus +} +#endif + +#endif //__DSPLIB_TYPES_H__ diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_utility.h b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_utility.h new file mode 100755 index 000000000..79f338b34 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_utility.h @@ -0,0 +1,667 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +#ifndef __DSPLIB_UTILITY_H__ +#define __DSPLIB_UTILITY_H__ + +//****************************************************************************** +// +//! \addtogroup dsplib_utility_api Utility +//! @{ +//! +//! This file provides utility functions for operations such as data copy, +//! array fill and deinterleaving of channel data. +//! +//! @} +// +//****************************************************************************** + +//****************************************************************************** +// +// If building with a C++ compiler, make all of the definitions in this header +// have a C binding. +// +//****************************************************************************** +#ifdef __cplusplus +extern "C" +{ +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Parameters for Q15 to IQ31 conversion. +// +//****************************************************************************** +typedef struct msp_q15_to_iq31_params { + //! Length of the source data, must be a multiple of two. + uint16_t length; +} msp_q15_to_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Parameters for IQ31 to Q15 conversion. +// +//****************************************************************************** +typedef struct msp_iq31_to_q15_params { + //! Length of the source data, must be a multiple of two. + uint16_t length; +} msp_iq31_to_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Parameters for creating Q15 complex vector from real and imaginary +//! vectors. +// +//****************************************************************************** +typedef struct msp_cmplx_q15_params { + //! Length of the source data. + uint16_t length; +} msp_cmplx_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Parameters for creating IQ31 complex vector from real and imaginary +//! vectors. +// +//****************************************************************************** +typedef struct msp_cmplx_iq31_params { + //! Length of the source data. + uint16_t length; +} msp_cmplx_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Parameters for Q15 vector copy function. +// +//****************************************************************************** +typedef struct msp_copy_q15_params { + //! Length of the source data, must be a multiple of two. + uint16_t length; +} msp_copy_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Parameters for IQ31 vector copy function. +// +//****************************************************************************** +typedef struct msp_copy_iq31_params { + //! Length of the source data. + uint16_t length; +} msp_copy_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Parameters for Q15 real vector fill +// +//****************************************************************************** +typedef struct msp_fill_q15_params { + //! Length of the source data, must be a multiple of two. + uint16_t length; + //! Scalar constant to fill the destination vector with. + _q15 value; +} msp_fill_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Parameters for IQ31 real vector fill +// +//****************************************************************************** +typedef struct msp_fill_iq31_params { + //! Length of the source data. + uint16_t length; + //! Scalar constant to fill the destination vector with. + _iq31 value; +} msp_fill_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Parameters for Q15 complex vector fill +// +//****************************************************************************** +typedef struct msp_cmplx_fill_q15_params { + //! Length of the source data, must be a multiple of two. + uint16_t length; + //! Real constant value to fill real indices with. + _q15 realValue; + //! Imaginary constant value to fill imaginary indices with. + _q15 imagValue; +} msp_cmplx_fill_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Parameters for IQ31 complex vector fill +// +//****************************************************************************** +typedef struct msp_cmplx_fill_iq31_params { + //! Length of the source data. + uint16_t length; + //! Real constant value to fill real indices with. + _iq31 realValue; + //! Imaginary constant value to fill imaginary indices with. + _iq31 imagValue; +} msp_cmplx_fill_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Parameters for Q15 vector interleave +// +//****************************************************************************** +typedef struct msp_interleave_q15_params { + //! Length of each channel, must be a multiple of two. + uint16_t length; + //! Specific zero-indexed channel to insert source into. + uint16_t channel; + //! Number of channels in destination vector. + uint16_t numChannels; +} msp_interleave_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Parameters for IQ31 vector interleave +// +//****************************************************************************** +typedef struct msp_interleave_iq31_params { + //! Length of each channel. + uint16_t length; + //! Specific zero-indexed channel to insert source into. + uint16_t channel; + //! Number of channels in destination vector. + uint16_t numChannels; +} msp_interleave_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Parameters for Q15 vector deinterleave +// +//****************************************************************************** +typedef struct msp_deinterleave_q15_params { + //! Length of each channel, must be a multiple of two. + uint16_t length; + //! Specific zero-indexed channel to pull from source. + uint16_t channel; + //! Number of channels being separated. + uint16_t numChannels; +} msp_deinterleave_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Parameters for IQ31 vector deinterleave +// +//****************************************************************************** +typedef struct msp_deinterleave_iq31_params { + //! Length of each channel. + uint16_t length; + //! Specific zero-indexed channel to pull from source. + uint16_t channel; + //! Number of channels being separated. + uint16_t numChannels; +} msp_deinterleave_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Parameters for Q15 sinusoid generation +// +//****************************************************************************** +typedef struct msp_sinusoid_q15_params { + //! Length of the generated sinusoid, must be a multiple of two. + uint16_t length; + //! Amplitude of the generated sinusoid. + _q15 amplitude; + //! Q15 constant equal to cos(2*pi*frequency/fs) where fs is the sampling + //! frequency and freq is the desired sinusoid frequency. For example a 200 + //! Hz sinusoid with sampling frequency of 8192 would have a cosOmega + //! constant equal to cos(2*pi*200/8192) = _Q15(0.988258) or 0x7E7F in + //! hexadecimal. + _q15 cosOmega; + //! Q15 constant equal to sin(2*pi*frequency/fs) where fs is the sampling + //! frequency and freq is the desired sinusoid frequency. For example a 200 + //! Hz sinusoid with sampling frequency of 8192 would have a sinOmega + //! constant equal to sin(2*pi*200/8192) = _Q15(0.152797) or 0x138F in + //! hexadecimal. + _q15 sinOmega; +} msp_sinusoid_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Convert Q15 vector to IQ31 format. +//! +//! \par Details +//! Convert a Q15 data vector to a IQ31 format data vector of the same length. +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the parameter structure. +//! \param src Pointer to the Q15 source vector. +//! \param dst Pointer to the IQ31 destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_q15_to_iq31(const msp_q15_to_iq31_params *params, + const _q15 *src, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Convert IQ31 vector to Q15 format. +//! +//! \par Details +//! Convert a IQ31 data vector to a Q15 format data vector of the same length. +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the parameter structure. +//! \param src Pointer to the IQ31 source vector. +//! \param dst Pointer to the Q15 destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_iq31_to_q15(const msp_iq31_to_q15_params *params, + const _iq31 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Create Q15 complex vector from real and imaginary vectors. +//! +//! \par Details +//! Create Q15 complex vector from real and imaginary vectorsof the same length. +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the parameter structure. +//! \param real Pointer to the Q15 real vector. +//! \param imag Pointer to the Q15 imaginary vector. +//! \param dst Pointer to the Q15 complex destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_q15(const msp_cmplx_q15_params *params, + const _q15 *real, + const _q15 *imag, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Create IQ31 complex vector from real and imaginary vectors. +//! +//! \par Details +//! Create IQ31 complex vector from real and imaginary vectorsof the same +//! length. +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the parameter structure. +//! \param real Pointer to the IQ31 real vector. +//! \param imag Pointer to the IQ31 imaginary vector. +//! \param dst Pointer to the IQ31 complex destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_iq31(const msp_cmplx_iq31_params *params, + const _iq31 *real, + const _iq31 *imag, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Real Q15 vector copy. +//! +//! \par Details +//! Copy of real Q15 source vector to destination vector. +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the vector copy parameter structure. +//! \param src Pointer to the source data to copy. +//! \param dst Pointer to the destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_copy_q15(const msp_copy_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Real IQ31 vector copy. +//! +//! \par Details +//! Copy of real IQ31 source vector to destination vector. +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the vector copy parameter structure. +//! \param src Pointer to the source data to copy. +//! \param dst Pointer to the destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_copy_iq31(const msp_copy_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Real Q15 vector fill with constant. +//! +//! \par Details +//! Fill of real Q15 destination vector with constant. +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the vector copy parameter structure. +//! \param dst Pointer to the destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_fill_q15(const msp_fill_q15_params *params, _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Real IQ31 vector fill with constant. +//! +//! \par Details +//! Fill of real IQ31 destination vector with constant. +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the vector copy parameter structure. +//! \param dst Pointer to the destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_fill_iq31(const msp_fill_iq31_params *params, _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Complex Q15 vector fill with constant. +//! +//! \par Details +//! Fill of complex Q15 destination vector with constant real and imaginary +//! components. +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the complex fill parameter structure. +//! \param dst Pointer to the destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_fill_q15(const msp_cmplx_fill_q15_params *params, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Complex IQ31 vector fill with constant. +//! +//! \par Details +//! Fill of complex IQ31 destination vector with constant real and imaginary +//! components. +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the complex fill parameter structure. +//! \param dst Pointer to the destination vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_fill_iq31(const msp_cmplx_fill_iq31_params *params, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Insert a single channel into a multiple-channel destination. +//! +//! \par Details +//! A single Q15 vector is inserted into multiple interleaved vectors. For +//! example, a interleave operation to insert a source vector x[] into channel +//! one of a four channel destination vector y[] will yield the following data +//! result: +//! +//! y[0], x[0], y[2], y[3], y[4], x[1], y[6], y[7] ... +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the interleave parameter structure. +//! \param src Pointer to the source data to interleave. +//! \param dst Pointer to the destination data to interleave into. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_interleave_q15(const msp_interleave_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Insert a single channel into a multiple-channel destination. +//! +//! \par Details +//! A single IQ31 vector is inserted into multiple interleaved vectors. For +//! example, a interleave operation to insert a source vector x[] into channel +//! one of a four channel destination vector y[] will yield the following data +//! result: +//! +//! y[0], x[0], y[2], y[3], y[4], x[1], y[6], y[7] ... +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the interleave parameter structure. +//! \param src Pointer to the source data to interleave. +//! \param dst Pointer to the destination data to interleave into. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_interleave_iq31(const msp_interleave_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Extract a single channel from multiple-channel source. +//! +//! \par Details +//! A single Q15 vector is extracted from multiple interleaved vectors. For +//! example, a deinterleave operation to extract channel one from a four channel +//! source vector x[] with channel length 4 will extract the following data: +//! +//! x[1], x[5], x[9], x[13] +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the deinterleave parameter structure. +//! \param src Pointer to the source data to deinterleave. +//! \param dst Pointer to the destination data to store results. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_deinterleave_q15( + const msp_deinterleave_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Extract a single channel from multiple-channel source. +//! +//! \par Details +//! A single IQ31 vector is extracted from multiple interleaved vectors. For +//! example, a deinterleave operation to extract channel one from a four channel +//! source vector x[] with channel length 4 will extract the following data: +//! +//! x[1], x[5], x[9], x[13] +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the deinterleave parameter structure. +//! \param src Pointer to the source data to deinterleave. +//! \param dst Pointer to the destination data to store results. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_deinterleave_iq31( + const msp_deinterleave_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_utility_api +//! +//! \brief Generate a sinusoid with specified amplitude and frequency. +//! +//! \par Details +//! Generate a sinusoid waveform with configured amplitude and frequency +//! parameters using DF1 biquad functions. +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the sinusoid parameter structure. +//! \param dst Pointer to the destination to store generated sinusoid. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_sinusoid_q15(const msp_sinusoid_q15_params *params, + _q15 *dst); + +//***************************************************************************** +// +// Mark the end of the C bindings section for C++ compilers. +// +//***************************************************************************** +#ifdef __cplusplus +} +#endif + +#endif //__DSPLIB_UTILITY_H__ diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_vector.h b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_vector.h new file mode 100755 index 000000000..124416309 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/include/DSPLib_vector.h @@ -0,0 +1,1852 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ +#ifndef __DSPLIB_VECTOR_H__ +#define __DSPLIB_VECTOR_H__ + +//****************************************************************************** +// +//! \addtogroup dsplib_vector_api Vector +//! @{ +//! +//! Functions for performing real and complex vector operations. +//! +//! \defgroup dsplib_vector_real Real Vectors +//! Functions for performing vector operations on real data. +//! +//! \defgroup dsplib_vector_complex Complex Vectors +//! Functions for performing vector operations on complex data. +//! +//! @} +// +//****************************************************************************** + +//****************************************************************************** +// +// If building with a C++ compiler, make all of the definitions in this header +// have a C binding. +// +//****************************************************************************** +#ifdef __cplusplus +extern "C" +{ +#endif + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the Q15 vector add functions. +// +//****************************************************************************** +typedef struct msp_add_q15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_add_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the IQ31 vector add functions. +// +//****************************************************************************** +typedef struct msp_add_iq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_add_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the Q15 vector subtract functions. +// +//****************************************************************************** +typedef struct msp_sub_q15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_sub_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the IQ31 vector subtract functions. +// +//****************************************************************************** +typedef struct msp_sub_iq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_sub_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the Q15 vector multiply functions. +// +//****************************************************************************** +typedef struct msp_mpy_q15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_mpy_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the IQ31 vector multiply functions. +// +//****************************************************************************** +typedef struct msp_mpy_iq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_mpy_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the Q15 vector multiply and accumulate function. +// +//****************************************************************************** +typedef struct msp_mac_q15_params { + //! Length of source data, must be a multiple of two. + uint16_t length; +} msp_mac_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the IQ31 vector multiply and accumulate function. +// +//****************************************************************************** +typedef struct msp_mac_iq31_params { + //! Length of source data, must be a multiple of two. + uint16_t length; +} msp_mac_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the Q15 vector negate function. +// +//****************************************************************************** +typedef struct msp_neg_q15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_neg_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the IQ31 vector negate function. +// +//****************************************************************************** +typedef struct msp_neg_iq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_neg_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the Q15 vector absolute value function. +// +//****************************************************************************** +typedef struct msp_abs_q15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_abs_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the IQ31 vector absolute value function. +// +//****************************************************************************** +typedef struct msp_abs_iq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_abs_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the Q15 vector offset function. +// +//****************************************************************************** +typedef struct msp_offset_q15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; + //! Offset to add to each vector element. + _q15 offset; +} msp_offset_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the vector offset function. +// +//****************************************************************************** +typedef struct msp_offset_iq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; + //! Offset to add to each vector element. + _iq31 offset; +} msp_offset_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the Q15 vector scale function. +// +//****************************************************************************** +typedef struct msp_scale_q15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; + //! Q15 fractional value scale to multiply each vector element by. + _q15 scale; + //! Unsigned integer value to shift each vector result left by. + uint8_t shift; +} msp_scale_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the IQ31 vector scale function. +// +//****************************************************************************** +typedef struct msp_scale_iq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; + //! q31 fractional value scale to multiply each vector element by. + _iq31 scale; + //! Unsigned integer value to shift each vector result left by. + uint8_t shift; +} msp_scale_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the Q15 vector shift function. +// +//****************************************************************************** +typedef struct msp_shift_q15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; + //! Integer value to shift each vector element by. Positive values will + //! shift to the left and negative values will shift to the right. + int8_t shift; +} msp_shift_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the IQ31 vector shift function. +// +//****************************************************************************** +typedef struct msp_shift_iq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; + //! Integer value to shift each vector element by. Positive values will + //! shift to the left and negative values will shift to the right. + int8_t shift; +} msp_shift_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the Q15 signed vector maximum function. +// +//****************************************************************************** +typedef struct msp_max_q15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_max_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the IQ31 signed vector maximum function. +// +//****************************************************************************** +typedef struct msp_max_iq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_max_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the Q15 unsigned vector maximum function. +// +//****************************************************************************** +typedef struct msp_max_uq15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_max_uq15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the IQ31 unsigned vector maximum function. +// +//****************************************************************************** +typedef struct msp_max_uq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_max_uq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the Q15 signed vector minimum function. +// +//****************************************************************************** +typedef struct msp_min_q15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_min_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the IQ31 signed vector minimum function. +// +//****************************************************************************** +typedef struct msp_min_iq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_min_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the Q15 unsigned vector minimum function. +// +//****************************************************************************** +typedef struct msp_min_uq15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_min_uq15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Parameter structure for the IQ31 unsigned vector minimum function. +// +//****************************************************************************** +typedef struct msp_min_uq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_min_uq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Parameter structure for the Q15 complex vector add functions. +// +//****************************************************************************** +typedef struct msp_cmplx_add_q15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_cmplx_add_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Parameter structure for the IQ31 complex vector add functions. +// +//****************************************************************************** +typedef struct msp_cmplx_add_iq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_cmplx_add_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Parameter structure for the Q15 complex vector subtract functions. +// +//****************************************************************************** +typedef struct msp_cmplx_sub_q15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_cmplx_sub_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Parameter structure for the IQ31 complex vector subtract functions. +// +//****************************************************************************** +typedef struct msp_cmplx_sub_iq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_cmplx_sub_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Parameter structure for the Q15 complex vector multiply functions. +// +//****************************************************************************** +typedef struct msp_cmplx_mpy_q15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_cmplx_mpy_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Parameter structure for the IQ31 complex vector multiply functions. +// +//****************************************************************************** +typedef struct msp_cmplx_mpy_iq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_cmplx_mpy_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Parameter structure for the Q15 complex vector multiply by real +//! functions. +// +//****************************************************************************** +typedef struct msp_cmplx_mpy_real_q15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_cmplx_mpy_real_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Parameter structure for the IQ31 complex vector multiply by real +//! functions. +// +//****************************************************************************** +typedef struct msp_cmplx_mpy_real_iq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_cmplx_mpy_real_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Parameter structure for the Q15 complex vector multiply and +//! accumulate function. +// +//****************************************************************************** +typedef struct msp_cmplx_mac_q15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_cmplx_mac_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Parameter structure for the IQ31 complex vector multiply and +//! accumulate function. +// +//****************************************************************************** +typedef struct msp_cmplx_mac_iq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_cmplx_mac_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Parameter structure for the Q15 complex vector conjugate function. +// +//****************************************************************************** +typedef struct msp_cmplx_conj_q15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_cmplx_conj_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Parameter structure for the IQ31 complex vector conjugate function. +// +//****************************************************************************** +typedef struct msp_cmplx_conj_iq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; +} msp_cmplx_conj_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Parameter structure for the Q15 complex vector scale by real +//! function. +// +//****************************************************************************** +typedef struct msp_cmplx_scale_q15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; + //! Q15 real fractional scale to multiply each complex vector element by. + _q15 scale; + //! Unsigned integer value to shift each complex vector result left by. + uint8_t shift; +} msp_cmplx_scale_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Parameter structure for the IQ31 complex vector scale by real +//! function. +// +//****************************************************************************** +typedef struct msp_cmplx_scale_iq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; + //! q31 real fractional scale to multiply each complex vector element by. + _iq31 scale; + //! Unsigned integer value to shift each complex vector result left by. + uint8_t shift; +} msp_cmplx_scale_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Parameter structure for the Q15 complex vector shift function. +// +//****************************************************************************** +typedef struct msp_cmplx_shift_q15_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; + //! Integer value to shift each vector element by. Positive values will + //! shift to the left and negative values will shift to the right. + int8_t shift; + //! Return complex conjugate result. + bool conjugate; +} msp_cmplx_shift_q15_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Parameter structure for the IQ31 complex vector shift function. +// +//****************************************************************************** +typedef struct msp_cmplx_shift_iq31_params { + //! Length of source and destination data, must be a multiple of two. + uint16_t length; + //! Integer value to shift each vector element by. Positive values will + //! shift to the left and negative values will shift to the right. + int8_t shift; + //! Take complex conjugate of the result. + bool conjugate; +} msp_cmplx_shift_iq31_params; + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Addition of two real source vectors. +//! +//! \par Details +//! Element-wise Q15 addition of two real vectors with saturation. This +//! function supports in-place operations. +//! +//! \par Pseudo code +//! `dst = srcA + srcB` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the vector add parameter structure. +//! \param srcA Pointer to the first source data vector. +//! \param srcB Pointer to the second source data vector. +//! \param dst Pointer to the destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_add_q15(const msp_add_q15_params *params, + const _q15 *srcA, + const _q15 *srcB, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Addition of two real source vectors. +//! +//! \par Details +//! Element-wise IQ31 addition of two real vectors with saturation. This +//! function supports in-place operations. +//! +//! \par Pseudo code +//! `dst = srcA + srcB` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the vector add parameter structure. +//! \param srcA Pointer to the first source data vector. +//! \param srcB Pointer to the second source data vector. +//! \param dst Pointer to the destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_add_iq31(const msp_add_iq31_params *params, + const _iq31 *srcA, + const _iq31 *srcB, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Subtraction of two real source vectors. +//! +//! \par Details +//! Element-wise Q15 subtraction of two real vectors with saturation. This +//! function supports in-place operations. +//! +//! \par Pseudo code +//! `dst = srcA - srcB` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the vector add parameter structure. +//! \param srcA Pointer to the first source data vector. +//! \param srcB Pointer to the second source data vector. +//! \param dst Pointer to the destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_sub_q15(const msp_sub_q15_params *params, + const _q15 *srcA, + const _q15 *srcB, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Subtraction of two real source vectors. +//! +//! \par Details +//! Element-wise IQ31 subtraction of two real vectors with saturation. This +//! function supports in-place operations. +//! +//! \par Pseudo code +//! `dst = srcA - srcB` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the vector add parameter structure. +//! \param srcA Pointer to the first source data vector. +//! \param srcB Pointer to the second source data vector. +//! \param dst Pointer to the destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_sub_iq31(const msp_sub_iq31_params *params, + const _iq31 *srcA, + const _iq31 *srcB, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Multiplication of two real source vectors. +//! +//! \par Details +//! Element-wise Q15 multiplication of two real source vectors without +//! saturation. This function supports in-place operation. +//! +//! \par Pseudo code +//! `dst = srcA .* srcB` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the vector multiply parameter structure. +//! \param srcA Pointer to the first source data vector. +//! \param srcB Pointer to the second source data vector. +//! \param dst Pointer to the destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_mpy_q15(const msp_mpy_q15_params *params, + const _q15 *srcA, + const _q15 *srcB, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Multiplication of two real source vectors. +//! +//! \par Details +//! Element-wise IQ31 multiplication of two real source vectors without +//! saturation. This function supports in-place operation. +//! +//! \par Pseudo code +//! `dst = srcA .* srcB` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the vector multiply parameter structure. +//! \param srcA Pointer to the first source data vector. +//! \param srcB Pointer to the second source data vector. +//! \param dst Pointer to the destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_mpy_iq31(const msp_mpy_iq31_params *params, + const _iq31 *srcA, + const _iq31 *srcB, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Multiply and accumulate of real source vectors. +//! +//! \par Details +//! Element-wise Q15 multiplication of two real source vectors with accumulated +//! IQ31 result (dot product). +//! +//! \par Pseudo code +//! `result = sum(srcA .* srcB)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the vector multiply and accumulate parameter +//! structure. +//! \param srcA Pointer to the first source data vector. +//! \param srcB Pointer to the second source data vector. +//! \param result Pointer to the 32-bit result data. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_mac_q15(const msp_mac_q15_params *params, + const _q15 *srcA, + const _q15 *srcB, + _iq31 *result); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Multiply and accumulate of real source vectors. +//! +//! \par Details +//! Element-wise IQ31 multiplication of two real source vectors with accumulated +//! IQ31 result (dot product). +//! +//! \par Pseudo code +//! `result = sum(srcA .* srcB)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the vector multiply and accumulate parameter +//! structure. +//! \param srcA Pointer to the first source data vector. +//! \param srcB Pointer to the second source data vector. +//! \param result Pointer to the 32-bit result data. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_mac_iq31(const msp_mac_iq31_params *params, + const _iq31 *srcA, + const _iq31 *srcB, + _iq31 *result); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Negation of a source vector. +//! +//! \par Details +//! Element-wise Q15 multiplication by negative one with a real source vector. +//! This function supports in-place operation. +//! +//! \par Pseudo code +//! `dst = -1 * src` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the vector negate parameter structure. +//! \param src Pointer to the source data vector. +//! \param dst Pointer to the destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_neg_q15(const msp_neg_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Negation of a source vector. +//! +//! \par Details +//! Element-wise IQ31 multiplication by negative one with a real source vector. +//! This function supports in-place operation. +//! +//! \par Pseudo code +//! `dst = -1 * src` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the vector negate parameter structure. +//! \param src Pointer to the source data vector. +//! \param dst Pointer to the destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_neg_iq31(const msp_neg_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Absolute value of a real source vector. +//! +//! \par Details +//! Element-wise absolute value of a single source vector. +//! +//! \par Pseudo code +//! `dst = |src|` +//! +//! \par LEA Support +//! This function is not currently supported by LEA. +//! +//! \param params Pointer to the vector absolute value parameter structure. +//! \param src Pointer to the source data vector. +//! \param dst Pointer to the destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_abs_q15(const msp_abs_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Absolute value of a real source vector. +//! +//! \par Details +//! Element-wise absolute value of a single source vector. +//! +//! \par Pseudo code +//! `dst = |src|` +//! +//! \par LEA Support +//! This function is not currently supported by LEA. +//! +//! \param params Pointer to the vector absolute value parameter structure. +//! \param src Pointer to the source data vector. +//! \param dst Pointer to the destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_abs_iq31(const msp_abs_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Constant offset of a real source vector. +//! +//! \par Details +//! Element-wise Q15 addition with saturation of a single source vector with a +//! Q15 constant. This function supports in-place operation. +//! +//! \par Pseudo code +//! `dst = src + offset` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the vector offset parameter structure. +//! \param src Pointer to the source data vector. +//! \param dst Pointer to the destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_offset_q15(const msp_offset_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Constant offset of a real source vector. +//! +//! \par Details +//! Element-wise IQ31 addition with saturation of a single source vector with a +//! IQ31 constant. This function supports in-place operation. +//! +//! \par Pseudo code +//! `dst = src + offset` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the vector offset parameter structure. +//! \param src Pointer to the source data vector. +//! \param dst Pointer to the destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_offset_iq31(const msp_offset_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Scale a real source vector. +//! +//! \par Details +//! Element-wise scaling of a real vector. Source data is multiplied by a IQ31 +//! constant and then shifted left. This function supports in-place operation. +//! +//! \par Pseudo code +//! `dst = src * 2^SHIFT * SCALE` +//! +//! \par LEA Support +//! This function is not currently supported by LEA. +//! +//! \param params Pointer to the vector scale structure. The bitwise shift +//! value must be >=0. +//! \param src Pointer to the source data vector. +//! \param dst Pointer to the destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_scale_q15(const msp_scale_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Scale a real source vector. +//! +//! \par Details +//! Element-wise scaling of a real vector. Source data is multiplied by a IQ31 +//! constant and then shifted left. This function supports in-place operation. +//! +//! \par Pseudo code +//! `dst = src * 2^SHIFT * SCALE` +//! +//! \par LEA Support +//! This function is not currently supported by LEA. +//! +//! \param params Pointer to the vector scale structure. The bitwise shift value +//! must be >=0. +//! \param src Pointer to the source data vector. +//! \param dst Pointer to the destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_scale_iq31(const msp_scale_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Bitwise shift of a real source vector. +//! +//! \par Details +//! Element-wise bitwise shift of a real vector to the left or right by a signed +//! integer value. This function does not saturate and supports in-place +//! operation. +//! +//! \par Pseudo code +//! `dst = src * 2^SHIFT` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the vector shift parameter structure. +//! \param src Pointer to the source data vector. +//! \param dst Pointer to the destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_shift_q15(const msp_shift_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Bitwise shift of a real source vector. +//! +//! \par Details +//! Element-wise bitwise shift of a real vector to the left or right by a signed +//! integer value. This function does not saturate and supports in-place +//! operation. +//! +//! \par Pseudo code +//! `dst = src * 2^SHIFT` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the vector shift parameter structure. +//! \param src Pointer to the source data vector. +//! \param dst Pointer to the destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_shift_iq31(const msp_shift_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Signed maximum of a source vector. +//! +//! \par Details +//! This function returns the 16-bit signed maximum value and corresponding +//! index of a single source vector. +//! +//! \par Pseudo code +//! `dst = MAX(src)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the signed vector maximum parameter structure. +//! \param src Pointer to the source data vector. +//! \param max Pointer to the maximum result vector of size one. +//! \param index Pointer to the index result vector of size one. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_max_q15(const msp_max_q15_params *params, + const _q15 *src, + _q15 *max, + uint16_t *index); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Signed maximum of a source vector. +//! +//! \par Details +//! This function returns the 32-bit signed maximum value and corresponding +//! index of a single source vector. +//! +//! \par Pseudo code +//! `dst = MAX(src)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the signed vector maximum parameter structure. +//! \param src Pointer to the source data vector. +//! \param max Pointer to the maximum result vector of size one. +//! \param index Pointer to the index result vector of size one. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_max_iq31(const msp_max_iq31_params *params, + const _iq31 *src, + _iq31 *max, + uint16_t *index); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Unsigned maximum of a source vector. +//! +//! \par Details +//! This function returns the 16-bit unsigned maximum value and corresponding +//! index of a single source vector. +//! +//! \par Pseudo code +//! `dst = MAX(src)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the unsigned vector maximum parameter structure. +//! \param src Pointer to the source data vector. +//! \param max Pointer to the maximum result vector of size one. +//! \param index Pointer to the index result vector of size one. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_max_uq15(const msp_max_uq15_params *params, + const _uq15 *src, + _uq15 *max, + uint16_t *index); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Unsigned maximum of a source vector. +//! +//! \par Details +//! This function returns the 32-bit unsigned maximum value and corresponding +//! index of a single source vector. +//! +//! \par Pseudo code +//! `dst = MAX(src)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the unsigned vector maximum parameter structure. +//! \param src Pointer to the source data vector. +//! \param max Pointer to the maximum result vector of size one. +//! \param index Pointer to the index result vector of size one. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_max_uq31(const msp_max_uq31_params *params, + const _uq31 *src, + _uq31 *max, + uint16_t *index); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Signed minimum of a source vector. +//! +//! \par Details +//! This function returns the 16-bit signed minimum value and corresponding +//! index of a single source vector. +//! +//! \par Pseudo code +//! `dst = MIN(src)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the signed vector minimum parameter structure. +//! \param src Pointer to the source data vector. +//! \param min Pointer to the minimum result vector of size one. +//! \param index Pointer to the index result vector of size one. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_min_q15(const msp_min_q15_params *params, + const _q15 *src, + _q15 *min, + uint16_t *index); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Signed minimum of a source vector. +//! +//! \par Details +//! This function returns the 32-bit signed minimum value and corresponding +//! index of a single source vector. +//! +//! \par Pseudo code +//! `dst = MIN(src)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the signed vector minimum parameter structure. +//! \param src Pointer to the source data vector. +//! \param min Pointer to the minimum result vector of size one. +//! \param index Pointer to the index result vector of size one. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_min_iq31(const msp_min_iq31_params *params, + const _iq31 *src, + _iq31 *min, + uint16_t *index); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Unsigned minimum of a source vector. +//! +//! \par Details +//! This function returns the 16-bit unsigned minimum value and corresponding +//! index of a single source vector. +//! +//! \par Pseudo code +//! `dst = MIN(src)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the unsigned vector minimum parameter structure. +//! \param src Pointer to the source data vector. +//! \param min Pointer to the minimum result vector of size one. +//! \param index Pointer to the index result vector of size one. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_min_uq15(const msp_min_uq15_params *params, + const _uq15 *src, + _uq15 *min, + uint16_t *index); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_real +//! +//! \brief Unsigned minimum of a source vector. +//! +//! \par Details +//! This function returns the 32-bit unsigned minimum value and corresponding +//! index of a single source vector. +//! +//! \par Pseudo code +//! `dst = MIN(src)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the unsigned vector minimum parameter structure. +//! \param src Pointer to the source data vector. +//! \param min Pointer to the minimum result vector of size one. +//! \param index Pointer to the index result vector of size one. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_min_uq31(const msp_min_uq31_params *params, + const _uq31 *src, + _uq31 *min, + uint16_t *index); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Addition of two complex source vectors. +//! +//! \par Details +//! Element-wise Q15 addition of two complex vectors with saturation. This +//! function supports in-place operations. +//! +//! \par Pseudo code +//! `dst = complex(srcA) + complex(srcB)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the complex vector add parameter structure. +//! \param srcA Pointer to the first complex source data vector. +//! \param srcB Pointer to the second complex source data vector. +//! \param dst Pointer to the complex destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_add_q15(const msp_cmplx_add_q15_params *params, + const _q15 *srcA, + const _q15 *srcB, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Addition of two complex source vectors. +//! +//! \par Details +//! Element-wise IQ31 addition of two complex vectors with saturation. This +//! function supports in-place operations. +//! +//! \par Pseudo code +//! `dst = complex(srcA) + complex(srcB)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the complex vector add parameter structure. +//! \param srcA Pointer to the first complex source data vector. +//! \param srcB Pointer to the second complex source data vector. +//! \param dst Pointer to the complex destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_add_iq31(const msp_cmplx_add_iq31_params *params, + const _iq31 *srcA, + const _iq31 *srcB, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Subtraction of two complex source vectors. +//! +//! \par Details +//! Element-wise Q15 subtraction of two complex vectors with saturation. This +//! function supports in-place operations. +//! +//! \par Pseudo code +//! `dst = complex(srcA) - complex(srcB)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the complex vector subtraction parameter structure. +//! \param srcA Pointer to the first complex source data vector. +//! \param srcB Pointer to the second complex source data vector. +//! \param dst Pointer to the complex destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_sub_q15(const msp_cmplx_sub_q15_params *params, + const _q15 *srcA, + const _q15 *srcB, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Subtraction of two complex source vectors. +//! +//! \par Details +//! Element-wise IQ31 subtraction of two complex vectors with saturation. This +//! function supports in-place operations. +//! +//! \par Pseudo code +//! `dst = complex(srcA) - complex(srcB)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the complex vector subtraction parameter structure. +//! \param srcA Pointer to the first complex source data vector. +//! \param srcB Pointer to the second complex source data vector. +//! \param dst Pointer to the complex destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_sub_iq31(const msp_cmplx_sub_iq31_params *params, + const _iq31 *srcA, + const _iq31 *srcB, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Multiplication of two complex source vectors. +//! +//! \par Details +//! Element-wise Q15 multiply of two complex vectors without saturation. This +//! function supports in-place operations. +//! +//! \par Pseudo code +//! `dst = complex(srcA) .* complex(srcB)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the complex vector multiply parameter structure. +//! \param srcA Pointer to the first complex source data vector. +//! \param srcB Pointer to the second complex source data vector. +//! \param dst Pointer to the complex destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_mpy_q15(const msp_cmplx_mpy_q15_params *params, + const _q15 *srcA, + const _q15 *srcB, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Multiplication of complex source vectors. +//! +//! \par Details +//! Element-wise IQ31 multiply of two complex vectors without saturation. This +//! function supports in-place operations. +//! +//! \par Pseudo code +//! `dst = complex(srcA) .* complex(srcB)` +//! +//! \par LEA Support +//! This function is not currently supported by LEA. +//! +//! \param params Pointer to the complex vector multiply parameter structure. +//! \param srcA Pointer to the first complex source data vector. +//! \param srcB Pointer to the second complex source data vector. +//! \param dst Pointer to the complex destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_mpy_iq31(const msp_cmplx_mpy_iq31_params *params, + const _iq31 *srcA, + const _iq31 *srcB, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Multiplication of complex source vector by real source vector. +//! +//! \par Details +//! Element-wise Q15 multiply of a complex vector by real vector without +//! saturation. The length of complex and real vectors should be equal, that is +//! the complex source vector contains twice the allocated bytes for data +//! storage. This function supports in-place operations. +//! +//! \par Pseudo code +//! `dst = real(srcA) .* real(srcB) + imag(srcB)` +//! +//! \par LEA Support +//! This function is not currently supported by LEA. +//! +//! \param params Pointer to the complex vector multiply parameter structure. +//! \param srcCmplx Pointer to the complex source data vector. +//! \param srcReal Pointer to the real source data vector. +//! \param dst Pointer to the complex destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_mpy_real_q15( + const msp_cmplx_mpy_real_q15_params *params, + const _q15 *srcCmplx, + const _q15 *srcReal, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Multiplication of complex source vector by real source vector. +//! +//! \par Details +//! Element-wise IQ31 multiply of a complex vector by real vector without +//! saturation. The length of complex and real vectors should be equal, that is +//! the complex source vector contains twice the allocated bytes for data +//! storage. This function supports in-place operations. +//! +//! \par Pseudo code +//! `dst = real(srcA) .* real(srcB) + imag(srcB)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the complex vector multiply parameter structure. +//! \param srcCmplx Pointer to the complex source data vector. +//! \param srcReal Pointer to the real source data vector. +//! \param dst Pointer to the complex destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_mpy_real_iq31( + const msp_cmplx_mpy_real_iq31_params *params, + const _iq31 *srcCmplx, + const _iq31 *srcReal, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Multiply and accumulate of complex source vectors. +//! +//! \par Details +//! Element-wise Q15 multiplication of two complex source vectors with +//! accumulated result (dot product). +//! +//! \par Pseudo code +//! `result = sum(complex(srcA) .* complex(srcB))` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the complex vector multiply and accumulate +//! parameter structure. +//! \param srcA Pointer to the first complex source data vector. +//! \param srcB Pointer to the second complex source data vector. +//! \param result Pointer to the 32-bit result data. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_mac_q15(const msp_cmplx_mac_q15_params *params, + const _q15 *srcA, + const _q15 *srcB, + _iq31 *result); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Multiply and accumulate of complex source vectors. +//! +//! \par Details +//! Element-wise IQ31 multiplication of two complex source vectors with +//! accumulated result (dot product). +//! +//! \par Pseudo code +//! `result = sum(complex(srcA) .* complex(srcB))` +//! +//! \par LEA Support +//! This function is not currently supported by LEA. +//! +//! \param params Pointer to the complex vector multiply and accumulate +//! parameter structure. +//! \param srcA Pointer to the first complex source data vector. +//! \param srcB Pointer to the second complex source data vector. +//! \param result Pointer to the 32-bit result data. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_mac_iq31(const msp_cmplx_mac_iq31_params *params, + const _iq31 *srcA, + const _iq31 *srcB, + _iq31 *result); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Conjugation of a source vector. +//! +//! \par Details +//! Conjugation of each element in a complex vector. This function supports +//! in-place operations. +//! +//! \par Pseudo code +//! `dst = conj(src)` +//! +//! \par LEA Support +//! This function is not currently supported by LEA. +//! +//! \param params Pointer to the complex vector conjugate parameter structure. +//! \param src Pointer to the complex source data vector. +//! \param dst Pointer to the complex destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_conj_q15(const msp_cmplx_conj_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Conjugation of a source vector. +//! +//! \par Details +//! Conjugation of each element in a complex vector. This function supports +//! in-place operations. +//! +//! \par Pseudo code +//! `dst = conj(src)` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the complex vector conjugate parameter structure. +//! \param src Pointer to the complex source data vector. +//! \param dst Pointer to the complex destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_conj_iq31(const msp_cmplx_conj_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Scale a complex source vector. +//! +//! \par Details +//! Element-wise scaling of both imaginary and real values of a complex vector. +//! Source data is multiplied by a IQ31 constant and then shifted left. This +//! function supports in-place operation. +//! +//! \par Pseudo code +//! `dst = src * 2^SHIFT * SCALE` +//! +//! \par LEA Support +//! This function is not currently supported by LEA. +//! +//! \param params Pointer to the complex vector scale structure. +//! \param src Pointer to the complex source data vector. +//! \param dst Pointer to the complex destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_scale_q15(const msp_cmplx_scale_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Scale a complex source vector. +//! +//! \par Details +//! Element-wise scaling of both imaginary and real values of a complex vector. +//! Source data is multiplied by a IQ31 constant and then shifted left. This +//! function supports in-place operation. +//! +//! \par Pseudo code +//! `dst = src * 2^SHIFT * SCALE` +//! +//! \par LEA Support +//! This function is not currently supported by LEA. +//! +//! \param params Pointer to the complex vector scale structure. +//! \param src Pointer to the complex source data vector. +//! \param dst Pointer to the complex destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_scale_iq31(const msp_cmplx_scale_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Bitwise shift of a complex source vector. +//! +//! \par Details +//! Element-wise bitwise shift of both imaginary and real elements of a complex +//! vector to the left or right by a signed integer value. This function does +//! not saturate and supports in-place operation. +//! +//! \par Pseudo code +//! `dst = src * 2^SHIFT` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the complex vector shift parameter structure. +//! \param src Pointer to the complex source data vector. +//! \param dst Pointer to the complex destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_shift_q15(const msp_cmplx_shift_q15_params *params, + const _q15 *src, + _q15 *dst); + +//****************************************************************************** +// +//! \ingroup dsplib_vector_complex +//! +//! \brief Bitwise shift of a complex source vector. +//! +//! \par Details +//! Element-wise bitwise shift of both imaginary and real elements of a complex +//! vector to the left or right by a signed int. This function does not saturate +//! and supports in-place operation. +//! +//! \par Pseudo code +//! `dst = src * 2^SHIFT` +//! +//! \par LEA Support +//! This function is supported by LEA and requires data to be placed into +//! shared LEA memory with 4-byte alignment. +//! +//! \param params Pointer to the complex vector shift parameter structure. +//! \param src Pointer to the complex source data vector. +//! \param dst Pointer to the complex destination data vector. +//! +//! \return Status of the operation. +// +//****************************************************************************** +extern msp_status msp_cmplx_shift_iq31(const msp_cmplx_shift_iq31_params *params, + const _iq31 *src, + _iq31 *dst); + +//***************************************************************************** +// +// Mark the end of the C bindings section for C++ compilers. +// +//***************************************************************************** +#ifdef __cplusplus +} +#endif + +#endif //__DSPLIB_VECTOR_H__ diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c new file mode 100755 index 000000000..1b349f89b --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c @@ -0,0 +1,69 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +msp_status msp_biquad_cascade_df1_q15(const msp_biquad_cascade_df1_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t i; + uint16_t stages; + const _q15 *srcPtr; + msp_status status; + msp_biquad_df1_q15_params df1Params; + + /* Load the number of stages from the parameters. */ + stages = params->stages; + + /* Set initial source pointer. */ + srcPtr = src; + + /* Run the input through all stages of the cascaded biquad. */ + for (i = 0; i < stages; i++) { + /* Initialize the DF1 biquad parameter structure. */ + df1Params.length = params->length; + df1Params.coeffs = ¶ms->coeffs[i]; + df1Params.states = ¶ms->states[i]; + + /* Invoke the msp_biquad_df1_q15 function and check status flag. */ + status = msp_biquad_df1_q15(&df1Params, srcPtr, dst); + if (status != MSP_SUCCESS) { + /* Something went wrong, return the status of the operation. */ + return status; + } + + /* Set source pointer to destination for next stage. */ + srcPtr = dst; + } + + /* Return the status of the operation. */ + return status; +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c new file mode 100755 index 000000000..401627563 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c @@ -0,0 +1,69 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +msp_status msp_biquad_cascade_df2_ext_q15(const msp_biquad_cascade_df2_ext_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t i; + uint16_t stages; + const _q15 *srcPtr; + msp_status status; + msp_biquad_df2_ext_q15_params df2ExtParams; + + /* Load the number of stages from the parameters. */ + stages = params->stages; + + /* Set initial source pointer. */ + srcPtr = src; + + /* Run the input through all stages of the cascaded biquad. */ + for (i = 0; i < stages; i++) { + /* Initialize the DF2 biquad parameter structure. */ + df2ExtParams.length = params->length; + df2ExtParams.coeffs = ¶ms->coeffs[i]; + df2ExtParams.states = ¶ms->states[i]; + + /* Invoke the msp_biquad_df2_ext_q15 function and check status flag. */ + status = msp_biquad_df2_ext_q15(&df2ExtParams, srcPtr, dst); + if (status != MSP_SUCCESS) { + /* Something went wrong, return the status of the operation. */ + return status; + } + + /* Set source pointer to destination for next stage. */ + srcPtr = dst; + } + + /* Return the status of the operation. */ + return status; +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c new file mode 100755 index 000000000..cf464fa51 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c @@ -0,0 +1,69 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +msp_status msp_biquad_cascade_df2_q15(const msp_biquad_cascade_df2_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t i; + uint16_t stages; + const _q15 *srcPtr; + msp_status status; + msp_biquad_df2_q15_params df2Params; + + /* Load the number of stages from the parameters. */ + stages = params->stages; + + /* Set initial source pointer. */ + srcPtr = src; + + /* Run the input through all stages of the cascaded biquad. */ + for (i = 0; i < stages; i++) { + /* Initialize the DF2 biquad parameter structure. */ + df2Params.length = params->length; + df2Params.coeffs = ¶ms->coeffs[i]; + df2Params.states = ¶ms->states[i]; + + /* Invoke the msp_biquad_df2_q15 function and check status flag. */ + status = msp_biquad_df2_q15(&df2Params, srcPtr, dst); + if (status != MSP_SUCCESS) { + /* Something went wrong, return the status of the operation. */ + return status; + } + + /* Set source pointer to destination for next stage. */ + srcPtr = dst; + } + + /* Return the status of the operation. */ + return status; +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c new file mode 100755 index 000000000..b7569d37a --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c @@ -0,0 +1,207 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_biquad_df1_q15(const msp_biquad_df1_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t cmdId; + uint16_t length; + msp_status status; + MSP_LEA_IIRBQ1_PARAMS *leaParams; + + /* Initialize local length variable. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4) & + MSP_LEA_VALID_ADDRESS(params->states, 4) & + MSP_LEA_VALID_ADDRESS(params->coeffs, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_IIRBQ1_PARAMS structure. */ + leaParams = (MSP_LEA_IIRBQ1_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_IIRBQ1_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_IIR_PARAMS structure. */ + leaParams->vectorSizeBy2 = length >> 1; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->state = MSP_LEA_CONVERT_ADDRESS(params->states); + leaParams->coeffs = MSP_LEA_CONVERT_ADDRESS(params->coeffs); + leaParams->direction = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__IIRBQ1, MSP_LEA_IIRBQ1, + sizeof(MSP_LEA_IIRBQ1)/sizeof(MSP_LEA_IIRBQ1[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__IIRBQ1 command. */ + cmdId = LEACMD__IIRBQ1; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Free MSP_LEA_IIRBQ1_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_IIRBQ1_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_biquad_df1_q15(const msp_biquad_df1_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t i; + uint16_t length; + int16_t x2, x1, y2, y1; + const msp_biquad_df1_q15_coeffs *coeffs; + + /* Initialize local variables and pointers. */ + length = params->length; + coeffs = params->coeffs; + x2 = params->states->x2; + x1 = params->states->x1; + y2 = params->states->y2; + y1 = params->states->y1; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + +#if defined(__MSP430_HAS_MPY32__) + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN | MPYSAT; + + /* Calculate filtered output using direct form 1. */ + for (i = 0; i < length; i++) { + /* Process and update input states. */ + MPYS = x2; OP2 = coeffs->b2; + MACS = x1; OP2 = coeffs->b1By2; + OP2 = coeffs->b1By2; + x2 = x1; x1 = *src++; + MACS = x1; OP2 = coeffs->b0; + + /* Process and update output states and result. */ + MACS = y2; OP2 = coeffs->a2; + MACS = y1; OP2 = coeffs->a1By2; + OP2 = coeffs->a1By2; + y2 = y1; y1 = RESHI; + *dst++ = y1; + } + + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#else + int32_t temp; + int32_t result; + + /* Calculate filtered output using direct form 1. */ + for (i = 0; i < length; i++) { + /* Process and update input states. */ + result = __q15mpy(x2, coeffs->b2); + temp = __q15mpy(x1, coeffs->b1By2); + result += temp; result += temp; + x2 = x1; x1 = *src++; + result += __q15mpy(x1, coeffs->b0); + + /* Process and update output states and result. */ + result += __q15mpy(y2, coeffs->a2); + temp = __q15mpy(y1, coeffs->a1By2); + result += temp; result += temp; + result = (_q15)__saturate(result, INT16_MIN, INT16_MAX); + y2 = y1; y1 = result; + *dst++ = y1; + } +#endif + + /* Store the states and return. */ + params->states->x2 = x2; + params->states->x1 = x1; + params->states->y2 = y2; + params->states->y1 = y1; + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c new file mode 100755 index 000000000..cea68dedb --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c @@ -0,0 +1,226 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_biquad_df2_ext_q15(const msp_biquad_df2_ext_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t cmdId; + uint16_t length; + msp_status status; + MSP_LEA_IIRBQ2_PARAMS *leaParams; + + /* Initialize local length variable. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4) & + MSP_LEA_VALID_ADDRESS(params->states, 4) & + MSP_LEA_VALID_ADDRESS(params->coeffs, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Initialize min/max states */ + params->states->minEven = 0; + params->states->minOdd = 0; + params->states->maxEven = 0; + params->states->maxOdd = 0; + + /* Allocate MSP_LEA_IIRBQ2_PARAMS structure on LEA stack. */ + leaParams = (MSP_LEA_IIRBQ2_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_IIRBQ2_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_IIRBQ2_PARAMS structure. */ + leaParams->vectorSizeBy2 = length >> 1; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->state = MSP_LEA_CONVERT_ADDRESS(params->states); + leaParams->coeffs = MSP_LEA_CONVERT_ADDRESS(params->coeffs); + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__IIRBQ2EXTENDED, MSP_LEA_IIRBQ2EXTENDED, + sizeof(MSP_LEA_IIRBQ2EXTENDED)/sizeof(MSP_LEA_IIRBQ2EXTENDED[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__IIRBQ2EXTENDED command. */ + cmdId = LEACMD__IIRBQ2EXTENDED; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Free MSP_LEA_IIRBQ2_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_IIRBQ2_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_biquad_df2_ext_q15(const msp_biquad_df2_ext_q15_params *params, const _q15 *src, _q15 *dst) +{ + _q15 w0; + _q15 w1; + _q15 w2; + _q15 min; + _q15 max; + uint16_t i; + uint16_t length; + const msp_biquad_df2_ext_q15_coeffs *coeffs; + + /* Initialize local variables and pointers. */ + length = params->length; + coeffs = params->coeffs; + w1 = params->states->q1; + w2 = params->states->q2; + min = INT16_MAX; + max = INT16_MIN; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + +#if defined(__MSP430_HAS_MPY32__) + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + + /* Calculate filtered output using direct form 2. */ + for (i = 0; i < length; i++) { + /* Calculate intermediate state. */ + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN | MPYSAT; + RESLO = (uint32_t)coeffs->bias & 0xFFFF; + RESHI = (uint32_t)coeffs->bias >> 16; + MACS = *src++; OP2 = coeffs->a0; + MACS = w1; OP2 = coeffs->a1By2; + OP2 = coeffs->a1By2; + MACS = w2; OP2 = coeffs->a2; + w0 = RESHI; + + /* Calculate output. */ + MPYS = w0; OP2 = coeffs->b0; + MACS = w1; OP2 = coeffs->b1By2; + OP2 = coeffs->b1By2; + MACS = w2; OP2 = coeffs->b2; + *dst++ = RESHI; + + /* Update states and minimum and maximum values. */ + w2 = w1; + w1 = w0; + if (w0 < min) min = w0; + else if (w0 > max) max = w0; + } + + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#else + int32_t temp; + int32_t result; + + /* Calculate filtered output using direct form 2. */ + for (i = 0; i < length; i++) { + /* Calculate intermediate state. */ + result = (_q15)(coeffs->bias >> 16); + result += __q15mpy(*src++, coeffs->a0); + temp = __q15mpy(w1, coeffs->a1By2); + result += temp; result += temp; + result += __q15mpy(w2, coeffs->a2); + w0 = (_q15)__saturate(result, INT16_MIN, INT16_MAX); + + /* Calculate output. */ + result = __q15mpy(w0, coeffs->b0); + temp = __q15mpy(w1, coeffs->b1By2); + result += temp; result += temp; + result += __q15mpy(w2, coeffs->b2); + *dst++ = (_q15)__saturate(result, INT16_MIN, INT16_MAX); + + /* Update states and minimum and maximum values. */ + w2 = w1; + w1 = w0; + if (w0 < min) min = w0; + else if (w0 > max) max = w0; + } +#endif + + /* Store the states and return. */ + params->states->q1 = w1; + params->states->q2 = w2; + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c new file mode 100755 index 000000000..a2d3edfa1 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c @@ -0,0 +1,209 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_biquad_df2_q15(const msp_biquad_df2_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t cmdId; + uint16_t length; + msp_status status; + MSP_LEA_IIRBQ2_PARAMS *leaParams; + + /* Initialize local length variable. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4) & + MSP_LEA_VALID_ADDRESS(params->states, 4) & + MSP_LEA_VALID_ADDRESS(params->coeffs, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_IIRBQ2_PARAMS structure on LEA stack. */ + leaParams = (MSP_LEA_IIRBQ2_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_IIRBQ2_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_IIR_DF2_PARAMS structure. */ + leaParams->vectorSizeBy2 = length >> 1; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->state = MSP_LEA_CONVERT_ADDRESS(params->states); + leaParams->coeffs = MSP_LEA_CONVERT_ADDRESS(params->coeffs); + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__IIRBQ2, MSP_LEA_IIRBQ2, + sizeof(MSP_LEA_IIRBQ2)/sizeof(MSP_LEA_IIRBQ2[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__IIRBQ2 command. */ + cmdId = LEACMD__IIRBQ2; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Free MSP_LEA_IIRBQ2_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_IIRBQ2_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_biquad_df2_q15(const msp_biquad_df2_q15_params *params, const _q15 *src, _q15 *dst) +{ + _q15 w0; + _q15 w1; + _q15 w2; + uint16_t i; + uint16_t length; + const msp_biquad_df2_q15_coeffs *coeffs; + + /* Initialize local variables and pointers. */ + length = params->length; + coeffs = params->coeffs; + w1 = params->states->q1; + w2 = params->states->q2; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + +#if defined(__MSP430_HAS_MPY32__) + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN | MPYSAT; + + /* Calculate filtered output using direct form 2. */ + for (i = 0; i < length; i++) { + /* Calculate intermediate state. */ + MPYS = *src++; OP2 = coeffs->a0; + MACS = w1; OP2 = coeffs->a1By2; + OP2 = coeffs->a1By2; + MACS = w2; OP2 = coeffs->a2; + w0 = RESHI; + + /* Calculate output. */ + MPYS = w0; OP2 = coeffs->b0; + MACS = w1; OP2 = coeffs->b1By2; + OP2 = coeffs->b1By2; + MACS = w2; OP2 = coeffs->b2; + *dst++ = RESHI; + + /* Update states. */ + w2 = w1; + w1 = w0; + } + + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#else + int32_t temp; + int32_t result; + + /* Calculate filtered output using direct form 2. */ + for (i = 0; i < length; i++) { + /* Calculate intermediate state. */ + result = __q15mpy(*src++, coeffs->a0); + temp = __q15mpy(w1, coeffs->a1By2); + result += temp; result += temp; + result += __q15mpy(w2, coeffs->a2); + w0 = (_q15)__saturate(result, INT16_MIN, INT16_MAX); + + /* Calculate output. */ + result = __q15mpy(w0, coeffs->b0); + temp = __q15mpy(w1, coeffs->b1By2); + result += temp; result += temp; + result += __q15mpy(w2, coeffs->b2); + *dst++ = (_q15)__saturate(result, INT16_MIN, INT16_MAX); + + /* Update states. */ + w2 = w1; + w1 = w0; + } +#endif + + /* Store the states and return. */ + params->states->q1 = w1; + params->states->q2 = w2; + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c new file mode 100755 index 000000000..c3ade9d1c --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c @@ -0,0 +1,278 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_cmplx_fir_iq31(const msp_cmplx_fir_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint16_t cmdId; + uint16_t tapLength; + uint16_t bufferMask; + uint16_t outputLength; + bool enableCircBuf; + msp_status status; + MSP_LEA_FIRLONGCOMPLEX_PARAMS *leaParams; + + /* Save parameters to local variables. */ + tapLength = params->tapLength; + outputLength = params->length; + enableCircBuf = params->enableCircularBuffer; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two if circular buffer is enabled. */ + if (enableCircBuf && (outputLength & (outputLength-1))) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4) & + MSP_LEA_VALID_ADDRESS(params->coeffs, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Set buffer mask parameter. */ + if (enableCircBuf) { + bufferMask = 4*outputLength - 1; + } + else { + bufferMask = 0xffff; + } + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_FIRLONGCOMPLEX_PARAMS structure. */ + leaParams = (MSP_LEA_FIRLONGCOMPLEX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_FIRLONGCOMPLEX_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_FIRLONGCOMPLEX_PARAMS structure. */ + leaParams->vectorSize = outputLength; + leaParams->coeffs = MSP_LEA_CONVERT_ADDRESS(params->coeffs); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->tapLength = tapLength; + leaParams->bufferMask = bufferMask; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__FIRCOMPLEXLONG, MSP_LEA_FIRCOMPLEXLONG, + sizeof(MSP_LEA_FIRCOMPLEXLONG)/sizeof(MSP_LEA_FIRCOMPLEXLONG[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__FIRCOMPLEXLONG command. */ + cmdId = LEACMD__FIRCOMPLEXLONG; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Free MSP_LEA_FIRLONGCOMPLEX_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_FIRLONGCOMPLEX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + /* SW workaround for OOR interrupt when src is start of LEA memory. */ + if ((uintptr_t)src + (tapLength+outputLength)*(sizeof(int32_t)*2) > LEAMT) { + status = MSP_LEA_OUT_OF_RANGE; + } + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_cmplx_fir_iq31(const msp_cmplx_fir_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint16_t i; + uint16_t j; + uint16_t tapLength; + uint16_t outputLength; + bool enableCircBuf; + const _iq31 *srcPtr; + const _iq31 *coeffPtr; + int64_t realRes; + int64_t imagRes; + + /* Save parameters to local variables. */ + tapLength = params->tapLength << 1; + outputLength = params->length << 1; + enableCircBuf = params->enableCircularBuffer; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two if circular buffer is enabled. */ + if (enableCircBuf && (outputLength & (outputLength-1))) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + +#if defined(__MSP430_HAS_MPY32__) + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN | MPYSAT; +#endif + + /* Calculate filtered output using circular buffer. */ + if (enableCircBuf) { + uintptr_t mask; + const _iq31 *srcStartPtr; + const _iq31 *srcEndPtr; + + /* Initialize circular buffer mask and set start pointer. */ + mask = (uintptr_t)(2*outputLength*sizeof(_iq31) - 1); + srcStartPtr = (const _iq31 *)__circular_mask(src, mask); + srcEndPtr = srcStartPtr + 2*outputLength; + + /* Calculate filtered output. */ + for (i = 0; i < outputLength; i += 2) { + /* Reset data pointers and loop counters. */ + uint16_t j2; + coeffPtr = ¶ms->coeffs[tapLength - 2]; + srcPtr = (const _iq31 *)__circular_increment((const void *)src, i*sizeof(_iq31), mask); + j = srcEndPtr - srcPtr; + j = j > tapLength ? tapLength : j; + j2 = tapLength - j; + + /* Reset accumulators. */ + realRes = 0; + imagRes = 0; + + /* Multiply and accumulate inputs and coefficients. */ + while (j) { + /* Accumulate real and complex. */ + realRes += __q31mpy(CMPLX_REAL(srcPtr), CMPLX_REAL(coeffPtr)); + realRes -= __q31mpy(CMPLX_IMAG(srcPtr), CMPLX_IMAG(coeffPtr)); + imagRes += __q31mpy(CMPLX_REAL(srcPtr), CMPLX_IMAG(coeffPtr)); + imagRes += __q31mpy(CMPLX_IMAG(srcPtr), CMPLX_REAL(coeffPtr)); + + /* Update pointers */ + j -= 2; + srcPtr += 2; + coeffPtr-= 2; + } + + /* Multiply and accumulate inputs and coefficients after circular buffer loop. */ + srcPtr = srcStartPtr; + while (j2) { + /* Accumulate real and complex. */ + realRes += __q31mpy(CMPLX_REAL(srcPtr), CMPLX_REAL(coeffPtr)); + realRes -= __q31mpy(CMPLX_IMAG(srcPtr), CMPLX_IMAG(coeffPtr)); + imagRes += __q31mpy(CMPLX_REAL(srcPtr), CMPLX_IMAG(coeffPtr)); + imagRes += __q31mpy(CMPLX_IMAG(srcPtr), CMPLX_REAL(coeffPtr)); + + /* Update pointers */ + j2 -= 2; + srcPtr += 2; + coeffPtr-= 2; + } + + /* Saturate accumulators and store result. */ + *dst++ = (_iq31)__saturate(realRes, INT32_MIN, INT32_MAX); + *dst++ = (_iq31)__saturate(imagRes, INT32_MIN, INT32_MAX); + } + } + /* Calculate filtered output without circular buffer. */ + else { + for (i = 0; i < outputLength; i += 2) { + /* Reset accumulators. */ + realRes = 0; + imagRes = 0; + + /* Reset data pointers. */ + srcPtr = &src[i]; + coeffPtr = ¶ms->coeffs[tapLength - 2]; + + /* Multiply and accumulate inputs and coefficients. */ + j = tapLength; + while (j) { + /* Accumulate real and complex. */ + realRes += __q31mpy(CMPLX_REAL(srcPtr), CMPLX_REAL(coeffPtr)); + realRes -= __q31mpy(CMPLX_IMAG(srcPtr), CMPLX_IMAG(coeffPtr)); + imagRes += __q31mpy(CMPLX_REAL(srcPtr), CMPLX_IMAG(coeffPtr)); + imagRes += __q31mpy(CMPLX_IMAG(srcPtr), CMPLX_REAL(coeffPtr)); + + /* Update pointers */ + j -= 2; + srcPtr += 2; + coeffPtr-= 2; + } + + /* Saturate accumulators and store result. */ + *dst++ = (_iq31)__saturate(realRes, INT32_MIN, INT32_MAX); + *dst++ = (_iq31)__saturate(imagRes, INT32_MIN, INT32_MAX); + } + } + +#if defined(__MSP430_HAS_MPY32__) + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#endif + +#if defined(__MSP430_HAS_MPY32__) + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#endif + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c new file mode 100755 index 000000000..b06b6d373 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c @@ -0,0 +1,384 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_cmplx_fir_q15(const msp_cmplx_fir_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t tapLength; + uint16_t bufferMask; + uint16_t outputLength; + bool enableCircBuf; + msp_status status; + MSP_LEA_FIRCOMPLEX_PARAMS *leaParams; + + /* Save parameters to local variables. */ + tapLength = params->tapLength; + outputLength = params->length; + enableCircBuf = params->enableCircularBuffer; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two if circular buffer is enabled. */ + if (enableCircBuf && (outputLength & (outputLength-1))) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4) & + MSP_LEA_VALID_ADDRESS(params->coeffs, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Set buffer mask parameter. */ + if (enableCircBuf) { + bufferMask = 2*outputLength - 1; + } + else { + bufferMask = 0xffff; + } + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_FIRCOMPLEX_PARAMS structure. */ + leaParams = (MSP_LEA_FIRCOMPLEX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_FIRCOMPLEX_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_FIRCOMPLEX_PARAMS structure. */ + leaParams->vectorSize = outputLength; + leaParams->coeffs = MSP_LEA_CONVERT_ADDRESS(params->coeffs); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->tapLength = tapLength; + leaParams->bufferMask = bufferMask; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__FIRCOMPLEX command. */ + msp_lea_invokeCommand(LEACMD__FIRCOMPLEX); + + /* Free MSP_LEA_FIRCOMPLEX_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_FIRCOMPLEX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + /* SW workaround for OOR interrupt when src is start of LEA memory. */ + if ((uintptr_t)src + (tapLength+outputLength)*(sizeof(int16_t)*2) > LEAMT) { + status = MSP_LEA_OUT_OF_RANGE; + } + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_cmplx_fir_q15(const msp_cmplx_fir_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t i; + uint16_t j; + uint16_t tapLength; + uint16_t outputLength; + bool enableCircBuf; + const _q15 *srcPtr; + const _q15 *coeffPtr; + + /* Save parameters to local variables. */ + tapLength = params->tapLength << 1; + outputLength = params->length << 1; + enableCircBuf = params->enableCircularBuffer; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two if circular buffer is enabled. */ + if (enableCircBuf && (outputLength & (outputLength-1))) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + +#if defined(__MSP430_HAS_MPY32__) + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN | MPYSAT; +#endif //__MSP430_HAS_MPY32__ + + /* Calculate filtered output using circular buffer. */ + if (enableCircBuf) { + uintptr_t mask; + const _q15 *srcStartPtr; + const _q15 *srcEndPtr; + + /* Initialize circular buffer mask and set start pointer. */ + mask = (uintptr_t)(2*outputLength*sizeof(_q15) - 1); + srcStartPtr = (const _q15 *)__circular_mask(src, mask); + srcEndPtr = srcStartPtr + 2*outputLength; + + /* Calculate filtered output. */ + for (i = 0; i < outputLength; i += 2) { + /* Reset data pointers and loop counters. */ + uint16_t j2; + coeffPtr = ¶ms->coeffs[tapLength - 2]; + srcPtr = (const _q15 *)__circular_increment((const void *)src, i*sizeof(_q15), mask); + j = srcEndPtr - srcPtr; + j = j > tapLength ? tapLength : j; + j2 = tapLength - j; + +#if defined(__MSP430_HAS_MPY32__) + /* Reset result registers */ + MPY32CTL0 &= ~MPYC; + RESHI = 0; RESLO = 0; + + /* Multiply and accumulate real output. */ + while (j) { + MACS = CMPLX_REAL(srcPtr); + OP2 = CMPLX_REAL(coeffPtr); + MACS = -CMPLX_IMAG(srcPtr); + OP2 = CMPLX_IMAG(coeffPtr); + + /* Update pointers. */ + j -= 2; + srcPtr += 2; + coeffPtr-= 2; + } + + /* Multiply and accumulate inputs and coefficients after circular buffer loop. */ + srcPtr = srcStartPtr; + while (j2) { + MACS = CMPLX_REAL(srcPtr); + OP2 = CMPLX_REAL(coeffPtr); + MACS = -CMPLX_IMAG(srcPtr); + OP2 = CMPLX_IMAG(coeffPtr); + + /* Update pointers. */ + j2 -= 2; + srcPtr += 2; + coeffPtr-= 2; + } + + /* Store real result. */ + *dst++ = (_q15)RESHI; + + /* Reset data pointers and loop counters. */ + coeffPtr = ¶ms->coeffs[tapLength - 2]; + srcPtr = (const _q15 *)__circular_increment((const void *)src, i*sizeof(_q15), mask); + j = srcEndPtr - srcPtr; + j = j > tapLength ? tapLength : j; + j2 = tapLength - j; + + /* Reset result registers */ + MPY32CTL0 &= ~MPYC; + RESHI = 0; RESLO = 0; + + /* Multiply and accumulate imaginary output. */ + while (j) { + MACS = CMPLX_REAL(srcPtr); + OP2 = CMPLX_IMAG(coeffPtr); + MACS = CMPLX_IMAG(srcPtr); + OP2 = CMPLX_REAL(coeffPtr); + + /* Update pointers. */ + j -= 2; + srcPtr += 2; + coeffPtr-= 2; + } + + /* Multiply and accumulate inputs and coefficients after circular buffer loop. */ + srcPtr = srcStartPtr; + while (j2) { + MACS = CMPLX_REAL(srcPtr); + OP2 = CMPLX_IMAG(coeffPtr); + MACS = CMPLX_IMAG(srcPtr); + OP2 = CMPLX_REAL(coeffPtr); + + /* Update pointers. */ + j2 -= 2; + srcPtr += 2; + coeffPtr-= 2; + } + + /* Store imaginary result. */ + *dst++ = (_q15)RESHI; +#else + int32_t realRes; + int32_t imagRes; + + /* Reset accumulators. */ + realRes = 0; + imagRes = 0; + + /* Multiply and accumulate inputs and coefficients. */ + while (j) { + realRes += ((int32_t)CMPLX_REAL(srcPtr)*(int32_t)CMPLX_REAL(coeffPtr)); + realRes -= ((int32_t)CMPLX_IMAG(srcPtr)*(int32_t)CMPLX_IMAG(coeffPtr)); + imagRes += ((int32_t)CMPLX_REAL(srcPtr)*(int32_t)CMPLX_IMAG(coeffPtr)); + imagRes += ((int32_t)CMPLX_IMAG(srcPtr)*(int32_t)CMPLX_REAL(coeffPtr)); + + /* Update pointers. */ + j -= 2; + srcPtr += 2; + coeffPtr-= 2; + } + + /* Multiply and accumulate inputs and coefficients after circular buffer loop. */ + srcPtr = srcStartPtr; + while (j2) { + realRes += ((int32_t)CMPLX_REAL(srcPtr)*(int32_t)CMPLX_REAL(coeffPtr)); + realRes -= ((int32_t)CMPLX_IMAG(srcPtr)*(int32_t)CMPLX_IMAG(coeffPtr)); + imagRes += ((int32_t)CMPLX_REAL(srcPtr)*(int32_t)CMPLX_IMAG(coeffPtr)); + imagRes += ((int32_t)CMPLX_IMAG(srcPtr)*(int32_t)CMPLX_REAL(coeffPtr)); + + /* Update pointers. */ + j2 -= 2; + srcPtr += 2; + coeffPtr-= 2; + } + + /* Saturate accumulators and store result. */ + *dst++ = (_q15)__saturate((realRes >> 15), INT16_MIN, INT16_MAX); + *dst++ = (_q15)__saturate((imagRes >> 15), INT16_MIN, INT16_MAX); +#endif + } + } + /* Calculate filtered output without circular buffer. */ + else { + for (i = 0; i < outputLength; i += 2) { + /* Reset data pointers and loop counters. */ + srcPtr = &src[i]; + coeffPtr = ¶ms->coeffs[tapLength - 2]; + +#if defined(__MSP430_HAS_MPY32__) + /* Reset result registers */ + MPY32CTL0 &= ~MPYC; + RESHI = 0; RESLO = 0; + + /* Multiply and accumulate real output. */ + j = tapLength; + while (j) { + MACS = CMPLX_REAL(srcPtr); + OP2 = CMPLX_REAL(coeffPtr); + MACS = -CMPLX_IMAG(srcPtr); + OP2 = CMPLX_IMAG(coeffPtr); + + /* Update pointers. */ + j -= 2; + srcPtr += 2; + coeffPtr-= 2; + } + + /* Store real result. */ + *dst++ = (_q15)RESHI; + + /* Reset data pointers. */ + srcPtr = &src[i]; + coeffPtr = ¶ms->coeffs[tapLength - 2]; + + /* Reset result registers */ + MPY32CTL0 &= ~MPYC; + RESHI = 0; RESLO = 0; + + /* Multiply and accumulate imaginary output. */ + j = tapLength; + while (j) { + MACS = CMPLX_REAL(srcPtr); + OP2 = CMPLX_IMAG(coeffPtr); + MACS = CMPLX_IMAG(srcPtr); + OP2 = CMPLX_REAL(coeffPtr); + + /* Update pointers. */ + j -= 2; + srcPtr += 2; + coeffPtr-= 2; + } + + /* Store imaginary result. */ + *dst++ = (_q15)RESHI; +#else + int32_t realRes; + int32_t imagRes; + + /* Reset accumulators. */ + realRes = 0; + imagRes = 0; + + /* Multiply and accumulate inputs and coefficients. */ + j = tapLength; + while (j) { + realRes += ((int32_t)CMPLX_REAL(srcPtr)*(int32_t)CMPLX_REAL(coeffPtr)); + realRes -= ((int32_t)CMPLX_IMAG(srcPtr)*(int32_t)CMPLX_IMAG(coeffPtr)); + imagRes += ((int32_t)CMPLX_REAL(srcPtr)*(int32_t)CMPLX_IMAG(coeffPtr)); + imagRes += ((int32_t)CMPLX_IMAG(srcPtr)*(int32_t)CMPLX_REAL(coeffPtr)); + + /* Update pointers. */ + j -= 2; + srcPtr += 2; + coeffPtr-= 2; + } + + /* Saturate accumulators and store result. */ + *dst++ = (_q15)__saturate((realRes >> 15), INT16_MIN, INT16_MAX); + *dst++ = (_q15)__saturate((imagRes >> 15), INT16_MIN, INT16_MAX); +#endif + } + } + +#if defined(__MSP430_HAS_MPY32__) + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#endif + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c new file mode 100755 index 000000000..f51c59c02 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c @@ -0,0 +1,250 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_fir_iq31(const msp_fir_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint16_t cmdId; + uint16_t tapLength; + uint16_t bufferMask; + uint16_t outputLength; + bool enableCircBuf; + msp_status status; + MSP_LEA_FIRLONG_PARAMS *leaParams; + + /* Save parameters to local variables. */ + tapLength = params->tapLength; + outputLength = params->length; + enableCircBuf = params->enableCircularBuffer; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two if circular buffer is enabled. */ + if (enableCircBuf && (outputLength & (outputLength-1))) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4) & + MSP_LEA_VALID_ADDRESS(params->coeffs, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Set buffer mask parameter. */ + if (enableCircBuf) { + bufferMask = 2*outputLength - 1; + } + else { + bufferMask = 0xffff; + } + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_FIRLONG_PARAMS structure. */ + leaParams = (MSP_LEA_FIRLONG_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_FIRLONG_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_FIRLONG_PARAMS structure. */ + leaParams->vectorSize = outputLength; + leaParams->coeffs = MSP_LEA_CONVERT_ADDRESS(params->coeffs); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->tapLength = tapLength; + leaParams->bufferMask = bufferMask; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__FIRLONG, MSP_LEA_FIRLONG, + sizeof(MSP_LEA_FIRLONG)/sizeof(MSP_LEA_FIRLONG[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__FIRLONG command. */ + cmdId = LEACMD__FIRLONG; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Free MSP_LEA_FIRLONG_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_FIRLONG_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + /* SW workaround for OOR interrupt when src is start of LEA memory. */ + if ((uintptr_t)src + (tapLength+outputLength)*(sizeof(int32_t)) > LEAMT) { + status = MSP_LEA_OUT_OF_RANGE; + } + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_fir_iq31(const msp_fir_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint16_t i; + uint16_t j; + uint16_t tapLength; + uint16_t outputLength; + bool enableCircBuf; + const _iq31 *srcPtr; + const _iq31 *coeffPtr; + int64_t result; + + /* Save parameters to local variables. */ + tapLength = params->tapLength; + outputLength = params->length; + enableCircBuf = params->enableCircularBuffer; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that tap and output length are a multiple of two. */ + if ((tapLength & 1) || (outputLength & 1)) { + return MSP_SIZE_ERROR; + } + + /* Check that the length is a power of two if circular buffer is enabled. */ + if (enableCircBuf && (outputLength & (outputLength-1))) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + +#if defined(__MSP430_HAS_MPY32__) + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN | MPYSAT; +#endif + + /* Calculate filtered output using circular buffer. */ + if (enableCircBuf) { + uintptr_t mask; + const _iq31 *srcStartPtr; + const _iq31 *srcEndPtr; + + /* Initialize circular buffer mask and set start pointer. */ + mask = (uintptr_t)(2*outputLength*sizeof(_iq31) - 1); + srcStartPtr = (const _iq31 *)__circular_mask(src, mask); + srcEndPtr = srcStartPtr + 2*outputLength; + + /* Calculate filtered output. */ + for (i = 0; i < outputLength; i++) { + /* Reset data pointers and loop counters. */ + uint16_t j2; + coeffPtr = ¶ms->coeffs[tapLength-1]; + srcPtr = (const _iq31 *)__circular_increment((const void *)src, i*sizeof(_iq31), mask); + j = srcEndPtr - srcPtr; + j = j > tapLength ? tapLength : j; + j2 = tapLength - j; + + /* Reset accumulator. */ + result = 0; + + /* Multiply and accumulate inputs and coefficients. */ + while (j--) { + result += __q31mpy(*srcPtr++, *coeffPtr--); + result = __saturate(result, INT32_MIN, INT32_MAX); + } + + /* Multiply and accumulate inputs and coefficients after circular buffer loop. */ + srcPtr = srcStartPtr; + while (j2--) { + result += __q31mpy(*srcPtr++, *coeffPtr--); + result = __saturate(result, INT32_MIN, INT32_MAX); + } + + /* Store accumulated result. */ + *dst++ = (_iq31)result; + } + } + /* Calculate filtered output without circular buffer. */ + else { + for (i = 0; i < outputLength; i++) { + /* Reset accumulator. */ + result = 0; + + /* Reset data pointers and loop counters. */ + srcPtr = &src[i]; + coeffPtr = ¶ms->coeffs[tapLength - 1]; + j = tapLength; + + /* Multiply and accumulate inputs and coefficients. */ + while (j--) { + /* Multiply and saturate accumulator. */ + result += __q31mpy(*srcPtr++, *coeffPtr--); + result = __saturate(result, INT32_MIN, INT32_MAX); + } + + /* Store accumulated result. */ + *dst++ = (_iq31)result; + } + } + +#if defined(__MSP430_HAS_MPY32__) + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#endif + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c new file mode 100755 index 000000000..829b8d8b2 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c @@ -0,0 +1,272 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_fir_q15(const msp_fir_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t tapLength; + uint16_t bufferMask; + uint16_t outputLength; + bool enableCircBuf; + msp_status status; + MSP_LEA_FIR_PARAMS *leaParams; + + /* Save parameters to local variables. */ + tapLength = params->tapLength; + outputLength = params->length; + enableCircBuf = params->enableCircularBuffer; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that tap and output length are a multiple of two. */ + if ((tapLength & 1) || (outputLength & 1)) { + return MSP_SIZE_ERROR; + } + + /* Check that the length is a power of two if circular buffer is enabled. */ + if (enableCircBuf && (outputLength & (outputLength-1))) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4) & + MSP_LEA_VALID_ADDRESS(params->coeffs, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Set buffer mask parameter. */ + if (enableCircBuf) { + bufferMask = outputLength - 1; + } + else { + bufferMask = 0xffff; + } + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_FIR_PARAMS structure. */ + leaParams = (MSP_LEA_FIR_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_FIR_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_FIR_PARAMS structure. */ + leaParams->vectorSize = outputLength; + leaParams->coeffs = MSP_LEA_CONVERT_ADDRESS(params->coeffs); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->tapLength = tapLength; + leaParams->bufferMask = bufferMask; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__FIR command. */ + msp_lea_invokeCommand(LEACMD__FIR); + + /* Free MSP_LEA_FIR_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_FIR_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + /* SW workaround for OOR interrupt when src is start of LEA memory. */ + if ((uintptr_t)src + (tapLength+outputLength)*(sizeof(int16_t)) > LEAMT) { + status = MSP_LEA_OUT_OF_RANGE; + } + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_fir_q15(const msp_fir_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t i; + uint16_t j; + uint16_t tapLength; + uint16_t outputLength; + bool enableCircBuf; + const _q15 *srcPtr; + const _q15 *coeffPtr; + + /* Save parameters to local variables. */ + tapLength = params->tapLength; + outputLength = params->length; + enableCircBuf = params->enableCircularBuffer; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that tap and output length are a multiple of two. */ + if ((tapLength & 1) || (outputLength & 1)) { + return MSP_SIZE_ERROR; + } + + /* Check that the length is a power of two if circular buffer is enabled. */ + if (enableCircBuf && (outputLength & (outputLength-1))) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + +#if defined(__MSP430_HAS_MPY32__) + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN | MPYSAT; +#endif //__MSP430_HAS_MPY32__ + + /* Calculate filtered output using circular buffer. */ + if (enableCircBuf) { + uintptr_t mask; + const _q15 *srcStartPtr; + const _q15 *srcEndPtr; + + /* Initialize circular buffer mask and set start pointer. */ + mask = (uintptr_t)(2*outputLength*sizeof(_q15) - 1); + srcStartPtr = (const _q15 *)__circular_mask(src, mask); + srcEndPtr = srcStartPtr + 2*outputLength; + + /* Calculate filtered output. */ + for (i = 0; i < outputLength; i++) { + /* Reset data pointers and loop counters. */ + uint16_t j2; + coeffPtr = ¶ms->coeffs[tapLength-1]; + srcPtr = (const _q15 *)__circular_increment((const void *)src, i*sizeof(_q15), mask); + j = srcEndPtr - srcPtr; + j = j > tapLength ? tapLength : j; + j2 = tapLength - j; + +#if defined(__MSP430_HAS_MPY32__) + /* Reset multiplier context. */ + MPY32CTL0 &= ~MPYC; + RESLO = 0; RESHI = 0; + + /* Multiply and accumulate inputs and coefficients. */ + while (j--) { + MACS = *srcPtr++; + OP2 = *coeffPtr--; + } + + /* Multiply and accumulate inputs and coefficients after circular buffer loop. */ + srcPtr = srcStartPtr; + while (j2--) { + MACS = *srcPtr++; + OP2 = *coeffPtr--; + } + + /* Store accumulated result. */ + *dst++ = RESHI; +#else //__MSP430_HAS_MPY32__ + /* Reset accumulator. */ + _iq31 result = 0; + + /* Multiply and accumulate inputs and coefficients. */ + while (j--) { + result += (_iq31)*srcPtr++ * (_iq31)*coeffPtr--; + } + + /* Multiply and accumulate inputs and coefficients after circular buffer loop. */ + srcPtr = srcStartPtr; + while (j2--) { + result += (_iq31)*srcPtr++ * (_iq31)*coeffPtr--; + } + + /* Saturate accumulator and store result. */ + *dst++ = __saturate(result >> 15, INT16_MIN, INT16_MAX); +#endif //__MSP430_HAS_MPY32__ + } + } + /* Calculate filtered output without circular buffer. */ + else { + for (i = 0; i < outputLength; i++) { + /* Reset data pointers and loop counters. */ + srcPtr = &src[i]; + coeffPtr = ¶ms->coeffs[tapLength-1]; + j = tapLength; + +#if defined(__MSP430_HAS_MPY32__) + /* Reset multiplier context. */ + MPY32CTL0 &= ~MPYC; + RESLO = 0; RESHI = 0; + + /* Multiply and accumulate inputs and coefficients. */ + while (j--) { + MACS = *srcPtr++; + OP2 = *coeffPtr--; + } + + /* Store accumulated result. */ + *dst++ = RESHI; +#else //__MSP430_HAS_MPY32__ + /* Reset accumulator. */ + _iq31 result = 0; + + /* Multiply and accumulate inputs and coefficients. */ + while (j--) { + result += (_iq31)*srcPtr++ * (_iq31)*coeffPtr--; + } + + /* Saturate accumulator and store result. */ + *dst++ = __saturate(result >> 15, INT16_MIN, INT16_MAX); +#endif //__MSP430_HAS_MPY32__ + } + } + +#if defined(_MSP430_HAS_MPY32_) + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#endif + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c new file mode 100755 index 000000000..25abd472e --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c @@ -0,0 +1,41 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +volatile uint16_t msp_lea_locked; + +volatile uint16_t msp_lea_ifg; + +#endif diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c new file mode 100755 index 000000000..d0bbbdb1e --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c @@ -0,0 +1,69 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +#if defined(MSP_DISABLE_LPM0) +#warning "DSPLib: LPM0 is disabled, undefine MSP_DISABLE_LPM0 to enable LPM0. +#elif ((MSP_LEA_REVISION==MSP_LEA_REVISION_A) && !defined(MSP_ENABLE_LPM0)) +#warning "DSPLib: Building for revision A of LEA, LPM0 is disabled to work \ +around LEA1 errata. See the LEA chapter of API User's Guide and device errata \ +sheet for more details." +#endif + +void msp_lea_init(void) +{ + /* Initialize DSPLib flags. */ + msp_lea_ifg = 0; + msp_lea_locked = 0; + + /* Initialize LEA registers. */ + LEACNF0 = LEALPR | LEAILPM; + LEACNF1 = 0; + LEACNF2 = LEAMT >> 2; + LEAPMS1 = 0; + LEAPMS0 = 0; + LEAPMDST = 0; + LEAPMCTL |= LEACMDEN; + LEAIE |= LEAPMCMDIE; + LEACMCTL = 0; + +#if (MSP_LEA_REVISION == MSP_LEA_REVISION_A) + msp_lea_initCommandTable(); +#endif + + return; +} + +#endif diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c new file mode 100755 index 000000000..b30b0ff9c --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c @@ -0,0 +1,52 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +#if __GXX_ABI_VERSION == 1011 || __GXX_ABI_VERSION == 1013 +__interrupt void tpl_direct_irq_handler_LEA_VECTOR(void) +#elif __GXX_ABI_VERSION == 1002 +void __attribute__ ((interrupt(LEA_VECTOR))) tpl_direct_irq_handler_LEA_VECTOR(void) +#else + #error "Unsupported ABI" +#endif +{ + /* Save the interrupt flags, clear interrupt and exit LPM0. */ + uint16_t flags = LEAIFG; + LEAIFG |= flags; + msp_lea_ifg = flags; + __bic_SR_register_on_exit(LPM0_bits); +} + +#endif diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c new file mode 100755 index 000000000..930d76c61 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c @@ -0,0 +1,343 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +#define MSP_LEA_REV_A_CHECKSUM 0x7877D27F +#define MSP_LEA_REV_B_CHECKSUM 0xAE790580 + +#define MSP_LEA_COMMAND_TABLE_LENGTH 0x0008 +#define MSP_LEA_COMMAND_TABLE_RESERVED 0x0002 +#define MSP_LEA_COMMAND_TABLE_NULL 0xFFFF +#define MSP_LEA_COMMAND_ID_BASE 0x01e0 +#define MSP_LEA_COMMAND_ID_INCR 0x0004 +#define MSP_LEA_COMMAND_ADDRESS_BASE 0x3C00 +#define MSP_LEA_COMMAND_ADDRESS_INCR 0x0080 + +static uint16_t commandTable[MSP_LEA_COMMAND_TABLE_LENGTH]; + +#if (MSP_LEA_REVISION == MSP_LEA_REVISION_A) +#warning "DSPLib: Building for revision A of LEA, commands will be patched \ +with the latest revision of firmware." +#endif + +void msp_lea_initCommandTable(void) +{ + uint16_t i; + + /* Initialize command table. */ + for (i = 0; i < MSP_LEA_COMMAND_TABLE_LENGTH; i++) { + commandTable[i] = MSP_LEA_COMMAND_TABLE_NULL; + } +} + +uint16_t msp_lea_getRevision(void) +{ + uint32_t checksum; + + /* Read LEA code memory checksum */ + LEACMCTL = 0x2ffc0000 | LEAINC | LEACMAE; + checksum = LEACMA; + LEACMCTL = 0; + + /* Return LEA code ROM revision */ + switch (checksum) { + case MSP_LEA_REV_A_CHECKSUM: + return MSP_LEA_REVISION_A; + case MSP_LEA_REV_B_CHECKSUM: + return MSP_LEA_REVISION_B; + default: + return MSP_LEA_REVISION_UNKNOWN; + } +} + +uint16_t msp_lea_loadCommand(uint16_t commandId, const void *command, uint16_t length) +{ + uint16_t i; + uint16_t j; + uint16_t commandAddress; + uint32_t *commandPtr = (uint32_t *)command; + + /* Return command ID if already loaded or find next open command entry. */ + for (i = 0; i < MSP_LEA_COMMAND_TABLE_LENGTH-MSP_LEA_COMMAND_TABLE_RESERVED; i++) { + /* Check if command is loaded, calculate and return ID. */ + if (commandTable[i] == commandId) { + return (MSP_LEA_COMMAND_ID_BASE + i*MSP_LEA_COMMAND_ID_INCR); + } + /* Check if table entry is NULL, break and load command */ + if (commandTable[i] == MSP_LEA_COMMAND_TABLE_NULL) { + break; + } + } + + /* Calculate command address. */ + commandAddress = MSP_LEA_COMMAND_ADDRESS_BASE + i*MSP_LEA_COMMAND_ADDRESS_INCR; + + /* Load command to address. */ + LEACMCTL = LEACRACTION; + while (LEACMCTL & LEACRACTION); + LEACMCTL = ((uint32_t)commandAddress << 16) | LEAINC | LEACMAE; + for (j = 0; j < length; j++) { + LEACMA = commandPtr[j]; + } + LEACMCTL = 0; + + /* Store command ID of the loaded function and return new ID. */ + commandTable[i] = commandId; + if (length > 32) { + commandTable[i+1] = commandId; + } + return (commandAddress >> 5); +} + +const uint32_t MSP_LEA_MIN[23] = { + 0x7ffff254,0x400ff250,0x7ffff60a,0x7ffff685, + 0xa8000004,0x7ffff4a1,0x7ffff781,0x80000001, + 0x8006ffff,0x80880000,0x80807fff,0xb0000012, + 0x080fffff,0x7ffffb08,0x260ffe10,0x7ffff568, + 0x7ffffb18,0x260ffe90,0x080ff568,0x7ffff204, + 0x7fffffff,0x308fffff,0xb0800000 +}; + +const uint32_t MSP_LEA_MINUNSIGNED[23] = { + 0x7ffff254,0x400ff250,0x7ffff60a,0x7ffff685, + 0xa8000004,0x7ffff4a1,0x7ffff781,0x80000001, + 0x8006ffff,0x80880000,0x8080ffff,0xb0000012, + 0x080fffff,0x7ffffb48,0x260ffe10,0x7ffff568, + 0x7ffffb58,0x260ffe90,0x080ff568,0x7ffff204, + 0x7fffffff,0x308fffff,0xb0800000 +}; + +const uint32_t MSP_LEA_MINLONGMATRIX[20] = { + 0x7ffff256,0x80000001,0x010ff250,0x490ff003, + 0x8082ffff,0x7ffff611,0x7ffffc32,0x082ff782, + 0x7ffff685,0x80060000,0xb000000e,0x002ff462, + 0x261ffa08,0x002ff281,0x7ffff562,0x7ffff20d, + 0x7ffff114,0x388fffff,0x308fffff,0xb0800000 +}; + +const uint32_t MSP_LEA_MINUNSIGNEDLONGMATRIX[20] = { + 0x7ffff256,0x80000001,0x010ff250,0x490ff003, + 0x8082ffff,0x7ffff611,0x7ffffc32,0x082ff782, + 0x7ffff685,0x80060000,0xb000000e,0x002ff462, + 0x261ffa48,0x002ff281,0x7ffff562,0x7ffff20d, + 0x7ffff114,0x388fffff,0x308fffff,0xb0800000 +}; + +const uint32_t MSP_LEA_MAX[23] = { + 0x7ffff254,0x400ff250,0x7ffff60a,0x7ffff685, + 0xa8000004,0x7ffff4a1,0x7ffff781,0x80000001, + 0x8006ffff,0x80880000,0x80808000,0xb0000012, + 0x080fffff,0x7ffffb88,0x260ffe10,0x7ffff568, + 0x7ffffb98,0x260ffe90,0x080ff568,0x7ffff204, + 0x7fffffff,0x308fffff,0xb0800000 +}; + +const uint32_t MSP_LEA_MAXUNSIGNED[23] = { + 0x7ffff254,0x400ff250,0x7ffff60a,0x7ffff685, + 0xa8000004,0x7ffff4a1,0x7ffff781,0x80000001, + 0x8006ffff,0x80880000,0x80800000,0xb0000012, + 0x080fffff,0x7ffffbc8,0x260ffe10,0x7ffff568, + 0x7ffffbd8,0x260ffe90,0x080ff568,0x7ffff204, + 0x7fffffff,0x308fffff,0xb0800000 +}; + +const uint32_t MSP_LEA_MAXLONGMATRIX[20] = { + 0x7ffff256,0x80000001,0x010ff250,0x490ff003, + 0x8082ffff,0x7ffff611,0x7ffffc32,0x082ff782, + 0x7ffff685,0x80060000,0xb000000e,0x002ff462, + 0x261ffa88,0x002ff281,0x7ffff562,0x7ffff20d, + 0x7ffff114,0x388fffff,0x308fffff,0xb0800000 +}; + +const uint32_t MSP_LEA_MAXUNSIGNEDLONGMATRIX[20] = { + 0x7ffff256,0x80000001,0x010ff250,0x490ff003, + 0x8082ffff,0x7ffff611,0x7ffffc32,0x082ff782, + 0x7ffff685,0x80060000,0xb000000e,0x002ff462, + 0x261ffac8,0x002ff281,0x7ffff562,0x7ffff20d, + 0x7ffff114,0x388fffff,0x308fffff,0xb0800000 +}; + +const uint32_t MSP_LEA_MACLONGMATRIX[18] = { + 0x7ffff254,0x80000001,0x080ff251,0x000ff781, + 0x7ffff680,0x480ff694,0x188ff611,0x81040000, + 0xb000000e,0x102ff606,0x7ff99fff,0x7ff8ffff, + 0x102a6ed7,0x7fffefdf,0x188fe93c,0x7fffffff, + 0x310fffff,0xb0800000 +}; + +const uint32_t MSP_LEA_FFTCOMPLEXAUTOSCALING[58] = { + 0x7ffff254,0x400ff250,0x7ffff780,0x80000001, + 0x80810000,0x100ff251,0xb000000b,0x180ff61c, + 0x100ff234,0x180ff23d,0x309fffff,0x389ff4c2, + 0x7ffff62d,0x7ffff61c,0x7ffff250,0x7ffff600, + 0x8005fffe,0x250ff459,0x80870001,0x7ffff788, + 0xa8000000,0x7ffff618,0x7ffff617,0x8003ffff, + 0x7ffff675,0x800a0800,0x800907ff,0xb0000035, + 0x230ff670,0x2547f671,0x27dfffff,0x7ffff450, + 0x12bff606,0x04bc1789,0x7ffdb61c,0x7ffcdfff, + 0x12b57fff,0x7ffc049b,0x7ffcc21d,0xb000002c, + 0x04bda01c,0x12b57fff,0x3b3c049b,0x353cc21d, + 0x04bda01c,0xa8000000,0x3b3d7407,0x353fe49b, + 0x7fffe21d,0x7fffe01c,0x3b3ff675,0x353ff4cf, + 0xa8000004,0x7ffff6fd,0x7ffff470,0x80880000, + 0x7ffff262,0xb0c00000 +}; + +const uint32_t MSP_LEA_FFTCOMPLEXLONG[64] = { + 0x7ffff254,0x400ff250,0x7ffff60b,0x8005ffff, + 0x25bff45a,0x8005ffff,0xa8000006,0x25bff452, + 0xa000fffb,0x90820000,0x7ffff788,0x80820002, + 0x80050002,0x80010003,0x80080000,0x800a0800, + 0x80000001,0x800907ff,0xb000003d,0x908a0001, + 0x2547f450,0x108ff622,0x90030000,0x90820002, + 0x7ffa3783,0x7ff896a3,0x7ff8ee9c,0x12aa5606, + 0xb0000029,0x7ff8ced5,0x7ffa7fff,0x7ff88e98, + 0x7ffa2b04,0x008fee99,0x0ccfe94b,0x7fffea25, + 0x1087ea5d,0x39088824,0x3b2a285d,0x3108ce9c, + 0x12aa7fff,0x3d48ce9d,0x7ffa7fff,0x7ff88e98, + 0x7ffa2b04,0x008fee99,0x0ccfe94b,0x7fffea25, + 0x7fffea5d,0x390fe824,0x3b2fe85d,0x310fffff, + 0x3d4fffff,0x90020002,0x7ffff623,0x80010001, + 0xa8000002,0x213ff432,0x7ffff625,0xa8000004, + 0x80080000,0x900a0001,0xa0000005,0xb0800000 +}; + +const uint32_t MSP_LEA_MPYLONGMATRIX[17] = { + 0x7ffff254,0x80000001,0x080ff251,0x000ff781, + 0x480ff694,0x7ffff681,0x7ffff612,0x10aff606, + 0x184fffff,0x7ff8ffff,0xb000000f,0x7ff99690, + 0x10aa6ed7,0x184fefdc,0x7ff99fff,0x3108ffff, + 0xb0800000 +}; + +const uint32_t MSP_LEA_IIRBQ1[31] = { + 0x7ffff256,0x80000001,0x80020000,0x010ff250, + 0x090ff780,0x7ffff617,0x410ff686,0x118ff695, + 0x01cff601,0x188ff204,0x7ff8dfff,0xb000001b, + 0x7ff80890,0x50088810,0x18887211,0x31c80859, + 0x11c88810,0x1a8fe859,0x7ff80851,0x7ff8c810, + 0x7fffe810,0x7ff88816,0x7ff8c851,0x1a8fe851, + 0x188fe854,0x102ff0e4,0x7ff8d235,0x31080890, + 0x338fffff,0x398fffff,0xb0800000 +}; + +const uint32_t MSP_LEA_IIRBQ2[32] = { + 0x7ffff256,0x80000001,0x010ff250,0x090ff780, + 0x7ffff617,0x80020000,0x11cff695,0x8001fffd, + 0x188ff686,0x7ff8dfff,0x18887210,0xb000001e, + 0x7ff81219,0x100fe810,0x7ff84810,0x7ff8e816, + 0x7ff8a859,0x7fffe859,0x7fffe859,0x188ff096, + 0x7ff8f235,0x7ff828d9,0x11c88859,0x18a85210, + 0x39c82810,0x7fffe85c,0x11c88810,0x188fe810, + 0x7ff8d084,0x18887210,0x31081219,0xb0800000 +}; + +const uint32_t MSP_LEA_IIRBQ2EXTENDED[47] = { + 0x7ffff256,0x80000001,0x8001fffc,0x80020000, + 0x010ff250,0x090ff780,0x7ffff617,0x7ffff695, + 0x118ff686,0x088fffff,0x188fffff,0x7ff8dfff, + 0x18886850,0xb0000024,0x7ff80859,0x100fe810, + 0x7ff84810,0x7ff8e816,0x7ff8a859,0x7fffe859, + 0x7fffe859,0x7ffff096,0x018ff234,0x498ff235, + 0x7ffff90d,0x188ff984,0x3b88f235,0x338828d9, + 0x51888859,0x18a85210,0x39c82810,0x088fe85c, + 0x11888810,0x188fe810,0x7ff8d084,0x18886850, + 0x31080859,0x018fffff,0x098ffb10,0x7ffffe80, + 0x7ffff004,0x7ffffb99,0x7ffffe91,0x7ffff01c, + 0x7fffffff,0x31cfffff,0xb0800000 +}; + +const uint32_t MSP_LEA_FIRLONG[30] = { + 0x7ffff255,0x7ffff250,0x7ffff444,0x7ffff450, + 0x80000001,0x008ff604,0x008ff780,0x488ff682, + 0x8001ffff,0x221ff605,0x7ffff420,0x7ffff613, + 0x81050000,0x7ffff601,0xb000001c,0x220ff420, + 0x480ff646,0x7ffff697,0x4d2ff780,0x198ff049, + 0x570ff22c,0xb000001a,0x7ff99fff,0x7ff8ffff, + 0x570a6ed2,0x198fee9a,0x7ff98914,0x210fffff, + 0x308ff094,0xb0800000 +}; + +const uint32_t MSP_LEA_FIRCOMPLEXLONG[43] = { + 0x7ffff255,0x80020001,0x00cff250,0x08cff780, + 0x7ffff690,0x8001ffff,0x201ff084,0x408ff615, + 0x220ff603,0xa8000000,0x81050000,0x7ffff048, + 0x80010001,0xb0000029,0x201ff420,0x7ffff441, + 0x7ffff616,0x7ffff687,0x4d0ff780,0x8002ffff, + 0x19aff22c,0x572fffff,0xb0000025,0x7ff9b229, + 0x7ff8dfff,0x19ca4e9b,0x7ff8eed2,0x7ff98851, + 0x19aa6ed6,0x572fef9a,0x7ff98b14,0x7ff8ffff, + 0x19aa4ed3,0x7ff8eed2,0x7ff98914,0x572a6ed7, + 0x19afefda,0x7ff9a851,0x30aff20c,0x80020002, + 0x30afffff,0x202fffff,0xb0800000 +}; + +const uint32_t MSP_LEA_INTERLEAVEEVENEVEN[22] = { + 0x80000001,0x7ffff255,0x008ff250,0x488ff68a, + 0x7ffff605,0xa8000004,0x25aff61b,0x7ffff69a, + 0xa8000006,0xa8000004,0x7ffff4b2,0x7ffff4aa, + 0x7ffff621,0x000ff78a,0xb0000014,0x7ffff004, + 0x08aff085,0x0aaff09c,0x000ff09d,0x30afffff, + 0x38aff004,0xb0800000 +}; + +const uint32_t MSP_LEA_INTERLEAVEEVENODD[24] = { + 0x80000001,0x7ffff255,0x008ff250,0x488ff68a, + 0x7ffff605,0xa8000004,0x25aff61b,0x7ffff69a, + 0xa8000006,0xa8000004,0x7ffff4b2,0x7ffff4aa, + 0x7ffff622,0x7ffff621,0x220fffff,0x000ff78a, + 0xb0000016,0x7ffff004,0x08aff08d,0x0aaff09c, + 0x000ff015,0x30afffff,0x38cff004,0xb0800000 +}; + +const uint32_t MSP_LEA_INTERLEAVEODDEVEN[22] = { + 0x80000001,0x7ffff255,0x008ff250,0x488ff68a, + 0x7ffff605,0xa8000004,0x25aff61b,0x7ffff69a, + 0xa8000006,0xa8000004,0x7ffff4b2,0x7ffff4aa, + 0x7ffff621,0x000ff78a,0xb0000014,0x7ffff00c, + 0x08aff08d,0x0aaff014,0x000ff015,0x30afffff, + 0x38aff00c,0xb0800000 +}; + +const uint32_t MSP_LEA_INTERLEAVEODDODD[24] = { + 0x80000001,0x7ffff255,0x008ff250,0x488ff68a, + 0x7ffff605,0xa8000004,0x25aff61b,0x7ffff69a, + 0xa8000006,0xa8000004,0x7ffff4b2,0x7ffff4aa, + 0x7ffff621,0x7ffff622,0x210fffff,0x000ff78a, + 0xb0000016,0x7ffff00c,0x08aff085,0x0aaff014, + 0x000ff09d,0x30afffff,0x38cff00c,0xb0800000 +}; + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c new file mode 100755 index 000000000..778d5e335 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c @@ -0,0 +1,48 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform matrix absolute value of a source matrix. + */ +msp_status msp_matrix_abs_iq31(const msp_matrix_abs_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + msp_abs_iq31_params paramsTemp; + + /* Use real vector absolute value function. */ + paramsTemp.length = params->rows * params->cols; + + return msp_abs_iq31(¶msTemp, src, dst); +} + + diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c new file mode 100755 index 000000000..107266a98 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c @@ -0,0 +1,48 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform matrix absolute value of a source matrix. + */ +msp_status msp_matrix_abs_q15(const msp_matrix_abs_q15_params *params, const _q15 *src, _q15 *dst) +{ + msp_abs_q15_params paramsTemp; + + /* Use real vector absolute value function. */ + paramsTemp.length = params->rows * params->cols; + + return msp_abs_q15(¶msTemp, src, dst); +} + + diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c new file mode 100755 index 000000000..f5a86d0a9 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c @@ -0,0 +1,48 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform matrix addition of two source matrices. + */ +msp_status msp_matrix_add_iq31(const msp_matrix_add_iq31_params *params, const _iq31 *srcA, const _iq31 *srcB, _iq31 *dst) +{ + msp_add_iq31_params paramsTemp; + + /* Use real vector addition function. */ + paramsTemp.length = params->rows * params->cols; + + return msp_add_iq31(¶msTemp, srcA, srcB, dst); +} + + diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c new file mode 100755 index 000000000..4720e56f9 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c @@ -0,0 +1,48 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform matrix addition of two source matrices. + */ +msp_status msp_matrix_add_q15(const msp_matrix_add_q15_params *params, const int16_t *srcA, const int16_t *srcB, int16_t *dst) +{ + msp_add_q15_params paramsTemp; + + /* Use real vector addition function. */ + paramsTemp.length = params->rows * params->cols; + + return msp_add_q15(¶msTemp, srcA, srcB, dst); +} + + diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c new file mode 100755 index 000000000..be5194a2e --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c @@ -0,0 +1,271 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_matrix_mpy_iq31(const msp_matrix_mpy_iq31_params *params, const _iq31 *srcA, const _iq31 *srcB, _iq31 *dst) +{ + uint16_t i; + uint16_t j; + uint16_t cmdId; + uint16_t srcARows; + uint16_t srcACols; + uint16_t srcBRows; + uint16_t srcBCols; + msp_status status; + MSP_LEA_MACLONG_PARAMS *leaParams; + + /* Initialize the row and column sizes. */ + srcARows = params->srcARows; + srcACols = params->srcACols; + srcBRows = params->srcBRows; + srcBCols = params->srcBCols; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that column of A equals rows of B */ + if (srcACols != srcBRows) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(srcA, 4) & + MSP_LEA_VALID_ADDRESS(srcB, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MACLONG_PARAMS structure. */ + leaParams = (MSP_LEA_MACLONG_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MACLONG_PARAMS)/sizeof(uint32_t)); + + /* Initialize MSP_LEA_MACLONG_PARAMS structure. */ + leaParams->vectorSize = srcACols; + leaParams->input1Offset = 1; + leaParams->input2Offset = srcBCols; + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__MACLONGMATRIX, MSP_LEA_MACLONGMATRIX, + sizeof(MSP_LEA_MACLONGMATRIX)/sizeof(MSP_LEA_MACLONGMATRIX[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__MACLONGMATRIX command. */ + cmdId = LEACMD__MACLONGMATRIX; +#endif //MSP_LEA_REVISION + + /* Multiply srcA row by srcB column and accumulate. */ + for (i = 0; i < srcARows*srcACols; i += srcACols) { + for (j = 0; j < srcBCols; j++) { + /* Set MSP_LEA_MACLONG_PARAMS for row by column MAC. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(&srcB[j]); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst++); + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(&srcA[i]); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + break; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + break; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + break; + } +#endif //MSP_DISABLE_DIAGNOSTICS + } +#ifndef MSP_DISABLE_DIAGNOSTICS + if (status != MSP_SUCCESS) { + break; + } +#endif //MSP_DISABLE_DIAGNOSTICS + } + + /* Free MSP_LEA_MACLONG_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_MACLONG_PARAMS)/sizeof(uint32_t)); + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +/* + * Perform matrix multiplication of two source matrices. + */ +msp_status msp_matrix_mpy_iq31(const msp_matrix_mpy_iq31_params *params, const _iq31 *srcA, const _iq31 *srcB, _iq31 *dst) +{ + uint16_t cntr; + uint16_t dst_row; + uint16_t dst_col; + uint16_t srcARows; + uint16_t srcACols; + uint16_t srcBRows; + uint16_t srcBCols; + uint16_t row_offset; + uint16_t col_offset; + uint16_t dst_row_offset; + + /* Initialize the row and column sizes. */ + srcARows = params->srcARows; + srcACols = params->srcACols; + srcBRows = params->srcBRows; + srcBCols = params->srcBCols; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that column of A equals rows of B */ + if (srcACols != srcBRows) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* In initialize loop counters. */ + cntr = 0; + dst_row = 0; + dst_col = 0; + row_offset = 0; + col_offset = 0; + dst_row_offset = 0; + +#if defined(__MSP430_HAS_MPY32__) + int32_t result; + + /* If MPY32 is available save control context, set to fractional mode, set saturation mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN | MPYSAT; + + /* Loop through all srcA rows. */ + while(srcARows--) { + /* Loop through all srcB columns. */ + while (dst_col < srcBCols) { + /* Reset result registers */ + MPY32CTL0 &= ~MPYC; + RES3 = 0; RES2 = 0; RES1 = 0; RES0 = 0; + + /* Multiply and accumulate inputs. */ + while(cntr < srcACols) { + MACS32L = srcA[row_offset + cntr] & 0xffff; + MACS32H = srcA[row_offset + cntr] >> 16; + OP2L = srcB[col_offset + dst_col] & 0xffff; + OP2H = srcB[col_offset + dst_col] >> 16; + col_offset += srcBCols; + cntr++; + } + + /* Store accumulated result. */ + result = RES2; + result |= ((uint32_t)RES3 << 16); + dst[dst_row_offset + dst_col] = result; + + /* Update pointers. */ + dst_col++; + cntr = 0; + col_offset = 0; + } + + /* Update pointers. */ + dst_row++; + dst_col = 0; + row_offset += srcACols; + dst_row_offset += srcBCols; + } + + /* Restore MPY32 control context, previous saturation state. */ + MPY32CTL0 = ui16MPYState; + +#else //__MSP430_HAS_MPY32__ + int64_t result; + + /* Loop through all srcA rows. */ + while(srcARows--) { + /* Loop through all srcB columns. */ + while (dst_col < srcBCols) { + /* Initialize accumulator. */ + result = 0; + + /* Loop through all elements in srcA column and srcB row. */ + while(cntr < srcACols) { + result += (int64_t)srcA[row_offset+cntr] * (int64_t)srcB[col_offset+dst_col]; + col_offset += srcBCols; + cntr++; + } + + /* Scale and saturate accumulator and store to destination. */ + dst[dst_row_offset+dst_col] = (_iq31)__saturate((result >> 31), INT32_MIN, INT32_MAX); + + /* Update pointers. */ + dst_col++; + cntr = 0; + col_offset = 0; + } + + /* Update pointers. */ + dst_row++; + dst_col = 0; + row_offset += srcACols; + dst_row_offset += srcBCols; + } +#endif //__MSP430_HAS_MPY32__ + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c new file mode 100755 index 000000000..b144d61ce --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c @@ -0,0 +1,239 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_matrix_mpy_q15(const msp_matrix_mpy_q15_params *params, const _q15 *srcA, const _q15 *srcB, _q15 *dst) +{ + uint16_t srcARows; + uint16_t srcACols; + uint16_t srcBRows; + uint16_t srcBCols; + msp_status status; + MSP_LEA_MPYMATRIXROW_PARAMS *leaParams; + + /* Initialize the row and column sizes. */ + srcARows = params->srcARows; + srcACols = params->srcACols; + srcBRows = params->srcBRows; + srcBCols = params->srcBCols; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that column of A equals rows of B */ + if (srcACols != srcBRows) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(srcA, 4) & + MSP_LEA_VALID_ADDRESS(srcB, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MPYMATRIXROW_PARAMS structure. */ + leaParams = (MSP_LEA_MPYMATRIXROW_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MPYMATRIXROW_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + + /* Iterate through each row of srcA */ + while (srcARows--) { + /* Set MSP_LEA_MPYMATRIXROW_PARAMS structure. */ + leaParams->rowSize = srcBRows; + leaParams->colSize = srcBCols; + leaParams->colVector = MSP_LEA_CONVERT_ADDRESS(srcB); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(srcA); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__MPYMATRIXROW command. */ + msp_lea_invokeCommand(LEACMD__MPYMATRIXROW); + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + break; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + break; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + break; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Increment srcA and dst pointers. */ + srcA += srcACols; + dst += srcBCols; + } + + /* Free MSP_LEA_MPYMATRIXROW_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_MPYMATRIXROW_PARAMS)/sizeof(uint32_t)); + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_matrix_mpy_q15(const msp_matrix_mpy_q15_params *params, const _q15 *srcA, const _q15 *srcB, _q15 *dst) +{ + uint16_t cntr; + uint16_t srcARows; + uint16_t srcACols; + uint16_t srcBRows; + uint16_t srcBCols; + uint16_t dst_row; + uint16_t dst_col; + uint16_t row_offset; + uint16_t col_offset; + uint16_t dst_row_offset; + + /* Initialize the row and column sizes. */ + srcARows = params->srcARows; + srcACols = params->srcACols; + srcBRows = params->srcBRows; + srcBCols = params->srcBCols; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that column of A equals rows of B */ + if (srcACols != srcBRows) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* In initialize loop counters. */ + cntr = 0; + dst_row = 0; + dst_col = 0; + row_offset = 0; + col_offset = 0; + dst_row_offset = 0; + +#if defined(__MSP430_HAS_MPY32__) + /* If MPY32 is available save control context, set to fractional mode, set saturation mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN | MPYSAT; + + /* Loop through all srcA rows. */ + while(srcARows--) { + /* Loop through all srcB columns. */ + while (dst_col < srcBCols) { + /* Reset result accumulator. */ + MPY32CTL0 &= ~MPYC; + RESLO = 0; RESHI = 0; + + /* Loop through all elements in srcA column and srcB row. */ + while(cntr < srcACols) { + MACS = srcA[row_offset + cntr]; + OP2 = srcB[col_offset + dst_col]; + col_offset += srcBCols; + cntr++; + } + + /* Store the result */ + dst[dst_row_offset + dst_col] = RESHI; + + /* Update pointers. */ + dst_col++; + cntr = 0; + col_offset = 0; + } + + /* Update pointers. */ + dst_row++; + dst_col = 0; + row_offset += srcACols; + dst_row_offset += srcBCols; + } + + /* Restore MPY32 control context, previous saturation state. */ + MPY32CTL0 = ui16MPYState; + +#else //__MSP430_HAS_MPY32__ + _iq31 result; + + /* Loop through all srcA rows. */ + while(srcARows--) { + /* Loop through all srcB columns. */ + while (dst_col < srcBCols) { + /* Initialize accumulator. */ + result = 0; + + /* Loop through all elements in srcA column and srcB row. */ + while(cntr < srcACols) { + result += (_iq31)srcA[row_offset + cntr] * (_iq31)srcB[col_offset + dst_col]; + col_offset += srcBCols; + cntr++; + } + + /* Saturate and store the result */ + dst[dst_row_offset + dst_col] = (_q15)__saturate(result >> 15, INT16_MIN, INT16_MAX); + + /* Update pointers. */ + dst_col++; + cntr = 0; + col_offset = 0; + } + + /* Update pointers. */ + dst_row++; + dst_col = 0; + row_offset += srcACols; + dst_row_offset += srcBCols; + } +#endif //__MSP430_HAS_MPY32__ + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c new file mode 100755 index 000000000..489f529ca --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c @@ -0,0 +1,46 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform element wise multiplication of a single source vector with negative one. + */ +msp_status msp_matrix_neg_iq31(const msp_matrix_neg_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + msp_neg_iq31_params paramsTemp; + + /* Use real vector negate function. */ + paramsTemp.length = params->rows * params->cols; + + return msp_neg_iq31(¶msTemp, src, dst); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c new file mode 100755 index 000000000..938cd824b --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c @@ -0,0 +1,46 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform element wise multiplication of a single source vector with negative one. + */ +msp_status msp_matrix_neg_q15(const msp_matrix_neg_q15_params *params, const _q15 *src, _q15 *dst) +{ + msp_neg_q15_params paramsTemp; + + /* Use real vector negate function. */ + paramsTemp.length = params->rows * params->cols; + + return msp_neg_q15(¶msTemp, src, dst); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c new file mode 100755 index 000000000..ff2a499ba --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c @@ -0,0 +1,49 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform matrix offset of a source matrix. + */ +msp_status msp_matrix_offset_iq31(const msp_matrix_offset_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + msp_offset_iq31_params paramsTemp; + + /* Use real vector offset function. */ + paramsTemp.offset = params->offset; + paramsTemp.length = params->rows * params->cols; + + return msp_offset_iq31(¶msTemp, src, dst); +} + + diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c new file mode 100755 index 000000000..697e3dd75 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c @@ -0,0 +1,50 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform matrix offset of a source matrix. + */ +msp_status msp_matrix_offset_q15(const msp_matrix_offset_q15_params *params, const _q15 *src, _q15 *dst) +{ + msp_offset_q15_params paramsTemp; + + /* Use real vector offset function. */ + paramsTemp.offset = params->offset; + paramsTemp.length = params->rows * params->cols; + + return msp_offset_q15(¶msTemp, src, dst); + +} + + diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c new file mode 100755 index 000000000..b45257310 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c @@ -0,0 +1,48 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform element wise iq31 multiply and left shift + */ +msp_status msp_matrix_scale_iq31(const msp_matrix_scale_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + msp_scale_iq31_params paramsTemp; + + /* Use real vector scale function. */ + paramsTemp.shift = params->shift; + paramsTemp.length = params->rows * params->cols; + paramsTemp.scale = params->scale; + + return msp_scale_iq31(¶msTemp, src, dst); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c new file mode 100755 index 000000000..9737c40d8 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c @@ -0,0 +1,51 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform matrix bitwise shift and q15 multiply of a source matrix. + */ +msp_status msp_matrix_scale_q15(const msp_matrix_scale_q15_params *params, const _q15 *src, _q15 *dst) +{ + msp_scale_q15_params paramsTemp; + + /* Use real vector scale function. */ + paramsTemp.scale = params->scale; + paramsTemp.shift = params->shift; + paramsTemp.length = params->rows * params->cols; + + return msp_scale_q15(¶msTemp, src, dst); + +} + + diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c new file mode 100755 index 000000000..d8293ec5e --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c @@ -0,0 +1,47 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform element wise left or right shift of a single source matrix. + */ +msp_status msp_matrix_shift_iq31(const msp_matrix_shift_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + msp_shift_iq31_params paramsTemp; + + /* Use real vector shift function. */ + paramsTemp.shift = params->shift; + paramsTemp.length = params->rows * params->cols; + + return msp_shift_iq31(¶msTemp, src, dst); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c new file mode 100755 index 000000000..13467ed52 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c @@ -0,0 +1,47 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform element wise left or right shift of a single source matrix. + */ +msp_status msp_matrix_shift_q15(const msp_matrix_shift_q15_params *params, const _q15 *src, _q15 *dst) +{ + msp_shift_q15_params paramsTemp; + + /* Use real vector shift function. */ + paramsTemp.shift = params->shift; + paramsTemp.length = params->rows * params->cols; + + return msp_shift_q15(¶msTemp, src, dst); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c new file mode 100755 index 000000000..69dd5a605 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c @@ -0,0 +1,48 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform matrix subtraction of two source matrices. + */ +msp_status msp_matrix_sub_iq31(const msp_matrix_sub_iq31_params *params, const _iq31 *srcA, const _iq31 *srcB, _iq31 *dst) +{ + msp_sub_iq31_params paramsTemp; + + /* Use real vector subtraction function. */ + paramsTemp.length = params->rows * params->cols; + + return msp_sub_iq31(¶msTemp, srcA, srcB, dst); +} + + diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c new file mode 100755 index 000000000..ddc3c6e64 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c @@ -0,0 +1,48 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform matrix subtraction of two source matrices. + */ +msp_status msp_matrix_sub_q15(const msp_matrix_sub_q15_params *params, const int16_t *srcA, const int16_t *srcB, int16_t *dst) +{ + msp_sub_q15_params paramsTemp; + + /* Use real vector subtraction function. */ + paramsTemp.length = params->rows * params->cols; + + return msp_sub_q15(¶msTemp, srcA, srcB, dst); +} + + diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c new file mode 100755 index 000000000..a4b846e09 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c @@ -0,0 +1,65 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform matrix transposition of a source matrix. + */ +msp_status msp_matrix_trans_iq31(const msp_matrix_trans_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint16_t i; + uint16_t rows; + uint16_t cols; + msp_status status; + msp_deinterleave_iq31_params deinterParams; + + /* Extract matrix parameters. */ + rows = params->rows; + cols = params->cols; + + /* Initialize deinterleave parameters. */ + deinterParams.length = rows; + deinterParams.numChannels = cols; + + /* Iterate through source columns and deinterleave to destination. */ + for (i = 0; i < cols; i++) { + /* Transpose source columns to destination rows using deinterleave. */ + deinterParams.channel = i; + status = msp_deinterleave_iq31(&deinterParams, src, &dst[i*rows]); + if (status != MSP_SUCCESS) { + return status; + } + } + + return MSP_SUCCESS; +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c new file mode 100755 index 000000000..d0ea23e98 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c @@ -0,0 +1,74 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform matrix transposition of a source matrix. + */ +msp_status msp_matrix_trans_q15(const msp_matrix_trans_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t i; + uint16_t rows; + uint16_t cols; + msp_status status; + msp_deinterleave_q15_params deinterParams; + + /* Extract matrix parameters. */ + rows = params->rows; + cols = params->cols; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that row and column sizes are even. */ + if ((rows & 1) || (cols & 1)) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize deinterleave parameters. */ + deinterParams.length = rows; + deinterParams.numChannels = cols; + + /* Iterate through source columns and deinterleave to destination. */ + for (i = 0; i < cols; i++) { + /* Transpose source columns to destination rows using deinterleave. */ + deinterParams.channel = i; + status = msp_deinterleave_q15(&deinterParams, src, &dst[i*rows]); + if (status != MSP_SUCCESS) { + return status; + } + } + + return MSP_SUCCESS; +} + + diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c new file mode 100755 index 000000000..943c85385 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c @@ -0,0 +1,175 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_cmplx_bitrev_iq31(const msp_cmplx_bitrev_iq31_params *params, _iq31 *src) +{ + uint16_t cmdId; + msp_status status; + uint16_t length; + uint16_t sqrtLength; + MSP_LEA_BITREVERSECOMPLEXLONG_PARAMS *leaParams; + + /* Save input length to local. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two. */ + if ((length & (length-1))) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Check vector size to determine which bit reverse function to use. */ + sqrtLength = 1; + while (length > 2) { + sqrtLength <<= 1; + length >>= 2; + } + + /* Allocate MSP_LEA_BITREVERSECOMPLEXLONG_PARAMS structure. */ + leaParams = (MSP_LEA_BITREVERSECOMPLEXLONG_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_BITREVERSECOMPLEXLONG_PARAMS)/sizeof(uint32_t)); + + /* Initialize MSP_LEA_BITREVERSECOMPLEXLONG_PARAMS structure. */ + leaParams->sqrtVectorSize = sqrtLength; + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Check if remainder is even or odd to determine which LEA function to use. */ + if (length == 2) { + /* Invoke the LEACMD__BITREVERSECOMPLEXLONGODD command. */ + cmdId = LEACMD__BITREVERSECOMPLEXLONGODD; + } + else { + /* Invoke the LEACMD__BITREVERSECOMPLEXLONGEVEN command. */ + cmdId = LEACMD__BITREVERSECOMPLEXLONGEVEN; + } + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Free MSP_LEA_BITREVERSECOMPLEXLONG_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_BITREVERSECOMPLEXLONG_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +/* + * Perform an in-place bit reversal of the complex input array using a lookup + * table. + */ +msp_status msp_cmplx_bitrev_iq31(const msp_cmplx_bitrev_iq31_params *params, _iq31 *src) +{ + uint16_t i; // loop counter + uint16_t index; // left justified index + uint16_t indexInc; // index increment + uint16_t length; // src length + uint16_t indexBitRev; // index bit reversal + uint64_t temp; // Temporary storage + uint64_t *srcPtr; // Treat complex data pairs as 32-bit data + + /* Initialize source pointer and length. */ + srcPtr = (uint64_t *)src; + length = params->length; + index = 0; + indexInc = 2; + + /* Calculate index increment for left justified index. */ + while (length < 0x8000) { + indexInc <<= 1; + length <<= 1; + } + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two. */ + if (length != 0x8000) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* In-place bit-reversal using a larger table length than source data length. */ + length = params->length; + for (i = 0; i < length; i++, index += indexInc) { + /* Calculate bit reversed index. */ + indexBitRev = ((uint16_t)msp_cmplx_bitrev_table_ui8[index & 0xff] << 8) + + ((uint16_t)msp_cmplx_bitrev_table_ui8[(index >> 8) & 0xff]); + + if (i < indexBitRev) { + /* Swap inputs. */ + temp = srcPtr[i]; + srcPtr[i] = srcPtr[indexBitRev]; + srcPtr[indexBitRev] = temp; + } + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c new file mode 100755 index 000000000..1b192c671 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c @@ -0,0 +1,175 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_cmplx_bitrev_q15(const msp_cmplx_bitrev_q15_params *params, _q15 *src) +{ + uint16_t cmdId; + msp_status status; + uint16_t length; + uint16_t sqrtLength; + MSP_LEA_BITREVERSECOMPLEX_PARAMS *leaParams; + + /* Save input length to local. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two. */ + if ((length & (length-1))) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Check vector size to determine which bit reverse function to use. */ + sqrtLength = 1; + while (length > 2) { + sqrtLength <<= 1; + length >>= 2; + } + + /* Allocate MSP_LEA_BITREVERSECOMPLEX_PARAMS structure. */ + leaParams = (MSP_LEA_BITREVERSECOMPLEX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_BITREVERSECOMPLEX_PARAMS)/sizeof(uint32_t)); + + /* Initialize MSP_LEA_BITREVERSECOMPLEX_PARAMS structure. */ + leaParams->sqrtVectorSize = sqrtLength; + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Check if remainder is even or odd to determine which LEA function to use. */ + if (length == 2) { + /* Invoke the LEACMD__BITREVERSECOMPLEXODD command. */ + cmdId = LEACMD__BITREVERSECOMPLEXODD; + } + else { + /* Invoke the LEACMD__BITREVERSECOMPLEXEVEN command. */ + cmdId = LEACMD__BITREVERSECOMPLEXEVEN; + } + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Free MSP_LEA_BITREVERSECOMPLEX_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_BITREVERSECOMPLEX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +/* + * Perform an in-place bit reversal of the complex input array using a lookup + * table. + */ +msp_status msp_cmplx_bitrev_q15(const msp_cmplx_bitrev_q15_params *params, _q15 *src) +{ + uint16_t i; // loop counter + uint16_t index; // left justified index + uint16_t indexInc; // index increment + uint16_t length; // src length + uint16_t indexBitRev; // index bit reversal + uint32_t temp; // Temporary storage + uint32_t *srcPtr; // Treat complex data pairs as 32-bit data + + /* Initialize source pointer and length. */ + srcPtr = (uint32_t *)src; + length = params->length; + index = 0; + indexInc = 2; + + /* Calculate index increment for left justified index. */ + while (length < 0x8000) { + indexInc <<= 1; + length <<= 1; + } + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two. */ + if (length != 0x8000) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* In-place bit-reversal using fixed table length. */ + length = params->length; + for (i = 0; i < length; i++, index += indexInc) { + /* Calculate bit reversed index. */ + indexBitRev = ((uint16_t)msp_cmplx_bitrev_table_ui8[index & 0xff] << 8) + + ((uint16_t)msp_cmplx_bitrev_table_ui8[(index >> 8) & 0xff]); + + if (i < indexBitRev) { + /* Swap inputs. */ + temp = srcPtr[i]; + srcPtr[i] = srcPtr[indexBitRev]; + srcPtr[indexBitRev] = temp; + } + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c new file mode 100755 index 000000000..26ab07b92 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c @@ -0,0 +1,433 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_cmplx_fft_auto_q15(const msp_cmplx_fft_q15_params *params, _q15 *src, uint16_t *shift) +{ + uint16_t cmdId; + uint16_t log2Size; + uint16_t length; + msp_status status; + MSP_LEA_FFTCOMPLEXAUTOSCALING_PARAMS *leaParams; + + /* Save input length to local. */ + length = params->length; + + /* Bit reverse the order of the inputs. */ + if(params->bitReverse) { + /* Create and initialize a bit reversal params structure. */ + msp_cmplx_bitrev_q15_params paramsBitRev; + paramsBitRev.length = params->length; + + /* Perform bit reversal on source data. */ + status = msp_cmplx_bitrev_q15(¶msBitRev, src); + + /* Check if the operation was not successful. */ + if (status != MSP_SUCCESS) { + return status; + } + } + + /* Calculate log2Size parameter. */ + log2Size = 0; + while (length > 1) { + log2Size++; + length >>= 1; + } + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two. */ + if ((length & (length-1))) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, length*2))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_FFTCOMPLEXAUTOSCALING_PARAMS structure. */ + leaParams = (MSP_LEA_FFTCOMPLEXAUTOSCALING_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_FFTCOMPLEXAUTOSCALING_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_FFTCOMPLEXAUTOSCALING_PARAMS structure. */ + leaParams->vectorSizeBy2 = length >> 1; + leaParams->log2Size = log2Size; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__FFTCOMPLEXAUTOSCALING, MSP_LEA_FFTCOMPLEXAUTOSCALING, + sizeof(MSP_LEA_FFTCOMPLEXAUTOSCALING)/sizeof(MSP_LEA_FFTCOMPLEXAUTOSCALING[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__FFTCOMPLEXAUTOSCALING command. */ + cmdId = LEACMD__FFTCOMPLEXAUTOSCALING; +#endif //MSP_LEA_REVISION. + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Get auto-scaling result */ + *shift = LEAPMDST; + + /* Free MSP_LEA_FFTCOMPLEXAUTOSCALING_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_FFTCOMPLEXAUTOSCALING_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +#define STAGE1_STEP (2) +#define STAGE2_STEP (STAGE1_STEP*2) +#define STAGE3_STEP (STAGE2_STEP*2) +#define STAGE4_STEP (STAGE3_STEP*2) + +static inline void msp_cmplx_overflow_q15(int16_t *src, bool *overflow); +static inline void msp_cmplx_btfly_auto_q15(int16_t *srcA, int16_t *srcB, const _q15 *coeff, bool *scale, bool *overflow); +static inline void msp_cmplx_btfly_c0_auto_q15(int16_t *srcA, int16_t *srcB, bool *scale, bool *overflow); +static inline void msp_cmplx_btfly_c1_auto_q15(int16_t *srcA, int16_t *srcB, bool *scale, bool *overflow); + +/* + * Perform in-place radix-2 DFT of the input signal using an algorithm optimized + * for MSP430 with fixed scaling by two at each stage. + */ +msp_status msp_cmplx_fft_auto_q15(const msp_cmplx_fft_q15_params *params, int16_t *src, uint16_t *shift) +{ + bool scale; // scale flag + bool overflow; // overflow flag + int16_t i, j; // loop counters + uint16_t step; // step size + uint16_t length; // src length + uint16_t twiddleIndex; // twiddle table index + uint16_t twiddleIncrement; // twiddle table increment + int16_t *srcPtr; // local source pointer + const _q15 *twiddlePtr; // twiddle table pointer + msp_status status; // Status of the operation + + /* Save input length to local. */ + length = params->length; + + /* Bit reverse the order of the inputs. */ + if(params->bitReverse) { + /* Create and initialize a bit reversal params structure. */ + msp_cmplx_bitrev_q15_params paramsBitRev; + paramsBitRev.length = params->length; + + /* Perform bit reversal on source data. */ + status = msp_cmplx_bitrev_q15(¶msBitRev, src); + + /* Check if the operation was not successful. */ + if (status != MSP_SUCCESS) { + return status; + } + } + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two. */ + if ((length & (length-1))) { + return MSP_SIZE_ERROR; + } + + /* Check that the provided table is the correct length. */ + if (*(uint16_t *)params->twiddleTable < length) { + return MSP_TABLE_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize shift result. */ + *shift = 0; + + /* Check for initial overflow. */ + overflow = false; + for (i = 0 ; i < length; i++) { + msp_cmplx_overflow_q15(&src[i*2], &overflow); + } + + /* Stage 1. */ + scale = overflow; + overflow = false; + *shift += scale ? 1 : 0; + if (STAGE1_STEP <= length) { + for (j = 0; j < length; j += STAGE1_STEP) { + srcPtr = src + j*2; + msp_cmplx_btfly_c0_auto_q15(&srcPtr[0], &srcPtr[0+STAGE1_STEP], &scale, &overflow); + } + } + + /* Stage 2. */ + scale = overflow; + overflow = false; + *shift += scale ? 1 : 0; + if (STAGE2_STEP <= length) { + for (j = 0; j < length; j += STAGE2_STEP) { + srcPtr = src + j*2; + msp_cmplx_btfly_c0_auto_q15(&srcPtr[0], &srcPtr[0+STAGE2_STEP], &scale, &overflow); + msp_cmplx_btfly_c1_auto_q15(&srcPtr[2], &srcPtr[2+STAGE2_STEP], &scale, &overflow); + } + } + + /* Initialize step size, twiddle angle increment and twiddle table pointer. */ + step = STAGE3_STEP; + twiddleIncrement = 2*(*(uint16_t*)params->twiddleTable)/STAGE3_STEP; + twiddlePtr = ¶ms->twiddleTable[DSPLIB_TABLE_OFFSET]; + + /* If MPY32 is available save control context and set to fractional mode. */ +#if defined(__MSP430_HAS_MPY32__) + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN; +#endif + + /* Stage 3 -> log2(step). */ + while (step <= length) { + /* Reset the twiddle angle index. */ + twiddleIndex = 0; + + /* Set scale and overflow flags. */ + scale = overflow; + overflow = false; + *shift += scale ? 1 : 0; + + for (i = 0; i < (step/2); i++) { + /* Perform butterfly operations on complex pairs. */ + for (j = i; j < length; j += step) { + srcPtr = src + j*2; + msp_cmplx_btfly_auto_q15(srcPtr, srcPtr + step, &twiddlePtr[twiddleIndex], &scale, &overflow); + } + + /* Increment twiddle table index. */ + twiddleIndex += twiddleIncrement; + } + /* Double the step size and halve the increment factor. */ + step *= 2; + twiddleIncrement = twiddleIncrement/2; + } + + /* Restore MPY32 control context. */ +#if defined(__MSP430_HAS_MPY32__) + MPY32CTL0 = ui16MPYState; +#endif + + return MSP_SUCCESS; +} + +#define MSP_OVERFLOW_MAX (INT16_MAX >> 2) +#define MSP_OVERFLOW_MIN (INT16_MIN >> 2) + +/* + * Abstracted helper function to check for overflow. + */ +static inline void msp_cmplx_overflow_q15(int16_t *src, bool *overflow) +{ + if ((CMPLX_REAL(src) > MSP_OVERFLOW_MAX) || (CMPLX_REAL(src) < MSP_OVERFLOW_MIN)) { + *overflow = true; + } + if ((CMPLX_IMAG(src) > MSP_OVERFLOW_MAX) || (CMPLX_IMAG(src) < MSP_OVERFLOW_MIN)) { + *overflow = true; + } +} + +/* + * Abstracted helper functions for a radix-2 butterfly operation. The following + * operation is performed at each stage: + * A = A + coeff*B + * B = A - coeff*B + * + * If overflow is detected the result is scaled by two: + * A = A/2 + * B = A/2 + */ +static inline void msp_cmplx_btfly_auto_q15(int16_t *srcA, int16_t *srcB, const _q15 *coeff, bool *scale, bool *overflow) +{ + /* Load coefficients. */ + _q15 tempR = CMPLX_REAL(coeff); + _q15 tempI = CMPLX_IMAG(coeff); + + /* Calculate real and imaginary parts of coeff*B. */ + __q15cmpy(&tempR, &tempI, &CMPLX_REAL(srcB), &CMPLX_IMAG(srcB)); + + /* Scale result if necessary. */ + if (*scale) { + /* B = (A - coeff*B)/2 */ + CMPLX_REAL(srcB) = (CMPLX_REAL(srcA) - tempR) >> 1; + CMPLX_IMAG(srcB) = (CMPLX_IMAG(srcA) - tempI) >> 1; + + /* A = (A + coeff*B)/2 */ + CMPLX_REAL(srcA) = (CMPLX_REAL(srcA) + tempR) >> 1; + CMPLX_IMAG(srcA) = (CMPLX_IMAG(srcA) + tempI) >> 1; + } + else { + /* B = A - coeff*B */ + CMPLX_REAL(srcB) = CMPLX_REAL(srcA) - tempR; + CMPLX_IMAG(srcB) = CMPLX_IMAG(srcA) - tempI; + + /* A = A + coeff*B */ + CMPLX_REAL(srcA) = CMPLX_REAL(srcA) + tempR; + CMPLX_IMAG(srcA) = CMPLX_IMAG(srcA) + tempI; + } + + /* Check for possibility of overflow. */ + if (!*overflow) { + msp_cmplx_overflow_q15(srcA, overflow); + msp_cmplx_overflow_q15(srcB, overflow); + } +} + +/* + * Simplified radix-2 butterfly operation for e^(-2*pi*(0/4)). This abstracted + * helper function takes advantage of the fact the the twiddle coefficients are + * positive and negative one for a multiplication by e^(-2*pi*(0/4)). The + * following operation is performed at each stage: + * A = A + (1+0j)*B + * B = A - (1+0j)*B + * + * If overflow is detected the result is scaled by two: + * A = A/2 + * B = A/2 + */ +static inline void msp_cmplx_btfly_c0_auto_q15(int16_t *srcA, int16_t *srcB, bool *scale, bool *overflow) +{ + int16_t tempR = CMPLX_REAL(srcB); + int16_t tempI = CMPLX_IMAG(srcB); + + /* Scale result if necessary. */ + if (*scale) { + /* B = (A - (1+0j)*B)/2 */ + CMPLX_REAL(srcB) = (CMPLX_REAL(srcA) - tempR) >> 1; + CMPLX_IMAG(srcB) = (CMPLX_IMAG(srcA) - tempI) >> 1; + + /* A = (A + (1+0j)*B)/2 */ + CMPLX_REAL(srcA) = (CMPLX_REAL(srcA) + tempR) >> 1; + CMPLX_IMAG(srcA) = (CMPLX_IMAG(srcA) + tempI) >> 1; + } + else { + /* B = A - coeff*B */ + CMPLX_REAL(srcB) = CMPLX_REAL(srcA) - tempR; + CMPLX_IMAG(srcB) = CMPLX_IMAG(srcA) - tempI; + + /* A = A + coeff*B */ + CMPLX_REAL(srcA) = CMPLX_REAL(srcA) + tempR; + CMPLX_IMAG(srcA) = CMPLX_IMAG(srcA) + tempI; + } + + /* Check for possibility of overflow. */ + if (!*overflow) { + msp_cmplx_overflow_q15(srcA, overflow); + msp_cmplx_overflow_q15(srcB, overflow); + } +} + +/* + * Simplified radix-2 butterfly operation for e^(-2*pi*(1/4)). This abstracted + * helper function takes advantage of the fact the the twiddle coefficients are + * positive and negative one for a multiplication by e^(-2*pi*(1/4)). The + * following operation is performed at each stage: + * A = A + (0-1j)*B + * B = A - (0-1j)*B + * + * If overflow is detected the result is scaled by two: + * A = A/2 + * B = A/2 + */ +static inline void msp_cmplx_btfly_c1_auto_q15(int16_t *srcA, int16_t *srcB, bool *scale, bool *overflow) +{ + int16_t tempR = CMPLX_REAL(srcB); + int16_t tempI = CMPLX_IMAG(srcB); + + /* Scale result if necessary. */ + if (*scale) { + /* B = (A - (0-1j)*B)/2 */ + CMPLX_REAL(srcB) = (CMPLX_REAL(srcA) - tempI) >> 1; + CMPLX_IMAG(srcB) = (CMPLX_IMAG(srcA) + tempR) >> 1; + + /* A = (A + (0-1j)*B)/2 */ + CMPLX_REAL(srcA) = (CMPLX_REAL(srcA) + tempI) >> 1; + CMPLX_IMAG(srcA) = (CMPLX_IMAG(srcA) - tempR) >> 1; + } + else { + /* B = A - coeff*B */ + CMPLX_REAL(srcB) = CMPLX_REAL(srcA) - tempI; + CMPLX_IMAG(srcB) = CMPLX_IMAG(srcA) + tempR; + + /* A = A + coeff*B */ + CMPLX_REAL(srcA) = CMPLX_REAL(srcA) + tempI; + CMPLX_IMAG(srcA) = CMPLX_IMAG(srcA) - tempR; + } + + /* Check for possibility of overflow. */ + if (!*overflow) { + msp_cmplx_overflow_q15(srcA, overflow); + msp_cmplx_overflow_q15(srcB, overflow); + } +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c new file mode 100755 index 000000000..9d29b4137 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c @@ -0,0 +1,310 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_cmplx_fft_fixed_q15(const msp_cmplx_fft_q15_params *params, int16_t *src) +{ + uint16_t log2Size; + uint16_t length; + msp_status status; + MSP_LEA_FFTCOMPLEXFIXEDSCALING_PARAMS *leaParams; + + /* Save input length to local. */ + length = params->length; + + /* Bit reverse the order of the inputs. */ + if(params->bitReverse) { + /* Create and initialize a bit reversal params structure. */ + msp_cmplx_bitrev_q15_params paramsBitRev; + paramsBitRev.length = params->length; + + /* Perform bit reversal on source data. */ + status = msp_cmplx_bitrev_q15(¶msBitRev, src); + + /* Check if the operation was not successful. */ + if (status != MSP_SUCCESS) { + return status; + } + } + + /* Calculate log2Size parameter. */ + log2Size = 0; + while (length > 1) { + log2Size++; + length >>= 1; + } + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two. */ + if ((length & (length-1))) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, length*2))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_FFTCOMPLEXFIXEDSCALING_PARAMS structure. */ + leaParams = (MSP_LEA_FFTCOMPLEXFIXEDSCALING_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_FFTCOMPLEXFIXEDSCALING_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_FFTCOMPLEXFIXEDSCALING_PARAMS structure. */ + leaParams->vectorSizeBy2 = length >> 1; + leaParams->log2Size = log2Size; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__FFTCOMPLEXFIXEDSCALING command. */ + msp_lea_invokeCommand(LEACMD__FFTCOMPLEXFIXEDSCALING); + + /* Free MSP_LEA_FFTCOMPLEXFIXEDSCALING_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_FFTCOMPLEXFIXEDSCALING_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +#define STAGE1_STEP (2) +#define STAGE2_STEP (STAGE1_STEP*2) +#define STAGE3_STEP (STAGE2_STEP*2) +#define STAGE4_STEP (STAGE3_STEP*2) + +static inline void msp_cmplx_btfly_fixed_q15(int16_t *srcA, int16_t *srcB, const _q15 *coeff); +static inline void msp_cmplx_btfly_c0_fixed_q15(int16_t *srcA, int16_t *srcB); +static inline void msp_cmplx_btfly_c1_fixed_q15(int16_t *srcA, int16_t *srcB); + +/* + * Perform in-place radix-2 DFT of the input signal using an algorithm optimized + * for MSP430 with fixed scaling by two at each stage. + */ +msp_status msp_cmplx_fft_fixed_q15(const msp_cmplx_fft_q15_params *params, int16_t *src) +{ + int16_t i, j; // loop counters + uint16_t step; // step size + uint16_t length; // src length + uint16_t twiddleIndex; // twiddle table index + uint16_t twiddleIncrement; // twiddle table increment + int16_t *srcPtr; // local source pointer + const _q15 *twiddlePtr; // twiddle table pointer + msp_status status; // Status of the operation + + /* Save input length to local. */ + length = params->length; + + /* Bit reverse the order of the inputs. */ + if(params->bitReverse) { + /* Create and initialize a bit reversal params structure. */ + msp_cmplx_bitrev_q15_params paramsBitRev; + paramsBitRev.length = params->length; + + /* Perform bit reversal on source data. */ + status = msp_cmplx_bitrev_q15(¶msBitRev, src); + + /* Check if the operation was not successful. */ + if (status != MSP_SUCCESS) { + return status; + } + } + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two. */ + if ((length & (length-1))) { + return MSP_SIZE_ERROR; + } + + /* Check that the provided table is the correct length. */ + if (*(uint16_t *)params->twiddleTable < length) { + return MSP_TABLE_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Stage 1. */ + if (STAGE1_STEP <= length) { + for (j = 0; j < length; j += STAGE1_STEP) { + srcPtr = src + j*2; + msp_cmplx_btfly_c0_fixed_q15(&srcPtr[0], &srcPtr[0+STAGE1_STEP]); + } + } + + /* Stage 2. */ + if (STAGE2_STEP <= length) { + for (j = 0; j < length; j += STAGE2_STEP) { + srcPtr = src + j*2; + msp_cmplx_btfly_c0_fixed_q15(&srcPtr[0], &srcPtr[0+STAGE2_STEP]); + msp_cmplx_btfly_c1_fixed_q15(&srcPtr[2], &srcPtr[2+STAGE2_STEP]); + } + } + + /* Initialize step size, twiddle angle increment and twiddle table pointer. */ + step = STAGE3_STEP; + twiddleIncrement = 2*(*(uint16_t*)params->twiddleTable)/STAGE3_STEP; + twiddlePtr = ¶ms->twiddleTable[DSPLIB_TABLE_OFFSET]; + + /* If MPY32 is available save control context and set to fractional mode. */ +#if defined(__MSP430_HAS_MPY32__) + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN; +#endif + + /* Stage 3 -> log2(step). */ + while (step <= length) { + /* Reset the twiddle angle index. */ + twiddleIndex = 0; + + for (i = 0; i < (step/2); i++) { + /* Perform butterfly operations on complex pairs. */ + for (j = i; j < length; j += step) { + srcPtr = src + j*2; + msp_cmplx_btfly_fixed_q15(srcPtr, srcPtr + step, &twiddlePtr[twiddleIndex]); + } + + /* Increment twiddle table index. */ + twiddleIndex += twiddleIncrement; + } + /* Double the step size and halve the increment factor. */ + step *= 2; + twiddleIncrement = twiddleIncrement/2; + } + + /* Restore MPY32 control context. */ +#if defined(__MSP430_HAS_MPY32__) + MPY32CTL0 = ui16MPYState; +#endif + + return MSP_SUCCESS; +} + +/* + * Abstracted helper functions for a radix-2 butterfly operation. The following + * operation is performed with fixed scaling by two at each stage: + * A = (A + coeff*B)/2 + * B = (A - coeff*B)/2 + */ +static inline void msp_cmplx_btfly_fixed_q15(int16_t *srcA, int16_t *srcB, const _q15 *coeff) +{ + /* Load coefficients. */ + _q15 tempR = CMPLX_REAL(coeff); + _q15 tempI = CMPLX_IMAG(coeff); + + /* Calculate real and imaginary parts of coeff*B. */ + __q15cmpy(&tempR, &tempI, &CMPLX_REAL(srcB), &CMPLX_IMAG(srcB)); + + /* B = (A - coeff*B)/2 */ + CMPLX_REAL(srcB) = (CMPLX_REAL(srcA) - tempR) >> 1; + CMPLX_IMAG(srcB) = (CMPLX_IMAG(srcA) - tempI) >> 1; + + /* A = (A + coeff*B)/2 */ + CMPLX_REAL(srcA) = (CMPLX_REAL(srcA) + tempR) >> 1; + CMPLX_IMAG(srcA) = (CMPLX_IMAG(srcA) + tempI) >> 1; +} + +/* + * Simplified radix-2 butterfly operation for e^(-2*pi*(0/4)). This abstracted + * helper function takes advantage of the fact the the twiddle coefficients are + * positive and negative one for a multiplication by e^(-2*pi*(0/4)). The + * following operation is performed with fixed scaling by two at each stage: + * A = (A + (1+0j)*B)/2 + * B = (A - (1+0j)*B)/2 + */ +static inline void msp_cmplx_btfly_c0_fixed_q15(int16_t *srcA, int16_t *srcB) +{ + int16_t tempR = CMPLX_REAL(srcB); + int16_t tempI = CMPLX_IMAG(srcB); + + /* B = (A - (1+0j)*B)/2 */ + CMPLX_REAL(srcB) = (CMPLX_REAL(srcA) - tempR) >> 1; + CMPLX_IMAG(srcB) = (CMPLX_IMAG(srcA) - tempI) >> 1; + + /* A = (A + (1+0j)*B)/2 */ + CMPLX_REAL(srcA) = (CMPLX_REAL(srcA) + tempR) >> 1; + CMPLX_IMAG(srcA) = (CMPLX_IMAG(srcA) + tempI) >> 1; +} + +/* + * Simplified radix-2 butterfly operation for e^(-2*pi*(1/4)). This abstracted + * helper function takes advantage of the fact the the twiddle coefficients are + * positive and negative one for a multiplication by e^(-2*pi*(1/4)). The + * following operation is performed with fixed scaling by two at each stage: + * A = (A + (0-1j)*B)/2 + * B = (A - (0-1j)*B)/2 + */ +static inline void msp_cmplx_btfly_c1_fixed_q15(int16_t *srcA, int16_t *srcB) +{ + int16_t tempR = CMPLX_REAL(srcB); + int16_t tempI = CMPLX_IMAG(srcB); + + /* B = (A - (0-1j)*B)/2 */ + CMPLX_REAL(srcB) = (CMPLX_REAL(srcA) - tempI) >> 1; + CMPLX_IMAG(srcB) = (CMPLX_IMAG(srcA) + tempR) >> 1; + + /* A = (A + (0-1j)*B)/2 */ + CMPLX_REAL(srcA) = (CMPLX_REAL(srcA) + tempI) >> 1; + CMPLX_IMAG(srcA) = (CMPLX_IMAG(srcA) - tempR) >> 1; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c new file mode 100755 index 000000000..ff8d54a3c --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c @@ -0,0 +1,328 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_cmplx_fft_iq31(const msp_cmplx_fft_iq31_params *params, int32_t *src) +{ + uint16_t cmdId; + uint16_t log2Size; + uint16_t length; + msp_status status; + MSP_LEA_FFTCOMPLEXLONG_PARAMS *leaParams; + + /* Save input length to local. */ + length = params->length; + + /* Bit reverse the order of the inputs. */ + if(params->bitReverse) { + /* Create and initialize a bit reversal params structure. */ + msp_cmplx_bitrev_iq31_params paramsBitRev; + paramsBitRev.length = params->length; + + /* Perform bit reversal on source data. */ + status = msp_cmplx_bitrev_iq31(¶msBitRev, src); + + /* Check if the operation was not successful. */ + if (status != MSP_SUCCESS) { + return status; + } + } + + /* Calculate log2Size parameter. */ + log2Size = 0; + while (length > 1) { + log2Size++; + length >>= 1; + } + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two. */ + if ((length & (length-1))) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, length*8))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_FFTCOMPLEXLONG_PARAMS structure. */ + leaParams = (MSP_LEA_FFTCOMPLEXLONG_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_FFTCOMPLEXLONG_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_FFTCOMPLEXLONG_PARAMS structure. */ + leaParams->vectorSize = length; + leaParams->log2Size = log2Size; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__FFTCOMPLEXLONG, MSP_LEA_FFTCOMPLEXLONG, + sizeof(MSP_LEA_FFTCOMPLEXLONG)/sizeof(MSP_LEA_FFTCOMPLEXLONG[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__FFTCOMPLEXLONG command. */ + cmdId = LEACMD__FFTCOMPLEXLONG; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Free MSP_LEA_FFTCOMPLEXLONG_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_FFTCOMPLEXLONG_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + /* SW workaround for OOR interrupt during normal operation. */ + if ((uintptr_t)src + length*(sizeof(int32_t)*2) > LEAMT) { + status = MSP_LEA_OUT_OF_RANGE; + } + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +#define STAGE1_STEP (2) +#define STAGE2_STEP (STAGE1_STEP*2) +#define STAGE3_STEP (STAGE2_STEP*2) +#define STAGE4_STEP (STAGE3_STEP*2) + +static inline void msp_cmplx_btfly_iq31(int32_t *srcA, int32_t *srcB, const _q15 *coeff); +static inline void msp_cmplx_btfly_c0_iq31(int32_t *srcA, int32_t *srcB); +static inline void msp_cmplx_btfly_c1_iq31(int32_t *srcA, int32_t *srcB); + +/* + * Perform in-place radix-2 DFT of the input signal using an algorithm optimized + * for MSP430 with fixed scaling by two at each stage. + */ +msp_status msp_cmplx_fft_iq31(const msp_cmplx_fft_iq31_params *params, int32_t *src) +{ + int16_t i, j; // loop counters + uint16_t step; // step size + uint16_t length; // src length + uint16_t twiddleIndex; // twiddle table index + uint16_t twiddleIncrement; // twiddle table increment + int32_t *srcPtr; // local source pointer + const _q15 *twiddlePtr; // twiddle table pointer + msp_status status; // Status of the operation + + /* Save input length to local. */ + length = params->length; + + /* Bit reverse the order of the inputs. */ + if(params->bitReverse) { + /* Create and initialize a bit reversal params structure. */ + msp_cmplx_bitrev_iq31_params paramsBitRev; + paramsBitRev.length = params->length; + + /* Perform bit reversal on source data. */ + status = msp_cmplx_bitrev_iq31(¶msBitRev, src); + + /* Check if the operation was not successful. */ + if (status != MSP_SUCCESS) { + return status; + } + } + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two. */ + if ((length & (length-1))) { + return MSP_SIZE_ERROR; + } + + /* Check that the provided table is the correct length. */ + if (*(uint16_t *)params->twiddleTable < length) { + return MSP_TABLE_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Stage 1. */ + if (STAGE1_STEP <= length) { + for (j = 0; j < length; j += STAGE1_STEP) { + srcPtr = src + j*2; + msp_cmplx_btfly_c0_iq31(&srcPtr[0], &srcPtr[0+STAGE1_STEP]); + } + } + + /* Stage 2. */ + if (STAGE2_STEP <= length) { + for (j = 0; j < length; j += STAGE2_STEP) { + srcPtr = src + j*2; + msp_cmplx_btfly_c0_iq31(&srcPtr[0], &srcPtr[0+STAGE2_STEP]); + msp_cmplx_btfly_c1_iq31(&srcPtr[2], &srcPtr[2+STAGE2_STEP]); + } + } + + /* Initialize step size, twiddle angle increment and twiddle table pointer. */ + step = STAGE3_STEP; + twiddleIncrement = 2*(*(uint16_t*)params->twiddleTable)/STAGE3_STEP; + twiddlePtr = ¶ms->twiddleTable[DSPLIB_TABLE_OFFSET]; + + /* If MPY32 is available save control context and set to fractional mode. */ +#if defined(__MSP430_HAS_MPY32__) + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN; +#endif + + /* Stage 3 -> log2(step). */ + while (step <= length) { + /* Reset the twiddle angle index. */ + twiddleIndex = 0; + + for (i = 0; i < (step/2); i++) { + /* Perform butterfly operations on complex pairs. */ + for (j = i; j < length; j += step) { + srcPtr = src + j*2; + msp_cmplx_btfly_iq31(srcPtr, srcPtr + step, &twiddlePtr[twiddleIndex]); + } + + /* Increment twiddle table index. */ + twiddleIndex += twiddleIncrement; + } + /* Double the step size and halve the increment factor. */ + step *= 2; + twiddleIncrement = twiddleIncrement/2; + } + + /* Restore MPY32 control context. */ +#if defined(__MSP430_HAS_MPY32__) + MPY32CTL0 = ui16MPYState; +#endif + + return MSP_SUCCESS; +} + +/* + * Abstracted helper functions for a radix-2 butterfly operation. The following + * operation is performed with fixed scaling by two at each stage: + * A = A + coeff*B + * B = A - coeff*B + */ +static inline void msp_cmplx_btfly_iq31(int32_t *srcA, int32_t *srcB, const _q15 *coeff) +{ + /* Load coefficients. */ + _iq31 tempR = CMPLX_REAL(coeff); + _iq31 tempI = CMPLX_IMAG(coeff); + + /* Calculate real and imaginary parts of coeff*B. */ + __q15iq31cmpy(&tempR, &tempI, &CMPLX_REAL(srcB), &CMPLX_IMAG(srcB)); + + /* B = A - coeff*B */ + CMPLX_REAL(srcB) = CMPLX_REAL(srcA) - tempR; + CMPLX_IMAG(srcB) = CMPLX_IMAG(srcA) - tempI; + + /* A = A + coeff*B */ + CMPLX_REAL(srcA) = CMPLX_REAL(srcA) + tempR; + CMPLX_IMAG(srcA) = CMPLX_IMAG(srcA) + tempI; +} + +/* + * Simplified radix-2 butterfly operation for e^(-2*pi*(0/4)). This abstracted + * helper function takes advantage of the fact the the twiddle coefficients are + * positive and negative one for a multiplication by e^(-2*pi*(0/4)). The + * following operation is performed with fixed scaling by two at each stage: + * A = A + (1+0j)*B + * B = A - (1+0j)*B + */ +static inline void msp_cmplx_btfly_c0_iq31(int32_t *srcA, int32_t *srcB) +{ + int32_t tempR = CMPLX_REAL(srcB); + int32_t tempI = CMPLX_IMAG(srcB); + + /* B = A - (1+0j)*B */ + CMPLX_REAL(srcB) = CMPLX_REAL(srcA) - tempR; + CMPLX_IMAG(srcB) = CMPLX_IMAG(srcA) - tempI; + + /* A = A + (1+0j)*B */ + CMPLX_REAL(srcA) = CMPLX_REAL(srcA) + tempR; + CMPLX_IMAG(srcA) = CMPLX_IMAG(srcA) + tempI; +} + +/* + * Simplified radix-2 butterfly operation for e^(-2*pi*(1/4)). This abstracted + * helper function takes advantage of the fact the the twiddle coefficients are + * positive and negative one for a multiplication by e^(-2*pi*(1/4)). The + * following operation is performed with fixed scaling by two at each stage: + * A = A + (0-1j)*B + * B = A - (0-1j)*B + */ +static inline void msp_cmplx_btfly_c1_iq31(int32_t *srcA, int32_t *srcB) +{ + int32_t tempR = CMPLX_REAL(srcB); + int32_t tempI = CMPLX_IMAG(srcB); + + /* B = A - (0-1j)*B */ + CMPLX_REAL(srcB) = CMPLX_REAL(srcA) - tempI; + CMPLX_IMAG(srcB) = CMPLX_IMAG(srcA) + tempR; + + /* A = A + (0-1j)*B */ + CMPLX_REAL(srcA) = CMPLX_REAL(srcA) + tempI; + CMPLX_IMAG(srcA) = CMPLX_IMAG(srcA) - tempR; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c new file mode 100755 index 000000000..71fe5ea06 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c @@ -0,0 +1,82 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform an in-place complex inverse DFT of the input signal using complex + * conjugate, the complex DFT and complex scaling. Auto scaling is performed + * such that this is the direct inverse of the forward FFT with auto scaling. + */ +msp_status msp_cmplx_ifft_auto_q15(const msp_cmplx_fft_q15_params *params, int16_t *src, uint16_t shift) +{ + uint16_t length; // src length + uint16_t resultShift; // complex fft result shift + msp_status status; // Status of the operations + msp_cmplx_conj_q15_params conjParams; // Complex conjugate params + msp_cmplx_fft_q15_params paramsCmplxFFT; // Complex FFT params + msp_cmplx_shift_q15_params paramsShift; // Complex shift params + + /* Initialize complex conjugate params structure. */ + conjParams.length = params->length; + + /* Take the complex conjugate of the input. */ + status = msp_cmplx_conj_q15(&conjParams, src, src); + if (status != MSP_SUCCESS) { + return status; + } + + /* Initialize complex FFT params structure. */ + paramsCmplxFFT.length = params->length; + paramsCmplxFFT.bitReverse = params->bitReverse; + paramsCmplxFFT.twiddleTable = params->twiddleTable; + + /* Perform complex FFT on real source with scaling. */ + status = MAP_msp_cmplx_fft_auto_q15(¶msCmplxFFT, src, &resultShift); + if (status != MSP_SUCCESS) { + return status; + } + + /* Calculate necessary shift to complete the operation. */ + shift += resultShift; + length = params->length; + while (length > 1) { + shift--; + length >>= 1; + } + + /* Initialize complex shift parameters with conjugate enabled. */ + paramsShift.length = params->length; + paramsShift.shift = (int8_t)shift; + paramsShift.conjugate = true; + return msp_cmplx_shift_q15(¶msShift, src, src); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c new file mode 100755 index 000000000..601c4706c --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c @@ -0,0 +1,73 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform an in-place complex inverse DFT of the input signal using complex + * conjugate, the complex DFT and complex scaling. Fixed scaling is performed + * such that this is the direct inverse of the forward FFT with fixed scaling. + */ +msp_status msp_cmplx_ifft_fixed_q15(const msp_cmplx_fft_q15_params *params, int16_t *src) +{ + uint16_t resultShift; // complex fft result shift + msp_status status; // Status of the operations + msp_cmplx_conj_q15_params conjParams; // Complex conjugate params + msp_cmplx_fft_q15_params paramsCmplxFFT; // Complex FFT params + msp_cmplx_shift_q15_params paramsShift; // Complex shift params + + /* Initialize complex conjugate params structure. */ + conjParams.length = params->length; + + /* Take the complex conjugate of the input. */ + status = msp_cmplx_conj_q15(&conjParams, src, src); + if (status != MSP_SUCCESS) { + return status; + } + + /* Initialize complex FFT params structure. */ + paramsCmplxFFT.length = params->length; + paramsCmplxFFT.bitReverse = params->bitReverse; + paramsCmplxFFT.twiddleTable = params->twiddleTable; + + /* Perform complex FFT on real source with scaling. */ + status = MAP_msp_cmplx_fft_auto_q15(¶msCmplxFFT, src, &resultShift); + if (status != MSP_SUCCESS) { + return status; + } + + /* Initialize complex shift parameters with conjugate enabled. */ + paramsShift.length = params->length; + paramsShift.shift = (int8_t)resultShift; + paramsShift.conjugate = true; + return msp_cmplx_shift_q15(¶msShift, src, src); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c new file mode 100755 index 000000000..a9e1d8e24 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c @@ -0,0 +1,110 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform an in-place complex inverse DFT of the input signal using complex + * conjugate, the complex DFT and complex scaling. Fixed scaling is performed + * such that this is the direct inverse of the forward FFT. + */ +msp_status msp_cmplx_ifft_iq31(const msp_cmplx_fft_iq31_params *params, int32_t *src) +{ + uint16_t index; // min/max index + uint16_t length; // vector length + int16_t preShift; // pre-complex fft shift + int16_t postShift; // post-complex fft shift + int32_t maximum; // vector maximum + int32_t minimum; // vector minimum + msp_status status; // Status of the operations + msp_max_iq31_params paramsMax; // Maximum params + msp_min_iq31_params paramsMin; // Minimum params + msp_cmplx_fft_iq31_params paramsCmplxFFT; // Complex FFT params + msp_cmplx_shift_iq31_params paramsShift; // Complex shift params + + /* Calculate the necessary result scale based on length. */ + preShift = -1; + length = params->length; + while (length > 2) { + preShift--; + length >>= 1; + } + + /* Find maximum input to determine scaling order. */ + paramsMax.length = params->length << 1; + status = msp_max_iq31(¶msMax, src, &maximum, &index); + if (status != MSP_SUCCESS) { + return status; + } + + /* Find minimum input to determine scaling order. */ + paramsMin.length = params->length << 1; + status = msp_min_iq31(¶msMin, src, &minimum, &index); + if (status != MSP_SUCCESS) { + return status; + } + + /* Determine scaling order based on min/max. */ + postShift = 0; + minimum = minimum < -maximum ? minimum : -maximum; + while (minimum < (INT32_MIN/2)) { + minimum <<= 1; + preShift++; + postShift--; + } + + /* Prescale the complex fft input with complex conjugate. */ + paramsShift.length = params->length; + paramsShift.shift = preShift; + paramsShift.conjugate = true; + status = msp_cmplx_shift_iq31(¶msShift, src, src); + if (status != MSP_SUCCESS) { + return status; + } + + /* Initialize complex FFT params structure. */ + paramsCmplxFFT.length = params->length; + paramsCmplxFFT.bitReverse = params->bitReverse; + paramsCmplxFFT.twiddleTable = params->twiddleTable; + + /* Perform N/2 complex FFT on real source. */ + status = MAP_msp_cmplx_fft_iq31(¶msCmplxFFT, src); + if (status != MSP_SUCCESS) { + return status; + } + + /* Initialize complex shift parameters with conjugate enabled. */ + paramsShift.length = params->length; + paramsShift.shift = postShift; + paramsShift.conjugate = true; + return msp_cmplx_shift_iq31(¶msShift, src, src); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c new file mode 100755 index 000000000..3d6b5ceb6 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c @@ -0,0 +1,63 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform an in-place real DFT of the real input signal using a complex DFT of + * size N/2 and a split operation to obtain a complex output with length N/2. + * No fixed scaling is performed. + */ +msp_status msp_fft_auto_q15(const msp_fft_q15_params *params, int16_t *src, uint16_t *shift) +{ + msp_status status; // Status of the operations + msp_split_q15_params paramsSplit; // Split operation params + msp_cmplx_fft_q15_params paramsCmplxFFT; // Complex FFT params + + /* Initialize complex FFT params structure. */ + paramsCmplxFFT.length = params->length >> 1; + paramsCmplxFFT.bitReverse = params->bitReverse; + paramsCmplxFFT.twiddleTable = params->twiddleTable; + + /* Perform N/2 complex FFT on real source without scaling. */ + status = MAP_msp_cmplx_fft_auto_q15(¶msCmplxFFT, src, shift); + if (status != MSP_SUCCESS) { + return status; + } + + /* Initialize split operation params structure. */ + paramsSplit.length = params->length; + paramsSplit.twiddleTable = params->twiddleTable; + + /* Perform the last stage split operation to obtain N/2 complex FFT results. */ + return msp_split_q15(¶msSplit, src); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c new file mode 100755 index 000000000..4bc65c7e2 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c @@ -0,0 +1,63 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform an in-place real DFT of the real input signal using a complex DFT of + * size N/2 and a split operation to obtain a complex output with length N/2. + * Fixed scaling by 2 is performed at each stage. + */ +msp_status msp_fft_fixed_q15(const msp_fft_q15_params *params, int16_t *src) +{ + msp_status status; // Status of the operations + msp_split_q15_params paramsSplit; // Split operation params + msp_cmplx_fft_q15_params paramsCmplxFFT; // Complex FFT params + + /* Initialize complex FFT params structure. */ + paramsCmplxFFT.length = params->length >> 1; + paramsCmplxFFT.bitReverse = params->bitReverse; + paramsCmplxFFT.twiddleTable = params->twiddleTable; + + /* Perform N/2 complex FFT on real source with scaling. */ + status = MAP_msp_cmplx_fft_fixed_q15(¶msCmplxFFT, src); + if (status != MSP_SUCCESS) { + return status; + } + + /* Initialize split operation params structure. */ + paramsSplit.length = params->length; + paramsSplit.twiddleTable = params->twiddleTable; + + /* Perform the last stage split operation to obtain N/2 complex FFT results. */ + return msp_split_q15(¶msSplit, src); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c new file mode 100755 index 000000000..5350c0316 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c @@ -0,0 +1,63 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform an in-place real DFT of the real input signal using a complex DFT of + * size N/2 and a split operation to obtain a complex output with length N/2. + * Fixed scaling by 2 is performed at each stage. + */ +msp_status msp_fft_iq31(const msp_fft_iq31_params *params, int32_t *src) +{ + msp_status status; // Status of the operations + msp_split_iq31_params paramsSplit; // Split operation params + msp_cmplx_fft_iq31_params paramsCmplxFFT; // Complex FFT params + + /* Initialize complex FFT params structure. */ + paramsCmplxFFT.length = params->length >> 1; + paramsCmplxFFT.bitReverse = params->bitReverse; + paramsCmplxFFT.twiddleTable = params->twiddleTable; + + /* Perform N/2 complex FFT on real source with scaling. */ + status = MAP_msp_cmplx_fft_iq31(¶msCmplxFFT, src); + if (status != MSP_SUCCESS) { + return status; + } + + /* Initialize split operation params structure. */ + paramsSplit.length = params->length; + paramsSplit.twiddleTable = params->twiddleTable; + + /* Perform the last stage split operation to obtain N/2 complex FFT results. */ + return msp_split_iq31(¶msSplit, src); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c new file mode 100755 index 000000000..14a420466 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c @@ -0,0 +1,94 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform an in-place real inverse DFT of the complex input signal using a + * split operation and a complex DFT of size N/2 and to obtain a real output + * with length N. Automatic scaling is performed such that this is the direct + * inverse of the forward FFT with auto scaling. + */ +msp_status msp_ifft_auto_q15(const msp_fft_q15_params *params, int16_t *src, uint16_t shift) +{ + uint16_t length; // src length + uint16_t resultShift; // complex fft result shift + msp_status status; // Status of the operations + msp_split_q15_params paramsSplit; // Split operation params + msp_cmplx_conj_q15_params conjParams; // Complex conjugate params + msp_cmplx_fft_q15_params paramsCmplxFFT; // Complex FFT params + msp_cmplx_shift_q15_params paramsShift; // Complex shift params + + /* Initialize complex conjugate params structure. */ + conjParams.length = params->length/2; + + /* Take the complex conjugate of the input. */ + status = msp_cmplx_conj_q15(&conjParams, src, src); + if (status != MSP_SUCCESS) { + return status; + } + + /* Initialize split operation params structure. */ + paramsSplit.length = params->length; + paramsSplit.twiddleTable = params->twiddleTable; + + /* Perform the last stage split operation to obtain N/2 complex FFT results. */ + status = msp_split_q15(¶msSplit, src); + if (status != MSP_SUCCESS) { + return status; + } + + /* Initialize complex FFT params structure. */ + paramsCmplxFFT.length = params->length >> 1; + paramsCmplxFFT.bitReverse = params->bitReverse; + paramsCmplxFFT.twiddleTable = params->twiddleTable; + + /* Perform N/2 complex FFT on real source with scaling. */ + status = MAP_msp_cmplx_fft_auto_q15(¶msCmplxFFT, src, &resultShift); + if (status != MSP_SUCCESS) { + return status; + } + + /* Calculate necessary shift to complete the operation. */ + shift += resultShift; + length = params->length; + while (length > 2) { + shift--; + length >>= 1; + } + + /* Initialize complex shift parameters with conjugate enabled. */ + paramsShift.length = params->length >> 1; + paramsShift.shift = (int8_t)shift; + paramsShift.conjugate = true; + return msp_cmplx_shift_q15(¶msShift, src, src); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c new file mode 100755 index 000000000..b13132fe0 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c @@ -0,0 +1,85 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform an in-place real inverse DFT of the complex input signal using a + * split operation and a complex DFT of size N/2 and to obtain a real output + * with length N. Fixed scaling is performed such that this is the direct + * inverse of the forward FFT with fixed scaling. + */ +msp_status msp_ifft_fixed_q15(const msp_fft_q15_params *params, int16_t *src) +{ + uint16_t resultShift; // complex fft result shift + msp_status status; // Status of the operations + msp_split_q15_params paramsSplit; // Split operation params + msp_cmplx_conj_q15_params conjParams; // Complex conjugate params + msp_cmplx_fft_q15_params paramsCmplxFFT; // Complex FFT params + msp_cmplx_shift_q15_params paramsShift; // Complex shift params + + /* Initialize complex conjugate params structure. */ + conjParams.length = params->length/2; + + /* Take the complex conjugate of the input. */ + status = msp_cmplx_conj_q15(&conjParams, src, src); + if (status != MSP_SUCCESS) { + return status; + } + + /* Initialize split operation params structure. */ + paramsSplit.length = params->length; + paramsSplit.twiddleTable = params->twiddleTable; + + /* Perform the last stage split operation to obtain N/2 complex FFT results. */ + status = msp_split_q15(¶msSplit, src); + if (status != MSP_SUCCESS) { + return status; + } + + /* Initialize complex FFT params structure. */ + paramsCmplxFFT.length = params->length >> 1; + paramsCmplxFFT.bitReverse = params->bitReverse; + paramsCmplxFFT.twiddleTable = params->twiddleTable; + + /* Perform N/2 complex FFT on real source with scaling. */ + status = MAP_msp_cmplx_fft_auto_q15(¶msCmplxFFT, src, &resultShift); + if (status != MSP_SUCCESS) { + return status; + } + + /* Initialize complex shift parameters with conjugate enabled. */ + paramsShift.length = params->length >> 1; + paramsShift.shift = (int8_t)resultShift; + paramsShift.conjugate = true; + return msp_cmplx_shift_q15(¶msShift, src, src); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c new file mode 100755 index 000000000..1116a3213 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c @@ -0,0 +1,121 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform an in-place complex inverse DFT of the input signal using complex + * conjugate, the complex DFT and complex scaling. Fixed scaling is performed + * such that this is the direct inverse of the forward FFT. + */ +msp_status msp_ifft_iq31(const msp_fft_iq31_params *params, int32_t *src) +{ + uint16_t index; // min/max index + uint16_t length; // vector length + int16_t preShift; // pre-complex fft shift + int16_t postShift; // post-complex fft shift + int32_t maximum; // vector maximum + int32_t minimum; // vector minimum + msp_status status; // Status of the operations + msp_max_iq31_params paramsMax; // Maximum params + msp_min_iq31_params paramsMin; // Minimum params + msp_split_iq31_params paramsSplit; // Split operation params + msp_cmplx_fft_iq31_params paramsCmplxFFT; // Complex FFT params + msp_cmplx_shift_iq31_params paramsShift; // Complex shift params + + /* Calculate the necessary result scale based on length. */ + preShift = -2; + length = params->length; + while (length > 2) { + preShift--; + length >>= 1; + } + + /* Find maximum input to determine scaling order. */ + paramsMax.length = params->length; + status = msp_max_iq31(¶msMax, src, &maximum, &index); + if (status != MSP_SUCCESS) { + return status; + } + + /* Find minimum input to determine scaling order. */ + paramsMin.length = params->length; + status = msp_min_iq31(¶msMin, src, &minimum, &index); + if (status != MSP_SUCCESS) { + return status; + } + + /* Determine scaling order based on min/max results. */ + postShift = 0; + minimum = minimum < -maximum ? minimum : -maximum; + while (minimum > (INT32_MIN/2)) { + minimum <<= 1; + preShift++; + postShift--; + } + + /* Prescale the complex fft input with complex conjugate. */ + paramsShift.length = params->length >> 1; + paramsShift.shift = preShift; + paramsShift.conjugate = true; + status = msp_cmplx_shift_iq31(¶msShift, src, src); + if (status != MSP_SUCCESS) { + return status; + } + + /* Initialize split operation params structure. */ + paramsSplit.length = params->length; + paramsSplit.twiddleTable = params->twiddleTable; + + /* Perform the last stage split operation to obtain N/2 complex FFT results. */ + status = msp_split_iq31(¶msSplit, src); + if (status != MSP_SUCCESS) { + return status; + } + + /* Initialize complex FFT params structure. */ + paramsCmplxFFT.length = params->length >> 1; + paramsCmplxFFT.bitReverse = params->bitReverse; + paramsCmplxFFT.twiddleTable = params->twiddleTable; + + /* Perform N/2 complex FFT on real source. */ + status = MAP_msp_cmplx_fft_iq31(¶msCmplxFFT, src); + if (status != MSP_SUCCESS) { + return status; + } + + /* Initialize complex shift parameters with conjugate enabled. */ + paramsShift.length = params->length >> 1; + paramsShift.shift = postShift; + paramsShift.conjugate = true; + return msp_cmplx_shift_iq31(¶msShift, src, src); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c new file mode 100755 index 000000000..dc63c1e39 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c @@ -0,0 +1,274 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_split_iq31(const msp_split_iq31_params *params, int32_t *src) +{ + uint16_t i; + uint16_t log2Size; + uint16_t length; + msp_status status; + MSP_LEA_FFTLONG_PARAMS *leaParams; + + /* Get vector length parameter. */ + length = params->length; + + /* Calculate log2Size parameter. */ + i = length; + log2Size = 0; + while (i > 1) { + log2Size++; + i >>= 1; + } + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two. */ + if ((length & (length-1))) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, length))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_FFTLONG_PARAMS structure. */ + leaParams = (MSP_LEA_FFTLONG_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_FFTLONG_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_FFTLONG_PARAMS structure. */ + leaParams->vectorSize = length; + leaParams->log2Size = log2Size; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__FFTLONG command. */ + msp_lea_invokeCommand(LEACMD__FFTLONG); + + /* Free MSP_LEA_FFTLONG_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_FFTLONG_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +/* + * This function performs the last stage of a real FFT of size M in place. + * Before this step is performed, a size M/2 complex FFT must be performed + * on the input data with bit reversal. This algorithm has been optimized + * to use a single coefficient lookup table and a reduced number of multiply + * operations. The complex result G(k) where k = 0,1,2...N-1 and N = M/2 is + * calculated as follows: + * + * G(k) = 0.5*(X(k) + X*(N-k)) - 0.5*j*(e^-j2*pi*k/2N)*(X(k) - X*(N-k)) + * + * This can be optimized by calculating G(N-k) in parallel using the following + * simplification: + * + * G(N-k) = 0.5*(X(N-k) + X*(N-(N-k))) - 0.5*j*(e^-j2*pi*(N-k)/2N)*(X(N-k) - X*(N-(N-k))) + * G(N-k) = 0.5*(X(N-k) + X*(k)) - 0.5*j*(e^-j2*pi*(N-k)/2N)*(X(N-k) - X*(k)) + * G(N-k) = 0.5*(X(N-k) + X*(k)) - 0.5*j*-(e^-j2*pi*(N-k)/2N)*(X*(k) - X(N-k)) + * G(N-k) = 0.5*(X(k) + X*(N-k))* - 0.5*j*((e^-j2*pi*k/2N)*(X(k) - X*(N-k)))* + * + * The common components of G(k) and G(N-k) can be calculated once as local + * variables A and B: + * + * A(k) = 0.5*(X(k) + X*(N-k)) + * B(k) = 0.5*(e^-j2*pi*k/2N)*(X(k) - X*(N-k)) + * + * Finally, performing substitutions to the G(k) and G(N-k) equations yields + * the following optimized equations: + * + * G(k) = A(k) - j*B(k) + * G(N-k) = A*(k) - j*B*(k) + * + * Reference: http://www.ti.com/lit/an/spra291/spra291.pdf + */ +msp_status msp_split_iq31(const msp_split_iq31_params *params, int32_t *src) +{ + uint16_t length; // src length + uint16_t tableLength; // Coefficient table length + uint16_t coeffOffset; // Coefficient table increment + int32_t aR; // Temp variable + int32_t aI; // Temp variable + int32_t bR; // Temp variable + int32_t bI; // Temp variable + int32_t cR; // Temp variable + int32_t cI; // Temp variable + int32_t *srcPtrK; // Source pointer to X(k) + int32_t *srcPtrNK; // Source pointer to X(N-k) + const int16_t *coeffPtr; // Coefficient pointer + + /* Save input length to local. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two. */ + if ((length & (length-1))) { + return MSP_SIZE_ERROR; + } + + /* Check that the provided table is the correct length. */ + if (*(uint16_t *)params->twiddleTable < length) { + return MSP_TABLE_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* + * Calculate the first result bin (DC component). + * + * X(N) = X(0) + * G(0) = 0.5*(X(0) + X*(0)) - j*0.5*(e^-j*0)*(X(0) - X*(0)) + * G(0) = Xr(0) + Xi(0) + */ + CMPLX_REAL(src) = (CMPLX_REAL(src) + CMPLX_IMAG(src)) << 1; + CMPLX_IMAG(src) = 0; + + /* Initialize Src(k) and Src(N/2-k) pointers when k=1. */ + srcPtrK = src + CMPLX_INCREMENT; + srcPtrNK = src + length - CMPLX_INCREMENT; + + /* Calculate coefficient table offset. */ + coeffOffset = 2; + tableLength = *(uint16_t *)params->twiddleTable; + while (length < tableLength) { + coeffOffset *= 2; + length *= 2; + } + + /* Initialize coefficient pointer to index k=1. */ + coeffPtr = ¶ms->twiddleTable[DSPLIB_TABLE_OFFSET] + coeffOffset; + + /* + * Initialize length of split operations to perform. G(k) and G(N/2-k) are + * calculated in the same loop iteration so only half of the N/2 iterations + * are required, N/4. The last iteration where k = N/2-k will be calculated + * separately. + */ + length = (params->length >> 2) - 1; + + /* If MPY32 is available save control context and set to fractional mode. */ +#if defined(__MSP430_HAS_MPY32__) + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN; +#endif + + /* Loop through and perform all of the split operations. */ + while(length--) { + /* Calculate X(k) - X*(N-k) to local temporary variables. */ + bR = CMPLX_REAL(srcPtrK) - CMPLX_REAL(srcPtrNK); + bI = CMPLX_IMAG(srcPtrK) + CMPLX_IMAG(srcPtrNK); + + /* B(k) = 0.5*(e^-j2*pi*k/2N)*(X(k) - X(N-k)) */ + cR = CMPLX_REAL(coeffPtr); + cI = CMPLX_IMAG(coeffPtr); + __q15iq31cmpy(&cR, &cI, &bR, &bI); + bR = cR; bI = cI; + + /* + * Ar(k) = 0.5*(Xr(k) + Xr(N-k)) + * Ai(k) = 0.5*(Xi(k) - Xi(N-k)) + */ + aR = (CMPLX_REAL(srcPtrK) + CMPLX_REAL(srcPtrNK)); + aI = (CMPLX_IMAG(srcPtrK) - CMPLX_IMAG(srcPtrNK)); + + /* + * Gr(k) = Ar(k) + Bi(k) + * Gi(k) = Ai(k) - Br(k) + * Gr(N-k) = Ar(k) - Bi(k) + * Gi(N-k) = -(Ai(k) + Br(k)) + */ + CMPLX_REAL(srcPtrK) = aR + bI; + CMPLX_IMAG(srcPtrK) = aI - bR; + CMPLX_REAL(srcPtrNK) = aR - bI; + CMPLX_IMAG(srcPtrNK) = -(aI + bR); + + /* Update pointers. */ + srcPtrK += CMPLX_INCREMENT; + srcPtrNK -= CMPLX_INCREMENT; + coeffPtr += coeffOffset; + } + + /* Restore MPY32 control context. */ +#if defined(__MSP430_HAS_MPY32__) + MPY32CTL0 = ui16MPYState; +#endif + + /* + * Calculate the last result bin where k = N/2-k. + * + * X(k) = X(N-k) + * G(k) = 0.5*(X(k) + X*(k)) - j*0.5*(e^-j*pi/2)*(X(k) - X*(k)) + * G(k) = 0.5(2*Xr(k)) - j*0.5*(-j)*(2*j*Xi(k)) + * G(k) = Xr(k) - j*Xi(k) + */ + CMPLX_REAL(srcPtrK) = CMPLX_REAL(srcPtrK) << 1; + CMPLX_IMAG(srcPtrK) = -(CMPLX_IMAG(srcPtrK) << 1); + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c new file mode 100755 index 000000000..dc036006c --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c @@ -0,0 +1,273 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_split_q15(const msp_split_q15_params *params, int16_t *src) +{ + uint16_t i; + uint16_t log2Size; + uint16_t length; + msp_status status; + MSP_LEA_FFT_PARAMS *leaParams; + + /* Get vector length parameter. */ + length = params->length; + + /* Calculate log2Size parameter. */ + i = length; + log2Size = 0; + while (i > 1) { + log2Size++; + i >>= 1; + } + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two. */ + if ((length & (length-1))) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, length))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_FFT_PARAMS structure. */ + leaParams = (MSP_LEA_FFT_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_FFT_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_FFT_PARAMS structure. */ + leaParams->vectorSize = length; + leaParams->log2Size = log2Size; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__FFT command. */ + msp_lea_invokeCommand(LEACMD__FFT); + + /* Free MSP_LEA_FFT_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_FFT_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +/* + * This function performs the last stage of a real FFT of size M in place. + * Before this step is performed, a size M/2 complex FFT must be performed + * on the input data with bit reversal. This algorithm has been optimized + * to use a single coefficient lookup table and a reduced number of multiply + * operations. The complex result G(k) where k = 0,1,2...N-1 and N = M/2 is + * calculated as follows: + * + * G(k) = 0.5*(X(k) + X*(N-k)) - 0.5*j*(e^-j2*pi*k/2N)*(X(k) - X*(N-k)) + * + * This can be optimized by calculating G(N-k) in parallel using the following + * simplification: + * + * G(N-k) = 0.5*(X(N-k) + X*(N-(N-k))) - 0.5*j*(e^-j2*pi*(N-k)/2N)*(X(N-k) - X*(N-(N-k))) + * G(N-k) = 0.5*(X(N-k) + X*(k)) - 0.5*j*(e^-j2*pi*(N-k)/2N)*(X(N-k) - X*(k)) + * G(N-k) = 0.5*(X(N-k) + X*(k)) - 0.5*j*-(e^-j2*pi*(N-k)/2N)*(X*(k) - X(N-k)) + * G(N-k) = 0.5*(X(k) + X*(N-k))* - 0.5*j*((e^-j2*pi*k/2N)*(X(k) - X*(N-k)))* + * + * The common components of G(k) and G(N-k) can be calculated once as local + * variables A and B: + * + * A(k) = 0.5*(X(k) + X*(N-k)) + * B(k) = 0.5*(e^-j2*pi*k/2N)*(X(k) - X*(N-k)) + * + * Finally, performing substitutions to the G(k) and G(N-k) equations yields + * the following optimized equations: + * + * G(k) = A(k) - j*B(k) + * G(N-k) = A*(k) - j*B*(k) + * + * Reference: http://www.ti.com/lit/an/spra291/spra291.pdf + */ +msp_status msp_split_q15(const msp_split_q15_params *params, int16_t *src) +{ + uint16_t length; // src length + uint16_t tableLength; // Coefficient table length + uint16_t coeffOffset; // Coefficient table increment + int16_t aR; // Temp variable + int16_t aI; // Temp variable + int16_t bR; // Temp variable + int16_t bI; // Temp variable + int16_t cR; // Temp variable + int16_t cI; // Temp variable + int16_t *srcPtrK; // Source pointer to X(k) + int16_t *srcPtrNK; // Source pointer to X(N-k) + const int16_t *coeffPtr; // Coefficient pointer + + /* Save input length to local. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the length is a power of two. */ + if ((length & (length-1))) { + return MSP_SIZE_ERROR; + } + + /* Check that the provided table is the correct length. */ + if (*(uint16_t *)params->twiddleTable < length) { + return MSP_TABLE_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* + * Calculate the first result bin (DC component). + * + * X(N) = X(0) + * G(0) = 0.5*(X(0) + X*(0)) - j*0.5*(e^-j*0)*(X(0) - X*(0)) + * G(0) = Xr(0) + Xi(0) + */ + CMPLX_REAL(src) = CMPLX_REAL(src) + CMPLX_IMAG(src); + CMPLX_IMAG(src) = 0; + + /* Initialize Src(k) and Src(N/2-k) pointers when k=1. */ + srcPtrK = src + CMPLX_INCREMENT; + srcPtrNK = src + length - CMPLX_INCREMENT; + + /* Calculate coefficient table offset. */ + coeffOffset = 2; + tableLength = *(uint16_t *)params->twiddleTable; + while (length < tableLength) { + coeffOffset *= 2; + length *= 2; + } + + /* Initialize coefficient pointer to index k=1. */ + coeffPtr = ¶ms->twiddleTable[DSPLIB_TABLE_OFFSET] + coeffOffset; + + /* + * Initialize length of split operations to perform. G(k) and G(N/2-k) are + * calculated in the same loop iteration so only half of the N/2 iterations + * are required, N/4. The last iteration where k = N/2-k will be calculated + * separately. + */ + length = (params->length >> 2) - 1; + + /* If MPY32 is available save control context and set to fractional mode. */ +#if defined(__MSP430_HAS_MPY32__) + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN; +#endif + + /* Loop through and perform all of the split operations. */ + while(length--) { + /* Calculate X(k) - X*(N-k) to local temporary variables. */ + bR = CMPLX_REAL(srcPtrK) - CMPLX_REAL(srcPtrNK); + bI = CMPLX_IMAG(srcPtrK) + CMPLX_IMAG(srcPtrNK); + + /* B(k) = 0.5*(e^-j2*pi*k/2N)*(X(k) - X(N-k)) */ + cR = CMPLX_REAL(coeffPtr) >> 1; + cI = CMPLX_IMAG(coeffPtr) >> 1; + __q15cmpy(&bR, &bI, &cR, &cI); + + /* + * Ar(k) = 0.5*(Xr(k) + Xr(N-k)) + * Ai(k) = 0.5*(Xi(k) - Xi(N-k)) + */ + aR = (CMPLX_REAL(srcPtrK) + CMPLX_REAL(srcPtrNK)) >> 1; + aI = (CMPLX_IMAG(srcPtrK) - CMPLX_IMAG(srcPtrNK)) >> 1; + + /* + * Gr(k) = Ar(k) + Bi(k) + * Gi(k) = Ai(k) - Br(k) + * Gr(N-k) = Ar(k) - Bi(k) + * Gi(N-k) = -(Ai(k) + Br(k)) + */ + CMPLX_REAL(srcPtrK) = aR + bI; + CMPLX_IMAG(srcPtrK) = aI - bR; + CMPLX_REAL(srcPtrNK) = aR - bI; + CMPLX_IMAG(srcPtrNK) = -(aI + bR); + + /* Update pointers. */ + srcPtrK += CMPLX_INCREMENT; + srcPtrNK -= CMPLX_INCREMENT; + coeffPtr += coeffOffset; + } + + /* Restore MPY32 control context. */ +#if defined(__MSP430_HAS_MPY32__) + MPY32CTL0 = ui16MPYState; +#endif + + /* + * Calculate the last result bin where k = N/2-k. + * + * X(k) = X(N-k) + * G(k) = 0.5*(X(k) + X*(k)) - j*0.5*(e^-j*pi/2)*(X(k) - X*(k)) + * G(k) = 0.5(2*Xr(k)) - j*0.5*(-j)*(2*j*Xi(k)) + * G(k) = Xr(k) - j*Xi(k) + */ + CMPLX_REAL(srcPtrK) = CMPLX_REAL(srcPtrK); + CMPLX_IMAG(srcPtrK) = -CMPLX_IMAG(srcPtrK); + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c new file mode 100755 index 000000000..5eb1ad017 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c @@ -0,0 +1,1161 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if !defined(MSP_USE_LEA) + +/* + * Bit reversal lookup table. + */ +const uint8_t msp_cmplx_bitrev_table_ui8[256] = { + 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0, + 0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0, + 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8, + 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8, + 0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4, + 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4, + 0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC, + 0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC, + 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2, + 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2, + 0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA, + 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA, + 0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6, + 0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6, + 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE, + 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE, + 0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1, + 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1, + 0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9, + 0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9, + 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5, + 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5, + 0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED, + 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD, + 0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3, + 0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3, + 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB, + 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB, + 0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7, + 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7, + 0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF, + 0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF +}; + +/* + * FFT twiddle factor table for length of 16. + */ +const _q15 msp_cmplx_twiddle_table_16_q15[DSPLIB_TABLE_OFFSET+16] = { + 0x0010, 0x0000, + 0x7FFF, 0x0000, 0x7642, 0xCF04, 0x5A82, 0xA57E, 0x30FC, 0x89BE, + 0x0000, 0x8001, 0xCF04, 0x89BE, 0xA57E, 0xA57E, 0x89BE, 0xCF04 +}; + +/* + * FFT twiddle factor table for length of 32. + */ +const _q15 msp_cmplx_twiddle_table_32_q15[DSPLIB_TABLE_OFFSET+32] = { + 0x0020, 0x0000, + 0x7FFF, 0x0000, 0x7D8A, 0xE707, 0x7642, 0xCF04, 0x6A6E, 0xB8E3, + 0x5A82, 0xA57E, 0x471D, 0x9592, 0x30FC, 0x89BE, 0x18F9, 0x8276, + 0x0000, 0x8001, 0xE707, 0x8276, 0xCF04, 0x89BE, 0xB8E3, 0x9592, + 0xA57E, 0xA57E, 0x9592, 0xB8E3, 0x89BE, 0xCF04, 0x8276, 0xE707 +}; + +/* + * FFT twiddle factor table for length of 64. + */ +const _q15 msp_cmplx_twiddle_table_64_q15[DSPLIB_TABLE_OFFSET+64] = { + 0x0040, 0x0000, + 0x7FFF, 0x0000, 0x7F62, 0xF374, 0x7D8A, 0xE707, 0x7A7D, 0xDAD8, + 0x7642, 0xCF04, 0x70E3, 0xC3A9, 0x6A6E, 0xB8E3, 0x62F2, 0xAECC, + 0x5A82, 0xA57E, 0x5134, 0x9D0E, 0x471D, 0x9592, 0x3C57, 0x8F1D, + 0x30FC, 0x89BE, 0x2528, 0x8583, 0x18F9, 0x8276, 0x0C8C, 0x809E, + 0x0000, 0x8001, 0xF374, 0x809E, 0xE707, 0x8276, 0xDAD8, 0x8583, + 0xCF04, 0x89BE, 0xC3A9, 0x8F1D, 0xB8E3, 0x9592, 0xAECC, 0x9D0E, + 0xA57E, 0xA57E, 0x9D0E, 0xAECC, 0x9592, 0xB8E3, 0x8F1D, 0xC3A9, + 0x89BE, 0xCF04, 0x8583, 0xDAD8, 0x8276, 0xE707, 0x809E, 0xF374 +}; + +/* + * FFT twiddle factor table for length of 128. + */ +const _q15 msp_cmplx_twiddle_table_128_q15[DSPLIB_TABLE_OFFSET+128] = { + 0x0080, 0x0000, + 0x7FFF, 0x0000, 0x7FD9, 0xF9B8, 0x7F62, 0xF374, 0x7E9D, 0xED38, + 0x7D8A, 0xE707, 0x7C2A, 0xE0E6, 0x7A7D, 0xDAD8, 0x7885, 0xD4E1, + 0x7642, 0xCF04, 0x73B6, 0xC946, 0x70E3, 0xC3A9, 0x6DCA, 0xBE32, + 0x6A6E, 0xB8E3, 0x66D0, 0xB3C0, 0x62F2, 0xAECC, 0x5ED7, 0xAA0A, + 0x5A82, 0xA57E, 0x55F6, 0xA129, 0x5134, 0x9D0E, 0x4C40, 0x9930, + 0x471D, 0x9592, 0x41CE, 0x9236, 0x3C57, 0x8F1D, 0x36BA, 0x8C4A, + 0x30FC, 0x89BE, 0x2B1F, 0x877B, 0x2528, 0x8583, 0x1F1A, 0x83D6, + 0x18F9, 0x8276, 0x12C8, 0x8163, 0x0C8C, 0x809E, 0x0648, 0x8027, + 0x0000, 0x8001, 0xF9B8, 0x8027, 0xF374, 0x809E, 0xED38, 0x8163, + 0xE707, 0x8276, 0xE0E6, 0x83D6, 0xDAD8, 0x8583, 0xD4E1, 0x877B, + 0xCF04, 0x89BE, 0xC946, 0x8C4A, 0xC3A9, 0x8F1D, 0xBE32, 0x9236, + 0xB8E3, 0x9592, 0xB3C0, 0x9930, 0xAECC, 0x9D0E, 0xAA0A, 0xA129, + 0xA57E, 0xA57E, 0xA129, 0xAA0A, 0x9D0E, 0xAECC, 0x9930, 0xB3C0, + 0x9592, 0xB8E3, 0x9236, 0xBE32, 0x8F1D, 0xC3A9, 0x8C4A, 0xC946, + 0x89BE, 0xCF04, 0x877B, 0xD4E1, 0x8583, 0xDAD8, 0x83D6, 0xE0E6, + 0x8276, 0xE707, 0x8163, 0xED38, 0x809E, 0xF374, 0x8027, 0xF9B8 +}; + +/* + * FFT twiddle factor table for length of 256. + */ +const _q15 msp_cmplx_twiddle_table_256_q15[DSPLIB_TABLE_OFFSET+256] = { + 0x0100, 0x0000, + 0x7FFF, 0x0000, 0x7FF6, 0xFCDC, 0x7FD9, 0xF9B8, 0x7FA7, 0xF695, + 0x7F62, 0xF374, 0x7F0A, 0xF055, 0x7E9D, 0xED38, 0x7E1E, 0xEA1E, + 0x7D8A, 0xE707, 0x7CE4, 0xE3F4, 0x7C2A, 0xE0E6, 0x7B5D, 0xDDDC, + 0x7A7D, 0xDAD8, 0x798A, 0xD7D9, 0x7885, 0xD4E1, 0x776C, 0xD1EF, + 0x7642, 0xCF04, 0x7505, 0xCC21, 0x73B6, 0xC946, 0x7255, 0xC673, + 0x70E3, 0xC3A9, 0x6F5F, 0xC0E9, 0x6DCA, 0xBE32, 0x6C24, 0xBB85, + 0x6A6E, 0xB8E3, 0x68A7, 0xB64C, 0x66D0, 0xB3C0, 0x64E9, 0xB140, + 0x62F2, 0xAECC, 0x60EC, 0xAC65, 0x5ED7, 0xAA0A, 0x5CB4, 0xA7BD, + 0x5A82, 0xA57E, 0x5843, 0xA34C, 0x55F6, 0xA129, 0x539B, 0x9F14, + 0x5134, 0x9D0E, 0x4EC0, 0x9B17, 0x4C40, 0x9930, 0x49B4, 0x9759, + 0x471D, 0x9592, 0x447B, 0x93DC, 0x41CE, 0x9236, 0x3F17, 0x90A1, + 0x3C57, 0x8F1D, 0x398D, 0x8DAB, 0x36BA, 0x8C4A, 0x33DF, 0x8AFB, + 0x30FC, 0x89BE, 0x2E11, 0x8894, 0x2B1F, 0x877B, 0x2827, 0x8676, + 0x2528, 0x8583, 0x2224, 0x84A3, 0x1F1A, 0x83D6, 0x1C0C, 0x831C, + 0x18F9, 0x8276, 0x15E2, 0x81E2, 0x12C8, 0x8163, 0x0FAB, 0x80F6, + 0x0C8C, 0x809E, 0x096B, 0x8059, 0x0648, 0x8027, 0x0324, 0x800A, + 0x0000, 0x8001, 0xFCDC, 0x800A, 0xF9B8, 0x8027, 0xF695, 0x8059, + 0xF374, 0x809E, 0xF055, 0x80F6, 0xED38, 0x8163, 0xEA1E, 0x81E2, + 0xE707, 0x8276, 0xE3F4, 0x831C, 0xE0E6, 0x83D6, 0xDDDC, 0x84A3, + 0xDAD8, 0x8583, 0xD7D9, 0x8676, 0xD4E1, 0x877B, 0xD1EF, 0x8894, + 0xCF04, 0x89BE, 0xCC21, 0x8AFB, 0xC946, 0x8C4A, 0xC673, 0x8DAB, + 0xC3A9, 0x8F1D, 0xC0E9, 0x90A1, 0xBE32, 0x9236, 0xBB85, 0x93DC, + 0xB8E3, 0x9592, 0xB64C, 0x9759, 0xB3C0, 0x9930, 0xB140, 0x9B17, + 0xAECC, 0x9D0E, 0xAC65, 0x9F14, 0xAA0A, 0xA129, 0xA7BD, 0xA34C, + 0xA57E, 0xA57E, 0xA34C, 0xA7BD, 0xA129, 0xAA0A, 0x9F14, 0xAC65, + 0x9D0E, 0xAECC, 0x9B17, 0xB140, 0x9930, 0xB3C0, 0x9759, 0xB64C, + 0x9592, 0xB8E3, 0x93DC, 0xBB85, 0x9236, 0xBE32, 0x90A1, 0xC0E9, + 0x8F1D, 0xC3A9, 0x8DAB, 0xC673, 0x8C4A, 0xC946, 0x8AFB, 0xCC21, + 0x89BE, 0xCF04, 0x8894, 0xD1EF, 0x877B, 0xD4E1, 0x8676, 0xD7D9, + 0x8583, 0xDAD8, 0x84A3, 0xDDDC, 0x83D6, 0xE0E6, 0x831C, 0xE3F4, + 0x8276, 0xE707, 0x81E2, 0xEA1E, 0x8163, 0xED38, 0x80F6, 0xF055, + 0x809E, 0xF374, 0x8059, 0xF695, 0x8027, 0xF9B8, 0x800A, 0xFCDC +}; + +/* + * FFT twiddle factor table for length of 512. + */ +const _q15 msp_cmplx_twiddle_table_512_q15[DSPLIB_TABLE_OFFSET+512] = { + 0x0200, 0x0000, + 0x7FFF, 0x0000, 0x7FFE, 0xFE6E, 0x7FF6, 0xFCDC, 0x7FEA, 0xFB4A, + 0x7FD9, 0xF9B8, 0x7FC2, 0xF827, 0x7FA7, 0xF695, 0x7F87, 0xF505, + 0x7F62, 0xF374, 0x7F38, 0xF1E4, 0x7F0A, 0xF055, 0x7ED6, 0xEEC6, + 0x7E9D, 0xED38, 0x7E60, 0xEBAB, 0x7E1E, 0xEA1E, 0x7DD6, 0xE892, + 0x7D8A, 0xE707, 0x7D3A, 0xE57D, 0x7CE4, 0xE3F4, 0x7C89, 0xE26D, + 0x7C2A, 0xE0E6, 0x7BC6, 0xDF61, 0x7B5D, 0xDDDC, 0x7AEF, 0xDC59, + 0x7A7D, 0xDAD8, 0x7A06, 0xD958, 0x798A, 0xD7D9, 0x790A, 0xD65C, + 0x7885, 0xD4E1, 0x77FB, 0xD367, 0x776C, 0xD1EF, 0x76D9, 0xD079, + 0x7642, 0xCF04, 0x75A6, 0xCD92, 0x7505, 0xCC21, 0x7460, 0xCAB2, + 0x73B6, 0xC946, 0x7308, 0xC7DB, 0x7255, 0xC673, 0x719E, 0xC50D, + 0x70E3, 0xC3A9, 0x7023, 0xC248, 0x6F5F, 0xC0E9, 0x6E97, 0xBF8C, + 0x6DCA, 0xBE32, 0x6CF9, 0xBCDA, 0x6C24, 0xBB85, 0x6B4B, 0xBA33, + 0x6A6E, 0xB8E3, 0x698C, 0xB796, 0x68A7, 0xB64C, 0x67BD, 0xB505, + 0x66D0, 0xB3C0, 0x65DE, 0xB27F, 0x64E9, 0xB140, 0x63EF, 0xB005, + 0x62F2, 0xAECC, 0x61F1, 0xAD97, 0x60EC, 0xAC65, 0x5FE4, 0xAB36, + 0x5ED7, 0xAA0A, 0x5DC8, 0xA8E2, 0x5CB4, 0xA7BD, 0x5B9D, 0xA69C, + 0x5A82, 0xA57E, 0x5964, 0xA463, 0x5843, 0xA34C, 0x571E, 0xA238, + 0x55F6, 0xA129, 0x54CA, 0xA01C, 0x539B, 0x9F14, 0x5269, 0x9E0F, + 0x5134, 0x9D0E, 0x4FFB, 0x9C11, 0x4EC0, 0x9B17, 0x4D81, 0x9A22, + 0x4C40, 0x9930, 0x4AFB, 0x9843, 0x49B4, 0x9759, 0x486A, 0x9674, + 0x471D, 0x9592, 0x45CD, 0x94B5, 0x447B, 0x93DC, 0x4326, 0x9307, + 0x41CE, 0x9236, 0x4074, 0x9169, 0x3F17, 0x90A1, 0x3DB8, 0x8FDD, + 0x3C57, 0x8F1D, 0x3AF3, 0x8E62, 0x398D, 0x8DAB, 0x3825, 0x8CF8, + 0x36BA, 0x8C4A, 0x354E, 0x8BA0, 0x33DF, 0x8AFB, 0x326E, 0x8A5A, + 0x30FC, 0x89BE, 0x2F87, 0x8927, 0x2E11, 0x8894, 0x2C99, 0x8805, + 0x2B1F, 0x877B, 0x29A4, 0x86F6, 0x2827, 0x8676, 0x26A8, 0x85FA, + 0x2528, 0x8583, 0x23A7, 0x8511, 0x2224, 0x84A3, 0x209F, 0x843A, + 0x1F1A, 0x83D6, 0x1D93, 0x8377, 0x1C0C, 0x831C, 0x1A83, 0x82C6, + 0x18F9, 0x8276, 0x176E, 0x822A, 0x15E2, 0x81E2, 0x1455, 0x81A0, + 0x12C8, 0x8163, 0x113A, 0x812A, 0x0FAB, 0x80F6, 0x0E1C, 0x80C8, + 0x0C8C, 0x809E, 0x0AFB, 0x8079, 0x096B, 0x8059, 0x07D9, 0x803E, + 0x0648, 0x8027, 0x04B6, 0x8016, 0x0324, 0x800A, 0x0192, 0x8002, + 0x0000, 0x8001, 0xFE6E, 0x8002, 0xFCDC, 0x800A, 0xFB4A, 0x8016, + 0xF9B8, 0x8027, 0xF827, 0x803E, 0xF695, 0x8059, 0xF505, 0x8079, + 0xF374, 0x809E, 0xF1E4, 0x80C8, 0xF055, 0x80F6, 0xEEC6, 0x812A, + 0xED38, 0x8163, 0xEBAB, 0x81A0, 0xEA1E, 0x81E2, 0xE892, 0x822A, + 0xE707, 0x8276, 0xE57D, 0x82C6, 0xE3F4, 0x831C, 0xE26D, 0x8377, + 0xE0E6, 0x83D6, 0xDF61, 0x843A, 0xDDDC, 0x84A3, 0xDC59, 0x8511, + 0xDAD8, 0x8583, 0xD958, 0x85FA, 0xD7D9, 0x8676, 0xD65C, 0x86F6, + 0xD4E1, 0x877B, 0xD367, 0x8805, 0xD1EF, 0x8894, 0xD079, 0x8927, + 0xCF04, 0x89BE, 0xCD92, 0x8A5A, 0xCC21, 0x8AFB, 0xCAB2, 0x8BA0, + 0xC946, 0x8C4A, 0xC7DB, 0x8CF8, 0xC673, 0x8DAB, 0xC50D, 0x8E62, + 0xC3A9, 0x8F1D, 0xC248, 0x8FDD, 0xC0E9, 0x90A1, 0xBF8C, 0x9169, + 0xBE32, 0x9236, 0xBCDA, 0x9307, 0xBB85, 0x93DC, 0xBA33, 0x94B5, + 0xB8E3, 0x9592, 0xB796, 0x9674, 0xB64C, 0x9759, 0xB505, 0x9843, + 0xB3C0, 0x9930, 0xB27F, 0x9A22, 0xB140, 0x9B17, 0xB005, 0x9C11, + 0xAECC, 0x9D0E, 0xAD97, 0x9E0F, 0xAC65, 0x9F14, 0xAB36, 0xA01C, + 0xAA0A, 0xA129, 0xA8E2, 0xA238, 0xA7BD, 0xA34C, 0xA69C, 0xA463, + 0xA57E, 0xA57E, 0xA463, 0xA69C, 0xA34C, 0xA7BD, 0xA238, 0xA8E2, + 0xA129, 0xAA0A, 0xA01C, 0xAB36, 0x9F14, 0xAC65, 0x9E0F, 0xAD97, + 0x9D0E, 0xAECC, 0x9C11, 0xB005, 0x9B17, 0xB140, 0x9A22, 0xB27F, + 0x9930, 0xB3C0, 0x9843, 0xB505, 0x9759, 0xB64C, 0x9674, 0xB796, + 0x9592, 0xB8E3, 0x94B5, 0xBA33, 0x93DC, 0xBB85, 0x9307, 0xBCDA, + 0x9236, 0xBE32, 0x9169, 0xBF8C, 0x90A1, 0xC0E9, 0x8FDD, 0xC248, + 0x8F1D, 0xC3A9, 0x8E62, 0xC50D, 0x8DAB, 0xC673, 0x8CF8, 0xC7DB, + 0x8C4A, 0xC946, 0x8BA0, 0xCAB2, 0x8AFB, 0xCC21, 0x8A5A, 0xCD92, + 0x89BE, 0xCF04, 0x8927, 0xD079, 0x8894, 0xD1EF, 0x8805, 0xD367, + 0x877B, 0xD4E1, 0x86F6, 0xD65C, 0x8676, 0xD7D9, 0x85FA, 0xD958, + 0x8583, 0xDAD8, 0x8511, 0xDC59, 0x84A3, 0xDDDC, 0x843A, 0xDF61, + 0x83D6, 0xE0E6, 0x8377, 0xE26D, 0x831C, 0xE3F4, 0x82C6, 0xE57D, + 0x8276, 0xE707, 0x822A, 0xE892, 0x81E2, 0xEA1E, 0x81A0, 0xEBAB, + 0x8163, 0xED38, 0x812A, 0xEEC6, 0x80F6, 0xF055, 0x80C8, 0xF1E4, + 0x809E, 0xF374, 0x8079, 0xF505, 0x8059, 0xF695, 0x803E, 0xF827, + 0x8027, 0xF9B8, 0x8016, 0xFB4A, 0x800A, 0xFCDC, 0x8002, 0xFE6E +}; + +/* + * FFT twiddle factor table for length of 1024. + */ +const _q15 msp_cmplx_twiddle_table_1024_q15[DSPLIB_TABLE_OFFSET+1024] = { + 0x0400, 0x0000, + 0x7FFF, 0x0000, 0x7FFF, 0xFF37, 0x7FFE, 0xFE6E, 0x7FFA, 0xFDA5, + 0x7FF6, 0xFCDC, 0x7FF1, 0xFC13, 0x7FEA, 0xFB4A, 0x7FE2, 0xFA81, + 0x7FD9, 0xF9B8, 0x7FCE, 0xF8EF, 0x7FC2, 0xF827, 0x7FB5, 0xF75E, + 0x7FA7, 0xF695, 0x7F98, 0xF5CD, 0x7F87, 0xF505, 0x7F75, 0xF43C, + 0x7F62, 0xF374, 0x7F4E, 0xF2AC, 0x7F38, 0xF1E4, 0x7F22, 0xF11C, + 0x7F0A, 0xF055, 0x7EF0, 0xEF8D, 0x7ED6, 0xEEC6, 0x7EBA, 0xEDFF, + 0x7E9D, 0xED38, 0x7E7F, 0xEC71, 0x7E60, 0xEBAB, 0x7E3F, 0xEAE4, + 0x7E1E, 0xEA1E, 0x7DFB, 0xE958, 0x7DD6, 0xE892, 0x7DB1, 0xE7CD, + 0x7D8A, 0xE707, 0x7D63, 0xE642, 0x7D3A, 0xE57D, 0x7D0F, 0xE4B9, + 0x7CE4, 0xE3F4, 0x7CB7, 0xE330, 0x7C89, 0xE26D, 0x7C5A, 0xE1A9, + 0x7C2A, 0xE0E6, 0x7BF9, 0xE023, 0x7BC6, 0xDF61, 0x7B92, 0xDE9E, + 0x7B5D, 0xDDDC, 0x7B27, 0xDD1B, 0x7AEF, 0xDC59, 0x7AB7, 0xDB99, + 0x7A7D, 0xDAD8, 0x7A42, 0xDA18, 0x7A06, 0xD958, 0x79C9, 0xD898, + 0x798A, 0xD7D9, 0x794A, 0xD71B, 0x790A, 0xD65C, 0x78C8, 0xD59E, + 0x7885, 0xD4E1, 0x7840, 0xD424, 0x77FB, 0xD367, 0x77B4, 0xD2AB, + 0x776C, 0xD1EF, 0x7723, 0xD134, 0x76D9, 0xD079, 0x768E, 0xCFBE, + 0x7642, 0xCF04, 0x75F4, 0xCE4B, 0x75A6, 0xCD92, 0x7556, 0xCCD9, + 0x7505, 0xCC21, 0x74B3, 0xCB69, 0x7460, 0xCAB2, 0x740B, 0xC9FC, + 0x73B6, 0xC946, 0x735F, 0xC890, 0x7308, 0xC7DB, 0x72AF, 0xC727, + 0x7255, 0xC673, 0x71FA, 0xC5C0, 0x719E, 0xC50D, 0x7141, 0xC45B, + 0x70E3, 0xC3A9, 0x7083, 0xC2F8, 0x7023, 0xC248, 0x6FC2, 0xC198, + 0x6F5F, 0xC0E9, 0x6EFB, 0xC03A, 0x6E97, 0xBF8C, 0x6E31, 0xBEDF, + 0x6DCA, 0xBE32, 0x6D62, 0xBD86, 0x6CF9, 0xBCDA, 0x6C8F, 0xBC2F, + 0x6C24, 0xBB85, 0x6BB8, 0xBADC, 0x6B4B, 0xBA33, 0x6ADD, 0xB98B, + 0x6A6E, 0xB8E3, 0x69FD, 0xB83C, 0x698C, 0xB796, 0x691A, 0xB6F1, + 0x68A7, 0xB64C, 0x6832, 0xB5A8, 0x67BD, 0xB505, 0x6747, 0xB462, + 0x66D0, 0xB3C0, 0x6657, 0xB31F, 0x65DE, 0xB27F, 0x6564, 0xB1DF, + 0x64E9, 0xB140, 0x646C, 0xB0A2, 0x63EF, 0xB005, 0x6371, 0xAF68, + 0x62F2, 0xAECC, 0x6272, 0xAE31, 0x61F1, 0xAD97, 0x616F, 0xACFD, + 0x60EC, 0xAC65, 0x6068, 0xABCD, 0x5FE4, 0xAB36, 0x5F5E, 0xAAA0, + 0x5ED7, 0xAA0A, 0x5E50, 0xA976, 0x5DC8, 0xA8E2, 0x5D3E, 0xA84F, + 0x5CB4, 0xA7BD, 0x5C29, 0xA72C, 0x5B9D, 0xA69C, 0x5B10, 0xA60C, + 0x5A82, 0xA57E, 0x59F4, 0xA4F0, 0x5964, 0xA463, 0x58D4, 0xA3D7, + 0x5843, 0xA34C, 0x57B1, 0xA2C2, 0x571E, 0xA238, 0x568A, 0xA1B0, + 0x55F6, 0xA129, 0x5560, 0xA0A2, 0x54CA, 0xA01C, 0x5433, 0x9F98, + 0x539B, 0x9F14, 0x5303, 0x9E91, 0x5269, 0x9E0F, 0x51CF, 0x9D8E, + 0x5134, 0x9D0E, 0x5098, 0x9C8F, 0x4FFB, 0x9C11, 0x4F5E, 0x9B94, + 0x4EC0, 0x9B17, 0x4E21, 0x9A9C, 0x4D81, 0x9A22, 0x4CE1, 0x99A9, + 0x4C40, 0x9930, 0x4B9E, 0x98B9, 0x4AFB, 0x9843, 0x4A58, 0x97CE, + 0x49B4, 0x9759, 0x490F, 0x96E6, 0x486A, 0x9674, 0x47C4, 0x9603, + 0x471D, 0x9592, 0x4675, 0x9523, 0x45CD, 0x94B5, 0x4524, 0x9448, + 0x447B, 0x93DC, 0x43D1, 0x9371, 0x4326, 0x9307, 0x427A, 0x929E, + 0x41CE, 0x9236, 0x4121, 0x91CF, 0x4074, 0x9169, 0x3FC6, 0x9105, + 0x3F17, 0x90A1, 0x3E68, 0x903E, 0x3DB8, 0x8FDD, 0x3D08, 0x8F7D, + 0x3C57, 0x8F1D, 0x3BA5, 0x8EBF, 0x3AF3, 0x8E62, 0x3A40, 0x8E06, + 0x398D, 0x8DAB, 0x38D9, 0x8D51, 0x3825, 0x8CF8, 0x3770, 0x8CA1, + 0x36BA, 0x8C4A, 0x3604, 0x8BF5, 0x354E, 0x8BA0, 0x3497, 0x8B4D, + 0x33DF, 0x8AFB, 0x3327, 0x8AAA, 0x326E, 0x8A5A, 0x31B5, 0x8A0C, + 0x30FC, 0x89BE, 0x3042, 0x8972, 0x2F87, 0x8927, 0x2ECC, 0x88DD, + 0x2E11, 0x8894, 0x2D55, 0x884C, 0x2C99, 0x8805, 0x2BDC, 0x87C0, + 0x2B1F, 0x877B, 0x2A62, 0x8738, 0x29A4, 0x86F6, 0x28E5, 0x86B6, + 0x2827, 0x8676, 0x2768, 0x8637, 0x26A8, 0x85FA, 0x25E8, 0x85BE, + 0x2528, 0x8583, 0x2467, 0x8549, 0x23A7, 0x8511, 0x22E5, 0x84D9, + 0x2224, 0x84A3, 0x2162, 0x846E, 0x209F, 0x843A, 0x1FDD, 0x8407, + 0x1F1A, 0x83D6, 0x1E57, 0x83A6, 0x1D93, 0x8377, 0x1CD0, 0x8349, + 0x1C0C, 0x831C, 0x1B47, 0x82F1, 0x1A83, 0x82C6, 0x19BE, 0x829D, + 0x18F9, 0x8276, 0x1833, 0x824F, 0x176E, 0x822A, 0x16A8, 0x8205, + 0x15E2, 0x81E2, 0x151C, 0x81C1, 0x1455, 0x81A0, 0x138F, 0x8181, + 0x12C8, 0x8163, 0x1201, 0x8146, 0x113A, 0x812A, 0x1073, 0x8110, + 0x0FAB, 0x80F6, 0x0EE4, 0x80DE, 0x0E1C, 0x80C8, 0x0D54, 0x80B2, + 0x0C8C, 0x809E, 0x0BC4, 0x808B, 0x0AFB, 0x8079, 0x0A33, 0x8068, + 0x096B, 0x8059, 0x08A2, 0x804B, 0x07D9, 0x803E, 0x0711, 0x8032, + 0x0648, 0x8027, 0x057F, 0x801E, 0x04B6, 0x8016, 0x03ED, 0x800F, + 0x0324, 0x800A, 0x025B, 0x8006, 0x0192, 0x8002, 0x00C9, 0x8001, + 0x0000, 0x8001, 0xFF37, 0x8001, 0xFE6E, 0x8002, 0xFDA5, 0x8006, + 0xFCDC, 0x800A, 0xFC13, 0x800F, 0xFB4A, 0x8016, 0xFA81, 0x801E, + 0xF9B8, 0x8027, 0xF8EF, 0x8032, 0xF827, 0x803E, 0xF75E, 0x804B, + 0xF695, 0x8059, 0xF5CD, 0x8068, 0xF505, 0x8079, 0xF43C, 0x808B, + 0xF374, 0x809E, 0xF2AC, 0x80B2, 0xF1E4, 0x80C8, 0xF11C, 0x80DE, + 0xF055, 0x80F6, 0xEF8D, 0x8110, 0xEEC6, 0x812A, 0xEDFF, 0x8146, + 0xED38, 0x8163, 0xEC71, 0x8181, 0xEBAB, 0x81A0, 0xEAE4, 0x81C1, + 0xEA1E, 0x81E2, 0xE958, 0x8205, 0xE892, 0x822A, 0xE7CD, 0x824F, + 0xE707, 0x8276, 0xE642, 0x829D, 0xE57D, 0x82C6, 0xE4B9, 0x82F1, + 0xE3F4, 0x831C, 0xE330, 0x8349, 0xE26D, 0x8377, 0xE1A9, 0x83A6, + 0xE0E6, 0x83D6, 0xE023, 0x8407, 0xDF61, 0x843A, 0xDE9E, 0x846E, + 0xDDDC, 0x84A3, 0xDD1B, 0x84D9, 0xDC59, 0x8511, 0xDB99, 0x8549, + 0xDAD8, 0x8583, 0xDA18, 0x85BE, 0xD958, 0x85FA, 0xD898, 0x8637, + 0xD7D9, 0x8676, 0xD71B, 0x86B6, 0xD65C, 0x86F6, 0xD59E, 0x8738, + 0xD4E1, 0x877B, 0xD424, 0x87C0, 0xD367, 0x8805, 0xD2AB, 0x884C, + 0xD1EF, 0x8894, 0xD134, 0x88DD, 0xD079, 0x8927, 0xCFBE, 0x8972, + 0xCF04, 0x89BE, 0xCE4B, 0x8A0C, 0xCD92, 0x8A5A, 0xCCD9, 0x8AAA, + 0xCC21, 0x8AFB, 0xCB69, 0x8B4D, 0xCAB2, 0x8BA0, 0xC9FC, 0x8BF5, + 0xC946, 0x8C4A, 0xC890, 0x8CA1, 0xC7DB, 0x8CF8, 0xC727, 0x8D51, + 0xC673, 0x8DAB, 0xC5C0, 0x8E06, 0xC50D, 0x8E62, 0xC45B, 0x8EBF, + 0xC3A9, 0x8F1D, 0xC2F8, 0x8F7D, 0xC248, 0x8FDD, 0xC198, 0x903E, + 0xC0E9, 0x90A1, 0xC03A, 0x9105, 0xBF8C, 0x9169, 0xBEDF, 0x91CF, + 0xBE32, 0x9236, 0xBD86, 0x929E, 0xBCDA, 0x9307, 0xBC2F, 0x9371, + 0xBB85, 0x93DC, 0xBADC, 0x9448, 0xBA33, 0x94B5, 0xB98B, 0x9523, + 0xB8E3, 0x9592, 0xB83C, 0x9603, 0xB796, 0x9674, 0xB6F1, 0x96E6, + 0xB64C, 0x9759, 0xB5A8, 0x97CE, 0xB505, 0x9843, 0xB462, 0x98B9, + 0xB3C0, 0x9930, 0xB31F, 0x99A9, 0xB27F, 0x9A22, 0xB1DF, 0x9A9C, + 0xB140, 0x9B17, 0xB0A2, 0x9B94, 0xB005, 0x9C11, 0xAF68, 0x9C8F, + 0xAECC, 0x9D0E, 0xAE31, 0x9D8E, 0xAD97, 0x9E0F, 0xACFD, 0x9E91, + 0xAC65, 0x9F14, 0xABCD, 0x9F98, 0xAB36, 0xA01C, 0xAAA0, 0xA0A2, + 0xAA0A, 0xA129, 0xA976, 0xA1B0, 0xA8E2, 0xA238, 0xA84F, 0xA2C2, + 0xA7BD, 0xA34C, 0xA72C, 0xA3D7, 0xA69C, 0xA463, 0xA60C, 0xA4F0, + 0xA57E, 0xA57E, 0xA4F0, 0xA60C, 0xA463, 0xA69C, 0xA3D7, 0xA72C, + 0xA34C, 0xA7BD, 0xA2C2, 0xA84F, 0xA238, 0xA8E2, 0xA1B0, 0xA976, + 0xA129, 0xAA0A, 0xA0A2, 0xAAA0, 0xA01C, 0xAB36, 0x9F98, 0xABCD, + 0x9F14, 0xAC65, 0x9E91, 0xACFD, 0x9E0F, 0xAD97, 0x9D8E, 0xAE31, + 0x9D0E, 0xAECC, 0x9C8F, 0xAF68, 0x9C11, 0xB005, 0x9B94, 0xB0A2, + 0x9B17, 0xB140, 0x9A9C, 0xB1DF, 0x9A22, 0xB27F, 0x99A9, 0xB31F, + 0x9930, 0xB3C0, 0x98B9, 0xB462, 0x9843, 0xB505, 0x97CE, 0xB5A8, + 0x9759, 0xB64C, 0x96E6, 0xB6F1, 0x9674, 0xB796, 0x9603, 0xB83C, + 0x9592, 0xB8E3, 0x9523, 0xB98B, 0x94B5, 0xBA33, 0x9448, 0xBADC, + 0x93DC, 0xBB85, 0x9371, 0xBC2F, 0x9307, 0xBCDA, 0x929E, 0xBD86, + 0x9236, 0xBE32, 0x91CF, 0xBEDF, 0x9169, 0xBF8C, 0x9105, 0xC03A, + 0x90A1, 0xC0E9, 0x903E, 0xC198, 0x8FDD, 0xC248, 0x8F7D, 0xC2F8, + 0x8F1D, 0xC3A9, 0x8EBF, 0xC45B, 0x8E62, 0xC50D, 0x8E06, 0xC5C0, + 0x8DAB, 0xC673, 0x8D51, 0xC727, 0x8CF8, 0xC7DB, 0x8CA1, 0xC890, + 0x8C4A, 0xC946, 0x8BF5, 0xC9FC, 0x8BA0, 0xCAB2, 0x8B4D, 0xCB69, + 0x8AFB, 0xCC21, 0x8AAA, 0xCCD9, 0x8A5A, 0xCD92, 0x8A0C, 0xCE4B, + 0x89BE, 0xCF04, 0x8972, 0xCFBE, 0x8927, 0xD079, 0x88DD, 0xD134, + 0x8894, 0xD1EF, 0x884C, 0xD2AB, 0x8805, 0xD367, 0x87C0, 0xD424, + 0x877B, 0xD4E1, 0x8738, 0xD59E, 0x86F6, 0xD65C, 0x86B6, 0xD71B, + 0x8676, 0xD7D9, 0x8637, 0xD898, 0x85FA, 0xD958, 0x85BE, 0xDA18, + 0x8583, 0xDAD8, 0x8549, 0xDB99, 0x8511, 0xDC59, 0x84D9, 0xDD1B, + 0x84A3, 0xDDDC, 0x846E, 0xDE9E, 0x843A, 0xDF61, 0x8407, 0xE023, + 0x83D6, 0xE0E6, 0x83A6, 0xE1A9, 0x8377, 0xE26D, 0x8349, 0xE330, + 0x831C, 0xE3F4, 0x82F1, 0xE4B9, 0x82C6, 0xE57D, 0x829D, 0xE642, + 0x8276, 0xE707, 0x824F, 0xE7CD, 0x822A, 0xE892, 0x8205, 0xE958, + 0x81E2, 0xEA1E, 0x81C1, 0xEAE4, 0x81A0, 0xEBAB, 0x8181, 0xEC71, + 0x8163, 0xED38, 0x8146, 0xEDFF, 0x812A, 0xEEC6, 0x8110, 0xEF8D, + 0x80F6, 0xF055, 0x80DE, 0xF11C, 0x80C8, 0xF1E4, 0x80B2, 0xF2AC, + 0x809E, 0xF374, 0x808B, 0xF43C, 0x8079, 0xF505, 0x8068, 0xF5CD, + 0x8059, 0xF695, 0x804B, 0xF75E, 0x803E, 0xF827, 0x8032, 0xF8EF, + 0x8027, 0xF9B8, 0x801E, 0xFA81, 0x8016, 0xFB4A, 0x800F, 0xFC13, + 0x800A, 0xFCDC, 0x8006, 0xFDA5, 0x8002, 0xFE6E, 0x8001, 0xFF37 +}; + +/* + * FFT twiddle factor table for length of 2048. + */ +const _q15 msp_cmplx_twiddle_table_2048_q15[DSPLIB_TABLE_OFFSET+2048] = { + 0x0800, 0x0000, + 0x7FFF, 0x0000, 0x7FFF, 0xFF9B, 0x7FFF, 0xFF37, 0x7FFF, 0xFED2, + 0x7FFE, 0xFE6E, 0x7FFC, 0xFE09, 0x7FFA, 0xFDA5, 0x7FF8, 0xFD40, + 0x7FF6, 0xFCDC, 0x7FF4, 0xFC77, 0x7FF1, 0xFC13, 0x7FED, 0xFBAE, + 0x7FEA, 0xFB4A, 0x7FE6, 0xFAE5, 0x7FE2, 0xFA81, 0x7FDD, 0xFA1D, + 0x7FD9, 0xF9B8, 0x7FD3, 0xF954, 0x7FCE, 0xF8EF, 0x7FC8, 0xF88B, + 0x7FC2, 0xF827, 0x7FBC, 0xF7C2, 0x7FB5, 0xF75E, 0x7FAE, 0xF6FA, + 0x7FA7, 0xF695, 0x7FA0, 0xF631, 0x7F98, 0xF5CD, 0x7F90, 0xF569, + 0x7F87, 0xF505, 0x7F7E, 0xF4A0, 0x7F75, 0xF43C, 0x7F6C, 0xF3D8, + 0x7F62, 0xF374, 0x7F58, 0xF310, 0x7F4E, 0xF2AC, 0x7F43, 0xF248, + 0x7F38, 0xF1E4, 0x7F2D, 0xF180, 0x7F22, 0xF11C, 0x7F16, 0xF0B9, + 0x7F0A, 0xF055, 0x7EFD, 0xEFF1, 0x7EF0, 0xEF8D, 0x7EE3, 0xEF2A, + 0x7ED6, 0xEEC6, 0x7EC8, 0xEE62, 0x7EBA, 0xEDFF, 0x7EAC, 0xED9B, + 0x7E9D, 0xED38, 0x7E8E, 0xECD5, 0x7E7F, 0xEC71, 0x7E70, 0xEC0E, + 0x7E60, 0xEBAB, 0x7E50, 0xEB47, 0x7E3F, 0xEAE4, 0x7E2F, 0xEA81, + 0x7E1E, 0xEA1E, 0x7E0C, 0xE9BB, 0x7DFB, 0xE958, 0x7DE9, 0xE8F5, + 0x7DD6, 0xE892, 0x7DC4, 0xE82F, 0x7DB1, 0xE7CD, 0x7D9E, 0xE76A, + 0x7D8A, 0xE707, 0x7D77, 0xE6A5, 0x7D63, 0xE642, 0x7D4E, 0xE5E0, + 0x7D3A, 0xE57D, 0x7D25, 0xE51B, 0x7D0F, 0xE4B9, 0x7CFA, 0xE457, + 0x7CE4, 0xE3F4, 0x7CCE, 0xE392, 0x7CB7, 0xE330, 0x7CA0, 0xE2CF, + 0x7C89, 0xE26D, 0x7C72, 0xE20B, 0x7C5A, 0xE1A9, 0x7C42, 0xE148, + 0x7C2A, 0xE0E6, 0x7C11, 0xE085, 0x7BF9, 0xE023, 0x7BDF, 0xDFC2, + 0x7BC6, 0xDF61, 0x7BAC, 0xDEFF, 0x7B92, 0xDE9E, 0x7B78, 0xDE3D, + 0x7B5D, 0xDDDC, 0x7B42, 0xDD7C, 0x7B27, 0xDD1B, 0x7B0B, 0xDCBA, + 0x7AEF, 0xDC59, 0x7AD3, 0xDBF9, 0x7AB7, 0xDB99, 0x7A9A, 0xDB38, + 0x7A7D, 0xDAD8, 0x7A60, 0xDA78, 0x7A42, 0xDA18, 0x7A24, 0xD9B8, + 0x7A06, 0xD958, 0x79E7, 0xD8F8, 0x79C9, 0xD898, 0x79AA, 0xD839, + 0x798A, 0xD7D9, 0x796A, 0xD77A, 0x794A, 0xD71B, 0x792A, 0xD6BB, + 0x790A, 0xD65C, 0x78E9, 0xD5FD, 0x78C8, 0xD59E, 0x78A6, 0xD53F, + 0x7885, 0xD4E1, 0x7863, 0xD482, 0x7840, 0xD424, 0x781E, 0xD3C5, + 0x77FB, 0xD367, 0x77D8, 0xD309, 0x77B4, 0xD2AB, 0x7790, 0xD24D, + 0x776C, 0xD1EF, 0x7748, 0xD191, 0x7723, 0xD134, 0x76FE, 0xD0D6, + 0x76D9, 0xD079, 0x76B4, 0xD01B, 0x768E, 0xCFBE, 0x7668, 0xCF61, + 0x7642, 0xCF04, 0x761B, 0xCEA7, 0x75F4, 0xCE4B, 0x75CD, 0xCDEE, + 0x75A6, 0xCD92, 0x757E, 0xCD35, 0x7556, 0xCCD9, 0x752D, 0xCC7D, + 0x7505, 0xCC21, 0x74DC, 0xCBC5, 0x74B3, 0xCB69, 0x7489, 0xCB0E, + 0x7460, 0xCAB2, 0x7436, 0xCA57, 0x740B, 0xC9FC, 0x73E1, 0xC9A1, + 0x73B6, 0xC946, 0x738B, 0xC8EB, 0x735F, 0xC890, 0x7334, 0xC836, + 0x7308, 0xC7DB, 0x72DC, 0xC781, 0x72AF, 0xC727, 0x7282, 0xC6CD, + 0x7255, 0xC673, 0x7228, 0xC619, 0x71FA, 0xC5C0, 0x71CC, 0xC566, + 0x719E, 0xC50D, 0x7170, 0xC4B4, 0x7141, 0xC45B, 0x7112, 0xC402, + 0x70E3, 0xC3A9, 0x70B3, 0xC351, 0x7083, 0xC2F8, 0x7053, 0xC2A0, + 0x7023, 0xC248, 0x6FF2, 0xC1F0, 0x6FC2, 0xC198, 0x6F90, 0xC140, + 0x6F5F, 0xC0E9, 0x6F2D, 0xC091, 0x6EFB, 0xC03A, 0x6EC9, 0xBFE3, + 0x6E97, 0xBF8C, 0x6E64, 0xBF35, 0x6E31, 0xBEDF, 0x6DFE, 0xBE88, + 0x6DCA, 0xBE32, 0x6D96, 0xBDDC, 0x6D62, 0xBD86, 0x6D2E, 0xBD30, + 0x6CF9, 0xBCDA, 0x6CC4, 0xBC85, 0x6C8F, 0xBC2F, 0x6C5A, 0xBBDA, + 0x6C24, 0xBB85, 0x6BEE, 0xBB30, 0x6BB8, 0xBADC, 0x6B82, 0xBA87, + 0x6B4B, 0xBA33, 0x6B14, 0xB9DF, 0x6ADD, 0xB98B, 0x6AA5, 0xB937, + 0x6A6E, 0xB8E3, 0x6A36, 0xB890, 0x69FD, 0xB83C, 0x69C5, 0xB7E9, + 0x698C, 0xB796, 0x6953, 0xB743, 0x691A, 0xB6F1, 0x68E0, 0xB69E, + 0x68A7, 0xB64C, 0x686D, 0xB5FA, 0x6832, 0xB5A8, 0x67F8, 0xB556, + 0x67BD, 0xB505, 0x6782, 0xB4B3, 0x6747, 0xB462, 0x670B, 0xB411, + 0x66D0, 0xB3C0, 0x6693, 0xB36F, 0x6657, 0xB31F, 0x661B, 0xB2CF, + 0x65DE, 0xB27F, 0x65A1, 0xB22F, 0x6564, 0xB1DF, 0x6526, 0xB18F, + 0x64E9, 0xB140, 0x64AB, 0xB0F1, 0x646C, 0xB0A2, 0x642E, 0xB053, + 0x63EF, 0xB005, 0x63B0, 0xAFB6, 0x6371, 0xAF68, 0x6332, 0xAF1A, + 0x62F2, 0xAECC, 0x62B2, 0xAE7F, 0x6272, 0xAE31, 0x6232, 0xADE4, + 0x61F1, 0xAD97, 0x61B0, 0xAD4A, 0x616F, 0xACFD, 0x612E, 0xACB1, + 0x60EC, 0xAC65, 0x60AA, 0xAC19, 0x6068, 0xABCD, 0x6026, 0xAB81, + 0x5FE4, 0xAB36, 0x5FA1, 0xAAEB, 0x5F5E, 0xAAA0, 0x5F1B, 0xAA55, + 0x5ED7, 0xAA0A, 0x5E94, 0xA9C0, 0x5E50, 0xA976, 0x5E0C, 0xA92C, + 0x5DC8, 0xA8E2, 0x5D83, 0xA899, 0x5D3E, 0xA84F, 0x5CF9, 0xA806, + 0x5CB4, 0xA7BD, 0x5C6F, 0xA774, 0x5C29, 0xA72C, 0x5BE3, 0xA6E4, + 0x5B9D, 0xA69C, 0x5B57, 0xA654, 0x5B10, 0xA60C, 0x5AC9, 0xA5C5, + 0x5A82, 0xA57E, 0x5A3B, 0xA537, 0x59F4, 0xA4F0, 0x59AC, 0xA4A9, + 0x5964, 0xA463, 0x591C, 0xA41D, 0x58D4, 0xA3D7, 0x588C, 0xA391, + 0x5843, 0xA34C, 0x57FA, 0xA307, 0x57B1, 0xA2C2, 0x5767, 0xA27D, + 0x571E, 0xA238, 0x56D4, 0xA1F4, 0x568A, 0xA1B0, 0x5640, 0xA16C, + 0x55F6, 0xA129, 0x55AB, 0xA0E5, 0x5560, 0xA0A2, 0x5515, 0xA05F, + 0x54CA, 0xA01C, 0x547F, 0x9FDA, 0x5433, 0x9F98, 0x53E7, 0x9F56, + 0x539B, 0x9F14, 0x534F, 0x9ED2, 0x5303, 0x9E91, 0x52B6, 0x9E50, + 0x5269, 0x9E0F, 0x521C, 0x9DCE, 0x51CF, 0x9D8E, 0x5181, 0x9D4E, + 0x5134, 0x9D0E, 0x50E6, 0x9CCE, 0x5098, 0x9C8F, 0x504A, 0x9C50, + 0x4FFB, 0x9C11, 0x4FAD, 0x9BD2, 0x4F5E, 0x9B94, 0x4F0F, 0x9B55, + 0x4EC0, 0x9B17, 0x4E71, 0x9ADA, 0x4E21, 0x9A9C, 0x4DD1, 0x9A5F, + 0x4D81, 0x9A22, 0x4D31, 0x99E5, 0x4CE1, 0x99A9, 0x4C91, 0x996D, + 0x4C40, 0x9930, 0x4BEF, 0x98F5, 0x4B9E, 0x98B9, 0x4B4D, 0x987E, + 0x4AFB, 0x9843, 0x4AAA, 0x9808, 0x4A58, 0x97CE, 0x4A06, 0x9793, + 0x49B4, 0x9759, 0x4962, 0x9720, 0x490F, 0x96E6, 0x48BD, 0x96AD, + 0x486A, 0x9674, 0x4817, 0x963B, 0x47C4, 0x9603, 0x4770, 0x95CA, + 0x471D, 0x9592, 0x46C9, 0x955B, 0x4675, 0x9523, 0x4621, 0x94EC, + 0x45CD, 0x94B5, 0x4579, 0x947E, 0x4524, 0x9448, 0x44D0, 0x9412, + 0x447B, 0x93DC, 0x4426, 0x93A6, 0x43D1, 0x9371, 0x437B, 0x933C, + 0x4326, 0x9307, 0x42D0, 0x92D2, 0x427A, 0x929E, 0x4224, 0x926A, + 0x41CE, 0x9236, 0x4178, 0x9202, 0x4121, 0x91CF, 0x40CB, 0x919C, + 0x4074, 0x9169, 0x401D, 0x9137, 0x3FC6, 0x9105, 0x3F6F, 0x90D3, + 0x3F17, 0x90A1, 0x3EC0, 0x9070, 0x3E68, 0x903E, 0x3E10, 0x900E, + 0x3DB8, 0x8FDD, 0x3D60, 0x8FAD, 0x3D08, 0x8F7D, 0x3CAF, 0x8F4D, + 0x3C57, 0x8F1D, 0x3BFE, 0x8EEE, 0x3BA5, 0x8EBF, 0x3B4C, 0x8E90, + 0x3AF3, 0x8E62, 0x3A9A, 0x8E34, 0x3A40, 0x8E06, 0x39E7, 0x8DD8, + 0x398D, 0x8DAB, 0x3933, 0x8D7E, 0x38D9, 0x8D51, 0x387F, 0x8D24, + 0x3825, 0x8CF8, 0x37CA, 0x8CCC, 0x3770, 0x8CA1, 0x3715, 0x8C75, + 0x36BA, 0x8C4A, 0x365F, 0x8C1F, 0x3604, 0x8BF5, 0x35A9, 0x8BCA, + 0x354E, 0x8BA0, 0x34F2, 0x8B77, 0x3497, 0x8B4D, 0x343B, 0x8B24, + 0x33DF, 0x8AFB, 0x3383, 0x8AD3, 0x3327, 0x8AAA, 0x32CB, 0x8A82, + 0x326E, 0x8A5A, 0x3212, 0x8A33, 0x31B5, 0x8A0C, 0x3159, 0x89E5, + 0x30FC, 0x89BE, 0x309F, 0x8998, 0x3042, 0x8972, 0x2FE5, 0x894C, + 0x2F87, 0x8927, 0x2F2A, 0x8902, 0x2ECC, 0x88DD, 0x2E6F, 0x88B8, + 0x2E11, 0x8894, 0x2DB3, 0x8870, 0x2D55, 0x884C, 0x2CF7, 0x8828, + 0x2C99, 0x8805, 0x2C3B, 0x87E2, 0x2BDC, 0x87C0, 0x2B7E, 0x879D, + 0x2B1F, 0x877B, 0x2AC1, 0x875A, 0x2A62, 0x8738, 0x2A03, 0x8717, + 0x29A4, 0x86F6, 0x2945, 0x86D6, 0x28E5, 0x86B6, 0x2886, 0x8696, + 0x2827, 0x8676, 0x27C7, 0x8656, 0x2768, 0x8637, 0x2708, 0x8619, + 0x26A8, 0x85FA, 0x2648, 0x85DC, 0x25E8, 0x85BE, 0x2588, 0x85A0, + 0x2528, 0x8583, 0x24C8, 0x8566, 0x2467, 0x8549, 0x2407, 0x852D, + 0x23A7, 0x8511, 0x2346, 0x84F5, 0x22E5, 0x84D9, 0x2284, 0x84BE, + 0x2224, 0x84A3, 0x21C3, 0x8488, 0x2162, 0x846E, 0x2101, 0x8454, + 0x209F, 0x843A, 0x203E, 0x8421, 0x1FDD, 0x8407, 0x1F7B, 0x83EF, + 0x1F1A, 0x83D6, 0x1EB8, 0x83BE, 0x1E57, 0x83A6, 0x1DF5, 0x838E, + 0x1D93, 0x8377, 0x1D31, 0x8360, 0x1CD0, 0x8349, 0x1C6E, 0x8332, + 0x1C0C, 0x831C, 0x1BA9, 0x8306, 0x1B47, 0x82F1, 0x1AE5, 0x82DB, + 0x1A83, 0x82C6, 0x1A20, 0x82B2, 0x19BE, 0x829D, 0x195B, 0x8289, + 0x18F9, 0x8276, 0x1896, 0x8262, 0x1833, 0x824F, 0x17D1, 0x823C, + 0x176E, 0x822A, 0x170B, 0x8217, 0x16A8, 0x8205, 0x1645, 0x81F4, + 0x15E2, 0x81E2, 0x157F, 0x81D1, 0x151C, 0x81C1, 0x14B9, 0x81B0, + 0x1455, 0x81A0, 0x13F2, 0x8190, 0x138F, 0x8181, 0x132B, 0x8172, + 0x12C8, 0x8163, 0x1265, 0x8154, 0x1201, 0x8146, 0x119E, 0x8138, + 0x113A, 0x812A, 0x10D6, 0x811D, 0x1073, 0x8110, 0x100F, 0x8103, + 0x0FAB, 0x80F6, 0x0F47, 0x80EA, 0x0EE4, 0x80DE, 0x0E80, 0x80D3, + 0x0E1C, 0x80C8, 0x0DB8, 0x80BD, 0x0D54, 0x80B2, 0x0CF0, 0x80A8, + 0x0C8C, 0x809E, 0x0C28, 0x8094, 0x0BC4, 0x808B, 0x0B60, 0x8082, + 0x0AFB, 0x8079, 0x0A97, 0x8070, 0x0A33, 0x8068, 0x09CF, 0x8060, + 0x096B, 0x8059, 0x0906, 0x8052, 0x08A2, 0x804B, 0x083E, 0x8044, + 0x07D9, 0x803E, 0x0775, 0x8038, 0x0711, 0x8032, 0x06AC, 0x802D, + 0x0648, 0x8027, 0x05E3, 0x8023, 0x057F, 0x801E, 0x051B, 0x801A, + 0x04B6, 0x8016, 0x0452, 0x8013, 0x03ED, 0x800F, 0x0389, 0x800C, + 0x0324, 0x800A, 0x02C0, 0x8008, 0x025B, 0x8006, 0x01F7, 0x8004, + 0x0192, 0x8002, 0x012E, 0x8001, 0x00C9, 0x8001, 0x0065, 0x8001, + 0x0000, 0x8001, 0xFF9B, 0x8001, 0xFF37, 0x8001, 0xFED2, 0x8001, + 0xFE6E, 0x8002, 0xFE09, 0x8004, 0xFDA5, 0x8006, 0xFD40, 0x8008, + 0xFCDC, 0x800A, 0xFC77, 0x800C, 0xFC13, 0x800F, 0xFBAE, 0x8013, + 0xFB4A, 0x8016, 0xFAE5, 0x801A, 0xFA81, 0x801E, 0xFA1D, 0x8023, + 0xF9B8, 0x8027, 0xF954, 0x802D, 0xF8EF, 0x8032, 0xF88B, 0x8038, + 0xF827, 0x803E, 0xF7C2, 0x8044, 0xF75E, 0x804B, 0xF6FA, 0x8052, + 0xF695, 0x8059, 0xF631, 0x8060, 0xF5CD, 0x8068, 0xF569, 0x8070, + 0xF505, 0x8079, 0xF4A0, 0x8082, 0xF43C, 0x808B, 0xF3D8, 0x8094, + 0xF374, 0x809E, 0xF310, 0x80A8, 0xF2AC, 0x80B2, 0xF248, 0x80BD, + 0xF1E4, 0x80C8, 0xF180, 0x80D3, 0xF11C, 0x80DE, 0xF0B9, 0x80EA, + 0xF055, 0x80F6, 0xEFF1, 0x8103, 0xEF8D, 0x8110, 0xEF2A, 0x811D, + 0xEEC6, 0x812A, 0xEE62, 0x8138, 0xEDFF, 0x8146, 0xED9B, 0x8154, + 0xED38, 0x8163, 0xECD5, 0x8172, 0xEC71, 0x8181, 0xEC0E, 0x8190, + 0xEBAB, 0x81A0, 0xEB47, 0x81B0, 0xEAE4, 0x81C1, 0xEA81, 0x81D1, + 0xEA1E, 0x81E2, 0xE9BB, 0x81F4, 0xE958, 0x8205, 0xE8F5, 0x8217, + 0xE892, 0x822A, 0xE82F, 0x823C, 0xE7CD, 0x824F, 0xE76A, 0x8262, + 0xE707, 0x8276, 0xE6A5, 0x8289, 0xE642, 0x829D, 0xE5E0, 0x82B2, + 0xE57D, 0x82C6, 0xE51B, 0x82DB, 0xE4B9, 0x82F1, 0xE457, 0x8306, + 0xE3F4, 0x831C, 0xE392, 0x8332, 0xE330, 0x8349, 0xE2CF, 0x8360, + 0xE26D, 0x8377, 0xE20B, 0x838E, 0xE1A9, 0x83A6, 0xE148, 0x83BE, + 0xE0E6, 0x83D6, 0xE085, 0x83EF, 0xE023, 0x8407, 0xDFC2, 0x8421, + 0xDF61, 0x843A, 0xDEFF, 0x8454, 0xDE9E, 0x846E, 0xDE3D, 0x8488, + 0xDDDC, 0x84A3, 0xDD7C, 0x84BE, 0xDD1B, 0x84D9, 0xDCBA, 0x84F5, + 0xDC59, 0x8511, 0xDBF9, 0x852D, 0xDB99, 0x8549, 0xDB38, 0x8566, + 0xDAD8, 0x8583, 0xDA78, 0x85A0, 0xDA18, 0x85BE, 0xD9B8, 0x85DC, + 0xD958, 0x85FA, 0xD8F8, 0x8619, 0xD898, 0x8637, 0xD839, 0x8656, + 0xD7D9, 0x8676, 0xD77A, 0x8696, 0xD71B, 0x86B6, 0xD6BB, 0x86D6, + 0xD65C, 0x86F6, 0xD5FD, 0x8717, 0xD59E, 0x8738, 0xD53F, 0x875A, + 0xD4E1, 0x877B, 0xD482, 0x879D, 0xD424, 0x87C0, 0xD3C5, 0x87E2, + 0xD367, 0x8805, 0xD309, 0x8828, 0xD2AB, 0x884C, 0xD24D, 0x8870, + 0xD1EF, 0x8894, 0xD191, 0x88B8, 0xD134, 0x88DD, 0xD0D6, 0x8902, + 0xD079, 0x8927, 0xD01B, 0x894C, 0xCFBE, 0x8972, 0xCF61, 0x8998, + 0xCF04, 0x89BE, 0xCEA7, 0x89E5, 0xCE4B, 0x8A0C, 0xCDEE, 0x8A33, + 0xCD92, 0x8A5A, 0xCD35, 0x8A82, 0xCCD9, 0x8AAA, 0xCC7D, 0x8AD3, + 0xCC21, 0x8AFB, 0xCBC5, 0x8B24, 0xCB69, 0x8B4D, 0xCB0E, 0x8B77, + 0xCAB2, 0x8BA0, 0xCA57, 0x8BCA, 0xC9FC, 0x8BF5, 0xC9A1, 0x8C1F, + 0xC946, 0x8C4A, 0xC8EB, 0x8C75, 0xC890, 0x8CA1, 0xC836, 0x8CCC, + 0xC7DB, 0x8CF8, 0xC781, 0x8D24, 0xC727, 0x8D51, 0xC6CD, 0x8D7E, + 0xC673, 0x8DAB, 0xC619, 0x8DD8, 0xC5C0, 0x8E06, 0xC566, 0x8E34, + 0xC50D, 0x8E62, 0xC4B4, 0x8E90, 0xC45B, 0x8EBF, 0xC402, 0x8EEE, + 0xC3A9, 0x8F1D, 0xC351, 0x8F4D, 0xC2F8, 0x8F7D, 0xC2A0, 0x8FAD, + 0xC248, 0x8FDD, 0xC1F0, 0x900E, 0xC198, 0x903E, 0xC140, 0x9070, + 0xC0E9, 0x90A1, 0xC091, 0x90D3, 0xC03A, 0x9105, 0xBFE3, 0x9137, + 0xBF8C, 0x9169, 0xBF35, 0x919C, 0xBEDF, 0x91CF, 0xBE88, 0x9202, + 0xBE32, 0x9236, 0xBDDC, 0x926A, 0xBD86, 0x929E, 0xBD30, 0x92D2, + 0xBCDA, 0x9307, 0xBC85, 0x933C, 0xBC2F, 0x9371, 0xBBDA, 0x93A6, + 0xBB85, 0x93DC, 0xBB30, 0x9412, 0xBADC, 0x9448, 0xBA87, 0x947E, + 0xBA33, 0x94B5, 0xB9DF, 0x94EC, 0xB98B, 0x9523, 0xB937, 0x955B, + 0xB8E3, 0x9592, 0xB890, 0x95CA, 0xB83C, 0x9603, 0xB7E9, 0x963B, + 0xB796, 0x9674, 0xB743, 0x96AD, 0xB6F1, 0x96E6, 0xB69E, 0x9720, + 0xB64C, 0x9759, 0xB5FA, 0x9793, 0xB5A8, 0x97CE, 0xB556, 0x9808, + 0xB505, 0x9843, 0xB4B3, 0x987E, 0xB462, 0x98B9, 0xB411, 0x98F5, + 0xB3C0, 0x9930, 0xB36F, 0x996D, 0xB31F, 0x99A9, 0xB2CF, 0x99E5, + 0xB27F, 0x9A22, 0xB22F, 0x9A5F, 0xB1DF, 0x9A9C, 0xB18F, 0x9ADA, + 0xB140, 0x9B17, 0xB0F1, 0x9B55, 0xB0A2, 0x9B94, 0xB053, 0x9BD2, + 0xB005, 0x9C11, 0xAFB6, 0x9C50, 0xAF68, 0x9C8F, 0xAF1A, 0x9CCE, + 0xAECC, 0x9D0E, 0xAE7F, 0x9D4E, 0xAE31, 0x9D8E, 0xADE4, 0x9DCE, + 0xAD97, 0x9E0F, 0xAD4A, 0x9E50, 0xACFD, 0x9E91, 0xACB1, 0x9ED2, + 0xAC65, 0x9F14, 0xAC19, 0x9F56, 0xABCD, 0x9F98, 0xAB81, 0x9FDA, + 0xAB36, 0xA01C, 0xAAEB, 0xA05F, 0xAAA0, 0xA0A2, 0xAA55, 0xA0E5, + 0xAA0A, 0xA129, 0xA9C0, 0xA16C, 0xA976, 0xA1B0, 0xA92C, 0xA1F4, + 0xA8E2, 0xA238, 0xA899, 0xA27D, 0xA84F, 0xA2C2, 0xA806, 0xA307, + 0xA7BD, 0xA34C, 0xA774, 0xA391, 0xA72C, 0xA3D7, 0xA6E4, 0xA41D, + 0xA69C, 0xA463, 0xA654, 0xA4A9, 0xA60C, 0xA4F0, 0xA5C5, 0xA537, + 0xA57E, 0xA57E, 0xA537, 0xA5C5, 0xA4F0, 0xA60C, 0xA4A9, 0xA654, + 0xA463, 0xA69C, 0xA41D, 0xA6E4, 0xA3D7, 0xA72C, 0xA391, 0xA774, + 0xA34C, 0xA7BD, 0xA307, 0xA806, 0xA2C2, 0xA84F, 0xA27D, 0xA899, + 0xA238, 0xA8E2, 0xA1F4, 0xA92C, 0xA1B0, 0xA976, 0xA16C, 0xA9C0, + 0xA129, 0xAA0A, 0xA0E5, 0xAA55, 0xA0A2, 0xAAA0, 0xA05F, 0xAAEB, + 0xA01C, 0xAB36, 0x9FDA, 0xAB81, 0x9F98, 0xABCD, 0x9F56, 0xAC19, + 0x9F14, 0xAC65, 0x9ED2, 0xACB1, 0x9E91, 0xACFD, 0x9E50, 0xAD4A, + 0x9E0F, 0xAD97, 0x9DCE, 0xADE4, 0x9D8E, 0xAE31, 0x9D4E, 0xAE7F, + 0x9D0E, 0xAECC, 0x9CCE, 0xAF1A, 0x9C8F, 0xAF68, 0x9C50, 0xAFB6, + 0x9C11, 0xB005, 0x9BD2, 0xB053, 0x9B94, 0xB0A2, 0x9B55, 0xB0F1, + 0x9B17, 0xB140, 0x9ADA, 0xB18F, 0x9A9C, 0xB1DF, 0x9A5F, 0xB22F, + 0x9A22, 0xB27F, 0x99E5, 0xB2CF, 0x99A9, 0xB31F, 0x996D, 0xB36F, + 0x9930, 0xB3C0, 0x98F5, 0xB411, 0x98B9, 0xB462, 0x987E, 0xB4B3, + 0x9843, 0xB505, 0x9808, 0xB556, 0x97CE, 0xB5A8, 0x9793, 0xB5FA, + 0x9759, 0xB64C, 0x9720, 0xB69E, 0x96E6, 0xB6F1, 0x96AD, 0xB743, + 0x9674, 0xB796, 0x963B, 0xB7E9, 0x9603, 0xB83C, 0x95CA, 0xB890, + 0x9592, 0xB8E3, 0x955B, 0xB937, 0x9523, 0xB98B, 0x94EC, 0xB9DF, + 0x94B5, 0xBA33, 0x947E, 0xBA87, 0x9448, 0xBADC, 0x9412, 0xBB30, + 0x93DC, 0xBB85, 0x93A6, 0xBBDA, 0x9371, 0xBC2F, 0x933C, 0xBC85, + 0x9307, 0xBCDA, 0x92D2, 0xBD30, 0x929E, 0xBD86, 0x926A, 0xBDDC, + 0x9236, 0xBE32, 0x9202, 0xBE88, 0x91CF, 0xBEDF, 0x919C, 0xBF35, + 0x9169, 0xBF8C, 0x9137, 0xBFE3, 0x9105, 0xC03A, 0x90D3, 0xC091, + 0x90A1, 0xC0E9, 0x9070, 0xC140, 0x903E, 0xC198, 0x900E, 0xC1F0, + 0x8FDD, 0xC248, 0x8FAD, 0xC2A0, 0x8F7D, 0xC2F8, 0x8F4D, 0xC351, + 0x8F1D, 0xC3A9, 0x8EEE, 0xC402, 0x8EBF, 0xC45B, 0x8E90, 0xC4B4, + 0x8E62, 0xC50D, 0x8E34, 0xC566, 0x8E06, 0xC5C0, 0x8DD8, 0xC619, + 0x8DAB, 0xC673, 0x8D7E, 0xC6CD, 0x8D51, 0xC727, 0x8D24, 0xC781, + 0x8CF8, 0xC7DB, 0x8CCC, 0xC836, 0x8CA1, 0xC890, 0x8C75, 0xC8EB, + 0x8C4A, 0xC946, 0x8C1F, 0xC9A1, 0x8BF5, 0xC9FC, 0x8BCA, 0xCA57, + 0x8BA0, 0xCAB2, 0x8B77, 0xCB0E, 0x8B4D, 0xCB69, 0x8B24, 0xCBC5, + 0x8AFB, 0xCC21, 0x8AD3, 0xCC7D, 0x8AAA, 0xCCD9, 0x8A82, 0xCD35, + 0x8A5A, 0xCD92, 0x8A33, 0xCDEE, 0x8A0C, 0xCE4B, 0x89E5, 0xCEA7, + 0x89BE, 0xCF04, 0x8998, 0xCF61, 0x8972, 0xCFBE, 0x894C, 0xD01B, + 0x8927, 0xD079, 0x8902, 0xD0D6, 0x88DD, 0xD134, 0x88B8, 0xD191, + 0x8894, 0xD1EF, 0x8870, 0xD24D, 0x884C, 0xD2AB, 0x8828, 0xD309, + 0x8805, 0xD367, 0x87E2, 0xD3C5, 0x87C0, 0xD424, 0x879D, 0xD482, + 0x877B, 0xD4E1, 0x875A, 0xD53F, 0x8738, 0xD59E, 0x8717, 0xD5FD, + 0x86F6, 0xD65C, 0x86D6, 0xD6BB, 0x86B6, 0xD71B, 0x8696, 0xD77A, + 0x8676, 0xD7D9, 0x8656, 0xD839, 0x8637, 0xD898, 0x8619, 0xD8F8, + 0x85FA, 0xD958, 0x85DC, 0xD9B8, 0x85BE, 0xDA18, 0x85A0, 0xDA78, + 0x8583, 0xDAD8, 0x8566, 0xDB38, 0x8549, 0xDB99, 0x852D, 0xDBF9, + 0x8511, 0xDC59, 0x84F5, 0xDCBA, 0x84D9, 0xDD1B, 0x84BE, 0xDD7C, + 0x84A3, 0xDDDC, 0x8488, 0xDE3D, 0x846E, 0xDE9E, 0x8454, 0xDEFF, + 0x843A, 0xDF61, 0x8421, 0xDFC2, 0x8407, 0xE023, 0x83EF, 0xE085, + 0x83D6, 0xE0E6, 0x83BE, 0xE148, 0x83A6, 0xE1A9, 0x838E, 0xE20B, + 0x8377, 0xE26D, 0x8360, 0xE2CF, 0x8349, 0xE330, 0x8332, 0xE392, + 0x831C, 0xE3F4, 0x8306, 0xE457, 0x82F1, 0xE4B9, 0x82DB, 0xE51B, + 0x82C6, 0xE57D, 0x82B2, 0xE5E0, 0x829D, 0xE642, 0x8289, 0xE6A5, + 0x8276, 0xE707, 0x8262, 0xE76A, 0x824F, 0xE7CD, 0x823C, 0xE82F, + 0x822A, 0xE892, 0x8217, 0xE8F5, 0x8205, 0xE958, 0x81F4, 0xE9BB, + 0x81E2, 0xEA1E, 0x81D1, 0xEA81, 0x81C1, 0xEAE4, 0x81B0, 0xEB47, + 0x81A0, 0xEBAB, 0x8190, 0xEC0E, 0x8181, 0xEC71, 0x8172, 0xECD5, + 0x8163, 0xED38, 0x8154, 0xED9B, 0x8146, 0xEDFF, 0x8138, 0xEE62, + 0x812A, 0xEEC6, 0x811D, 0xEF2A, 0x8110, 0xEF8D, 0x8103, 0xEFF1, + 0x80F6, 0xF055, 0x80EA, 0xF0B9, 0x80DE, 0xF11C, 0x80D3, 0xF180, + 0x80C8, 0xF1E4, 0x80BD, 0xF248, 0x80B2, 0xF2AC, 0x80A8, 0xF310, + 0x809E, 0xF374, 0x8094, 0xF3D8, 0x808B, 0xF43C, 0x8082, 0xF4A0, + 0x8079, 0xF505, 0x8070, 0xF569, 0x8068, 0xF5CD, 0x8060, 0xF631, + 0x8059, 0xF695, 0x8052, 0xF6FA, 0x804B, 0xF75E, 0x8044, 0xF7C2, + 0x803E, 0xF827, 0x8038, 0xF88B, 0x8032, 0xF8EF, 0x802D, 0xF954, + 0x8027, 0xF9B8, 0x8023, 0xFA1D, 0x801E, 0xFA81, 0x801A, 0xFAE5, + 0x8016, 0xFB4A, 0x8013, 0xFBAE, 0x800F, 0xFC13, 0x800C, 0xFC77, + 0x800A, 0xFCDC, 0x8008, 0xFD40, 0x8006, 0xFDA5, 0x8004, 0xFE09, + 0x8002, 0xFE6E, 0x8001, 0xFED2, 0x8001, 0xFF37, 0x8001, 0xFF9B +}; + +/* + * FFT twiddle factor table for length of 4096. + */ +const _q15 msp_cmplx_twiddle_table_4096_q15[DSPLIB_TABLE_OFFSET+4096] = { + 0x1000, 0x0000, + 0x7FFF, 0x0000, 0x7FFF, 0xFFCE, 0x7FFF, 0xFF9B, 0x7FFF, 0xFF69, + 0x7FFF, 0xFF37, 0x7FFF, 0xFF05, 0x7FFF, 0xFED2, 0x7FFE, 0xFEA0, + 0x7FFE, 0xFE6E, 0x7FFD, 0xFE3C, 0x7FFC, 0xFE09, 0x7FFB, 0xFDD7, + 0x7FFA, 0xFDA5, 0x7FF9, 0xFD73, 0x7FF8, 0xFD40, 0x7FF7, 0xFD0E, + 0x7FF6, 0xFCDC, 0x7FF5, 0xFCAA, 0x7FF4, 0xFC77, 0x7FF2, 0xFC45, + 0x7FF1, 0xFC13, 0x7FEF, 0xFBE1, 0x7FED, 0xFBAE, 0x7FEC, 0xFB7C, + 0x7FEA, 0xFB4A, 0x7FE8, 0xFB18, 0x7FE6, 0xFAE5, 0x7FE4, 0xFAB3, + 0x7FE2, 0xFA81, 0x7FE0, 0xFA4F, 0x7FDD, 0xFA1D, 0x7FDB, 0xF9EA, + 0x7FD9, 0xF9B8, 0x7FD6, 0xF986, 0x7FD3, 0xF954, 0x7FD1, 0xF922, + 0x7FCE, 0xF8EF, 0x7FCB, 0xF8BD, 0x7FC8, 0xF88B, 0x7FC5, 0xF859, + 0x7FC2, 0xF827, 0x7FBF, 0xF7F4, 0x7FBC, 0xF7C2, 0x7FB9, 0xF790, + 0x7FB5, 0xF75E, 0x7FB2, 0xF72C, 0x7FAE, 0xF6FA, 0x7FAB, 0xF6C8, + 0x7FA7, 0xF695, 0x7FA3, 0xF663, 0x7FA0, 0xF631, 0x7F9C, 0xF5FF, + 0x7F98, 0xF5CD, 0x7F94, 0xF59B, 0x7F90, 0xF569, 0x7F8B, 0xF537, + 0x7F87, 0xF505, 0x7F83, 0xF4D3, 0x7F7E, 0xF4A0, 0x7F7A, 0xF46E, + 0x7F75, 0xF43C, 0x7F71, 0xF40A, 0x7F6C, 0xF3D8, 0x7F67, 0xF3A6, + 0x7F62, 0xF374, 0x7F5D, 0xF342, 0x7F58, 0xF310, 0x7F53, 0xF2DE, + 0x7F4E, 0xF2AC, 0x7F49, 0xF27A, 0x7F43, 0xF248, 0x7F3E, 0xF216, + 0x7F38, 0xF1E4, 0x7F33, 0xF1B2, 0x7F2D, 0xF180, 0x7F27, 0xF14E, + 0x7F22, 0xF11C, 0x7F1C, 0xF0EB, 0x7F16, 0xF0B9, 0x7F10, 0xF087, + 0x7F0A, 0xF055, 0x7F03, 0xF023, 0x7EFD, 0xEFF1, 0x7EF7, 0xEFBF, + 0x7EF0, 0xEF8D, 0x7EEA, 0xEF5C, 0x7EE3, 0xEF2A, 0x7EDD, 0xEEF8, + 0x7ED6, 0xEEC6, 0x7ECF, 0xEE94, 0x7EC8, 0xEE62, 0x7EC1, 0xEE31, + 0x7EBA, 0xEDFF, 0x7EB3, 0xEDCD, 0x7EAC, 0xED9B, 0x7EA5, 0xED6A, + 0x7E9D, 0xED38, 0x7E96, 0xED06, 0x7E8E, 0xECD5, 0x7E87, 0xECA3, + 0x7E7F, 0xEC71, 0x7E78, 0xEC3F, 0x7E70, 0xEC0E, 0x7E68, 0xEBDC, + 0x7E60, 0xEBAB, 0x7E58, 0xEB79, 0x7E50, 0xEB47, 0x7E48, 0xEB16, + 0x7E3F, 0xEAE4, 0x7E37, 0xEAB3, 0x7E2F, 0xEA81, 0x7E26, 0xEA4F, + 0x7E1E, 0xEA1E, 0x7E15, 0xE9EC, 0x7E0C, 0xE9BB, 0x7E03, 0xE989, + 0x7DFB, 0xE958, 0x7DF2, 0xE926, 0x7DE9, 0xE8F5, 0x7DE0, 0xE8C4, + 0x7DD6, 0xE892, 0x7DCD, 0xE861, 0x7DC4, 0xE82F, 0x7DBA, 0xE7FE, + 0x7DB1, 0xE7CD, 0x7DA7, 0xE79B, 0x7D9E, 0xE76A, 0x7D94, 0xE739, + 0x7D8A, 0xE707, 0x7D81, 0xE6D6, 0x7D77, 0xE6A5, 0x7D6D, 0xE673, + 0x7D63, 0xE642, 0x7D58, 0xE611, 0x7D4E, 0xE5E0, 0x7D44, 0xE5AF, + 0x7D3A, 0xE57D, 0x7D2F, 0xE54C, 0x7D25, 0xE51B, 0x7D1A, 0xE4EA, + 0x7D0F, 0xE4B9, 0x7D05, 0xE488, 0x7CFA, 0xE457, 0x7CEF, 0xE426, + 0x7CE4, 0xE3F4, 0x7CD9, 0xE3C3, 0x7CCE, 0xE392, 0x7CC2, 0xE361, + 0x7CB7, 0xE330, 0x7CAC, 0xE2FF, 0x7CA0, 0xE2CF, 0x7C95, 0xE29E, + 0x7C89, 0xE26D, 0x7C7E, 0xE23C, 0x7C72, 0xE20B, 0x7C66, 0xE1DA, + 0x7C5A, 0xE1A9, 0x7C4E, 0xE178, 0x7C42, 0xE148, 0x7C36, 0xE117, + 0x7C2A, 0xE0E6, 0x7C1E, 0xE0B5, 0x7C11, 0xE085, 0x7C05, 0xE054, + 0x7BF9, 0xE023, 0x7BEC, 0xDFF2, 0x7BDF, 0xDFC2, 0x7BD3, 0xDF91, + 0x7BC6, 0xDF61, 0x7BB9, 0xDF30, 0x7BAC, 0xDEFF, 0x7B9F, 0xDECF, + 0x7B92, 0xDE9E, 0x7B85, 0xDE6E, 0x7B78, 0xDE3D, 0x7B6A, 0xDE0D, + 0x7B5D, 0xDDDC, 0x7B50, 0xDDAC, 0x7B42, 0xDD7C, 0x7B34, 0xDD4B, + 0x7B27, 0xDD1B, 0x7B19, 0xDCEA, 0x7B0B, 0xDCBA, 0x7AFD, 0xDC8A, + 0x7AEF, 0xDC59, 0x7AE1, 0xDC29, 0x7AD3, 0xDBF9, 0x7AC5, 0xDBC9, + 0x7AB7, 0xDB99, 0x7AA8, 0xDB68, 0x7A9A, 0xDB38, 0x7A8C, 0xDB08, + 0x7A7D, 0xDAD8, 0x7A6E, 0xDAA8, 0x7A60, 0xDA78, 0x7A51, 0xDA48, + 0x7A42, 0xDA18, 0x7A33, 0xD9E8, 0x7A24, 0xD9B8, 0x7A15, 0xD988, + 0x7A06, 0xD958, 0x79F7, 0xD928, 0x79E7, 0xD8F8, 0x79D8, 0xD8C8, + 0x79C9, 0xD898, 0x79B9, 0xD869, 0x79AA, 0xD839, 0x799A, 0xD809, + 0x798A, 0xD7D9, 0x797A, 0xD7AA, 0x796A, 0xD77A, 0x795B, 0xD74A, + 0x794A, 0xD71B, 0x793A, 0xD6EB, 0x792A, 0xD6BB, 0x791A, 0xD68C, + 0x790A, 0xD65C, 0x78F9, 0xD62D, 0x78E9, 0xD5FD, 0x78D8, 0xD5CE, + 0x78C8, 0xD59E, 0x78B7, 0xD56F, 0x78A6, 0xD53F, 0x7895, 0xD510, + 0x7885, 0xD4E1, 0x7874, 0xD4B1, 0x7863, 0xD482, 0x7851, 0xD453, + 0x7840, 0xD424, 0x782F, 0xD3F4, 0x781E, 0xD3C5, 0x780C, 0xD396, + 0x77FB, 0xD367, 0x77E9, 0xD338, 0x77D8, 0xD309, 0x77C6, 0xD2DA, + 0x77B4, 0xD2AB, 0x77A2, 0xD27C, 0x7790, 0xD24D, 0x777E, 0xD21E, + 0x776C, 0xD1EF, 0x775A, 0xD1C0, 0x7748, 0xD191, 0x7736, 0xD162, + 0x7723, 0xD134, 0x7711, 0xD105, 0x76FE, 0xD0D6, 0x76EC, 0xD0A7, + 0x76D9, 0xD079, 0x76C7, 0xD04A, 0x76B4, 0xD01B, 0x76A1, 0xCFED, + 0x768E, 0xCFBE, 0x767B, 0xCF90, 0x7668, 0xCF61, 0x7655, 0xCF33, + 0x7642, 0xCF04, 0x762E, 0xCED6, 0x761B, 0xCEA7, 0x7608, 0xCE79, + 0x75F4, 0xCE4B, 0x75E1, 0xCE1C, 0x75CD, 0xCDEE, 0x75B9, 0xCDC0, + 0x75A6, 0xCD92, 0x7592, 0xCD63, 0x757E, 0xCD35, 0x756A, 0xCD07, + 0x7556, 0xCCD9, 0x7542, 0xCCAB, 0x752D, 0xCC7D, 0x7519, 0xCC4F, + 0x7505, 0xCC21, 0x74F0, 0xCBF3, 0x74DC, 0xCBC5, 0x74C7, 0xCB97, + 0x74B3, 0xCB69, 0x749E, 0xCB3C, 0x7489, 0xCB0E, 0x7475, 0xCAE0, + 0x7460, 0xCAB2, 0x744B, 0xCA85, 0x7436, 0xCA57, 0x7421, 0xCA29, + 0x740B, 0xC9FC, 0x73F6, 0xC9CE, 0x73E1, 0xC9A1, 0x73CB, 0xC973, + 0x73B6, 0xC946, 0x73A0, 0xC918, 0x738B, 0xC8EB, 0x7375, 0xC8BE, + 0x735F, 0xC890, 0x734A, 0xC863, 0x7334, 0xC836, 0x731E, 0xC809, + 0x7308, 0xC7DB, 0x72F2, 0xC7AE, 0x72DC, 0xC781, 0x72C5, 0xC754, + 0x72AF, 0xC727, 0x7299, 0xC6FA, 0x7282, 0xC6CD, 0x726C, 0xC6A0, + 0x7255, 0xC673, 0x723F, 0xC646, 0x7228, 0xC619, 0x7211, 0xC5ED, + 0x71FA, 0xC5C0, 0x71E3, 0xC593, 0x71CC, 0xC566, 0x71B5, 0xC53A, + 0x719E, 0xC50D, 0x7187, 0xC4E0, 0x7170, 0xC4B4, 0x7158, 0xC487, + 0x7141, 0xC45B, 0x712A, 0xC42E, 0x7112, 0xC402, 0x70FA, 0xC3D6, + 0x70E3, 0xC3A9, 0x70CB, 0xC37D, 0x70B3, 0xC351, 0x709B, 0xC324, + 0x7083, 0xC2F8, 0x706B, 0xC2CC, 0x7053, 0xC2A0, 0x703B, 0xC274, + 0x7023, 0xC248, 0x700B, 0xC21C, 0x6FF2, 0xC1F0, 0x6FDA, 0xC1C4, + 0x6FC2, 0xC198, 0x6FA9, 0xC16C, 0x6F90, 0xC140, 0x6F78, 0xC114, + 0x6F5F, 0xC0E9, 0x6F46, 0xC0BD, 0x6F2D, 0xC091, 0x6F14, 0xC066, + 0x6EFB, 0xC03A, 0x6EE2, 0xC00F, 0x6EC9, 0xBFE3, 0x6EB0, 0xBFB8, + 0x6E97, 0xBF8C, 0x6E7D, 0xBF61, 0x6E64, 0xBF35, 0x6E4A, 0xBF0A, + 0x6E31, 0xBEDF, 0x6E17, 0xBEB3, 0x6DFE, 0xBE88, 0x6DE4, 0xBE5D, + 0x6DCA, 0xBE32, 0x6DB0, 0xBE07, 0x6D96, 0xBDDC, 0x6D7C, 0xBDB1, + 0x6D62, 0xBD86, 0x6D48, 0xBD5B, 0x6D2E, 0xBD30, 0x6D14, 0xBD05, + 0x6CF9, 0xBCDA, 0x6CDF, 0xBCAF, 0x6CC4, 0xBC85, 0x6CAA, 0xBC5A, + 0x6C8F, 0xBC2F, 0x6C75, 0xBC05, 0x6C5A, 0xBBDA, 0x6C3F, 0xBBB0, + 0x6C24, 0xBB85, 0x6C09, 0xBB5B, 0x6BEE, 0xBB30, 0x6BD3, 0xBB06, + 0x6BB8, 0xBADC, 0x6B9D, 0xBAB1, 0x6B82, 0xBA87, 0x6B66, 0xBA5D, + 0x6B4B, 0xBA33, 0x6B30, 0xBA09, 0x6B14, 0xB9DF, 0x6AF8, 0xB9B5, + 0x6ADD, 0xB98B, 0x6AC1, 0xB961, 0x6AA5, 0xB937, 0x6A89, 0xB90D, + 0x6A6E, 0xB8E3, 0x6A52, 0xB8B9, 0x6A36, 0xB890, 0x6A1A, 0xB866, + 0x69FD, 0xB83C, 0x69E1, 0xB813, 0x69C5, 0xB7E9, 0x69A9, 0xB7C0, + 0x698C, 0xB796, 0x6970, 0xB76D, 0x6953, 0xB743, 0x6937, 0xB71A, + 0x691A, 0xB6F1, 0x68FD, 0xB6C7, 0x68E0, 0xB69E, 0x68C4, 0xB675, + 0x68A7, 0xB64C, 0x688A, 0xB623, 0x686D, 0xB5FA, 0x6850, 0xB5D1, + 0x6832, 0xB5A8, 0x6815, 0xB57F, 0x67F8, 0xB556, 0x67DA, 0xB52D, + 0x67BD, 0xB505, 0x67A0, 0xB4DC, 0x6782, 0xB4B3, 0x6764, 0xB48B, + 0x6747, 0xB462, 0x6729, 0xB439, 0x670B, 0xB411, 0x66ED, 0xB3E9, + 0x66D0, 0xB3C0, 0x66B2, 0xB398, 0x6693, 0xB36F, 0x6675, 0xB347, + 0x6657, 0xB31F, 0x6639, 0xB2F7, 0x661B, 0xB2CF, 0x65FC, 0xB2A7, + 0x65DE, 0xB27F, 0x65C0, 0xB257, 0x65A1, 0xB22F, 0x6582, 0xB207, + 0x6564, 0xB1DF, 0x6545, 0xB1B7, 0x6526, 0xB18F, 0x6507, 0xB168, + 0x64E9, 0xB140, 0x64CA, 0xB118, 0x64AB, 0xB0F1, 0x648B, 0xB0C9, + 0x646C, 0xB0A2, 0x644D, 0xB07B, 0x642E, 0xB053, 0x640F, 0xB02C, + 0x63EF, 0xB005, 0x63D0, 0xAFDD, 0x63B0, 0xAFB6, 0x6391, 0xAF8F, + 0x6371, 0xAF68, 0x6351, 0xAF41, 0x6332, 0xAF1A, 0x6312, 0xAEF3, + 0x62F2, 0xAECC, 0x62D2, 0xAEA5, 0x62B2, 0xAE7F, 0x6292, 0xAE58, + 0x6272, 0xAE31, 0x6252, 0xAE0B, 0x6232, 0xADE4, 0x6211, 0xADBD, + 0x61F1, 0xAD97, 0x61D1, 0xAD70, 0x61B0, 0xAD4A, 0x6190, 0xAD24, + 0x616F, 0xACFD, 0x614E, 0xACD7, 0x612E, 0xACB1, 0x610D, 0xAC8B, + 0x60EC, 0xAC65, 0x60CB, 0xAC3F, 0x60AA, 0xAC19, 0x6089, 0xABF3, + 0x6068, 0xABCD, 0x6047, 0xABA7, 0x6026, 0xAB81, 0x6005, 0xAB5C, + 0x5FE4, 0xAB36, 0x5FC2, 0xAB10, 0x5FA1, 0xAAEB, 0x5F80, 0xAAC5, + 0x5F5E, 0xAAA0, 0x5F3C, 0xAA7A, 0x5F1B, 0xAA55, 0x5EF9, 0xAA30, + 0x5ED7, 0xAA0A, 0x5EB6, 0xA9E5, 0x5E94, 0xA9C0, 0x5E72, 0xA99B, + 0x5E50, 0xA976, 0x5E2E, 0xA951, 0x5E0C, 0xA92C, 0x5DEA, 0xA907, + 0x5DC8, 0xA8E2, 0x5DA5, 0xA8BD, 0x5D83, 0xA899, 0x5D61, 0xA874, + 0x5D3E, 0xA84F, 0x5D1C, 0xA82B, 0x5CF9, 0xA806, 0x5CD7, 0xA7E2, + 0x5CB4, 0xA7BD, 0x5C91, 0xA799, 0x5C6F, 0xA774, 0x5C4C, 0xA750, + 0x5C29, 0xA72C, 0x5C06, 0xA708, 0x5BE3, 0xA6E4, 0x5BC0, 0xA6C0, + 0x5B9D, 0xA69C, 0x5B7A, 0xA678, 0x5B57, 0xA654, 0x5B34, 0xA630, + 0x5B10, 0xA60C, 0x5AED, 0xA5E8, 0x5AC9, 0xA5C5, 0x5AA6, 0xA5A1, + 0x5A82, 0xA57E, 0x5A5F, 0xA55A, 0x5A3B, 0xA537, 0x5A18, 0xA513, + 0x59F4, 0xA4F0, 0x59D0, 0xA4CC, 0x59AC, 0xA4A9, 0x5988, 0xA486, + 0x5964, 0xA463, 0x5940, 0xA440, 0x591C, 0xA41D, 0x58F8, 0xA3FA, + 0x58D4, 0xA3D7, 0x58B0, 0xA3B4, 0x588C, 0xA391, 0x5867, 0xA36F, + 0x5843, 0xA34C, 0x581E, 0xA329, 0x57FA, 0xA307, 0x57D5, 0xA2E4, + 0x57B1, 0xA2C2, 0x578C, 0xA29F, 0x5767, 0xA27D, 0x5743, 0xA25B, + 0x571E, 0xA238, 0x56F9, 0xA216, 0x56D4, 0xA1F4, 0x56AF, 0xA1D2, + 0x568A, 0xA1B0, 0x5665, 0xA18E, 0x5640, 0xA16C, 0x561B, 0xA14A, + 0x55F6, 0xA129, 0x55D0, 0xA107, 0x55AB, 0xA0E5, 0x5586, 0xA0C4, + 0x5560, 0xA0A2, 0x553B, 0xA080, 0x5515, 0xA05F, 0x54F0, 0xA03E, + 0x54CA, 0xA01C, 0x54A4, 0x9FFB, 0x547F, 0x9FDA, 0x5459, 0x9FB9, + 0x5433, 0x9F98, 0x540D, 0x9F77, 0x53E7, 0x9F56, 0x53C1, 0x9F35, + 0x539B, 0x9F14, 0x5375, 0x9EF3, 0x534F, 0x9ED2, 0x5329, 0x9EB2, + 0x5303, 0x9E91, 0x52DC, 0x9E70, 0x52B6, 0x9E50, 0x5290, 0x9E2F, + 0x5269, 0x9E0F, 0x5243, 0x9DEF, 0x521C, 0x9DCE, 0x51F5, 0x9DAE, + 0x51CF, 0x9D8E, 0x51A8, 0x9D6E, 0x5181, 0x9D4E, 0x515B, 0x9D2E, + 0x5134, 0x9D0E, 0x510D, 0x9CEE, 0x50E6, 0x9CCE, 0x50BF, 0x9CAF, + 0x5098, 0x9C8F, 0x5071, 0x9C6F, 0x504A, 0x9C50, 0x5023, 0x9C30, + 0x4FFB, 0x9C11, 0x4FD4, 0x9BF1, 0x4FAD, 0x9BD2, 0x4F85, 0x9BB3, + 0x4F5E, 0x9B94, 0x4F37, 0x9B75, 0x4F0F, 0x9B55, 0x4EE8, 0x9B36, + 0x4EC0, 0x9B17, 0x4E98, 0x9AF9, 0x4E71, 0x9ADA, 0x4E49, 0x9ABB, + 0x4E21, 0x9A9C, 0x4DF9, 0x9A7E, 0x4DD1, 0x9A5F, 0x4DA9, 0x9A40, + 0x4D81, 0x9A22, 0x4D59, 0x9A04, 0x4D31, 0x99E5, 0x4D09, 0x99C7, + 0x4CE1, 0x99A9, 0x4CB9, 0x998B, 0x4C91, 0x996D, 0x4C68, 0x994E, + 0x4C40, 0x9930, 0x4C17, 0x9913, 0x4BEF, 0x98F5, 0x4BC7, 0x98D7, + 0x4B9E, 0x98B9, 0x4B75, 0x989C, 0x4B4D, 0x987E, 0x4B24, 0x9860, + 0x4AFB, 0x9843, 0x4AD3, 0x9826, 0x4AAA, 0x9808, 0x4A81, 0x97EB, + 0x4A58, 0x97CE, 0x4A2F, 0x97B0, 0x4A06, 0x9793, 0x49DD, 0x9776, + 0x49B4, 0x9759, 0x498B, 0x973C, 0x4962, 0x9720, 0x4939, 0x9703, + 0x490F, 0x96E6, 0x48E6, 0x96C9, 0x48BD, 0x96AD, 0x4893, 0x9690, + 0x486A, 0x9674, 0x4840, 0x9657, 0x4817, 0x963B, 0x47ED, 0x961F, + 0x47C4, 0x9603, 0x479A, 0x95E6, 0x4770, 0x95CA, 0x4747, 0x95AE, + 0x471D, 0x9592, 0x46F3, 0x9577, 0x46C9, 0x955B, 0x469F, 0x953F, + 0x4675, 0x9523, 0x464B, 0x9508, 0x4621, 0x94EC, 0x45F7, 0x94D0, + 0x45CD, 0x94B5, 0x45A3, 0x949A, 0x4579, 0x947E, 0x454F, 0x9463, + 0x4524, 0x9448, 0x44FA, 0x942D, 0x44D0, 0x9412, 0x44A5, 0x93F7, + 0x447B, 0x93DC, 0x4450, 0x93C1, 0x4426, 0x93A6, 0x43FB, 0x938B, + 0x43D1, 0x9371, 0x43A6, 0x9356, 0x437B, 0x933C, 0x4351, 0x9321, + 0x4326, 0x9307, 0x42FB, 0x92EC, 0x42D0, 0x92D2, 0x42A5, 0x92B8, + 0x427A, 0x929E, 0x424F, 0x9284, 0x4224, 0x926A, 0x41F9, 0x9250, + 0x41CE, 0x9236, 0x41A3, 0x921C, 0x4178, 0x9202, 0x414D, 0x91E9, + 0x4121, 0x91CF, 0x40F6, 0x91B6, 0x40CB, 0x919C, 0x409F, 0x9183, + 0x4074, 0x9169, 0x4048, 0x9150, 0x401D, 0x9137, 0x3FF1, 0x911E, + 0x3FC6, 0x9105, 0x3F9A, 0x90EC, 0x3F6F, 0x90D3, 0x3F43, 0x90BA, + 0x3F17, 0x90A1, 0x3EEC, 0x9088, 0x3EC0, 0x9070, 0x3E94, 0x9057, + 0x3E68, 0x903E, 0x3E3C, 0x9026, 0x3E10, 0x900E, 0x3DE4, 0x8FF5, + 0x3DB8, 0x8FDD, 0x3D8C, 0x8FC5, 0x3D60, 0x8FAD, 0x3D34, 0x8F95, + 0x3D08, 0x8F7D, 0x3CDC, 0x8F65, 0x3CAF, 0x8F4D, 0x3C83, 0x8F35, + 0x3C57, 0x8F1D, 0x3C2A, 0x8F06, 0x3BFE, 0x8EEE, 0x3BD2, 0x8ED6, + 0x3BA5, 0x8EBF, 0x3B79, 0x8EA8, 0x3B4C, 0x8E90, 0x3B20, 0x8E79, + 0x3AF3, 0x8E62, 0x3AC6, 0x8E4B, 0x3A9A, 0x8E34, 0x3A6D, 0x8E1D, + 0x3A40, 0x8E06, 0x3A13, 0x8DEF, 0x39E7, 0x8DD8, 0x39BA, 0x8DC1, + 0x398D, 0x8DAB, 0x3960, 0x8D94, 0x3933, 0x8D7E, 0x3906, 0x8D67, + 0x38D9, 0x8D51, 0x38AC, 0x8D3B, 0x387F, 0x8D24, 0x3852, 0x8D0E, + 0x3825, 0x8CF8, 0x37F7, 0x8CE2, 0x37CA, 0x8CCC, 0x379D, 0x8CB6, + 0x3770, 0x8CA1, 0x3742, 0x8C8B, 0x3715, 0x8C75, 0x36E8, 0x8C60, + 0x36BA, 0x8C4A, 0x368D, 0x8C35, 0x365F, 0x8C1F, 0x3632, 0x8C0A, + 0x3604, 0x8BF5, 0x35D7, 0x8BDF, 0x35A9, 0x8BCA, 0x357B, 0x8BB5, + 0x354E, 0x8BA0, 0x3520, 0x8B8B, 0x34F2, 0x8B77, 0x34C4, 0x8B62, + 0x3497, 0x8B4D, 0x3469, 0x8B39, 0x343B, 0x8B24, 0x340D, 0x8B10, + 0x33DF, 0x8AFB, 0x33B1, 0x8AE7, 0x3383, 0x8AD3, 0x3355, 0x8ABE, + 0x3327, 0x8AAA, 0x32F9, 0x8A96, 0x32CB, 0x8A82, 0x329D, 0x8A6E, + 0x326E, 0x8A5A, 0x3240, 0x8A47, 0x3212, 0x8A33, 0x31E4, 0x8A1F, + 0x31B5, 0x8A0C, 0x3187, 0x89F8, 0x3159, 0x89E5, 0x312A, 0x89D2, + 0x30FC, 0x89BE, 0x30CD, 0x89AB, 0x309F, 0x8998, 0x3070, 0x8985, + 0x3042, 0x8972, 0x3013, 0x895F, 0x2FE5, 0x894C, 0x2FB6, 0x8939, + 0x2F87, 0x8927, 0x2F59, 0x8914, 0x2F2A, 0x8902, 0x2EFB, 0x88EF, + 0x2ECC, 0x88DD, 0x2E9E, 0x88CA, 0x2E6F, 0x88B8, 0x2E40, 0x88A6, + 0x2E11, 0x8894, 0x2DE2, 0x8882, 0x2DB3, 0x8870, 0x2D84, 0x885E, + 0x2D55, 0x884C, 0x2D26, 0x883A, 0x2CF7, 0x8828, 0x2CC8, 0x8817, + 0x2C99, 0x8805, 0x2C6A, 0x87F4, 0x2C3B, 0x87E2, 0x2C0C, 0x87D1, + 0x2BDC, 0x87C0, 0x2BAD, 0x87AF, 0x2B7E, 0x879D, 0x2B4F, 0x878C, + 0x2B1F, 0x877B, 0x2AF0, 0x876B, 0x2AC1, 0x875A, 0x2A91, 0x8749, + 0x2A62, 0x8738, 0x2A32, 0x8728, 0x2A03, 0x8717, 0x29D3, 0x8707, + 0x29A4, 0x86F6, 0x2974, 0x86E6, 0x2945, 0x86D6, 0x2915, 0x86C6, + 0x28E5, 0x86B6, 0x28B6, 0x86A5, 0x2886, 0x8696, 0x2856, 0x8686, + 0x2827, 0x8676, 0x27F7, 0x8666, 0x27C7, 0x8656, 0x2797, 0x8647, + 0x2768, 0x8637, 0x2738, 0x8628, 0x2708, 0x8619, 0x26D8, 0x8609, + 0x26A8, 0x85FA, 0x2678, 0x85EB, 0x2648, 0x85DC, 0x2618, 0x85CD, + 0x25E8, 0x85BE, 0x25B8, 0x85AF, 0x2588, 0x85A0, 0x2558, 0x8592, + 0x2528, 0x8583, 0x24F8, 0x8574, 0x24C8, 0x8566, 0x2498, 0x8558, + 0x2467, 0x8549, 0x2437, 0x853B, 0x2407, 0x852D, 0x23D7, 0x851F, + 0x23A7, 0x8511, 0x2376, 0x8503, 0x2346, 0x84F5, 0x2316, 0x84E7, + 0x22E5, 0x84D9, 0x22B5, 0x84CC, 0x2284, 0x84BE, 0x2254, 0x84B0, + 0x2224, 0x84A3, 0x21F3, 0x8496, 0x21C3, 0x8488, 0x2192, 0x847B, + 0x2162, 0x846E, 0x2131, 0x8461, 0x2101, 0x8454, 0x20D0, 0x8447, + 0x209F, 0x843A, 0x206F, 0x842D, 0x203E, 0x8421, 0x200E, 0x8414, + 0x1FDD, 0x8407, 0x1FAC, 0x83FB, 0x1F7B, 0x83EF, 0x1F4B, 0x83E2, + 0x1F1A, 0x83D6, 0x1EE9, 0x83CA, 0x1EB8, 0x83BE, 0x1E88, 0x83B2, + 0x1E57, 0x83A6, 0x1E26, 0x839A, 0x1DF5, 0x838E, 0x1DC4, 0x8382, + 0x1D93, 0x8377, 0x1D62, 0x836B, 0x1D31, 0x8360, 0x1D01, 0x8354, + 0x1CD0, 0x8349, 0x1C9F, 0x833E, 0x1C6E, 0x8332, 0x1C3D, 0x8327, + 0x1C0C, 0x831C, 0x1BDA, 0x8311, 0x1BA9, 0x8306, 0x1B78, 0x82FB, + 0x1B47, 0x82F1, 0x1B16, 0x82E6, 0x1AE5, 0x82DB, 0x1AB4, 0x82D1, + 0x1A83, 0x82C6, 0x1A51, 0x82BC, 0x1A20, 0x82B2, 0x19EF, 0x82A8, + 0x19BE, 0x829D, 0x198D, 0x8293, 0x195B, 0x8289, 0x192A, 0x827F, + 0x18F9, 0x8276, 0x18C7, 0x826C, 0x1896, 0x8262, 0x1865, 0x8259, + 0x1833, 0x824F, 0x1802, 0x8246, 0x17D1, 0x823C, 0x179F, 0x8233, + 0x176E, 0x822A, 0x173C, 0x8220, 0x170B, 0x8217, 0x16DA, 0x820E, + 0x16A8, 0x8205, 0x1677, 0x81FD, 0x1645, 0x81F4, 0x1614, 0x81EB, + 0x15E2, 0x81E2, 0x15B1, 0x81DA, 0x157F, 0x81D1, 0x154D, 0x81C9, + 0x151C, 0x81C1, 0x14EA, 0x81B8, 0x14B9, 0x81B0, 0x1487, 0x81A8, + 0x1455, 0x81A0, 0x1424, 0x8198, 0x13F2, 0x8190, 0x13C1, 0x8188, + 0x138F, 0x8181, 0x135D, 0x8179, 0x132B, 0x8172, 0x12FA, 0x816A, + 0x12C8, 0x8163, 0x1296, 0x815B, 0x1265, 0x8154, 0x1233, 0x814D, + 0x1201, 0x8146, 0x11CF, 0x813F, 0x119E, 0x8138, 0x116C, 0x8131, + 0x113A, 0x812A, 0x1108, 0x8123, 0x10D6, 0x811D, 0x10A4, 0x8116, + 0x1073, 0x8110, 0x1041, 0x8109, 0x100F, 0x8103, 0x0FDD, 0x80FD, + 0x0FAB, 0x80F6, 0x0F79, 0x80F0, 0x0F47, 0x80EA, 0x0F15, 0x80E4, + 0x0EE4, 0x80DE, 0x0EB2, 0x80D9, 0x0E80, 0x80D3, 0x0E4E, 0x80CD, + 0x0E1C, 0x80C8, 0x0DEA, 0x80C2, 0x0DB8, 0x80BD, 0x0D86, 0x80B7, + 0x0D54, 0x80B2, 0x0D22, 0x80AD, 0x0CF0, 0x80A8, 0x0CBE, 0x80A3, + 0x0C8C, 0x809E, 0x0C5A, 0x8099, 0x0C28, 0x8094, 0x0BF6, 0x808F, + 0x0BC4, 0x808B, 0x0B92, 0x8086, 0x0B60, 0x8082, 0x0B2D, 0x807D, + 0x0AFB, 0x8079, 0x0AC9, 0x8075, 0x0A97, 0x8070, 0x0A65, 0x806C, + 0x0A33, 0x8068, 0x0A01, 0x8064, 0x09CF, 0x8060, 0x099D, 0x805D, + 0x096B, 0x8059, 0x0938, 0x8055, 0x0906, 0x8052, 0x08D4, 0x804E, + 0x08A2, 0x804B, 0x0870, 0x8047, 0x083E, 0x8044, 0x080C, 0x8041, + 0x07D9, 0x803E, 0x07A7, 0x803B, 0x0775, 0x8038, 0x0743, 0x8035, + 0x0711, 0x8032, 0x06DE, 0x802F, 0x06AC, 0x802D, 0x067A, 0x802A, + 0x0648, 0x8027, 0x0616, 0x8025, 0x05E3, 0x8023, 0x05B1, 0x8020, + 0x057F, 0x801E, 0x054D, 0x801C, 0x051B, 0x801A, 0x04E8, 0x8018, + 0x04B6, 0x8016, 0x0484, 0x8014, 0x0452, 0x8013, 0x041F, 0x8011, + 0x03ED, 0x800F, 0x03BB, 0x800E, 0x0389, 0x800C, 0x0356, 0x800B, + 0x0324, 0x800A, 0x02F2, 0x8009, 0x02C0, 0x8008, 0x028D, 0x8007, + 0x025B, 0x8006, 0x0229, 0x8005, 0x01F7, 0x8004, 0x01C4, 0x8003, + 0x0192, 0x8002, 0x0160, 0x8002, 0x012E, 0x8001, 0x00FB, 0x8001, + 0x00C9, 0x8001, 0x0097, 0x8001, 0x0065, 0x8001, 0x0032, 0x8001, + 0x0000, 0x8001, 0xFFCE, 0x8001, 0xFF9B, 0x8001, 0xFF69, 0x8001, + 0xFF37, 0x8001, 0xFF05, 0x8001, 0xFED2, 0x8001, 0xFEA0, 0x8002, + 0xFE6E, 0x8002, 0xFE3C, 0x8003, 0xFE09, 0x8004, 0xFDD7, 0x8005, + 0xFDA5, 0x8006, 0xFD73, 0x8007, 0xFD40, 0x8008, 0xFD0E, 0x8009, + 0xFCDC, 0x800A, 0xFCAA, 0x800B, 0xFC77, 0x800C, 0xFC45, 0x800E, + 0xFC13, 0x800F, 0xFBE1, 0x8011, 0xFBAE, 0x8013, 0xFB7C, 0x8014, + 0xFB4A, 0x8016, 0xFB18, 0x8018, 0xFAE5, 0x801A, 0xFAB3, 0x801C, + 0xFA81, 0x801E, 0xFA4F, 0x8020, 0xFA1D, 0x8023, 0xF9EA, 0x8025, + 0xF9B8, 0x8027, 0xF986, 0x802A, 0xF954, 0x802D, 0xF922, 0x802F, + 0xF8EF, 0x8032, 0xF8BD, 0x8035, 0xF88B, 0x8038, 0xF859, 0x803B, + 0xF827, 0x803E, 0xF7F4, 0x8041, 0xF7C2, 0x8044, 0xF790, 0x8047, + 0xF75E, 0x804B, 0xF72C, 0x804E, 0xF6FA, 0x8052, 0xF6C8, 0x8055, + 0xF695, 0x8059, 0xF663, 0x805D, 0xF631, 0x8060, 0xF5FF, 0x8064, + 0xF5CD, 0x8068, 0xF59B, 0x806C, 0xF569, 0x8070, 0xF537, 0x8075, + 0xF505, 0x8079, 0xF4D3, 0x807D, 0xF4A0, 0x8082, 0xF46E, 0x8086, + 0xF43C, 0x808B, 0xF40A, 0x808F, 0xF3D8, 0x8094, 0xF3A6, 0x8099, + 0xF374, 0x809E, 0xF342, 0x80A3, 0xF310, 0x80A8, 0xF2DE, 0x80AD, + 0xF2AC, 0x80B2, 0xF27A, 0x80B7, 0xF248, 0x80BD, 0xF216, 0x80C2, + 0xF1E4, 0x80C8, 0xF1B2, 0x80CD, 0xF180, 0x80D3, 0xF14E, 0x80D9, + 0xF11C, 0x80DE, 0xF0EB, 0x80E4, 0xF0B9, 0x80EA, 0xF087, 0x80F0, + 0xF055, 0x80F6, 0xF023, 0x80FD, 0xEFF1, 0x8103, 0xEFBF, 0x8109, + 0xEF8D, 0x8110, 0xEF5C, 0x8116, 0xEF2A, 0x811D, 0xEEF8, 0x8123, + 0xEEC6, 0x812A, 0xEE94, 0x8131, 0xEE62, 0x8138, 0xEE31, 0x813F, + 0xEDFF, 0x8146, 0xEDCD, 0x814D, 0xED9B, 0x8154, 0xED6A, 0x815B, + 0xED38, 0x8163, 0xED06, 0x816A, 0xECD5, 0x8172, 0xECA3, 0x8179, + 0xEC71, 0x8181, 0xEC3F, 0x8188, 0xEC0E, 0x8190, 0xEBDC, 0x8198, + 0xEBAB, 0x81A0, 0xEB79, 0x81A8, 0xEB47, 0x81B0, 0xEB16, 0x81B8, + 0xEAE4, 0x81C1, 0xEAB3, 0x81C9, 0xEA81, 0x81D1, 0xEA4F, 0x81DA, + 0xEA1E, 0x81E2, 0xE9EC, 0x81EB, 0xE9BB, 0x81F4, 0xE989, 0x81FD, + 0xE958, 0x8205, 0xE926, 0x820E, 0xE8F5, 0x8217, 0xE8C4, 0x8220, + 0xE892, 0x822A, 0xE861, 0x8233, 0xE82F, 0x823C, 0xE7FE, 0x8246, + 0xE7CD, 0x824F, 0xE79B, 0x8259, 0xE76A, 0x8262, 0xE739, 0x826C, + 0xE707, 0x8276, 0xE6D6, 0x827F, 0xE6A5, 0x8289, 0xE673, 0x8293, + 0xE642, 0x829D, 0xE611, 0x82A8, 0xE5E0, 0x82B2, 0xE5AF, 0x82BC, + 0xE57D, 0x82C6, 0xE54C, 0x82D1, 0xE51B, 0x82DB, 0xE4EA, 0x82E6, + 0xE4B9, 0x82F1, 0xE488, 0x82FB, 0xE457, 0x8306, 0xE426, 0x8311, + 0xE3F4, 0x831C, 0xE3C3, 0x8327, 0xE392, 0x8332, 0xE361, 0x833E, + 0xE330, 0x8349, 0xE2FF, 0x8354, 0xE2CF, 0x8360, 0xE29E, 0x836B, + 0xE26D, 0x8377, 0xE23C, 0x8382, 0xE20B, 0x838E, 0xE1DA, 0x839A, + 0xE1A9, 0x83A6, 0xE178, 0x83B2, 0xE148, 0x83BE, 0xE117, 0x83CA, + 0xE0E6, 0x83D6, 0xE0B5, 0x83E2, 0xE085, 0x83EF, 0xE054, 0x83FB, + 0xE023, 0x8407, 0xDFF2, 0x8414, 0xDFC2, 0x8421, 0xDF91, 0x842D, + 0xDF61, 0x843A, 0xDF30, 0x8447, 0xDEFF, 0x8454, 0xDECF, 0x8461, + 0xDE9E, 0x846E, 0xDE6E, 0x847B, 0xDE3D, 0x8488, 0xDE0D, 0x8496, + 0xDDDC, 0x84A3, 0xDDAC, 0x84B0, 0xDD7C, 0x84BE, 0xDD4B, 0x84CC, + 0xDD1B, 0x84D9, 0xDCEA, 0x84E7, 0xDCBA, 0x84F5, 0xDC8A, 0x8503, + 0xDC59, 0x8511, 0xDC29, 0x851F, 0xDBF9, 0x852D, 0xDBC9, 0x853B, + 0xDB99, 0x8549, 0xDB68, 0x8558, 0xDB38, 0x8566, 0xDB08, 0x8574, + 0xDAD8, 0x8583, 0xDAA8, 0x8592, 0xDA78, 0x85A0, 0xDA48, 0x85AF, + 0xDA18, 0x85BE, 0xD9E8, 0x85CD, 0xD9B8, 0x85DC, 0xD988, 0x85EB, + 0xD958, 0x85FA, 0xD928, 0x8609, 0xD8F8, 0x8619, 0xD8C8, 0x8628, + 0xD898, 0x8637, 0xD869, 0x8647, 0xD839, 0x8656, 0xD809, 0x8666, + 0xD7D9, 0x8676, 0xD7AA, 0x8686, 0xD77A, 0x8696, 0xD74A, 0x86A5, + 0xD71B, 0x86B6, 0xD6EB, 0x86C6, 0xD6BB, 0x86D6, 0xD68C, 0x86E6, + 0xD65C, 0x86F6, 0xD62D, 0x8707, 0xD5FD, 0x8717, 0xD5CE, 0x8728, + 0xD59E, 0x8738, 0xD56F, 0x8749, 0xD53F, 0x875A, 0xD510, 0x876B, + 0xD4E1, 0x877B, 0xD4B1, 0x878C, 0xD482, 0x879D, 0xD453, 0x87AF, + 0xD424, 0x87C0, 0xD3F4, 0x87D1, 0xD3C5, 0x87E2, 0xD396, 0x87F4, + 0xD367, 0x8805, 0xD338, 0x8817, 0xD309, 0x8828, 0xD2DA, 0x883A, + 0xD2AB, 0x884C, 0xD27C, 0x885E, 0xD24D, 0x8870, 0xD21E, 0x8882, + 0xD1EF, 0x8894, 0xD1C0, 0x88A6, 0xD191, 0x88B8, 0xD162, 0x88CA, + 0xD134, 0x88DD, 0xD105, 0x88EF, 0xD0D6, 0x8902, 0xD0A7, 0x8914, + 0xD079, 0x8927, 0xD04A, 0x8939, 0xD01B, 0x894C, 0xCFED, 0x895F, + 0xCFBE, 0x8972, 0xCF90, 0x8985, 0xCF61, 0x8998, 0xCF33, 0x89AB, + 0xCF04, 0x89BE, 0xCED6, 0x89D2, 0xCEA7, 0x89E5, 0xCE79, 0x89F8, + 0xCE4B, 0x8A0C, 0xCE1C, 0x8A1F, 0xCDEE, 0x8A33, 0xCDC0, 0x8A47, + 0xCD92, 0x8A5A, 0xCD63, 0x8A6E, 0xCD35, 0x8A82, 0xCD07, 0x8A96, + 0xCCD9, 0x8AAA, 0xCCAB, 0x8ABE, 0xCC7D, 0x8AD3, 0xCC4F, 0x8AE7, + 0xCC21, 0x8AFB, 0xCBF3, 0x8B10, 0xCBC5, 0x8B24, 0xCB97, 0x8B39, + 0xCB69, 0x8B4D, 0xCB3C, 0x8B62, 0xCB0E, 0x8B77, 0xCAE0, 0x8B8B, + 0xCAB2, 0x8BA0, 0xCA85, 0x8BB5, 0xCA57, 0x8BCA, 0xCA29, 0x8BDF, + 0xC9FC, 0x8BF5, 0xC9CE, 0x8C0A, 0xC9A1, 0x8C1F, 0xC973, 0x8C35, + 0xC946, 0x8C4A, 0xC918, 0x8C60, 0xC8EB, 0x8C75, 0xC8BE, 0x8C8B, + 0xC890, 0x8CA1, 0xC863, 0x8CB6, 0xC836, 0x8CCC, 0xC809, 0x8CE2, + 0xC7DB, 0x8CF8, 0xC7AE, 0x8D0E, 0xC781, 0x8D24, 0xC754, 0x8D3B, + 0xC727, 0x8D51, 0xC6FA, 0x8D67, 0xC6CD, 0x8D7E, 0xC6A0, 0x8D94, + 0xC673, 0x8DAB, 0xC646, 0x8DC1, 0xC619, 0x8DD8, 0xC5ED, 0x8DEF, + 0xC5C0, 0x8E06, 0xC593, 0x8E1D, 0xC566, 0x8E34, 0xC53A, 0x8E4B, + 0xC50D, 0x8E62, 0xC4E0, 0x8E79, 0xC4B4, 0x8E90, 0xC487, 0x8EA8, + 0xC45B, 0x8EBF, 0xC42E, 0x8ED6, 0xC402, 0x8EEE, 0xC3D6, 0x8F06, + 0xC3A9, 0x8F1D, 0xC37D, 0x8F35, 0xC351, 0x8F4D, 0xC324, 0x8F65, + 0xC2F8, 0x8F7D, 0xC2CC, 0x8F95, 0xC2A0, 0x8FAD, 0xC274, 0x8FC5, + 0xC248, 0x8FDD, 0xC21C, 0x8FF5, 0xC1F0, 0x900E, 0xC1C4, 0x9026, + 0xC198, 0x903E, 0xC16C, 0x9057, 0xC140, 0x9070, 0xC114, 0x9088, + 0xC0E9, 0x90A1, 0xC0BD, 0x90BA, 0xC091, 0x90D3, 0xC066, 0x90EC, + 0xC03A, 0x9105, 0xC00F, 0x911E, 0xBFE3, 0x9137, 0xBFB8, 0x9150, + 0xBF8C, 0x9169, 0xBF61, 0x9183, 0xBF35, 0x919C, 0xBF0A, 0x91B6, + 0xBEDF, 0x91CF, 0xBEB3, 0x91E9, 0xBE88, 0x9202, 0xBE5D, 0x921C, + 0xBE32, 0x9236, 0xBE07, 0x9250, 0xBDDC, 0x926A, 0xBDB1, 0x9284, + 0xBD86, 0x929E, 0xBD5B, 0x92B8, 0xBD30, 0x92D2, 0xBD05, 0x92EC, + 0xBCDA, 0x9307, 0xBCAF, 0x9321, 0xBC85, 0x933C, 0xBC5A, 0x9356, + 0xBC2F, 0x9371, 0xBC05, 0x938B, 0xBBDA, 0x93A6, 0xBBB0, 0x93C1, + 0xBB85, 0x93DC, 0xBB5B, 0x93F7, 0xBB30, 0x9412, 0xBB06, 0x942D, + 0xBADC, 0x9448, 0xBAB1, 0x9463, 0xBA87, 0x947E, 0xBA5D, 0x949A, + 0xBA33, 0x94B5, 0xBA09, 0x94D0, 0xB9DF, 0x94EC, 0xB9B5, 0x9508, + 0xB98B, 0x9523, 0xB961, 0x953F, 0xB937, 0x955B, 0xB90D, 0x9577, + 0xB8E3, 0x9592, 0xB8B9, 0x95AE, 0xB890, 0x95CA, 0xB866, 0x95E6, + 0xB83C, 0x9603, 0xB813, 0x961F, 0xB7E9, 0x963B, 0xB7C0, 0x9657, + 0xB796, 0x9674, 0xB76D, 0x9690, 0xB743, 0x96AD, 0xB71A, 0x96C9, + 0xB6F1, 0x96E6, 0xB6C7, 0x9703, 0xB69E, 0x9720, 0xB675, 0x973C, + 0xB64C, 0x9759, 0xB623, 0x9776, 0xB5FA, 0x9793, 0xB5D1, 0x97B0, + 0xB5A8, 0x97CE, 0xB57F, 0x97EB, 0xB556, 0x9808, 0xB52D, 0x9826, + 0xB505, 0x9843, 0xB4DC, 0x9860, 0xB4B3, 0x987E, 0xB48B, 0x989C, + 0xB462, 0x98B9, 0xB439, 0x98D7, 0xB411, 0x98F5, 0xB3E9, 0x9913, + 0xB3C0, 0x9930, 0xB398, 0x994E, 0xB36F, 0x996D, 0xB347, 0x998B, + 0xB31F, 0x99A9, 0xB2F7, 0x99C7, 0xB2CF, 0x99E5, 0xB2A7, 0x9A04, + 0xB27F, 0x9A22, 0xB257, 0x9A40, 0xB22F, 0x9A5F, 0xB207, 0x9A7E, + 0xB1DF, 0x9A9C, 0xB1B7, 0x9ABB, 0xB18F, 0x9ADA, 0xB168, 0x9AF9, + 0xB140, 0x9B17, 0xB118, 0x9B36, 0xB0F1, 0x9B55, 0xB0C9, 0x9B75, + 0xB0A2, 0x9B94, 0xB07B, 0x9BB3, 0xB053, 0x9BD2, 0xB02C, 0x9BF1, + 0xB005, 0x9C11, 0xAFDD, 0x9C30, 0xAFB6, 0x9C50, 0xAF8F, 0x9C6F, + 0xAF68, 0x9C8F, 0xAF41, 0x9CAF, 0xAF1A, 0x9CCE, 0xAEF3, 0x9CEE, + 0xAECC, 0x9D0E, 0xAEA5, 0x9D2E, 0xAE7F, 0x9D4E, 0xAE58, 0x9D6E, + 0xAE31, 0x9D8E, 0xAE0B, 0x9DAE, 0xADE4, 0x9DCE, 0xADBD, 0x9DEF, + 0xAD97, 0x9E0F, 0xAD70, 0x9E2F, 0xAD4A, 0x9E50, 0xAD24, 0x9E70, + 0xACFD, 0x9E91, 0xACD7, 0x9EB2, 0xACB1, 0x9ED2, 0xAC8B, 0x9EF3, + 0xAC65, 0x9F14, 0xAC3F, 0x9F35, 0xAC19, 0x9F56, 0xABF3, 0x9F77, + 0xABCD, 0x9F98, 0xABA7, 0x9FB9, 0xAB81, 0x9FDA, 0xAB5C, 0x9FFB, + 0xAB36, 0xA01C, 0xAB10, 0xA03E, 0xAAEB, 0xA05F, 0xAAC5, 0xA080, + 0xAAA0, 0xA0A2, 0xAA7A, 0xA0C4, 0xAA55, 0xA0E5, 0xAA30, 0xA107, + 0xAA0A, 0xA129, 0xA9E5, 0xA14A, 0xA9C0, 0xA16C, 0xA99B, 0xA18E, + 0xA976, 0xA1B0, 0xA951, 0xA1D2, 0xA92C, 0xA1F4, 0xA907, 0xA216, + 0xA8E2, 0xA238, 0xA8BD, 0xA25B, 0xA899, 0xA27D, 0xA874, 0xA29F, + 0xA84F, 0xA2C2, 0xA82B, 0xA2E4, 0xA806, 0xA307, 0xA7E2, 0xA329, + 0xA7BD, 0xA34C, 0xA799, 0xA36F, 0xA774, 0xA391, 0xA750, 0xA3B4, + 0xA72C, 0xA3D7, 0xA708, 0xA3FA, 0xA6E4, 0xA41D, 0xA6C0, 0xA440, + 0xA69C, 0xA463, 0xA678, 0xA486, 0xA654, 0xA4A9, 0xA630, 0xA4CC, + 0xA60C, 0xA4F0, 0xA5E8, 0xA513, 0xA5C5, 0xA537, 0xA5A1, 0xA55A, + 0xA57E, 0xA57E, 0xA55A, 0xA5A1, 0xA537, 0xA5C5, 0xA513, 0xA5E8, + 0xA4F0, 0xA60C, 0xA4CC, 0xA630, 0xA4A9, 0xA654, 0xA486, 0xA678, + 0xA463, 0xA69C, 0xA440, 0xA6C0, 0xA41D, 0xA6E4, 0xA3FA, 0xA708, + 0xA3D7, 0xA72C, 0xA3B4, 0xA750, 0xA391, 0xA774, 0xA36F, 0xA799, + 0xA34C, 0xA7BD, 0xA329, 0xA7E2, 0xA307, 0xA806, 0xA2E4, 0xA82B, + 0xA2C2, 0xA84F, 0xA29F, 0xA874, 0xA27D, 0xA899, 0xA25B, 0xA8BD, + 0xA238, 0xA8E2, 0xA216, 0xA907, 0xA1F4, 0xA92C, 0xA1D2, 0xA951, + 0xA1B0, 0xA976, 0xA18E, 0xA99B, 0xA16C, 0xA9C0, 0xA14A, 0xA9E5, + 0xA129, 0xAA0A, 0xA107, 0xAA30, 0xA0E5, 0xAA55, 0xA0C4, 0xAA7A, + 0xA0A2, 0xAAA0, 0xA080, 0xAAC5, 0xA05F, 0xAAEB, 0xA03E, 0xAB10, + 0xA01C, 0xAB36, 0x9FFB, 0xAB5C, 0x9FDA, 0xAB81, 0x9FB9, 0xABA7, + 0x9F98, 0xABCD, 0x9F77, 0xABF3, 0x9F56, 0xAC19, 0x9F35, 0xAC3F, + 0x9F14, 0xAC65, 0x9EF3, 0xAC8B, 0x9ED2, 0xACB1, 0x9EB2, 0xACD7, + 0x9E91, 0xACFD, 0x9E70, 0xAD24, 0x9E50, 0xAD4A, 0x9E2F, 0xAD70, + 0x9E0F, 0xAD97, 0x9DEF, 0xADBD, 0x9DCE, 0xADE4, 0x9DAE, 0xAE0B, + 0x9D8E, 0xAE31, 0x9D6E, 0xAE58, 0x9D4E, 0xAE7F, 0x9D2E, 0xAEA5, + 0x9D0E, 0xAECC, 0x9CEE, 0xAEF3, 0x9CCE, 0xAF1A, 0x9CAF, 0xAF41, + 0x9C8F, 0xAF68, 0x9C6F, 0xAF8F, 0x9C50, 0xAFB6, 0x9C30, 0xAFDD, + 0x9C11, 0xB005, 0x9BF1, 0xB02C, 0x9BD2, 0xB053, 0x9BB3, 0xB07B, + 0x9B94, 0xB0A2, 0x9B75, 0xB0C9, 0x9B55, 0xB0F1, 0x9B36, 0xB118, + 0x9B17, 0xB140, 0x9AF9, 0xB168, 0x9ADA, 0xB18F, 0x9ABB, 0xB1B7, + 0x9A9C, 0xB1DF, 0x9A7E, 0xB207, 0x9A5F, 0xB22F, 0x9A40, 0xB257, + 0x9A22, 0xB27F, 0x9A04, 0xB2A7, 0x99E5, 0xB2CF, 0x99C7, 0xB2F7, + 0x99A9, 0xB31F, 0x998B, 0xB347, 0x996D, 0xB36F, 0x994E, 0xB398, + 0x9930, 0xB3C0, 0x9913, 0xB3E9, 0x98F5, 0xB411, 0x98D7, 0xB439, + 0x98B9, 0xB462, 0x989C, 0xB48B, 0x987E, 0xB4B3, 0x9860, 0xB4DC, + 0x9843, 0xB505, 0x9826, 0xB52D, 0x9808, 0xB556, 0x97EB, 0xB57F, + 0x97CE, 0xB5A8, 0x97B0, 0xB5D1, 0x9793, 0xB5FA, 0x9776, 0xB623, + 0x9759, 0xB64C, 0x973C, 0xB675, 0x9720, 0xB69E, 0x9703, 0xB6C7, + 0x96E6, 0xB6F1, 0x96C9, 0xB71A, 0x96AD, 0xB743, 0x9690, 0xB76D, + 0x9674, 0xB796, 0x9657, 0xB7C0, 0x963B, 0xB7E9, 0x961F, 0xB813, + 0x9603, 0xB83C, 0x95E6, 0xB866, 0x95CA, 0xB890, 0x95AE, 0xB8B9, + 0x9592, 0xB8E3, 0x9577, 0xB90D, 0x955B, 0xB937, 0x953F, 0xB961, + 0x9523, 0xB98B, 0x9508, 0xB9B5, 0x94EC, 0xB9DF, 0x94D0, 0xBA09, + 0x94B5, 0xBA33, 0x949A, 0xBA5D, 0x947E, 0xBA87, 0x9463, 0xBAB1, + 0x9448, 0xBADC, 0x942D, 0xBB06, 0x9412, 0xBB30, 0x93F7, 0xBB5B, + 0x93DC, 0xBB85, 0x93C1, 0xBBB0, 0x93A6, 0xBBDA, 0x938B, 0xBC05, + 0x9371, 0xBC2F, 0x9356, 0xBC5A, 0x933C, 0xBC85, 0x9321, 0xBCAF, + 0x9307, 0xBCDA, 0x92EC, 0xBD05, 0x92D2, 0xBD30, 0x92B8, 0xBD5B, + 0x929E, 0xBD86, 0x9284, 0xBDB1, 0x926A, 0xBDDC, 0x9250, 0xBE07, + 0x9236, 0xBE32, 0x921C, 0xBE5D, 0x9202, 0xBE88, 0x91E9, 0xBEB3, + 0x91CF, 0xBEDF, 0x91B6, 0xBF0A, 0x919C, 0xBF35, 0x9183, 0xBF61, + 0x9169, 0xBF8C, 0x9150, 0xBFB8, 0x9137, 0xBFE3, 0x911E, 0xC00F, + 0x9105, 0xC03A, 0x90EC, 0xC066, 0x90D3, 0xC091, 0x90BA, 0xC0BD, + 0x90A1, 0xC0E9, 0x9088, 0xC114, 0x9070, 0xC140, 0x9057, 0xC16C, + 0x903E, 0xC198, 0x9026, 0xC1C4, 0x900E, 0xC1F0, 0x8FF5, 0xC21C, + 0x8FDD, 0xC248, 0x8FC5, 0xC274, 0x8FAD, 0xC2A0, 0x8F95, 0xC2CC, + 0x8F7D, 0xC2F8, 0x8F65, 0xC324, 0x8F4D, 0xC351, 0x8F35, 0xC37D, + 0x8F1D, 0xC3A9, 0x8F06, 0xC3D6, 0x8EEE, 0xC402, 0x8ED6, 0xC42E, + 0x8EBF, 0xC45B, 0x8EA8, 0xC487, 0x8E90, 0xC4B4, 0x8E79, 0xC4E0, + 0x8E62, 0xC50D, 0x8E4B, 0xC53A, 0x8E34, 0xC566, 0x8E1D, 0xC593, + 0x8E06, 0xC5C0, 0x8DEF, 0xC5ED, 0x8DD8, 0xC619, 0x8DC1, 0xC646, + 0x8DAB, 0xC673, 0x8D94, 0xC6A0, 0x8D7E, 0xC6CD, 0x8D67, 0xC6FA, + 0x8D51, 0xC727, 0x8D3B, 0xC754, 0x8D24, 0xC781, 0x8D0E, 0xC7AE, + 0x8CF8, 0xC7DB, 0x8CE2, 0xC809, 0x8CCC, 0xC836, 0x8CB6, 0xC863, + 0x8CA1, 0xC890, 0x8C8B, 0xC8BE, 0x8C75, 0xC8EB, 0x8C60, 0xC918, + 0x8C4A, 0xC946, 0x8C35, 0xC973, 0x8C1F, 0xC9A1, 0x8C0A, 0xC9CE, + 0x8BF5, 0xC9FC, 0x8BDF, 0xCA29, 0x8BCA, 0xCA57, 0x8BB5, 0xCA85, + 0x8BA0, 0xCAB2, 0x8B8B, 0xCAE0, 0x8B77, 0xCB0E, 0x8B62, 0xCB3C, + 0x8B4D, 0xCB69, 0x8B39, 0xCB97, 0x8B24, 0xCBC5, 0x8B10, 0xCBF3, + 0x8AFB, 0xCC21, 0x8AE7, 0xCC4F, 0x8AD3, 0xCC7D, 0x8ABE, 0xCCAB, + 0x8AAA, 0xCCD9, 0x8A96, 0xCD07, 0x8A82, 0xCD35, 0x8A6E, 0xCD63, + 0x8A5A, 0xCD92, 0x8A47, 0xCDC0, 0x8A33, 0xCDEE, 0x8A1F, 0xCE1C, + 0x8A0C, 0xCE4B, 0x89F8, 0xCE79, 0x89E5, 0xCEA7, 0x89D2, 0xCED6, + 0x89BE, 0xCF04, 0x89AB, 0xCF33, 0x8998, 0xCF61, 0x8985, 0xCF90, + 0x8972, 0xCFBE, 0x895F, 0xCFED, 0x894C, 0xD01B, 0x8939, 0xD04A, + 0x8927, 0xD079, 0x8914, 0xD0A7, 0x8902, 0xD0D6, 0x88EF, 0xD105, + 0x88DD, 0xD134, 0x88CA, 0xD162, 0x88B8, 0xD191, 0x88A6, 0xD1C0, + 0x8894, 0xD1EF, 0x8882, 0xD21E, 0x8870, 0xD24D, 0x885E, 0xD27C, + 0x884C, 0xD2AB, 0x883A, 0xD2DA, 0x8828, 0xD309, 0x8817, 0xD338, + 0x8805, 0xD367, 0x87F4, 0xD396, 0x87E2, 0xD3C5, 0x87D1, 0xD3F4, + 0x87C0, 0xD424, 0x87AF, 0xD453, 0x879D, 0xD482, 0x878C, 0xD4B1, + 0x877B, 0xD4E1, 0x876B, 0xD510, 0x875A, 0xD53F, 0x8749, 0xD56F, + 0x8738, 0xD59E, 0x8728, 0xD5CE, 0x8717, 0xD5FD, 0x8707, 0xD62D, + 0x86F6, 0xD65C, 0x86E6, 0xD68C, 0x86D6, 0xD6BB, 0x86C6, 0xD6EB, + 0x86B6, 0xD71B, 0x86A5, 0xD74A, 0x8696, 0xD77A, 0x8686, 0xD7AA, + 0x8676, 0xD7D9, 0x8666, 0xD809, 0x8656, 0xD839, 0x8647, 0xD869, + 0x8637, 0xD898, 0x8628, 0xD8C8, 0x8619, 0xD8F8, 0x8609, 0xD928, + 0x85FA, 0xD958, 0x85EB, 0xD988, 0x85DC, 0xD9B8, 0x85CD, 0xD9E8, + 0x85BE, 0xDA18, 0x85AF, 0xDA48, 0x85A0, 0xDA78, 0x8592, 0xDAA8, + 0x8583, 0xDAD8, 0x8574, 0xDB08, 0x8566, 0xDB38, 0x8558, 0xDB68, + 0x8549, 0xDB99, 0x853B, 0xDBC9, 0x852D, 0xDBF9, 0x851F, 0xDC29, + 0x8511, 0xDC59, 0x8503, 0xDC8A, 0x84F5, 0xDCBA, 0x84E7, 0xDCEA, + 0x84D9, 0xDD1B, 0x84CC, 0xDD4B, 0x84BE, 0xDD7C, 0x84B0, 0xDDAC, + 0x84A3, 0xDDDC, 0x8496, 0xDE0D, 0x8488, 0xDE3D, 0x847B, 0xDE6E, + 0x846E, 0xDE9E, 0x8461, 0xDECF, 0x8454, 0xDEFF, 0x8447, 0xDF30, + 0x843A, 0xDF61, 0x842D, 0xDF91, 0x8421, 0xDFC2, 0x8414, 0xDFF2, + 0x8407, 0xE023, 0x83FB, 0xE054, 0x83EF, 0xE085, 0x83E2, 0xE0B5, + 0x83D6, 0xE0E6, 0x83CA, 0xE117, 0x83BE, 0xE148, 0x83B2, 0xE178, + 0x83A6, 0xE1A9, 0x839A, 0xE1DA, 0x838E, 0xE20B, 0x8382, 0xE23C, + 0x8377, 0xE26D, 0x836B, 0xE29E, 0x8360, 0xE2CF, 0x8354, 0xE2FF, + 0x8349, 0xE330, 0x833E, 0xE361, 0x8332, 0xE392, 0x8327, 0xE3C3, + 0x831C, 0xE3F4, 0x8311, 0xE426, 0x8306, 0xE457, 0x82FB, 0xE488, + 0x82F1, 0xE4B9, 0x82E6, 0xE4EA, 0x82DB, 0xE51B, 0x82D1, 0xE54C, + 0x82C6, 0xE57D, 0x82BC, 0xE5AF, 0x82B2, 0xE5E0, 0x82A8, 0xE611, + 0x829D, 0xE642, 0x8293, 0xE673, 0x8289, 0xE6A5, 0x827F, 0xE6D6, + 0x8276, 0xE707, 0x826C, 0xE739, 0x8262, 0xE76A, 0x8259, 0xE79B, + 0x824F, 0xE7CD, 0x8246, 0xE7FE, 0x823C, 0xE82F, 0x8233, 0xE861, + 0x822A, 0xE892, 0x8220, 0xE8C4, 0x8217, 0xE8F5, 0x820E, 0xE926, + 0x8205, 0xE958, 0x81FD, 0xE989, 0x81F4, 0xE9BB, 0x81EB, 0xE9EC, + 0x81E2, 0xEA1E, 0x81DA, 0xEA4F, 0x81D1, 0xEA81, 0x81C9, 0xEAB3, + 0x81C1, 0xEAE4, 0x81B8, 0xEB16, 0x81B0, 0xEB47, 0x81A8, 0xEB79, + 0x81A0, 0xEBAB, 0x8198, 0xEBDC, 0x8190, 0xEC0E, 0x8188, 0xEC3F, + 0x8181, 0xEC71, 0x8179, 0xECA3, 0x8172, 0xECD5, 0x816A, 0xED06, + 0x8163, 0xED38, 0x815B, 0xED6A, 0x8154, 0xED9B, 0x814D, 0xEDCD, + 0x8146, 0xEDFF, 0x813F, 0xEE31, 0x8138, 0xEE62, 0x8131, 0xEE94, + 0x812A, 0xEEC6, 0x8123, 0xEEF8, 0x811D, 0xEF2A, 0x8116, 0xEF5C, + 0x8110, 0xEF8D, 0x8109, 0xEFBF, 0x8103, 0xEFF1, 0x80FD, 0xF023, + 0x80F6, 0xF055, 0x80F0, 0xF087, 0x80EA, 0xF0B9, 0x80E4, 0xF0EB, + 0x80DE, 0xF11C, 0x80D9, 0xF14E, 0x80D3, 0xF180, 0x80CD, 0xF1B2, + 0x80C8, 0xF1E4, 0x80C2, 0xF216, 0x80BD, 0xF248, 0x80B7, 0xF27A, + 0x80B2, 0xF2AC, 0x80AD, 0xF2DE, 0x80A8, 0xF310, 0x80A3, 0xF342, + 0x809E, 0xF374, 0x8099, 0xF3A6, 0x8094, 0xF3D8, 0x808F, 0xF40A, + 0x808B, 0xF43C, 0x8086, 0xF46E, 0x8082, 0xF4A0, 0x807D, 0xF4D3, + 0x8079, 0xF505, 0x8075, 0xF537, 0x8070, 0xF569, 0x806C, 0xF59B, + 0x8068, 0xF5CD, 0x8064, 0xF5FF, 0x8060, 0xF631, 0x805D, 0xF663, + 0x8059, 0xF695, 0x8055, 0xF6C8, 0x8052, 0xF6FA, 0x804E, 0xF72C, + 0x804B, 0xF75E, 0x8047, 0xF790, 0x8044, 0xF7C2, 0x8041, 0xF7F4, + 0x803E, 0xF827, 0x803B, 0xF859, 0x8038, 0xF88B, 0x8035, 0xF8BD, + 0x8032, 0xF8EF, 0x802F, 0xF922, 0x802D, 0xF954, 0x802A, 0xF986, + 0x8027, 0xF9B8, 0x8025, 0xF9EA, 0x8023, 0xFA1D, 0x8020, 0xFA4F, + 0x801E, 0xFA81, 0x801C, 0xFAB3, 0x801A, 0xFAE5, 0x8018, 0xFB18, + 0x8016, 0xFB4A, 0x8014, 0xFB7C, 0x8013, 0xFBAE, 0x8011, 0xFBE1, + 0x800F, 0xFC13, 0x800E, 0xFC45, 0x800C, 0xFC77, 0x800B, 0xFCAA, + 0x800A, 0xFCDC, 0x8009, 0xFD0E, 0x8008, 0xFD40, 0x8007, 0xFD73, + 0x8006, 0xFDA5, 0x8005, 0xFDD7, 0x8004, 0xFE09, 0x8003, 0xFE3C, + 0x8002, 0xFE6E, 0x8002, 0xFEA0, 0x8001, 0xFED2, 0x8001, 0xFF05, + 0x8001, 0xFF37, 0x8001, 0xFF69, 0x8001, 0xFF9B, 0x8001, 0xFFCE +}; + +#endif //MSP_USE_LEA + diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c new file mode 100755 index 000000000..681a86f92 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c @@ -0,0 +1,145 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_cmplx_fill_iq31(const msp_cmplx_fill_iq31_params *params, _iq31 *dst) +{ + uint16_t length; + int32_t *fillVector; + msp_status status; + MSP_LEA_ADDMATRIX_PARAMS *leaParams; + + /* Initialize the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data array is aligned and in a valid memory segment. */ + if (!MSP_LEA_VALID_ADDRESS(dst, 4)) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_ADDMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_ADDMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_ADDMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Allocate offset vector of length one. */ + fillVector = (int32_t *)msp_lea_allocMemory(sizeof(int32_t)/sizeof(uint32_t)); + + /* Set MSP_LEA_ADDMATRIX_PARAMS structure for real. */ + fillVector[0] = params->realValue; + leaParams->input2 = MSP_LEA_CONST_ZERO; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(&CMPLX_REAL(dst)); + leaParams->vectorSize = length; + leaParams->input1Offset = 0; + leaParams->input2Offset = 0; + leaParams->outputOffset = 2; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(fillVector); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__ADDMATRIX command. */ + msp_lea_invokeCommand(LEACMD__ADDMATRIX); + + /* Set MSP_LEA_ADDMATRIX_PARAMS structure for imaginary. */ + fillVector[0] = params->imagValue; + leaParams->input2 = MSP_LEA_CONST_ZERO; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(&CMPLX_IMAG(dst)); + leaParams->vectorSize = length; + leaParams->input1Offset = 0; + leaParams->input2Offset = 0; + leaParams->outputOffset = 2; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(fillVector); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__ADDMATRIX command. */ + msp_lea_invokeCommand(LEACMD__ADDMATRIX); + + /* Free MSP_LEA_ADDMATRIX_PARAMS structure and offset vector. */ + msp_lea_freeMemory(sizeof(int32_t)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(MSP_LEA_ADDMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_cmplx_fill_iq31(const msp_cmplx_fill_iq31_params *params, _iq31 *dst) +{ + uint16_t length; + + /* Initialize the vector length. */ + length = params->length; + + /* Fill destination buffer. */ + while(length--) { + *dst++ = params->realValue; + *dst++ = params->imagValue; + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c new file mode 100755 index 000000000..c21bade85 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c @@ -0,0 +1,130 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_cmplx_fill_q15(const msp_cmplx_fill_q15_params *params, _q15 *dst) +{ + uint16_t length; + int16_t *fillVector; + msp_status status; + MSP_LEA_ADDMATRIX_PARAMS *leaParams; + + /* Initialize the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data array is aligned and in a valid memory segment. */ + if (!MSP_LEA_VALID_ADDRESS(dst, 4)) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_ADDMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_ADDMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_ADDMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Allocate fill vector of length two. */ + fillVector = (int16_t *)msp_lea_allocMemory(2*sizeof(int16_t)/sizeof(uint32_t)); + fillVector[0] = params->realValue; + fillVector[1] = params->imagValue; + + /* Set MSP_LEA_ADDMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONST_ZERO; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length << 1; + leaParams->input1Offset = 0; + leaParams->input2Offset = 0; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(fillVector); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__ADDMATRIX command. */ + msp_lea_invokeCommand(LEACMD__ADDMATRIX); + + /* Free MSP_LEA_ADDMATRIX_PARAMS structure and fill vector. */ + msp_lea_freeMemory(2*sizeof(int16_t)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(MSP_LEA_ADDMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_cmplx_fill_q15(const msp_cmplx_fill_q15_params *params, _q15 *dst) +{ + uint16_t length; + + /* Initialize the vector length. */ + length = params->length; + + /* Fill destination buffer. */ + while(length--) { + *dst++ = params->realValue; + *dst++ = params->imagValue; + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c new file mode 100755 index 000000000..278ad0c42 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c @@ -0,0 +1,57 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +msp_status msp_cmplx_iq31(const msp_cmplx_iq31_params *params, const _iq31 *real, const _iq31 *imag, _iq31 *dst) +{ + uint16_t length; + msp_status status; + msp_interleave_iq31_params interleaveParams; + + /* Initialize the vector length. */ + length = params->length; + + /* Interleave IQ31 real to channel zero of the destination vector. */ + interleaveParams.length = length; + interleaveParams.numChannels = 2; + interleaveParams.channel = 0; + status = msp_interleave_iq31(&interleaveParams, real, dst); + + /* Interleave IQ31 imaginary to channel one of the destination vector. */ + interleaveParams.length = length; + interleaveParams.numChannels = 2; + interleaveParams.channel = 1; + status = msp_interleave_iq31(&interleaveParams, imag, dst); + + return status; +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c new file mode 100755 index 000000000..4107ab6eb --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c @@ -0,0 +1,57 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +msp_status msp_cmplx_q15(const msp_cmplx_q15_params *params, const _q15 *real, const _q15 *imag, _q15 *dst) +{ + uint16_t length; + msp_status status; + msp_interleave_q15_params interleaveParams; + + /* Initialize the vector length. */ + length = params->length; + + /* Interleave Q15 real to channel zero of the destination vector. */ + interleaveParams.length = length; + interleaveParams.numChannels = 2; + interleaveParams.channel = 0; + status = msp_interleave_q15(&interleaveParams, real, dst); + + /* Interleave Q15 imaginary to channel one of the destination vector. */ + interleaveParams.length = length; + interleaveParams.numChannels = 2; + interleaveParams.channel = 1; + status = msp_interleave_q15(&interleaveParams, imag, dst); + + return status; +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c new file mode 100755 index 000000000..8d271c52b --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c @@ -0,0 +1,121 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_copy_iq31(const msp_copy_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint16_t length; + msp_status status; + MSP_LEA_ADDLONGMATRIX_PARAMS *leaParams; + + /* Initialize the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data array is aligned and in a valid memory segment. */ + if (!MSP_LEA_VALID_ADDRESS(dst, 4)) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_ADDLONGMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_ADDLONGMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_ADDLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_ADDLONGMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONST_ZERO; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length; + leaParams->input1Offset = 1; + leaParams->input2Offset = 0; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__ADDLONGMATRIX command. */ + msp_lea_invokeCommand(LEACMD__ADDLONGMATRIX); + + /* Free MSP_LEA_ADDLONGMATRIX_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_ADDLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_copy_iq31(const msp_copy_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint16_t length; + + /* Initialize the vector length. */ + length = params->length; + + while(length--) { + *dst++ = *src++; + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c new file mode 100755 index 000000000..383b666ba --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c @@ -0,0 +1,120 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_copy_q15(const msp_copy_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t length; + msp_status status; + MSP_LEA_ADDMATRIX_PARAMS *leaParams; + + /* Initialize the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data array is aligned and in a valid memory segment. */ + if (!MSP_LEA_VALID_ADDRESS(dst, 4)) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_ADDMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_ADDMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_ADDMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_ADDMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONST_ZERO; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length; + leaParams->input1Offset = 1; + leaParams->input2Offset = 0; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__ADDMATRIX command. */ + msp_lea_invokeCommand(LEACMD__ADDMATRIX); + + /* Free MSP_LEA_ADDMATRIX_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_ADDMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_copy_q15(const msp_copy_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t length; + + /* Initialize the vector length. */ + length = params->length; + while(length--) { + *dst++ = *src++; + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c new file mode 100755 index 000000000..535c37852 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c @@ -0,0 +1,142 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_deinterleave_iq31(const msp_deinterleave_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint16_t length; + uint16_t channel; + uint16_t numChannels; + msp_status status; + MSP_LEA_DEINTERLEAVELONG_PARAMS *leaParams; + + /* Initialize local variables from parameters. */ + length = params->length; + channel = params->channel; + numChannels = params->numChannels; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the channel is less than the total number of channels. */ + if (channel > numChannels) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_DEINTERLEAVELONG_PARAMS structure. */ + leaParams = (MSP_LEA_DEINTERLEAVELONG_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_DEINTERLEAVELONG_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_DEINTERLEAVELONG_PARAMS structure. */ + leaParams->vectorSize = length; + leaParams->interleaveDepth = numChannels; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(&src[channel]); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__DEINTERLEAVELONG command. */ + msp_lea_invokeCommand(LEACMD__DEINTERLEAVELONG); + + /* Free MSP_LEA_DEINTERLEAVELONG_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_DEINTERLEAVELONG_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_deinterleave_iq31(const msp_deinterleave_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint16_t length; + uint16_t channel; + uint16_t numChannels; + + /* Initialize local variables from parameters. */ + length = params->length; + channel = params->channel; + numChannels = params->numChannels; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the channel is less than the total number of channels. */ + if (channel > numChannels) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Extract requested channel from source data. */ + src += channel; + while (length--) { + *dst++ = *src; + src += numChannels; + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c new file mode 100755 index 000000000..0549ab21b --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c @@ -0,0 +1,165 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_deinterleave_q15(const msp_deinterleave_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t cmdId; + uint16_t length; + uint16_t channel; + uint16_t numChannels; + msp_status status; + MSP_LEA_DEINTERLEAVE_PARAMS *leaParams; + + /* Initialize local variables from parameters. */ + length = params->length; + channel = params->channel; + numChannels = params->numChannels; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the channel is less than the total number of channels. */ + if (channel > numChannels) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_DEINTERLEAVE_PARAMS structure. */ + leaParams = (MSP_LEA_DEINTERLEAVE_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_DEINTERLEAVE_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_DEINTERLEAVE_PARAMS structure. */ + leaParams->vectorSize = length; + leaParams->interleaveDepth = numChannels; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(&src[channel]); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Determine which LEA deinterleave command to invoke. */ + if (channel & 1) { + if (numChannels & 1) { + /* Invoke the LEACMD__DEINTERLEAVEODDODD command. */ + cmdId = LEACMD__DEINTERLEAVEODDODD; + } + else { + /* Invoke the LEACMD__DEINTERLEAVEODDEVEN command. */ + cmdId = LEACMD__DEINTERLEAVEODDEVEN; + } + } + else { + if (numChannels & 1) { + /* Invoke the LEACMD__DEINTERLEAVEEVENODD command. */ + cmdId = LEACMD__DEINTERLEAVEEVENODD; + } + else { + /* Invoke the LEACMD__DEINTERLEAVEEVENEVEN command. */ + cmdId = LEACMD__DEINTERLEAVEEVENEVEN; + } + } + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Free MSP_LEA_DEINTERLEAVE_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_DEINTERLEAVE_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_deinterleave_q15(const msp_deinterleave_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t length; + uint16_t channel; + uint16_t numChannels; + + /* Initialize local variables from parameters. */ + length = params->length; + channel = params->channel; + numChannels = params->numChannels; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the channel is less than the total number of channels. */ + if (channel > numChannels) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Extract requested channel from source data. */ + src += channel; + while (length--) { + *dst++ = *src; + src += numChannels; + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c new file mode 100755 index 000000000..797a56332 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c @@ -0,0 +1,127 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_fill_iq31(const msp_fill_iq31_params *params, _iq31 *dst) +{ + uint16_t length; + int32_t *fillVector; + msp_status status; + MSP_LEA_ADDLONGMATRIX_PARAMS *leaParams; + + /* Initialize the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data array is aligned and in a valid memory segment. */ + if (!MSP_LEA_VALID_ADDRESS(dst, 4)) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_ADDLONGMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_ADDLONGMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_ADDLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Allocate fill vector of length one. */ + fillVector = (int32_t *)msp_lea_allocMemory(sizeof(int32_t)/sizeof(uint32_t)); + fillVector[0] = params->value; + + /* Set MSP_LEA_ADDLONGMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONST_ZERO; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length; + leaParams->input1Offset = 0; + leaParams->input2Offset = 0; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(fillVector); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__ADDLONGMATRIX command. */ + msp_lea_invokeCommand(LEACMD__ADDLONGMATRIX); + + /* Free MSP_LEA_ADDLONGMATRIX_PARAMS structure and fill vector. */ + msp_lea_freeMemory(sizeof(fillVector)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(MSP_LEA_ADDLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_fill_iq31(const msp_fill_iq31_params *params, _iq31 *dst) +{ + uint16_t length; + + /* Initialize the vector length. */ + length = params->length; + + while(length--) { + *dst++ = params->value; + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c new file mode 100755 index 000000000..d973d5b03 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c @@ -0,0 +1,127 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_fill_q15(const msp_fill_q15_params *params, _q15 *dst) +{ + uint16_t length; + int16_t *fillVector; + msp_status status; + MSP_LEA_ADDMATRIX_PARAMS *leaParams; + + /* Initialize the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data array is aligned and in a valid memory segment. */ + if (!MSP_LEA_VALID_ADDRESS(dst, 4)) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_ADDMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_ADDMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_ADDMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Allocate fill vector of length two. */ + fillVector = (int16_t *)msp_lea_allocMemory(2*sizeof(int16_t)/sizeof(uint32_t)); + fillVector[0] = params->value; + fillVector[1] = params->value; + + /* Set MSP_LEA_ADDMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONST_ZERO; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length; + leaParams->input1Offset = 0; + leaParams->input2Offset = 0; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(fillVector); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__ADDMATRIX command. */ + msp_lea_invokeCommand(LEACMD__ADDMATRIX); + + /* Free MSP_LEA_ADDMATRIX_PARAMS structure and fill vector. */ + msp_lea_freeMemory(2*sizeof(int16_t)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(MSP_LEA_ADDMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_fill_q15(const msp_fill_q15_params *params, _q15 *dst) +{ + uint16_t length; + + /* Initialize the vector length. */ + length = params->length; + while(length--) { + *dst++ = params->value; + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c new file mode 100755 index 000000000..f2f9fc52f --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c @@ -0,0 +1,145 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_interleave_iq31(const msp_interleave_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint16_t length; + uint16_t channel; + uint16_t numChannels; + msp_status status; + MSP_LEA_ADDLONGMATRIX_PARAMS *leaParams; + + /* Initialize the vector length. */ + length = params->length; + channel = params->channel; + numChannels = params->numChannels; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the channel is less than the total number of channels. */ + if (channel > numChannels) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_ADDLONGMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_ADDLONGMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_ADDLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_ADDLONGMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONST_ZERO; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(&dst[channel]); + leaParams->vectorSize = length; + leaParams->input1Offset = 1; + leaParams->input2Offset = 0; + leaParams->outputOffset = numChannels; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__ADDLONGMATRIX command. */ + msp_lea_invokeCommand(LEACMD__ADDLONGMATRIX); + + /* Free MSP_LEA_ADDLONGMATRIX_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_ADDLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_interleave_iq31(const msp_interleave_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint16_t length; + uint16_t channel; + uint16_t numChannels; + + /* Initialize local variables from parameters. */ + length = params->length; + channel = params->channel; + numChannels = params->numChannels; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the channel is less than the total number of channels. */ + if (channel > numChannels) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Insert the requested channel into the destination data. */ + dst += channel; + while (length--) { + *dst = *src++; + dst += numChannels; + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c new file mode 100755 index 000000000..ae823abb3 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c @@ -0,0 +1,175 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_interleave_q15(const msp_interleave_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t cmdId; + uint16_t length; + uint16_t channel; + uint16_t numChannels; + msp_status status; + MSP_LEA_INTERLEAVE_PARAMS *leaParams; + + /* Initialize local variables from parameters. */ + length = params->length; + channel = params->channel; + numChannels = params->numChannels; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the channel is less than the total number of channels. */ + if (channel > numChannels) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_INTERLEAVE_PARAMS structure. */ + leaParams = (MSP_LEA_INTERLEAVE_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_INTERLEAVE_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_INTERLEAVE_PARAMS structure. */ + leaParams->vectorSize = length; + leaParams->channel = channel; + leaParams->numChannels = numChannels; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Determine which LEA deinterleave command to invoke. */ + if (channel & 1) { + if (numChannels & 1) { + /* Load the LEACMD__INTERLEAVEODDODD command into code memory. */ + cmdId = msp_lea_loadCommand(LEACMD__INTERLEAVEODDODD,MSP_LEA_INTERLEAVEODDODD, + sizeof(MSP_LEA_INTERLEAVEODDODD)/sizeof(MSP_LEA_INTERLEAVEODDODD[0])); + } + else { + /* Load the LEACMD__INTERLEAVEODDEVEN command into code memory. */ + cmdId = msp_lea_loadCommand(LEACMD__INTERLEAVEODDEVEN,MSP_LEA_INTERLEAVEODDEVEN, + sizeof(MSP_LEA_INTERLEAVEODDEVEN)/sizeof(MSP_LEA_INTERLEAVEODDEVEN[0])); + } + } + else { + if (numChannels & 1) { + /* Load the LEACMD__INTERLEAVEEVENODD command into code memory. */ + cmdId = msp_lea_loadCommand(LEACMD__INTERLEAVEEVENODD,MSP_LEA_INTERLEAVEEVENODD, + sizeof(MSP_LEA_INTERLEAVEEVENODD)/sizeof(MSP_LEA_INTERLEAVEEVENODD[0])); + } + else { + /* Load the LEACMD__INTERLEAVEEVENEVEN command into code memory. */ + cmdId = msp_lea_loadCommand(LEACMD__INTERLEAVEEVENEVEN,MSP_LEA_INTERLEAVEEVENEVEN, + sizeof(MSP_LEA_INTERLEAVEEVENEVEN)/sizeof(MSP_LEA_INTERLEAVEEVENEVEN[0])); + } + } + + /* Invoke the loaded command. */ + msp_lea_invokeCommand(cmdId); + + /* Free MSP_LEA_INTERLEAVE_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_INTERLEAVE_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_interleave_q15(const msp_interleave_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t length; + uint16_t channel; + uint16_t numChannels; + + /* Initialize local variables from parameters. */ + length = params->length; + channel = params->channel; + numChannels = params->numChannels; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the channel is less than the total number of channels. */ + if (channel > numChannels) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Insert the requested channel into the destination data. */ + dst += channel; + while (length--) { + *dst = *src++; + dst += numChannels; + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c new file mode 100755 index 000000000..46dcabc13 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c @@ -0,0 +1,51 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +msp_status msp_iq31_to_q15(const msp_iq31_to_q15_params *params, const _iq31 *src, _q15 *dst) +{ + uint16_t length; + msp_status status; + msp_deinterleave_q15_params deinterleaveParams; + + /* Initialize the vector length. */ + length = params->length; + + /* Extract upper 16-bits of IQ31 source to Q15 destination. */ + deinterleaveParams.length = length; + deinterleaveParams.numChannels = 2; + deinterleaveParams.channel = 1; + status = msp_deinterleave_q15(&deinterleaveParams, (const _q15 *)src, dst); + + return status; +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c new file mode 100755 index 000000000..9e9d1a670 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c @@ -0,0 +1,60 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +msp_status msp_q15_to_iq31(const msp_q15_to_iq31_params *params, const _q15 *src, _iq31 *dst) +{ + uint16_t length; + msp_status status; + msp_fill_iq31_params fillParams; + msp_interleave_q15_params interleaveParams; + + /* Initialize the vector length. */ + length = params->length; + + /* Fill destination with zeros. */ + fillParams.length = length; + fillParams.value = 0; + status = msp_fill_iq31(&fillParams, dst); + if (status != MSP_SUCCESS) { + return status; + } + + /* Interleave Q15 source to upper 16-bits of IQ31 destination. */ + interleaveParams.length = length; + interleaveParams.numChannels = 2; + interleaveParams.channel = 1; + status = msp_interleave_q15(&interleaveParams, src, (_q15 *)dst); + + return status; +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c new file mode 100755 index 000000000..39e3c73f3 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c @@ -0,0 +1,96 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +msp_status msp_sinusoid_q15(const msp_sinusoid_q15_params *params, _q15 *dst) +{ + msp_status status; + msp_biquad_df1_q15_params df1Params; + +#if defined(MSP_USE_LEA) + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate coefficients in LEA memory and set parameters */ + df1Params.length = params->length; + df1Params.coeffs = (msp_biquad_df1_q15_coeffs *)msp_lea_allocMemory(sizeof(msp_biquad_df1_q15_coeffs)/sizeof(uint32_t)); + df1Params.states = (msp_biquad_df1_q15_states *)msp_lea_allocMemory(sizeof(msp_biquad_df1_q15_coeffs)/sizeof(uint32_t)); +#else //MSP_USE_LEA + /* Allocate coefficients on stack */ + msp_biquad_df1_q15_coeffs coeffs; + msp_biquad_df1_q15_states states; + + /* Set parameters */ + df1Params.coeffs = &coeffs; + df1Params.states = &states; + df1Params.length = params->length; +#endif //MSP_USE_LEA + +#if defined(__MSP430_HAS_MPY32__) + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN; +#endif //__MSP430_HAS_MPY32__ + + /* Initialize coefficients */ + ((msp_biquad_df1_q15_coeffs *)df1Params.coeffs)->a1By2 = params->cosOmega; + ((msp_biquad_df1_q15_coeffs *)df1Params.coeffs)->a2 = _Q15(-1.0); + ((msp_biquad_df1_q15_coeffs *)df1Params.coeffs)->b0 = _Q15(0.0); + ((msp_biquad_df1_q15_coeffs *)df1Params.coeffs)->b1By2 = _Q15(0.0); + ((msp_biquad_df1_q15_coeffs *)df1Params.coeffs)->b2 = _Q15(0.0); + + /* Initialize states */ + df1Params.states->x1 = _Q15(0.0); + df1Params.states->x2 = _Q15(0.0); + df1Params.states->y1 = -__q15mpy(params->amplitude, params->sinOmega); + df1Params.states->y2 = __q15mpy(df1Params.states->y1, params->cosOmega) << 1; + +#if defined(__MSP430_HAS_MPY32__) + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#endif //__MSP430_HAS_MPY32__ + + /* Call DF1 biquad to generate sinusoid */ + status = msp_biquad_df1_q15(&df1Params, dst, dst); + +#if defined(MSP_USE_LEA) + /* Free coefficients and states from LEA memory */ + msp_lea_freeMemory(sizeof(msp_biquad_df1_q15_coeffs)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(msp_biquad_df1_q15_states)/sizeof(uint32_t)); +#endif //MSP_USE_LEA + + return status; +} + diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c new file mode 100755 index 000000000..ed77aaa20 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c @@ -0,0 +1,57 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform element wise absolute value of a single source vector. + */ +msp_status msp_abs_iq31(const msp_abs_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + + /* Loop through all vector elements. */ + while (length--) { + /* Compute the absolute value of src and store to dst. */ + if (*src < 0) { + *dst++ = -*src++; + } + else { + *dst++ = *src++; + } + } + + return MSP_SUCCESS; +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c new file mode 100755 index 000000000..9835c7cf4 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c @@ -0,0 +1,64 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform element wise absolute value of a single source vector. + */ +msp_status msp_abs_q15(const msp_abs_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Loop through all vector elements. */ + while (length--) { + /* Compute the absolute value of src and store to dst. */ + if (*src < 0) { + *dst++ = -*src++; + } + else { + *dst++ = *src++; + } + } + + return MSP_SUCCESS; +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c new file mode 100755 index 000000000..0e43f9511 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c @@ -0,0 +1,125 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_add_iq31(const msp_add_iq31_params *params, const _iq31 *srcA, const _iq31 *srcB, _iq31 *dst) +{ + uint16_t length; + msp_status status; + MSP_LEA_ADDLONGMATRIX_PARAMS *leaParams; + + /* Initialize the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(srcA, 4) & + MSP_LEA_VALID_ADDRESS(srcB, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_ADDLONGMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_ADDLONGMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_ADDLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_ADDLONGMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(srcB); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length; + leaParams->input1Offset = 1; + leaParams->input2Offset = 1; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(srcA); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__ADDLONGMATRIX command. */ + msp_lea_invokeCommand(LEACMD__ADDLONGMATRIX); + + /* Free MSP_LEA_ADDLONGMATRIX_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_ADDLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_add_iq31(const msp_add_iq31_params *params, const _iq31 *srcA, const _iq31 *srcB, _iq31 *dst) +{ + uint16_t length; + + /* Initialize the vector length. */ + length = params->length; + + /* Loop through all vector elements. */ + while (length--) { + /* Add srcA and srcB with saturation and store result. */ + *dst++ = __saturated_add_iq31(*srcA++, *srcB++); + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c new file mode 100755 index 000000000..076fe0a41 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c @@ -0,0 +1,137 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_add_q15(const msp_add_q15_params *params, const _q15 *srcA, const _q15 *srcB, _q15 *dst) +{ + uint16_t length; + msp_status status; + MSP_LEA_ADDMATRIX_PARAMS *leaParams; + + /* Initialize the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(srcA, 4) & + MSP_LEA_VALID_ADDRESS(srcB, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_ADDMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_ADDMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_ADDMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_ADDMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(srcB); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length; + leaParams->input1Offset = 1; + leaParams->input2Offset = 1; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(srcA); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__ADDMATRIX command. */ + msp_lea_invokeCommand(LEACMD__ADDMATRIX); + + /* Free MSP_LEA_ADDMATRIX_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_ADDMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_add_q15(const msp_add_q15_params *params, const _q15 *srcA, const _q15 *srcB, _q15 *dst) +{ + uint16_t length; + + /* Initialize the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Loop through all vector elements. */ + while (length--) { + /* Add srcA and srcB with saturation and store result. */ + *dst++ = __saturated_add_q15(*srcA++, *srcB++); + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c new file mode 100755 index 000000000..3ebb4e076 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c @@ -0,0 +1,46 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform element wise addition of two complex source vectors without saturation. + */ +msp_status msp_cmplx_add_iq31(const msp_cmplx_add_iq31_params *params, const _iq31 *srcA, const _iq31 *srcB, _iq31 *dst) +{ + msp_add_iq31_params paramsTemp; + + /* Use real vector addition function. */ + paramsTemp.length = params->length << 1; + + return msp_add_iq31(¶msTemp, srcA, srcB, dst); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c new file mode 100755 index 000000000..4e2644793 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c @@ -0,0 +1,46 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform element wise addition of two complex source vectors without saturation. + */ +msp_status msp_cmplx_add_q15(const msp_cmplx_add_q15_params *params, const _q15 *srcA, const _q15 *srcB, _q15 *dst) +{ + msp_add_q15_params paramsTemp; + + /* Use real vector addition function. */ + paramsTemp.length = params->length << 1; + + return msp_add_q15(¶msTemp, srcA, srcB, dst); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c new file mode 100755 index 000000000..0710f0c4f --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c @@ -0,0 +1,150 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_cmplx_conj_iq31(const msp_cmplx_conj_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint16_t cmdId; + uint16_t length; + msp_status status; + MSP_LEA_ADDLONGMATRIX_PARAMS *leaParams; + + /* Initialize the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) && MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_ADDLONGMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_ADDLONGMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_ADDLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_ADDLONGMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONST_ZERO; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(&CMPLX_REAL(dst)); + leaParams->vectorSize = length; + leaParams->input1Offset = 2; + leaParams->input2Offset = 0; + leaParams->outputOffset = 2; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(&CMPLX_REAL(src)); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__ADDLONGMATRIX command. */ + msp_lea_invokeCommand(LEACMD__ADDLONGMATRIX); + + /* Reset source 2 and dst pointers. */ + leaParams->input2 = MSP_LEA_IQ31_CONST_NEG_ONE; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(&CMPLX_IMAG(dst)); + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(&CMPLX_IMAG(src)); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__MPYLONGMATRIX, MSP_LEA_MPYLONGMATRIX, + sizeof(MSP_LEA_MPYLONGMATRIX)/sizeof(MSP_LEA_MPYLONGMATRIX[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__MPYLONGMATRIX command. */ + cmdId = LEACMD__MPYLONGMATRIX; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Free MSP_LEA_ADDLONGMATRIX_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_ADDLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_cmplx_conj_iq31(const msp_cmplx_conj_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint16_t length; + + /* Initialize the vector length. */ + length = params->length; + + /* Loop through all vector elements. */ + while (length--) { + /* Take the complex conjugate of src and store to dst. */ + *dst++ = *src++; // real + *dst++ = -*src++; // imaginary + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c new file mode 100755 index 000000000..825976ee4 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c @@ -0,0 +1,53 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform element wise complex conjugate of a single complex source vector. + */ +msp_status msp_cmplx_conj_q15(const msp_cmplx_conj_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + + /* Loop through all vector elements. */ + while (length--) { + /* Take the complex conjugate of src and store to dst. */ + *dst++ = *src++; // real + *dst++ = -*src++; // imaginary + } + + return MSP_SUCCESS; +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c new file mode 100755 index 000000000..e482e1331 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c @@ -0,0 +1,122 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +msp_status msp_cmplx_mac_iq31(const msp_cmplx_mac_iq31_params *params, const _iq31 *srcA, const _iq31 *srcB, _iq31 *result) +{ + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#if defined(__MSP430_HAS_MPY32__) + uint16_t *resultPtr = (uint16_t *)result; + + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN; + + /* Initialize result registers. */ + RES0=0; RES1=0; RES2=0; RES3=0; + + /* Multiply and accumulate the real components of srcA and srcB. */ + while (length--) { + MACS32L = (uint16_t)CMPLX_REAL(srcA); + MACS32H = (uint16_t)(CMPLX_REAL(srcA) >> 16); + OP2L = (uint16_t)CMPLX_REAL(srcB); + OP2H = (uint16_t)(CMPLX_REAL(srcB) >> 16); + MACS32L = (uint16_t)(-CMPLX_IMAG(srcA)); + MACS32H = (uint16_t)(-CMPLX_IMAG(srcA) >> 16); + OP2L = (uint16_t)CMPLX_IMAG(srcB); + OP2H = (uint16_t)(CMPLX_IMAG(srcB) >> 16); + + /* Increment pointers. */ + srcA += CMPLX_INCREMENT; + srcB += CMPLX_INCREMENT; + } + + /* Save real result. */ + *resultPtr++ = RES2; + *resultPtr++ = RES3; + + /* Reset length to calculate imaginary value, reset result registers .*/ + length = params->length; + RES3=0; RES2=0; RES1=0; RES0=0; + srcA -= length*CMPLX_INCREMENT; + srcB -= length*CMPLX_INCREMENT; + + while (length--) { + MACS32L = (uint16_t)CMPLX_REAL(srcA); + MACS32H = (uint16_t)(CMPLX_REAL(srcA) >> 16); + OP2L = (uint16_t)CMPLX_IMAG(srcB); + OP2H = (uint16_t)(CMPLX_IMAG(srcB) >> 16); + MACS32L = (uint16_t)CMPLX_IMAG(srcA); + MACS32H = (uint16_t)(CMPLX_IMAG(srcA) >> 16); + OP2L = (uint16_t)CMPLX_REAL(srcB); + OP2H = (uint16_t)(CMPLX_REAL(srcB) >> 16); + + /* Increment pointers. */ + srcA += CMPLX_INCREMENT; + srcB += CMPLX_INCREMENT; + } + + /* Save imaginary result. */ + *resultPtr++ = RES2; + *resultPtr++ = RES3; + + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#else //__MSP430_HAS_MPY32__ + int64_t resultReal = 0; + int64_t resultImag = 0; + + /* Loop through all vector elements. */ + while (length--) { + /* Complex multiply srcA and srcB and accumulate to the result. */ + resultReal += ((int64_t)CMPLX_REAL(srcA) * (int64_t)CMPLX_REAL(srcB)); + resultReal -= ((int64_t)CMPLX_IMAG(srcA) * (int64_t)CMPLX_IMAG(srcB)); + resultImag += ((int64_t)CMPLX_REAL(srcA) * (int64_t)CMPLX_IMAG(srcB)); + resultImag += ((int64_t)CMPLX_IMAG(srcA) * (int64_t)CMPLX_REAL(srcB)); + + /* Increment pointers. */ + srcA += CMPLX_INCREMENT; + srcB += CMPLX_INCREMENT; + } + + /* Scale result, saturate and save to result array. */ + CMPLX_REAL(result) = (_iq31)__saturate((resultReal >> 31), INT32_MIN, INT32_MAX); + CMPLX_IMAG(result) = (_iq31)__saturate((resultImag >> 31), INT32_MIN, INT32_MAX); +#endif //__MSP430_HAS_MPY32__ + + return MSP_SUCCESS; +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c new file mode 100755 index 000000000..10ff41411 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c @@ -0,0 +1,190 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_cmplx_mac_q15(const msp_cmplx_mac_q15_params *params, const _q15 *srcA, const _q15 *srcB, _iq31 *result) +{ + uint16_t length; + msp_status status; + MSP_LEA_MACCOMPLEXMATRIX_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(srcA, 4) & + MSP_LEA_VALID_ADDRESS(srcB, 4) & + MSP_LEA_VALID_ADDRESS(result, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MACCOMPLEXMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_MACCOMPLEXMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MACCOMPLEXMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_MACCOMPLEXMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(srcB); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(result); + leaParams->vectorSize = length; + leaParams->input1Offset = 1; + leaParams->input2Offset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(srcA); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__MACCOMPLEXMATRIX command. */ + msp_lea_invokeCommand(LEACMD__MACCOMPLEXMATRIX); + + /* Free MSP_LEA_MACCOMPLEXMATRIX_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_MACCOMPLEXMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_cmplx_mac_q15(const msp_cmplx_mac_q15_params *params, const _q15 *srcA, const _q15 *srcB, _iq31 *result) +{ + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + + /* Initialize the result. */ + CMPLX_REAL(result) = 0; + CMPLX_IMAG(result) = 0; + +#if defined(__MSP430_HAS_MPY32__) + uint16_t *resultPtr = (uint16_t *)result; + + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN; + + /* Initialize result registers. */ + MPY32CTL0 &= ~MPYC; + RESLO = 0; RESHI = 0; + + /* Multiply and accumulate the real components of srcA and srcB. */ + while (length--) { + MACS = (uint16_t)CMPLX_REAL(srcA); + OP2 = (uint16_t)CMPLX_REAL(srcB); + MACS = (uint16_t)(-CMPLX_IMAG(srcA)); + OP2 = (uint16_t)CMPLX_IMAG(srcB); + + /* Increment pointers. */ + srcA += CMPLX_INCREMENT; + srcB += CMPLX_INCREMENT; + } + + /* Save real result. */ + *resultPtr++ = RESLO; + *resultPtr++ = RESHI; + + /* Reset length to calculate imaginary value, reset result registers */ + length = params->length; + MPY32CTL0 &= ~MPYC; + RESLO = 0; RESHI = 0; + srcA -= length*CMPLX_INCREMENT; + srcB -= length*CMPLX_INCREMENT; + + while (length--) { + MACS = (uint16_t)CMPLX_REAL(srcA); + OP2 = (uint16_t)CMPLX_IMAG(srcB); + MACS = (uint16_t)CMPLX_IMAG(srcA); + OP2 = (uint16_t)CMPLX_REAL(srcB); + + /* Increment pointers. */ + srcA += CMPLX_INCREMENT; + srcB += CMPLX_INCREMENT; + } + + /* Save imaginary result. */ + *resultPtr++ = RESLO; + *resultPtr++ = RESHI; + + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#else //__MSP430_HAS_MPY32__ + /* Loop through all vector elements. */ + while (length--) { + /* Complex multiply srcA and srcB and accumulate to the result. */ + CMPLX_REAL(result) += ((int32_t)CMPLX_REAL(srcA) * (int32_t)CMPLX_REAL(srcB)) - ((int32_t)CMPLX_IMAG(srcA) * (int32_t)CMPLX_IMAG(srcB)); + CMPLX_IMAG(result) += ((int32_t)CMPLX_REAL(srcA) * (int32_t)CMPLX_IMAG(srcB)) + ((int32_t)CMPLX_IMAG(srcA) * (int32_t)CMPLX_REAL(srcB)); + + /* Increment pointers. */ + srcA += CMPLX_INCREMENT; + srcB += CMPLX_INCREMENT; + } + + /* Scale result by 2. */ + CMPLX_REAL(result) <<= 1; + CMPLX_IMAG(result) <<= 1; +#endif //__MSP430_HAS_MPY32__ + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c new file mode 100755 index 000000000..b01fa2b05 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c @@ -0,0 +1,97 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform element wise Q31 multiplication of two complex source vectors. + */ +msp_status msp_cmplx_mpy_iq31(const msp_cmplx_mpy_iq31_params *params, const _iq31 *srcA, const _iq31 *srcB, _iq31 *dst) +{ + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#if defined(__MSP430_HAS_MPY32__) + uint16_t *dstPtr = (uint16_t *)dst; + + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN; + + /* Loop through all vector elements. */ + while (length--) { + /* Complex multiply srcA and srcB and store to dst. */ + MPYS32L = (uint16_t)CMPLX_REAL(srcA); + MPYS32H = (uint16_t)(CMPLX_REAL(srcA) >> 16); + OP2L = (uint16_t)CMPLX_REAL(srcB); + OP2H = (uint16_t)(CMPLX_REAL(srcB) >> 16); + MACS32L = (uint16_t)(-CMPLX_IMAG(srcA)); + MACS32H = (uint16_t)(-CMPLX_IMAG(srcA) >> 16); + OP2L = (uint16_t)CMPLX_IMAG(srcB); + OP2H = (uint16_t)(CMPLX_IMAG(srcB) >> 16); + *dstPtr++ = RES2; + *dstPtr++ = RES3; + MPYS32L = (uint16_t)CMPLX_REAL(srcA); + MPYS32H = (uint16_t)(CMPLX_REAL(srcA) >> 16); + OP2L = (uint16_t)CMPLX_IMAG(srcB); + OP2H = (uint16_t)(CMPLX_IMAG(srcB) >> 16); + MACS32L = (uint16_t)(CMPLX_IMAG(srcA)); + MACS32H = (uint16_t)(CMPLX_IMAG(srcA) >> 16); + OP2L = (uint16_t)CMPLX_REAL(srcB); + OP2H = (uint16_t)(CMPLX_REAL(srcB) >> 16); + *dstPtr++ = RES2; + *dstPtr++ = RES3; + + /* Increment pointers. */ + srcA += CMPLX_INCREMENT; + srcB += CMPLX_INCREMENT; + } + + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#else //__MSP430_HAS_MPY32__ + /* Loop through all vector elements. */ + while (length--) { + /* Complex multiply srcA and srcB and store to dst. */ + *dst++ = (((int64_t)CMPLX_REAL(srcA) * (int64_t)CMPLX_REAL(srcB)) - ((int64_t)CMPLX_IMAG(srcA) * (int64_t)CMPLX_IMAG(srcB))) >> 31; + *dst++ = (((int64_t)CMPLX_REAL(srcA) * (int64_t)CMPLX_IMAG(srcB)) + ((int64_t)CMPLX_IMAG(srcA) * (int64_t)CMPLX_REAL(srcB))) >> 31; + + /* Increment pointers. */ + srcA += CMPLX_INCREMENT; + srcB += CMPLX_INCREMENT; + } +#endif //__MSP430_HAS_MPY32__ + + return MSP_SUCCESS; +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c new file mode 100755 index 000000000..53e98fba2 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c @@ -0,0 +1,158 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_cmplx_mpy_q15(const msp_cmplx_mpy_q15_params *params, const _q15 *srcA, const _q15 *srcB, _q15 *dst) +{ + uint16_t length; + msp_status status; + MSP_LEA_MPYCOMPLEXMATRIX_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(srcA, 4) & + MSP_LEA_VALID_ADDRESS(srcB, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MPYCOMPLEXMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_MPYCOMPLEXMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MPYCOMPLEXMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_MPYCOMPLEXMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(srcB); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length; + leaParams->input1Offset = 1; + leaParams->input2Offset = 1; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(srcA); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__MPYCOMPLEXMATRIX command. */ + msp_lea_invokeCommand(LEACMD__MPYCOMPLEXMATRIX); + + /* Free MSP_LEA_MPYCOMPLEXMATRIX_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_MPYCOMPLEXMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_cmplx_mpy_q15(const msp_cmplx_mpy_q15_params *params, const _q15 *srcA, const _q15 *srcB, _q15 *dst) +{ + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#if defined(__MSP430_HAS_MPY32__) + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN; + + /* Loop through all vector elements. */ + while (length--) { + /* Complex multiply srcA and srcB and store to dst. */ + MPYS = CMPLX_REAL(srcA); + OP2 = CMPLX_REAL(srcB); + MACS = -CMPLX_IMAG(srcA); + OP2 = CMPLX_IMAG(srcB); + *dst++ = RESHI; + MPYS = CMPLX_REAL(srcA); + OP2 = CMPLX_IMAG(srcB); + MACS = CMPLX_IMAG(srcA); + OP2 = CMPLX_REAL(srcB); + *dst++ = RESHI; + + /* Increment pointers. */ + srcA += CMPLX_INCREMENT; + srcB += CMPLX_INCREMENT; + } + + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#else //__MSP430_HAS_MPY32__ + /* Loop through all vector elements. */ + while (length--) { + /* Complex multiply srcA and srcB and store to dst. */ + *dst++ = (((int32_t)CMPLX_REAL(srcA) * (int32_t)CMPLX_REAL(srcB)) - ((int32_t)CMPLX_IMAG(srcA) * (int32_t)CMPLX_IMAG(srcB))) >> 15; + *dst++ = (((int32_t)CMPLX_REAL(srcA) * (int32_t)CMPLX_IMAG(srcB)) + ((int32_t)CMPLX_IMAG(srcA) * (int32_t)CMPLX_REAL(srcB))) >> 15; + + /* Increment pointers. */ + srcA += CMPLX_INCREMENT; + srcB += CMPLX_INCREMENT; + } +#endif //__MSP430_HAS_MPY32__ + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c new file mode 100755 index 000000000..08c4b5a8d --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c @@ -0,0 +1,183 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_cmplx_mpy_real_iq31(const msp_cmplx_mpy_real_iq31_params *params, const _iq31 *srcCmplx, const _iq31 *srcReal, _iq31 *dst) +{ + uint16_t cmdId; + uint16_t length; + msp_status status; + MSP_LEA_MPYLONGMATRIX_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(srcCmplx, 4) & + MSP_LEA_VALID_ADDRESS(srcReal, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MPYLONGMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_MPYLONGMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MPYLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_MPYLONGMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(srcReal); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length; + leaParams->input1Offset = 2; + leaParams->input2Offset = 1; + leaParams->outputOffset = 2; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(srcCmplx); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__MPYLONGMATRIX, MSP_LEA_MPYLONGMATRIX, + sizeof(MSP_LEA_MPYLONGMATRIX)/sizeof(MSP_LEA_MPYLONGMATRIX[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__MPYLONGMATRIX command. */ + cmdId = LEACMD__MPYLONGMATRIX; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Reset MSP_LEA_MPYLONGMATRIX_PARAMS source 2 and dst pointers. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(srcReal); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(&dst[1]); + + /* Load first source argument to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(&srcCmplx[1]); + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Free MSP_LEA_MPYLONGMATRIX_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_MPYLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_cmplx_mpy_real_iq31(const msp_cmplx_mpy_real_iq31_params *params, const _iq31 *srcCmplx, const _iq31 *srcReal, _iq31 *dst) +{ + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#if defined(__MSP430_HAS_MPY32__) + uint16_t *dstPtr = (uint16_t *)dst; + + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN; + + /* Loop through all vector elements. */ + while (length--) { + /* Multiply CMPLX_REAL(srcA) and CMPLX_REAL(srcB) */ + MPYS32L = (uint16_t)CMPLX_REAL(srcReal); + MPYS32H = (uint16_t)(CMPLX_REAL(srcReal) >> 16); + OP2L = (uint16_t)CMPLX_REAL(srcCmplx); + OP2H = (uint16_t)(CMPLX_REAL(srcCmplx) >> 16); + *dstPtr++ = RES2; + *dstPtr++ = RES3; + + /* Multiply CMPLX_IMAG(srcA) and CMPLX_REAL(srcB) */ + OP2L = (uint16_t)CMPLX_IMAG(srcCmplx); + OP2H = (uint16_t)(CMPLX_IMAG(srcCmplx) >> 16); + *dstPtr++ = RES2; + *dstPtr++ = RES3; + + /* Increment pointers. */ + srcReal++; + srcCmplx += CMPLX_INCREMENT; + } + + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#else //__MSP430_HAS_MPY32__ + /* Loop through all vector elements. */ + while (length--) { + /* Multiply srcCmplx and srcReal and store to dst. */ + *dst++ = __q31mpy(*srcCmplx++, *srcReal); // real + *dst++ = __q31mpy(*srcCmplx++, *srcReal++); // imaginary + } +#endif //__MSP430_HAS_MPY32__ + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c new file mode 100755 index 000000000..23cf89154 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c @@ -0,0 +1,72 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform element wise Q15 multiplication of a complex source vector with a real source vector. + */ +msp_status msp_cmplx_mpy_real_q15(const msp_cmplx_mpy_real_q15_params *params, const _q15 *srcCmplx, const _q15 *srcReal, _q15 *dst) +{ + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#if defined(__MSP430_HAS_MPY32__) + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN; + + /* Loop through all vector elements. */ + while (length--) { + /* Multiply srcCmplx and srcReal and store to dst. */ + MPYS = *srcReal++; + OP2 = *srcCmplx++; + *dst++ = RESHI; + OP2 = *srcCmplx++; + *dst++ = RESHI; + } + + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#else //__MSP430_HAS_MPY32__ + /* Loop through all vector elements. */ + while (length--) { + /* Multiply srcCmplx and srcReal and store to dst. */ + *dst++ = __q15mpy(*srcCmplx++, *srcReal); // real + *dst++ = __q15mpy(*srcCmplx++, *srcReal++); // imaginary + } +#endif //__MSP430_HAS_MPY32__ + + return MSP_SUCCESS; +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c new file mode 100755 index 000000000..c2b9e6626 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c @@ -0,0 +1,49 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform element wise Q15 multiplication of a single complex source vector + * with a Q15 real scale value and shift left by scale. + */ +msp_status msp_cmplx_scale_iq31(const msp_cmplx_scale_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + msp_scale_iq31_params paramsTemp; + + /* Use real vector scale function with twice the length. */ + paramsTemp.length = params->length << 1; + paramsTemp.scale = params->scale; + paramsTemp.shift = params->shift; + + return msp_scale_iq31(¶msTemp, src, dst); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c new file mode 100755 index 000000000..087e43b0c --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c @@ -0,0 +1,49 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform element wise Q15 multiplication of a single complex source vector + * with a Q15 real scale value and shift left by scale. + */ +msp_status msp_cmplx_scale_q15(const msp_cmplx_scale_q15_params *params, const _q15 *src, _q15 *dst) +{ + msp_scale_q15_params paramsTemp; + + /* Use real vector scale function with twice the length. */ + paramsTemp.length = params->length << 1; + paramsTemp.scale = params->scale; + paramsTemp.shift = params->shift; + + return msp_scale_q15(¶msTemp, src, dst); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c new file mode 100755 index 000000000..b29ba77c2 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c @@ -0,0 +1,216 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Optimized helper function for shift right with complex conjugate, used for + * inverse FFT functions. + */ +static inline msp_status msp_cmplx_shift_right_conj_iq31(const _iq31 *src, _iq31 *dst, uint16_t length, uint8_t shift); + +/* + * Perform element wise left or right shift of a single complex source vector. + */ +msp_status msp_cmplx_shift_iq31(const msp_cmplx_shift_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + int8_t shift; + uint16_t length; + msp_shift_iq31_params shiftParams; + msp_cmplx_conj_iq31_params conjParams; + + /* Initialize the loop counter and shift variables. */ + length = params->length; + shift = params->shift; + + /* If conjugate is not enabled use real version. */ + if (!params->conjugate) { + shiftParams.shift = params->shift; + shiftParams.length = params->length << 1; + return msp_shift_iq31(&shiftParams, src, dst); + } + else { +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Verify the shift parameter. */ + if ((shift > 31) || (shift < -31)) { + return MSP_SHIFT_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Shift src array left for a positive shift parameter. */ + if (shift > 0) { + /* Loop through all vector elements. */ + while (length--) { + /* Shift src left by the shift parameter and store to dst. */ + *dst++ = *src++ << shift; + *dst++ = -(*src++ << shift); + } + return MSP_SUCCESS; + } + /* Shift src array right for a negative shift parameter. */ + else if (shift < 0) { + /* Use optimized helper function. */ + return msp_cmplx_shift_right_conj_iq31(src, dst, length, -shift); + } + else { + /* No shift, just return conjugate. */ + conjParams.length = length; + return msp_cmplx_conj_iq31(&conjParams, src, dst); + } + } +} + +#if defined(MSP_USE_LEA) + +/* Shift factor lookup table. */ +extern const uint32_t msp_shift_right_factor_iq31[32]; + +static inline msp_status msp_cmplx_shift_right_conj_iq31(const _iq31 *src, _iq31 *dst, uint16_t length, uint8_t shift) +{ + uint16_t cmdId; + int32_t shiftValue; + int32_t *shiftVector; + uint32_t leaFlags; + msp_status status; + MSP_LEA_MPYLONGMATRIX_PARAMS *leaParams; + + /* Lookup the fractional shift value. */ + shiftValue = msp_shift_right_factor_iq31[shift & 0x1f]; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) && MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MPYLONGMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_MPYLONGMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MPYLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Allocate shift vector of length one. */ + shiftVector = (int32_t *)msp_lea_allocMemory(sizeof(int32_t)/sizeof(uint32_t)); + shiftVector[0] = shiftValue; + + /* Set MSP_LEA_MPYLONGMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(shiftVector); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(&CMPLX_REAL(dst)); + leaParams->vectorSize = length; + leaParams->input1Offset = 2; + leaParams->input2Offset = 0; + leaParams->outputOffset = 2; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(&CMPLX_REAL(src)); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__MPYLONGMATRIX, MSP_LEA_MPYLONGMATRIX, + sizeof(MSP_LEA_MPYLONGMATRIX)/sizeof(MSP_LEA_MPYLONGMATRIX[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__MPYLONGMATRIX command. */ + cmdId = LEACMD__MPYLONGMATRIX; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Save flags status before invoking the next command. */ + leaFlags = msp_lea_ifg; + + /* Rerun the shift operation for imaginary components. */ + shiftVector[0] = -shiftValue; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(&CMPLX_IMAG(dst)); + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(&CMPLX_IMAG(src)); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Free MSP_LEA_MPYLONGMATRIX_PARAMS structure and shift vector. */ + msp_lea_freeMemory(sizeof(int32_t)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(MSP_LEA_MPYLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Add flags to result. */ + leaFlags |= msp_lea_ifg; + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (leaFlags & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (leaFlags & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (leaFlags & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +static inline msp_status msp_cmplx_shift_right_conj_iq31(const _iq31 *src, _iq31 *dst, uint16_t length, uint8_t shift) +{ + /* Loop through all vector elements. */ + while (length--) { + /* Shift src right by the negated shift parameter and store to dst. */ + *dst++ = *src++ >> shift; + *dst++ = -(*src++ >> shift); + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c new file mode 100755 index 000000000..f16114e79 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c @@ -0,0 +1,186 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Optimized helper function for shift right with complex conjugate, used for + * inverse FFT functions. + */ +static inline msp_status msp_cmplx_shift_right_conj_q15(const _q15 *src, _q15 *dst, uint16_t length, uint8_t shift); + +/* + * Perform element wise left or right shift of a single complex source vector. + */ +msp_status msp_cmplx_shift_q15(const msp_cmplx_shift_q15_params *params, const _q15 *src, _q15 *dst) +{ + int8_t shift; + uint16_t length; + msp_shift_q15_params shiftParams; + msp_cmplx_conj_q15_params conjParams; + + /* Initialize the loop counter and shift variables. */ + length = params->length; + shift = params->shift; + + /* If conjugate is not enabled use real version. */ + if (!params->conjugate) { + shiftParams.shift = params->shift; + shiftParams.length = params->length << 1; + return msp_shift_q15(&shiftParams, src, dst); + } + else { +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Verify the shift parameter. */ + if ((shift > 15) || (shift < -15)) { + return MSP_SHIFT_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Shift src array left for a positive shift parameter. */ + if (shift > 0) { + /* Loop through all vector elements. */ + while (length--) { + /* Shift src left by the shift parameter and store to dst. */ + *dst++ = *src++ << shift; + *dst++ = -(*src++ << shift); + } + return MSP_SUCCESS; + } + /* Shift src array right for a negative shift parameter. */ + else if (shift < 0) { + /* Use optimized helper function. */ + return msp_cmplx_shift_right_conj_q15(src, dst, length, -shift); + } + else { + /* No shift, just return conjugate. */ + conjParams.length = length; + return msp_cmplx_conj_q15(&conjParams, src, dst); + } + } +} + +#if defined(MSP_USE_LEA) + +/* Shift factor lookup table. */ +extern const uint16_t msp_shift_right_factor_q15[16]; + +static inline msp_status msp_cmplx_shift_right_conj_q15(const _q15 *src, _q15 *dst, uint16_t length, uint8_t shift) +{ + int16_t shiftValue; + int16_t *shiftVector; + msp_status status; + MSP_LEA_MPYMATRIX_PARAMS *leaParams; + + /* Lookup the fractional shift value. */ + shiftValue = msp_shift_right_factor_q15[shift & 0xf]; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) && MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MPYMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_MPYMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MPYMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Allocate shift vector of length two. */ + shiftVector = (int16_t *)msp_lea_allocMemory(2*sizeof(int16_t)/sizeof(uint32_t)); + shiftVector[0] = shiftValue; + shiftVector[1] = -shiftValue; + + /* Set MSP_LEA_MPYLONGMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(shiftVector); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length << 1; + leaParams->input1Offset = 1; + leaParams->input2Offset = 0; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__MPYMATRIX command. */ + msp_lea_invokeCommand(LEACMD__MPYMATRIX); + + /* Free MSP_LEA_MPYMATRIX_PARAMS structure and shift vector. */ + msp_lea_freeMemory(2*sizeof(int16_t)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(MSP_LEA_MPYMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +static inline msp_status msp_cmplx_shift_right_conj_q15(const _q15 *src, _q15 *dst, uint16_t length, uint8_t shift) +{ + /* Loop through all vector elements. */ + while (length--) { + /* Shift src right by the negated shift parameter and store to dst. */ + *dst++ = *src++ >> shift; + *dst++ = -(*src++ >> shift); + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c new file mode 100755 index 000000000..cae376be1 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c @@ -0,0 +1,46 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform element wise subtraction of two complex source vectors without saturation. + */ +msp_status msp_cmplx_sub_iq31(const msp_cmplx_sub_iq31_params *params, const _iq31 *srcA, const _iq31 *srcB, _iq31 *dst) +{ + msp_sub_iq31_params paramsTemp; + + /* Use real vector subtraction function. */ + paramsTemp.length = params->length << 1; + + return msp_sub_iq31(¶msTemp, srcA, srcB, dst); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c new file mode 100755 index 000000000..254251a70 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c @@ -0,0 +1,46 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform element wise subtraction of two complex source vectors without saturation. + */ +msp_status msp_cmplx_sub_q15(const msp_cmplx_sub_q15_params *params, const _q15 *srcA, const _q15 *srcB, _q15 *dst) +{ + msp_sub_q15_params paramsTemp; + + /* Use real vector subtraction function. */ + paramsTemp.length = params->length << 1; + + return msp_sub_q15(¶msTemp, srcA, srcB, dst); +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c new file mode 100755 index 000000000..0478593ab --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c @@ -0,0 +1,153 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_mac_iq31(const msp_mac_iq31_params *params, const _iq31 *srcA, const _iq31 *srcB, _iq31 *result) +{ + uint16_t cmdId; + uint16_t length; + msp_status status; + MSP_LEA_MACLONG_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(srcA, 4) & + MSP_LEA_VALID_ADDRESS(srcB, 4) & + MSP_LEA_VALID_ADDRESS(result, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MACLONG_PARAMS structure. */ + leaParams = (MSP_LEA_MACLONG_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MACLONG_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_MACLONG_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(srcB); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(result); + leaParams->vectorSize = length; + leaParams->input1Offset = 1; + leaParams->input2Offset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(srcA); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__MACLONGMATRIX, MSP_LEA_MACLONGMATRIX, + sizeof(MSP_LEA_MACLONGMATRIX)/sizeof(MSP_LEA_MACLONGMATRIX[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__MACLONGMATRIX command. */ + cmdId = LEACMD__MACLONGMATRIX; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Free MSP_LEA_MACLONG_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_MACLONG_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_mac_iq31(const msp_mac_iq31_params *params, const _iq31 *srcA, const _iq31 *srcB, _iq31 *result) +{ + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + + /* Initialize the result. */ + *result = 0; + +#if defined(__MSP430_HAS_MPY32__) + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN | MPYSAT; +#endif //__MSP430_HAS_MPY32__ + + /* Loop through all vector elements. */ + while (length--) { + /* Multiply srcA and srcB and accumulate to the result. */ + *result += __q31mpy(*srcA++,*srcB++); + } + +#if defined(__MSP430_HAS_MPY32__) + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#endif //__MSP430_HAS_MPY32__ + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c new file mode 100755 index 000000000..310a44746 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c @@ -0,0 +1,168 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_mac_q15(const msp_mac_q15_params *params, const _q15 *srcA, const _q15 *srcB, _iq31 *result) +{ + uint16_t length; + msp_status status; + MSP_LEA_MAC_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(srcA, 4) & + MSP_LEA_VALID_ADDRESS(srcB, 4) & + MSP_LEA_VALID_ADDRESS(result, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MAC_PARAMS structure. */ + leaParams = (MSP_LEA_MAC_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MAC_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_MAC_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(srcB); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(result); + leaParams->vectorSize = length; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(srcA); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__MAC command. */ + msp_lea_invokeCommand(LEACMD__MAC); + + /* Free MSP_LEA_MAC_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_MAC_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_mac_q15(const msp_mac_q15_params *params, const _q15 *srcA, const _q15 *srcB, _iq31 *result) +{ + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + +#if defined(__MSP430_HAS_MPY32__) + uint16_t *resultPtr = (uint16_t *)result; + + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN | MPYSAT; + + /* Reset multiplier context. */ + MPY32CTL0 &= ~MPYC; + RESHI = 0; RESLO = 0; + + /* Loop through all vector elements. */ + while (length--) { + /* Multiply and accumulate srcA and srcB. */ + MACS = *srcA++; + OP2 = *srcB++; + } + + /* Store result. */ + *resultPtr++ = RESLO; + *resultPtr++ = RESHI; + + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; + +#else //__MSP430_HAS_MPY32__ + + /* Initialize the result. */ + *result = 0; + + /* Loop through all vector elements. */ + while (length--) { + /* Multiply srcA and srcB and accumulate to the result. */ + *result += (int32_t)*srcA++ * (int32_t)*srcB++; + } + + /* Scale result by 2. */ + *result <<= 1; +#endif //__MSP430_HAS_MPY32__ + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c new file mode 100755 index 000000000..83d3f4f46 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c @@ -0,0 +1,162 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_max_iq31(const msp_max_iq31_params *params, const _iq31 *src, _iq31 *max, uint16_t *index) +{ + uint16_t cmdId; + uint16_t length; + int32_t *output; + msp_status status; + MSP_LEA_MAXLONG_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MAXLONG_PARAMS structure. */ + leaParams = (MSP_LEA_MAXLONG_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MAXLONG_PARAMS)/sizeof(uint32_t)); + + /* Allocate output vector of length two. */ + output = (int32_t *)msp_lea_allocMemory(2*sizeof(uint32_t)/sizeof(uint32_t)); + + /* Set MSP_LEA_MAXLONG_PARAMS structure. */ + leaParams->vectorSize = length; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(output); + leaParams->inputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__MAXLONGMATRIX, MSP_LEA_MAXLONGMATRIX, + sizeof(MSP_LEA_MAXLONGMATRIX)/sizeof(MSP_LEA_MAXLONGMATRIX[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__MAXLONGMATRIX command. */ + cmdId = LEACMD__MAXLONGMATRIX; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Write results. */ + *max = output[0]; + *index = output[1]; + + /* Free MSP_LEA_MAXLONG_PARAMS structure and output vector. */ + msp_lea_freeMemory(2*sizeof(uint32_t)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(MSP_LEA_MAXLONG_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_max_iq31(const msp_max_iq31_params *params, const _iq31 *src, _iq31 *max, uint16_t *index) +{ + uint16_t i; + uint16_t length; + _iq31 temp; + _iq31 maximum; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + + /* Initialize the maximum value and index. */ + maximum = INT32_MIN; + i = 0; + + /* Loop through all vector elements. */ + while (length--) { + /* Store vector element to local variable. */ + temp = *src++; + + /* Compare vector element with current maximum value. */ + if (temp >= maximum) { + /* Update maximum value and index. */ + maximum = temp; + i = length; + } + } + + /* Save local maximum and index to output arguments. */ + *max = maximum; + *index = params->length - (i + 1); + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c new file mode 100755 index 000000000..ff5ff316b --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c @@ -0,0 +1,173 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_max_q15(const msp_max_q15_params *params, const _q15 *src, _q15 *max, uint16_t *index) +{ + uint16_t cmdId; + uint16_t length; + int16_t *output; + msp_status status; + MSP_LEA_MAX_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MAX_PARAMS structure. */ + leaParams = (MSP_LEA_MAX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MAX_PARAMS)/sizeof(uint32_t)); + + /* Allocate output vector of length two. */ + output = (int16_t *)msp_lea_allocMemory(2*sizeof(int16_t)/sizeof(uint32_t)); + + /* Set MSP_LEA_MAX_PARAMS structure. */ + leaParams->vectorSize = length; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(output); + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__MAX, MSP_LEA_MAX, + sizeof(MSP_LEA_MAX)/sizeof(MSP_LEA_MAX[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__MAX command. */ + cmdId = LEACMD__MAX; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Write results. */ + *max = output[0]; + *index = output[1]; + + /* Free MSP_LEA_MAX_PARAMS structure and output vector. */ + msp_lea_freeMemory(2*sizeof(int16_t)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(MSP_LEA_MAX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_max_q15(const msp_max_q15_params *params, const _q15 *src, _q15 *max, uint16_t *index) +{ + uint16_t i; + _q15 temp; + _q15 maximum; + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize the maximum value and index. */ + maximum = INT16_MIN; + i = 0; + + /* Loop through all vector elements. */ + while (length--) { + /* Store vector element to local variable. */ + temp = *src++; + + /* Compare vector element with current maximum value. */ + if (temp >= maximum) { + /* Update maximum value and index. */ + maximum = temp; + i = length; + } + } + + /* Save local maximum and index to output arguments. */ + *max = maximum; + *index = params->length - (i + 1); + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c new file mode 100755 index 000000000..cda398c63 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c @@ -0,0 +1,161 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_max_uq15(const msp_max_uq15_params *params, const _uq15 *src, _uq15 *max, uint16_t *index) +{ + uint16_t cmdId; + uint16_t length; + int16_t *output; + msp_status status; + MSP_LEA_MAXUNSIGNED_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MAXUNSIGNED_PARAMS structure. */ + leaParams = (MSP_LEA_MAXUNSIGNED_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MAXUNSIGNED_PARAMS)/sizeof(uint32_t)); + + /* Allocate output vector of length two. */ + output = (int16_t *)msp_lea_allocMemory(2*sizeof(int16_t)/sizeof(uint32_t)); + + /* Set MSP_LEA_MAXUNSIGNED_PARAMS structure. */ + leaParams->vectorSize = length; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(output); + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__MAXUNSIGNED, MSP_LEA_MAXUNSIGNED, + sizeof(MSP_LEA_MAXUNSIGNED)/sizeof(MSP_LEA_MAXUNSIGNED[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__MAXUNSIGNED command. */ + cmdId = LEACMD__MAXUNSIGNED; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Write results. */ + *max = output[0]; + *index = output[1]; + + /* Free MSP_LEA_MAXUNSIGNED_PARAMS structure and output vector. */ + msp_lea_freeMemory(2*sizeof(int16_t)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(MSP_LEA_MAXUNSIGNED_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_max_uq15(const msp_max_uq15_params *params, const _uq15 *src, _uq15 *max, uint16_t *index) +{ + uint16_t i; + _uq15 temp; + _uq15 maximum; + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + + /* Initialize the maximum value and index. */ + maximum = 0; + i = 0; + + /* Loop through all vector elements. */ + while (length--) { + /* Store vector element to local variable. */ + temp = *src++; + + /* Compare vector element with current maximum value. */ + if (temp >= maximum) { + /* Update maximum value and index. */ + maximum = temp; + i = length; + } + } + + /* Save local maximum and index to output arguments. */ + *max = maximum; + *index = params->length - (i + 1); + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c new file mode 100755 index 000000000..56971b55e --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c @@ -0,0 +1,162 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_max_uq31(const msp_max_uq31_params *params, const _uq31 *src, _uq31 *max, uint16_t *index) +{ + uint16_t cmdId; + uint16_t length; + uint32_t *output; + msp_status status; + MSP_LEA_MAXLONGUNSIGNED_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MAXLONGUNSIGNED_PARAMS structure. */ + leaParams = (MSP_LEA_MAXLONGUNSIGNED_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MAXLONGUNSIGNED_PARAMS)/sizeof(uint32_t)); + + /* Allocate output vector of length two. */ + output = (uint32_t *)msp_lea_allocMemory(2*sizeof(uint32_t)/sizeof(uint32_t)); + + /* Set MSP_LEA_MAXLONGUNSIGNED_PARAMS structure. */ + leaParams->vectorSize = length; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(output); + leaParams->inputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__MAXUNSIGNEDLONGMATRIX, MSP_LEA_MAXUNSIGNEDLONGMATRIX, + sizeof(MSP_LEA_MAXUNSIGNEDLONGMATRIX)/sizeof(MSP_LEA_MAXUNSIGNEDLONGMATRIX[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__MAXUNSIGNEDLONGMATRIX command. */ + cmdId = LEACMD__MAXUNSIGNEDLONGMATRIX; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Write results. */ + *max = output[0]; + *index = output[1]; + + /* Free MSP_LEA_MAXLONGUNSIGNED_PARAMS structure and output vector. */ + msp_lea_freeMemory(2*sizeof(uint32_t)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(MSP_LEA_MAXLONGUNSIGNED_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_max_uq31(const msp_max_uq31_params *params, const _uq31 *src, _uq31 *max, uint16_t *index) +{ + uint16_t i; + _uq31 temp; + _uq31 maximum; + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + + /* Initialize the maximum value and index. */ + maximum = 0; + i = 0; + + /* Loop through all vector elements. */ + while (length--) { + /* Store vector element to local variable. */ + temp = *src++; + + /* Compare vector element with current maximum value. */ + if (temp >= maximum) { + /* Update maximum value and index. */ + maximum = temp; + i = length; + } + } + + /* Save local maximum and index to output arguments. */ + *max = maximum; + *index = params->length - (i + 1); + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c new file mode 100755 index 000000000..a7edbdc54 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c @@ -0,0 +1,162 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_min_iq31(const msp_min_iq31_params *params, const _iq31 *src, _iq31 *min, uint16_t *index) +{ + uint16_t cmdId; + uint16_t length; + int32_t *output; + msp_status status; + MSP_LEA_MINLONG_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MINLONG_PARAMS structure. */ + leaParams = (MSP_LEA_MINLONG_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MINLONG_PARAMS)/sizeof(uint32_t)); + + /* Allocate output vector of length two. */ + output = (int32_t *)msp_lea_allocMemory(2*sizeof(uint32_t)/sizeof(uint32_t)); + + /* Set MSP_LEA_MINLONG_PARAMS structure. */ + leaParams->vectorSize = length; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(output); + leaParams->inputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__MINLONGMATRIX, MSP_LEA_MINLONGMATRIX, + sizeof(MSP_LEA_MINLONGMATRIX)/sizeof(MSP_LEA_MINLONGMATRIX[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__MINLONGMATRIX command. */ + cmdId = LEACMD__MINLONGMATRIX; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Write results. */ + *min = output[0]; + *index = output[1]; + + /* Free MSP_LEA_MINLONG_PARAMS structure and output vector. */ + msp_lea_freeMemory(2*sizeof(uint32_t)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(MSP_LEA_MINLONG_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_min_iq31(const msp_min_iq31_params *params, const _iq31 *src, _iq31 *min, uint16_t *index) +{ + uint16_t i; + _iq31 temp; + _iq31 minimum; + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + + /* Initialize the minimum value and index. */ + minimum = INT32_MAX; + i = 0; + + /* Loop through all vector elements. */ + while (length--) { + /* Store vector element to local variable. */ + temp = *src++; + + /* Compare vector element with current minimum value. */ + if (temp <= minimum) { + /* Update minimum value and index. */ + minimum = temp; + i = length; + } + } + + /* Save local minimum and index to output arguments. */ + *min = minimum; + *index = params->length - (i + 1); + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c new file mode 100755 index 000000000..6cd8d20ce --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c @@ -0,0 +1,173 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_min_q15(const msp_min_q15_params *params, const _q15 *src, _q15 *min, uint16_t *index) +{ + uint16_t cmdId; + uint16_t length; + int16_t *output; + msp_status status; + MSP_LEA_MIN_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MIN_PARAMS structure. */ + leaParams = (MSP_LEA_MIN_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MIN_PARAMS)/sizeof(uint32_t)); + + /* Allocate output vector of length two. */ + output = (int16_t *)msp_lea_allocMemory(2*sizeof(int16_t)/sizeof(uint32_t)); + + /* Set MSP_LEA_MIN_PARAMS structure. */ + leaParams->vectorSize = length; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(output); + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__MIN, MSP_LEA_MIN, + sizeof(MSP_LEA_MIN)/sizeof(MSP_LEA_MIN[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__MIN command. */ + cmdId = LEACMD__MIN; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Write results. */ + *min = output[0]; + *index = output[1]; + + /* Free MSP_LEA_MIN_PARAMS structure and output vector. */ + msp_lea_freeMemory(2*sizeof(int16_t)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(MSP_LEA_MIN_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_min_q15(const msp_min_q15_params *params, const _q15 *src, _q15 *min, uint16_t *index) +{ + uint16_t i; + _q15 temp; + _q15 minimum; + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize the minimum value and index. */ + minimum = INT16_MAX; + i = 0; + + /* Loop through all vector elements. */ + while (length--) { + /* Store vector element to local variable. */ + temp = *src++; + + /* Compare vector element with current minimum value. */ + if (temp <= minimum) { + /* Update minimum value and index. */ + minimum = temp; + i = length; + } + } + + /* Save local minimum and index to output arguments. */ + *min = minimum; + *index = params->length - (i + 1); + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c new file mode 100755 index 000000000..6cba597f1 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c @@ -0,0 +1,173 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_min_uq15(const msp_min_uq15_params *params, const _uq15 *src, _uq15 *min, uint16_t *index) +{ + uint16_t cmdId; + uint16_t length; + int16_t *output; + msp_status status; + MSP_LEA_MINUNSIGNED_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MINUNSIGNED_PARAMS structure. */ + leaParams = (MSP_LEA_MINUNSIGNED_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MINUNSIGNED_PARAMS)/sizeof(uint32_t)); + + /* Allocate output vector of length two. */ + output = (int16_t *)msp_lea_allocMemory(2*sizeof(int16_t)/sizeof(uint32_t)); + + /* Set MSP_LEA_MINUNSIGNED_PARAMS structure. */ + leaParams->vectorSize = length; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(output); + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__MINUNSIGNED, MSP_LEA_MINUNSIGNED, + sizeof(MSP_LEA_MINUNSIGNED)/sizeof(MSP_LEA_MINUNSIGNED[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__MINUNSIGNED command. */ + cmdId = LEACMD__MINUNSIGNED; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Write results. */ + *min = output[0]; + *index = output[1]; + + /* Free MSP_LEA_MINUNSIGNED_PARAMS structure and output vector. */ + msp_lea_freeMemory(2*sizeof(int16_t)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(MSP_LEA_MINUNSIGNED_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_min_uq15(const msp_min_uq15_params *params, const _uq15 *src, _uq15 *min, uint16_t *index) +{ + uint16_t i; + _uq15 temp; + _uq15 minimum; + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize the minimum value and index. */ + minimum = UINT16_MAX; + i = 0; + + /* Loop through all vector elements. */ + while (length--) { + /* Store vector element to local variable. */ + temp = *src++; + + /* Compare vector element with current minimum value. */ + if (temp <= minimum) { + /* Update minimum value and index. */ + minimum = temp; + i = length; + } + } + + /* Save local minimum and index to output arguments. */ + *min = minimum; + *index = params->length - (i + 1); + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c new file mode 100755 index 000000000..f04b3ccf1 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c @@ -0,0 +1,162 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_min_uq31(const msp_min_uq31_params *params, const _uq31 *src, _uq31 *min, uint16_t *index) +{ + uint16_t cmdId; + uint16_t length; + uint32_t *output; + msp_status status; + MSP_LEA_MINLONGUNSIGNED_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MINLONGUNSIGNED_PARAMS structure. */ + leaParams = (MSP_LEA_MINLONGUNSIGNED_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MINLONGUNSIGNED_PARAMS)/sizeof(uint32_t)); + + /* Allocate output vector of length two. */ + output = (uint32_t *)msp_lea_allocMemory(2*sizeof(uint32_t)/sizeof(uint32_t)); + + /* Set MSP_LEA_MINLONGUNSIGNED_PARAMS structure. */ + leaParams->vectorSize = length; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(output); + leaParams->inputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__MINUNSIGNEDLONGMATRIX, MSP_LEA_MINUNSIGNEDLONGMATRIX, + sizeof(MSP_LEA_MINUNSIGNEDLONGMATRIX)/sizeof(MSP_LEA_MINUNSIGNEDLONGMATRIX[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__MINUNSIGNEDLONGMATRIX command. */ + cmdId = LEACMD__MINUNSIGNEDLONGMATRIX; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Write results. */ + *min = output[0]; + *index = output[1]; + + /* Free MSP_LEA_MINLONGUNSIGNED_PARAMS structure and output vector. */ + msp_lea_freeMemory(2*sizeof(uint32_t)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(MSP_LEA_MINLONGUNSIGNED_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_min_uq31(const msp_min_uq31_params *params, const _uq31 *src, _uq31 *min, uint16_t *index) +{ + uint16_t i; + _uq31 temp; + _uq31 minimum; + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + + /* Initialize the minimum value and index. */ + minimum = UINT32_MAX; + i = 0; + + /* Loop through all vector elements. */ + while (length--) { + /* Store vector element to local variable. */ + temp = *src++; + + /* Compare vector element with current minimum value. */ + if (temp <= minimum) { + /* Update minimum value and index. */ + minimum = temp; + i = length; + } + } + + /* Save local minimum and index to output arguments. */ + *min = minimum; + *index = params->length - (i + 1); + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c new file mode 100755 index 000000000..75f41194b --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c @@ -0,0 +1,162 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_mpy_iq31(const msp_mpy_iq31_params *params, const _iq31 *srcA, const _iq31 *srcB, _iq31 *dst) +{ + uint16_t cmdId; + uint16_t length; + msp_status status; + MSP_LEA_MPYLONGMATRIX_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(srcA, 4) & + MSP_LEA_VALID_ADDRESS(srcB, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MPYLONGMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_MPYLONGMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MPYLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_MPYMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(srcB); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length; + leaParams->input1Offset = 1; + leaParams->input2Offset = 1; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(srcA); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__MPYLONGMATRIX, MSP_LEA_MPYLONGMATRIX, + sizeof(MSP_LEA_MPYLONGMATRIX)/sizeof(MSP_LEA_MPYLONGMATRIX[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__MPYLONGMATRIX command. */ + cmdId = LEACMD__MPYLONGMATRIX; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Free MSP_LEA_MPYLONGMATRIX_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_MPYLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_mpy_iq31(const msp_mpy_iq31_params *params, const _iq31 *srcA, const _iq31 *srcB, _iq31 *dst) +{ + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#if defined(__MSP430_HAS_MPY32__) + uint16_t *dstPtr = (uint16_t *)dst; + + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN; + + /* Loop through all vector elements. */ + while (length--) { + /* Multiply srcA and srcB and store to dst. */ + MPYS32L = (uint16_t)*srcA; + MPYS32H = (uint16_t)(*srcA++ >> 16); + OP2L = (uint16_t)*srcB; + OP2H = (uint16_t)(*srcB++ >> 16); + *dstPtr++ = RES2; + *dstPtr++ = RES3; + } + + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#else //__MSP430_HAS_MPY32__ + /* Loop through all vector elements. */ + while (length--) { + /* Multiply srcA and srcB and store to dst. */ + *dst++ = __q31mpy(*srcA++, *srcB++); + } +#endif //__MSP430_HAS_MPY32__ + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c new file mode 100755 index 000000000..794969c90 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c @@ -0,0 +1,154 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_mpy_q15(const msp_mpy_q15_params *params, const _q15 *srcA, const _q15 *srcB, _q15 *dst) +{ + uint16_t length; + msp_status status; + MSP_LEA_MPYMATRIX_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(srcA, 4) & + MSP_LEA_VALID_ADDRESS(srcB, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MPYMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_MPYMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MPYMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_MPYMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(srcB); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length; + leaParams->input1Offset = 1; + leaParams->input2Offset = 1; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(srcA); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__MPYMATRIX command. */ + msp_lea_invokeCommand(LEACMD__MPYMATRIX); + + /* Free MSP_LEA_MPYMATRIX_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_MPYMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_mpy_q15(const msp_mpy_q15_params *params, const _q15 *srcA, const _q15 *srcB, _q15 *dst) +{ + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + +#if defined(__MSP430_HAS_MPY32__) + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN; + + /* Loop through all vector elements. */ + while (length--) { + /* Multiply srcA and srcB and store to dst. */ + MPYS = *srcA++; + OP2 = *srcB++; + *dst++ = RESHI; + } + + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#else //__MSP430_HAS_MPY32__ + /* Loop through all vector elements. */ + while (length--) { + /* Multiply srcA and srcB and store to dst. */ + *dst++ = __q15mpy(*srcA++, *srcB++); + } +#endif //__MSP430_HAS_MPY32__ + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c new file mode 100755 index 000000000..5552abcb7 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c @@ -0,0 +1,139 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_neg_iq31(const msp_neg_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint16_t cmdId; + uint16_t length; + msp_status status; + MSP_LEA_MPYLONGMATRIX_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MPYLONGMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_MPYLONGMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MPYLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_MPYLONGMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_IQ31_CONST_NEG_ONE; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length; + leaParams->input1Offset = 1; + leaParams->input2Offset = 0; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__MPYLONGMATRIX, MSP_LEA_MPYLONGMATRIX, + sizeof(MSP_LEA_MPYLONGMATRIX)/sizeof(MSP_LEA_MPYLONGMATRIX[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__MPYLONGMATRIX command. */ + cmdId = LEACMD__MPYLONGMATRIX; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Free MSP_LEA_MPYLONGMATRIX_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_MPYLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_neg_iq31(const msp_neg_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + + /* Loop through all vector elements. */ + while (length--) { + /* Negate src and store to dst. */ + *dst++ = -*src++; + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c new file mode 100755 index 000000000..57dafee16 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c @@ -0,0 +1,136 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_neg_q15(const msp_neg_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t length; + msp_status status; + MSP_LEA_MPYMATRIX_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MPYMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_MPYMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MPYMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_MPYMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_Q15_CONST_NEG_ONE; + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length; + leaParams->input1Offset = 1; + leaParams->input2Offset = 0; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__MPYMATRIX command. */ + msp_lea_invokeCommand(LEACMD__MPYMATRIX); + + /* Free MSP_LEA_MPYMATRIX_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_MPYMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_neg_q15(const msp_neg_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Loop through all vector elements. */ + while (length--) { + /* Negate src and store to dst. */ + *dst++ = -*src++; + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c new file mode 100755 index 000000000..59d425baf --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c @@ -0,0 +1,134 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_offset_iq31(const msp_offset_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint16_t length; + _iq31 iq31Offset; + int32_t *offsetVector; + msp_status status; + MSP_LEA_ADDLONGMATRIX_PARAMS *leaParams; + + /* Initialize the loop counter and offset. */ + length = params->length; + iq31Offset = params->offset; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_ADDLONGMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_ADDLONGMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_ADDLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Allocate offset vector of length one. */ + offsetVector = (int32_t *)msp_lea_allocMemory(sizeof(int32_t)/sizeof(uint32_t)); + offsetVector[0] = iq31Offset; + + /* Set MSP_LEA_ADDLONGMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(offsetVector); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length; + leaParams->input1Offset = 1; + leaParams->input2Offset = 0; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__ADDLONGMATRIX command. */ + msp_lea_invokeCommand(LEACMD__ADDLONGMATRIX); + + /* Free MSP_LEA_ADDLONGMATRIX_PARAMS structure and offset vector. */ + msp_lea_freeMemory(sizeof(int32_t)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(MSP_LEA_ADDLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_offset_iq31(const msp_offset_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint16_t length; + _iq31 iq31Offset; + + /* Initialize the loop counter and offset. */ + length = params->length; + iq31Offset = params->offset; + + /* Loop through all vector elements. */ + while (length--) { + /* Add offset to src with saturation and store result. */ + *dst++ = __saturated_add_iq31(*src++, iq31Offset); + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c new file mode 100755 index 000000000..1525bb551 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c @@ -0,0 +1,147 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_offset_q15(const msp_offset_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t length; + _q15 q15Offset; + int16_t *offsetVector; + msp_status status; + MSP_LEA_ADDMATRIX_PARAMS *leaParams; + + /* Initialize the loop counter and offset. */ + length = params->length; + q15Offset = params->offset; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_ADDMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_ADDMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_ADDMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Allocate offset vector of length two. */ + offsetVector = (int16_t *)msp_lea_allocMemory(2*sizeof(int16_t)/sizeof(uint32_t)); + offsetVector[0] = q15Offset; + offsetVector[1] = q15Offset; + + /* Set MSP_LEA_ADDMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(offsetVector); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length; + leaParams->input1Offset = 1; + leaParams->input2Offset = 0; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__ADDMATRIX command. */ + msp_lea_invokeCommand(LEACMD__ADDMATRIX); + + /* Free MSP_LEA_ADDMATRIX_PARAMS structure and offset vector. */ + msp_lea_freeMemory(2*sizeof(int16_t)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(MSP_LEA_ADDMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_offset_q15(const msp_offset_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t length; + _q15 q15Offset; + + /* Initialize the loop counter and offset. */ + length = params->length; + q15Offset = params->offset; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Loop through all vector elements. */ + while (length--) { + /* Add offset to src with saturation and store result. */ + *dst++ = __saturated_add_q15(*src++, q15Offset); + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c new file mode 100755 index 000000000..8d7dbd935 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c @@ -0,0 +1,117 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform element wise Q31 multiplication of a single source vector with a Q31 + * scale value and shift left by scale. There is no risk of intermediate + * saturation between steps however the result will overflow if the result is + * outside the Q31 range of operation. + */ +msp_status msp_scale_iq31(const msp_scale_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + uint8_t shift; + uint16_t length; + int32_t scale; + + /* Initialize the loop counter, scale and shift variables. */ + length = params->length; + scale = params->scale; + shift = params->shift; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check for invalid shift size (maximum of 31). */ + if (shift > 31) { + return MSP_SHIFT_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + +#if defined(__MSP430_HAS_MPY32__) + int32_t result; + + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN; + + /* Load scale arguments once. */ + MPYS32L = (uint16_t)scale; + MPYS32H = (uint16_t)(scale >> 16); + + /* Select 48-bit result registers based on shift count. */ + if (shift >= 16) { + /* Decrement shift and use registers offset by 16-bits. */ + shift -= 16; + + /* Loop through all vector elements. */ + while (length--) { + /* Multiply src and the combined scale and shift value. */ + OP2L = (uint16_t)*src; + OP2H = (uint16_t)(*src++ >> 16); + + /* Combine the three registers comprising the result, with appropriate shifts */ + result = ((uint32_t)RES0 >> (16 - shift)); + result += ((uint32_t)RES1 << (shift)); + result += (int32_t)((uint32_t)RES2 << (shift + 16)); + *dst++ = result; + } + } + else { + /* Loop through all vector elements. */ + while (length--) { + /* Multiply src and the combined scale and shift value. */ + OP2L = (uint16_t)*src; + OP2H = (uint16_t)(*src++ >> 16); + + /* Combine the three registers comprising the result, with appropriate shifts */ + result = ((uint32_t)RES1 >> (16 - shift)); + result += ((uint32_t)RES2 << (shift)); + result += (int32_t)((uint32_t)RES3 << (shift + 16)); + *dst++ = result; + } + } + + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#else //__MSP430_HAS_MPY32__ + /* Recalculate shift value to be a shift right offset by the default Q15 shift by 15. */ + shift = 31 - shift; + + /* Loop through all vector elements. */ + while (length--) { + /* Multiply src by scale and shift result right by the offset shift value. */ + *dst++ = (_iq31)(((int64_t)*src++ * (int64_t)scale) >> shift); + } +#endif //__MSP430_HAS_MPY32__ + + return MSP_SUCCESS; +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c new file mode 100755 index 000000000..5be1b83fc --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c @@ -0,0 +1,97 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Perform element wise Q15 multiplication of a single source vector with a Q15 + * scale value and shift left by shift. + */ +msp_status msp_scale_q15(const msp_scale_q15_params *params, const _q15 *src, _q15 *dst) +{ + uint16_t length; + uint8_t shift; + int32_t scale; + + /* Initialize the loop counter, scale and shift variables. */ + length = params->length; + scale = params->scale; + shift = params->shift; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } + + /* Check for invalid shift size (maximum of 15). */ + if (shift > 15) { + return MSP_SHIFT_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + +#if defined(__MSP430_HAS_MPY32__) + /* If MPY32 is available save control context and set to fractional mode. */ + uint16_t ui16MPYState = MPY32CTL0; + MPY32CTL0 = MPYFRAC | MPYDLYWRTEN; + + /* Combine the scale and shift parameters to a single 32-bit variable than can be reused. */ + while (shift--) { + scale = scale << 1; + } + + /* Load MPY32 registers for the first argument with the new scale value. */ + MPYS32L = (uint16_t)scale; + MPYS32H = (uint16_t)(scale >> 16); + + /* Loop through all vector elements. */ + while (length--) { + /* Multiply src and the combined scale and shift value. */ + OP2 = *src++; + *dst++ = RESHI; + } + + /* Restore MPY32 control context. */ + MPY32CTL0 = ui16MPYState; +#else //__MSP430_HAS_MPY32__ + /* Recalculate shift value to be a shift right offset by the default Q15 shift by 15. */ + shift = 15 - shift; + + /* Loop through all vector elements. */ + while (length--) { + /* Multiply src by scale and shift result right by the offset shift value. */ + *dst++ = (_q15)(((int32_t)*src++ * (int32_t)scale) >> shift); + } +#endif //__MSP430_HAS_MPY32__ + + return MSP_SUCCESS; +} diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c new file mode 100755 index 000000000..0962e03b5 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c @@ -0,0 +1,199 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Optimized helper function for right shift operations with LEA. + */ +static inline msp_status msp_shift_right_iq31(const _iq31 *src, _iq31 *dst, uint16_t length, uint8_t shift); + +/* + * Perform element wise left or right shift of a single source vector. + */ +msp_status msp_shift_iq31(const msp_shift_iq31_params *params, const _iq31 *src, _iq31 *dst) +{ + int8_t shift; // Shift count + uint16_t length; // Shift length + + /* Initialize the loop counter and shift variables. */ + length = params->length; + shift = params->shift; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Verify the shift parameter. */ + if ((shift > 31) || (shift < -31)) { + return MSP_SHIFT_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Shift src array left for a positive shift parameter. */ + if (shift > 0) { + /* Loop through all vector elements. */ + while (length--) { + /* Shift src left by the shift parameter and store to dst. */ + *dst++ = *src++ << shift; + } + } + /* Shift src array right for a negative shift parameter. */ + else { + /* Use optimized helper function. */ + return msp_shift_right_iq31(src, dst, length, -shift); + } + + return MSP_SUCCESS; +} + +#if defined(MSP_USE_LEA) + +/* Shift factor lookup table. */ +const uint32_t msp_shift_right_factor_iq31[32] = { + 0x80000000, 0x40000000, 0x20000000, 0x10000000, + 0x08000000, 0x04000000, 0x02000000, 0x01000000, + 0x00800000, 0x00400000, 0x00200000, 0x00100000, + 0x00080000, 0x00040000, 0x00020000, 0x00010000, + 0x00008000, 0x00004000, 0x00002000, 0x00001000, + 0x00000800, 0x00000400, 0x00000200, 0x00000100, + 0x00000080, 0x00000040, 0x00000020, 0x00000010, + 0x00000008, 0x00000004, 0x00000002, 0x00000001 +}; + +static inline msp_status msp_shift_right_iq31(const _iq31 *src, _iq31 *dst, uint16_t length, uint8_t shift) +{ + uint16_t cmdId; + int32_t shiftValue; + int32_t *shiftVector; + msp_status status; + MSP_LEA_MPYLONGMATRIX_PARAMS *leaParams; + + /* If shift is zero and source and data are not the same array copy data. */ + if ((shift == 0) && (src != dst)) { + msp_copy_iq31_params copyParams; + copyParams.length = length; + return msp_copy_iq31(©Params, src, dst); + } + + /* Lookup the fractional shift value. */ + shiftValue = msp_shift_right_factor_iq31[shift & 0x1f]; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) && MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Check that the correct revision is defined. */ + if (MSP_LEA_REVISION != msp_lea_getRevision()) { + return MSP_LEA_INCORRECT_REVISION; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MPYLONGMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_MPYLONGMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MPYLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Allocate offset vector of length one. */ + shiftVector = (int32_t *)msp_lea_allocMemory(sizeof(int32_t)/sizeof(uint32_t)); + shiftVector[0] = shiftValue; + + /* Set MSP_LEA_MPYLONGMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(shiftVector); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length; + leaParams->input1Offset = 1; + leaParams->input2Offset = 0; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + +#if (MSP_LEA_REVISION < MSP_LEA_REVISION_B) + /* Load function into code memory */ + cmdId = msp_lea_loadCommand(LEACMD__MPYLONGMATRIX, MSP_LEA_MPYLONGMATRIX, + sizeof(MSP_LEA_MPYLONGMATRIX)/sizeof(MSP_LEA_MPYLONGMATRIX[0])); +#else //MSP_LEA_REVISION + /* Invoke the LEACMD__MPYLONGMATRIX command. */ + cmdId = LEACMD__MPYLONGMATRIX; +#endif //MSP_LEA_REVISION + + /* Invoke the command. */ + msp_lea_invokeCommand(cmdId); + + /* Free MSP_LEA_MPYLONGMATRIX_PARAMS structure and shift vector. */ + msp_lea_freeMemory(sizeof(int32_t)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(MSP_LEA_MPYLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +static inline msp_status msp_shift_right_iq31(const _iq31 *src, _iq31 *dst, uint16_t length, uint8_t shift) +{ + /* Loop through all vector elements. */ + while (length--) { + /* Shift src right and store to dst. */ + *dst++ = *src++ >> shift; + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c new file mode 100755 index 000000000..3b3f0673b --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c @@ -0,0 +1,179 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +/* + * Optimized helper function for right shift operations with LEA. + */ +static inline msp_status msp_shift_right_q15(const _q15 *src, _q15 *dst, uint16_t length, uint8_t shift); + +/* + * Perform element wise left or right shift of a single source vector. + */ +msp_status msp_shift_q15(const msp_shift_q15_params *params, const _q15 *src, _q15 *dst) +{ + int8_t shift; // Shift count + uint16_t length; // Shift length + + /* Initialize the loop counter and shift variables. */ + length = params->length; + shift = params->shift; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Verify the shift parameter. */ + if ((shift > 15) || (shift < -15)) { + return MSP_SHIFT_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Shift src array left for a positive shift parameter. */ + if (shift > 0) { + /* Loop through all vector elements. */ + while (length--) { + /* Shift src left by the shift parameter and store to dst. */ + *dst++ = *src++ << shift; + } + } + /* Shift src array right for a negative shift parameter. */ + else { + /* Use optimized helper function. */ + return msp_shift_right_q15(src, dst, length, -shift); + } + + return MSP_SUCCESS; +} + +#if defined(MSP_USE_LEA) + +/* Shift factor lookup table. */ +const uint16_t msp_shift_right_factor_q15[16] = { + 0x8000, 0x4000, 0x2000, 0x1000, 0x0800, 0x0400, 0x0200, 0x0100, + 0x0080, 0x0040, 0x0020, 0x0010, 0x0008, 0x0004, 0x0002, 0x0001 +}; + +static inline msp_status msp_shift_right_q15(const _q15 *src, _q15 *dst, uint16_t length, uint8_t shift) +{ + int16_t shiftValue; + int16_t *shiftVector; + msp_status status; + MSP_LEA_MPYMATRIX_PARAMS *leaParams; + + /* If shift is zero and source and data are not the same array copy data. */ + if ((shift == 0) && (src != dst)) { + msp_copy_q15_params copyParams; + copyParams.length = length; + return msp_copy_q15(©Params, src, dst); + } + + /* Lookup the fractional shift value. */ + shiftValue = msp_shift_right_factor_q15[shift & 0xf]; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(src, 4) && MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_MPYMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_MPYMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_MPYMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Allocate offset vector of length two. */ + shiftVector = (int16_t *)msp_lea_allocMemory(2*sizeof(int16_t)/sizeof(uint32_t)); + shiftVector[0] = shiftValue; + shiftVector[1] = shiftValue; + + /* Set MSP_LEA_MPYLONGMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(shiftVector); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length; + leaParams->input1Offset = 1; + leaParams->input2Offset = 0; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(src); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__MPYMATRIX command. */ + msp_lea_invokeCommand(LEACMD__MPYMATRIX); + + /* Free MSP_LEA_MPYMATRIX_PARAMS structure and shift vector. */ + msp_lea_freeMemory(2*sizeof(int16_t)/sizeof(uint32_t)); + msp_lea_freeMemory(sizeof(MSP_LEA_MPYMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +static inline msp_status msp_shift_right_q15(const _q15 *src, _q15 *dst, uint16_t length, uint8_t shift) +{ + /* Loop through all vector elements. */ + while (length--) { + /* Shift src right and store to dst. */ + *dst++ = *src++ >> shift; + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c new file mode 100755 index 000000000..55457c282 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c @@ -0,0 +1,125 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_sub_iq31(const msp_sub_iq31_params *params, const _iq31 *srcA, const _iq31 *srcB, _iq31 *dst) +{ + uint16_t length; + msp_status status; + MSP_LEA_SUBLONGMATRIX_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(srcA, 4) & + MSP_LEA_VALID_ADDRESS(srcB, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_SUBLONGMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_SUBLONGMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_SUBLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_SUBLONGMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(srcB); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length; + leaParams->input1Offset = 1; + leaParams->input2Offset = 1; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(srcA); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__SUBLONGMATRIX command. */ + msp_lea_invokeCommand(LEACMD__SUBLONGMATRIX); + + /* Free MSP_LEA_SUBLONGMATRIX_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_SUBLONGMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA undefined + +msp_status msp_sub_iq31(const msp_sub_iq31_params *params, const _iq31 *srcA, const _iq31 *srcB, _iq31 *dst) +{ + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + + /* Loop through all vector elements. */ + while (length--) { + /* Subtract srcA and srcB with saturation and store result. */ + *dst++ = __saturated_sub_iq31(*srcA++, *srcB++); + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c new file mode 100755 index 000000000..11c368188 --- /dev/null +++ b/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c @@ -0,0 +1,137 @@ +/* --COPYRIGHT--,BSD + * Copyright (c) 2017, Texas Instruments Incorporated + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * --/COPYRIGHT--*/ + +#include "../../include/DSPLib.h" + +#if defined(MSP_USE_LEA) + +msp_status msp_sub_q15(const msp_sub_q15_params *params, const _q15 *srcA, const _q15 *srcB, _q15 *dst) +{ + uint16_t length; + msp_status status; + MSP_LEA_SUBMATRIX_PARAMS *leaParams; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } + + /* Check that the data arrays are aligned and in a valid memory segment. */ + if (!(MSP_LEA_VALID_ADDRESS(srcA, 4) & + MSP_LEA_VALID_ADDRESS(srcB, 4) & + MSP_LEA_VALID_ADDRESS(dst, 4))) { + return MSP_LEA_INVALID_ADDRESS; + } + + /* Acquire lock for LEA module. */ + if (!msp_lea_acquireLock()) { + return MSP_LEA_BUSY; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Initialize LEA if it is not enabled. */ + if (!(LEAPMCTL & LEACMDEN)) { + msp_lea_init(); + } + + /* Allocate MSP_LEA_SUBMATRIX_PARAMS structure. */ + leaParams = (MSP_LEA_SUBMATRIX_PARAMS *)msp_lea_allocMemory(sizeof(MSP_LEA_SUBMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set MSP_LEA_SUBMATRIX_PARAMS structure. */ + leaParams->input2 = MSP_LEA_CONVERT_ADDRESS(srcB); + leaParams->output = MSP_LEA_CONVERT_ADDRESS(dst); + leaParams->vectorSize = length; + leaParams->input1Offset = 1; + leaParams->input2Offset = 1; + leaParams->outputOffset = 1; + + /* Load source arguments to LEA. */ + LEAPMS0 = MSP_LEA_CONVERT_ADDRESS(srcA); + LEAPMS1 = MSP_LEA_CONVERT_ADDRESS(leaParams); + + /* Invoke the LEACMD__SUBMATRIX command. */ + msp_lea_invokeCommand(LEACMD__SUBMATRIX); + + /* Free MSP_LEA_SUBMATRIX_PARAMS structure. */ + msp_lea_freeMemory(sizeof(MSP_LEA_SUBMATRIX_PARAMS)/sizeof(uint32_t)); + + /* Set status flag. */ + status = MSP_SUCCESS; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check LEA interrupt flags for any errors. */ + if (msp_lea_ifg & LEACOVLIFG) { + status = MSP_LEA_COMMAND_OVERFLOW; + } + else if (msp_lea_ifg & LEAOORIFG) { + status = MSP_LEA_OUT_OF_RANGE; + } + else if (msp_lea_ifg & LEASDIIFG) { + status = MSP_LEA_SCALAR_INCONSISTENCY; + } +#endif + + /* Free lock for LEA module and return status. */ + msp_lea_freeLock(); + return status; +} + +#else //MSP_USE_LEA + +msp_status msp_sub_q15(const msp_sub_q15_params *params, const _q15 *srcA, const _q15 *srcB, _q15 *dst) +{ + uint16_t length; + + /* Initialize the loop counter with the vector length. */ + length = params->length; + +#ifndef MSP_DISABLE_DIAGNOSTICS + /* Check that length parameter is a multiple of two. */ + if (length & 1) { + return MSP_SIZE_ERROR; + } +#endif //MSP_DISABLE_DIAGNOSTICS + + /* Loop through all vector elements. */ + while (length--) { + /* Subtract srcA and srcB with saturation and store result. */ + *dst++ = __saturated_sub_q15(*srcA++, *srcB++); + } + + return MSP_SUCCESS; +} + +#endif //MSP_USE_LEA diff --git a/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c b/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c index 1f750dbe7..d7c4c2f78 100644 --- a/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c +++ b/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c @@ -187,7 +187,13 @@ char tpl_serial_read(void) } /* ISR1 related to USCI_A0_VECTOR */ +#if __GXX_ABI_VERSION == 1011 || __GXX_ABI_VERSION == 1013 +__interrupt void tpl_direct_irq_handler_USCI_A0_VECTOR(void) +#elif __GXX_ABI_VERSION ==1002 void __attribute__((interrupt(USCI_A0_VECTOR))) tpl_direct_irq_handler_USCI_A0_VECTOR() +#else + #error "Unsupported ABI" +#endif { #if (SERIAL_TX_BUFFER_SIZE > 0) && (SERIAL_TX_BUFFER_SIZE > 0) uint8_t c; From c6c60694e6f3afe800acf96f4470c248a941a86d Mon Sep 17 00:00:00 2001 From: ABernabeu Date: Wed, 12 May 2021 23:26:07 +0200 Subject: [PATCH 2/2] removed generated examples files --- .../msp430fr5994/launchpad/fft_lea/build.py | 406 - .../launchpad/fft_lea/fft_lea.map | 13254 ---------------- .../launchpad/fft_lea/fft_lea/AsMemMap.h | 233 - .../launchpad/fft_lea/fft_lea/Compiler.h | 95 - .../launchpad/fft_lea/fft_lea/Compiler_Cfg.h | 194 - .../launchpad/fft_lea/fft_lea/MemMap.h | 3435 ---- .../launchpad/fft_lea/fft_lea/script.ld | 4150 ----- .../launchpad/fft_lea/fft_lea/stm_structure.c | 21 - .../fft_lea/fft_lea/tpl_app_config.c | 449 - .../fft_lea/fft_lea/tpl_app_config.h | 65 - .../fft_lea/fft_lea/tpl_app_custom_types.h | 157 - .../fft_lea/fft_lea/tpl_app_define.h | 266 - .../fft_lea/fft_lea/tpl_dispatch_table.c | 65 - .../fft_lea/fft_lea/tpl_interrupt_vectors.c | 59 - .../launchpad/fft_lea/fft_lea/tpl_invoque.S | 337 - .../fft_lea/fft_lea/tpl_irq_handlers.S | 128 - .../launchpad/fft_lea/fft_lea/tpl_os.h | 269 - .../fft_lea/fft_lea/tpl_service_ids.h | 199 - .../fft_lea/fft_lea/tpl_static_info.json | 32 - .../launchpad/fft_lea/fft_lea_exe | Bin 1073404 -> 0 bytes .../msp430fr5994/launchpad/fft_lea/make.py | 119 - 21 files changed, 23933 deletions(-) delete mode 100755 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/build.py delete mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea.map delete mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/AsMemMap.h delete mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/Compiler.h delete mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/Compiler_Cfg.h delete mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/MemMap.h delete mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/script.ld delete mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/stm_structure.c delete mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_config.c delete mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_config.h delete mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_custom_types.h delete mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_define.h delete mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_dispatch_table.c delete mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_interrupt_vectors.c delete mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_invoque.S delete mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_irq_handlers.S delete mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_os.h delete mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_service_ids.h delete mode 100644 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_static_info.json delete mode 100755 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea_exe delete mode 100755 examples/msp430x/small/msp430fr5994/launchpad/fft_lea/make.py diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/build.py b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/build.py deleted file mode 100755 index 46d3f75ce..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/build.py +++ /dev/null @@ -1,406 +0,0 @@ -#! /usr/bin/env python -# -*- coding: UTF-8 -*- -#---------------------------------------------------------------------- -#--- Python Build file for application checkpoint -#--- automatically generated by goil on Wed May 12 23:14:32 2021 -#--- from root OIL file fft_lea.oil -#--- -#--- Compiling a Trampoline application is done in 2 stages -#--- 1 - From the OIL file, a set of files is generated as long as -#--- build options. Among these files are the build.py and make.py -#--- files. make.py contains compilation rules when the OIL file -#--- and the included OIL files are modified. make.py is only -#--- written once when the goil command is typed. -#--- 2 - From all the C/assembly files (OS, Application, librairies, -#--- configuration, ...), the objects and the executable are -#--- produced. This is done by the build.py file. -#--- build.py is generated each time goil is called by make.py -#---------------------------------------------------------------------- - -import sys, os, subprocess, string, distutils.spawn -from string import Template - -#--- Add some function for Python3 support - -if sys.version_info[0] >=3 : - def bytesdecode(obj) : - return obj.decode(sys.stdout.encoding) -else : - def bytesdecode(obj) : - return obj - -#--- Add the location of makefile.py to the import path -sys.path.append("../../../../../../make") - -#--- Import the makefile system in python -import makefile, projfile - -#--- To work with relative paths -scriptDir = os.path.dirname (os.path.abspath (sys.argv[0])) -os.chdir (scriptDir) - -#--- Get goal as first argument -askedGoal = "all" -if len (sys.argv) > 1 : - askedGoal = sys.argv [1] - -if askedGoal == "all" or askedGoal == "clean" : - goal = askedGoal -else : - goal = "all" - -#--- Get max parallel jobs as second argument -maxParallelJobs = 0 # 0 means use host processor count -if len (sys.argv) > 2 : - maxParallelJobs = int (sys.argv [2]) - -#--- Instanciate a new makefile object -make = makefile.Make(goal) - -#---------------------------------------------------------------------- -#--- Various variables used after -#---------------------------------------------------------------------- -compiler = r"msp430-elf-gcc" -cppCompiler = r"msp430-elf-g++" -linker = r"msp430-elf-ld" -assembler = r"msp430-elf-gcc" -autosar = False -autosar_sc = 0 -autosar_osapplications = False -with_ioc = False -with_com = False -scheduler = "osek" -trampoline_base_path = "../../../../../../" -cflags = [] -cppflags = [] -ldflags = [] -asflags = [] -# flags that should appear at the beginning of the command. -precflags = [] -precppflags = [] -preldflags = [] -preasflags = [] -includeDirs = [] - -cflags += "-O0 -g3 -gdwarf-2 -ggdb".split() -cflags += "-I /home/user/Source/msp430-gcc-support-files-1.211/msp430-gcc-support-files/include".split() -cppflags += "-fno-rtti".split() -cppflags += "-felide-constructors".split() -cppflags += "-fno-threadsafe-statics".split() -cppflags += "-fno-use-cxa-get-exception-ptr".split() -cppflags += "-fno-enforce-eh-specs".split() -cflags += "-g".split() -cppflags += "-g".split() -cflags += "-Wall".split() -cppflags += "-Wall".split() -cflags += "-Wno-unused-but-set-variable".split() -cppflags += "-Wno-unused-but-set-variable".split() -cflags += "-Wmissing-field-initializers".split() -cppflags += "-Wmissing-field-initializers".split() -cflags += "-mmcu=msp430fr5994".split() -cppflags += "-mmcu=msp430fr5994".split() -cflags += "-nostartfiles".split() -cppflags += "-nostartfiles".split() -cflags += "-fno-builtin".split() -cppflags += "-fno-builtin".split() -cflags += "-fno-exceptions".split() -cppflags += "-fno-exceptions".split() -cflags += "-nostdlib".split() -cppflags += "-nostdlib".split() -cflags += "-ffunction-sections".split() -cppflags += "-ffunction-sections".split() -cflags += "-fdata-sections".split() -cppflags += "-fdata-sections".split() -includeDirs += ["-I","../../../../../../machines/msp430x/small"] -includeDirs += ["-I","../../../../../../machines/msp430x/small/msp430fr5994/launchpad/dsplib"] -includeDirs += ["-I","../../../../../../machines/msp430x/small/msp430fr5994/launchpad/serial"] -if with_ioc: - includeDirs += ["-I", "../../../../../../ioc"] -includeDirs += ["-I", "../../../../../../os"] -includeDirs += ["-I", "../../../../../../debug"] -includeDirs += ["-I", "fft_lea"] -cflags += includeDirs -cppflags += includeDirs -asflags += includeDirs - -ldflags += "--fatal-warnings".split() -ldflags += "--warn-common".split() -ldflags += "--no-undefined".split() -ldflags += "--gc-sections".split() -ldflags += "-Map=fft_lea.map".split() -ldflags += ["-T", "fft_lea/script.ld"] -asflags += "-g".split() -asflags += "-Wall".split() -asflags += "-mmcu=msp430fr5994".split() - -#---------------------------------------------------------------------- -#--- Try to detect automatically the location of libc and libgcc -#--- This supposes the compiler has a (something)-gcc name -#--- for non posix target -#---------------------------------------------------------------------- -if "gcc" in compiler: - compilerFullPath = makefile.find_executable(compiler) - if compilerFullPath != None: - #--- Extract the (something) from the compiler executable name - compilerParts = compiler.split('-') - compilerParts.pop() - compilerPrefix = "-".join(compilerParts) - #--- Get the full path of the compiler - compilerToolChainPath = os.path.dirname(os.path.dirname(compilerFullPath)) - #--- Get the version of the compiler, [:-1] removes the carriage return - compilerVersion = subprocess.check_output([compiler, '-dumpversion'])[:-1] - #--- Build the libc and libgcc paths - procLibc =subprocess.Popen([compilerFullPath,"-print-file-name=libc.a"]+cflags,stdout=subprocess.PIPE) - procLibgcc=subprocess.Popen([compilerFullPath,"-print-libgcc-file-name"]+cflags,stdout=subprocess.PIPE) - procLibc.wait() - procLibgcc.wait() - libcPath = os.path.dirname(procLibc.stdout.readline().strip()) - libgccPath = os.path.dirname(procLibgcc.stdout.readline().strip()) - #--- Add both to linker flags - ldflags += ['-L' + bytesdecode(libcPath), '-lc'] - ldflags += ['-L' + bytesdecode(libgccPath), '-lgcc'] - -#---------------------------------------------------------------------- -#--- Build the source files list -#---------------------------------------------------------------------- -cSourceList = [] -cppSourceList = [] -sSourceList = [] -oilSourceList = [] - -#--- OIL file -oilSourceList.append("fft_lea.oil") - -#--- Kernel files -cSourceList.append(projfile.ProjectFile("os/tpl_os_kernel.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("os/tpl_os_timeobj_kernel.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("os/tpl_os_action.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("os/tpl_os_error.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("os/tpl_os_os_kernel.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("os/tpl_os_os.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("os/tpl_os_interrupt_kernel.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("os/tpl_os_task_kernel.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("os/tpl_os_resource_kernel.c", trampoline_base_path)) - -#--- Add C files of the application -cSourceList.append(projfile.ProjectFile("fft_lea.c")) - -#--- Add generated files -cSourceList.append(projfile.ProjectFile("fft_lea/tpl_app_config.c")) - -cSourceList.append(projfile.ProjectFile("fft_lea/tpl_dispatch_table.c")) -cSourceList.append(projfile.ProjectFile("fft_lea/tpl_invoque.S")) -cSourceList.append(projfile.ProjectFile("fft_lea/tpl_interrupt_vectors.c")) -sSourceList.append(projfile.ProjectFile("fft_lea/tpl_irq_handlers.S")) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/tpl_machine_msp430x.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/tpl_startup.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/tpl_clocks.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/tpl_trace.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/tpl_checkpointing.c", trampoline_base_path)) -sSourceList.append(projfile.ProjectFile("machines/msp430x/small/tpl_startup.S", trampoline_base_path)) -sSourceList.append(projfile.ProjectFile("machines/msp430x/small/tpl_sc_handler.S", trampoline_base_path)) -sSourceList.append(projfile.ProjectFile("machines/msp430x/small/framtr.S", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c", trampoline_base_path)) -cSourceList.append(projfile.ProjectFile("machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c", trampoline_base_path)) -#---------------------------------------------------------------------- -#--- Build the object list and the compiler dependancies -#---------------------------------------------------------------------- -objectList = [] - -for sourceFile in cSourceList: - source = sourceFile.src() - object = sourceFile.obj("build") - depObject = sourceFile.dep("build") - objectList.append(object) - rule = makefile.Rule([object], "Compiling " + source) - rule.deleteTargetDirectoryOnClean() - rule.mDependences.append(source) - rule.mCommand.append(compiler) - rule.mCommand += precflags - rule.mCommand += ["-c", source] - rule.mCommand += ["-o", object] - rule.mCommand += ["-MD", "-MP", "-MF", depObject] - rule.mCommand += cflags - rule.enterSecondaryDependanceFile (depObject, make) - make.addRule(rule) - -for sourceFile in cppSourceList: - source = sourceFile.src() - object = sourceFile.obj("build") - depObject = sourceFile.dep("build") - objectList.append(object) - rule = makefile.Rule([object], "Compiling " + source) - rule.deleteTargetDirectoryOnClean() - rule.mDependences.append(source) - rule.mCommand.append(cppCompiler) - rule.mCommand += precppflags - rule.mCommand += ["-c", source] - rule.mCommand += ["-o", object] - rule.mCommand += ["-MD", "-MP", "-MF", depObject] - rule.mCommand += cppflags - rule.enterSecondaryDependanceFile (depObject, make) - make.addRule(rule) - -for sourceFile in sSourceList: - source = sourceFile.src() - object = sourceFile.obj("build") - objectList.append(object) - rule = makefile.Rule([object], "Assembling " + source) - rule.mDependences.append(source) - rule.mCommand.append(assembler) - rule.mCommand += preasflags - rule.mCommand += ["-c", source] - rule.mCommand += ["-o", object] - rule.mCommand += asflags - make.addRule(rule) - -product = "fft_lea_exe" -rule = makefile.Rule ([product], "Linking " + product) -rule.deleteTargetFileOnClean() -rule.mDeleteTargetOnError = True -rule.mDependences += objectList -rule.mCommand += [linker] -rule.mCommand += ["-o", product] -rule.mCommand += preldflags -rule.mCommand += objectList -rule.mCommand += ldflags - -make.addRule (rule) - -make.addGoal("all", [product], "Building all") -make.addGoal("compile", objectList, "Compile source files") - - -make.runGoal(maxParallelJobs, maxParallelJobs == 1) - -postVariableMapping = dict( - MACHINE_PATH='../../../../../../machines', - ARCH_PATH='../../../../../../machines/msp430x', - BOARD_PATH='../../../../../../machines/msp430x/small/msp430fr5994/launchpad', - TARGET='msp430x/small/msp430fr5994/launchpad' -) - - -#---------------------------------------------------------------------- -#--- post commands -#---------------------------------------------------------------------- -if make.errorCount() == 0: - if askedGoal == "flash" : - commandLine = "DSLite load -c $ARCH_PATH/ccxml/MSP-EXP430FR5994LP.ccxml -f " - commandLine += "fft_lea_exe " - commandLineTemplate = Template(commandLine) - commandLine = commandLineTemplate.safe_substitute(postVariableMapping) - if makefile.find_executable("DSLite") != None: - print("\033[1m\033[95mFlashing fft_lea_exe on msp430x/small/msp430fr5994/launchpad\033[0m") - subprocess.call(commandLine, shell=True) - else: - print("Command 'DSLite' not in PATH") - -#---------------------------------------------------------------------- -#-- End of build.py -#---------------------------------------------------------------------- diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea.map b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea.map deleted file mode 100644 index d539c9308..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea.map +++ /dev/null @@ -1,13254 +0,0 @@ -Archive member included to satisfy reference by file (symbol) - -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_cos.o) - build/fft_lea.c.o (cosf) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_sin.o) - build/fft_lea.c.o (sinf) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-ef_rem_pio2.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_cos.o) (__ieee754_rem_pio2f) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_cos.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_cos.o) (__kernel_cosf) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_rem_pio2.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-ef_rem_pio2.o) (__kernel_rem_pio2f) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_sin.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_cos.o) (__kernel_sinf) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_fabs.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-ef_rem_pio2.o) (fabsf) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_floor.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_rem_pio2.o) (floorf) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_scalbn.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_rem_pio2.o) (scalbnf) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_copysign.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_scalbn.o) (copysignf) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_addsub_sf.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-ef_rem_pio2.o) (__mspabi_addf) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_mul_sf.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-ef_rem_pio2.o) (__mspabi_mpyf) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_eq_sf.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-ef_rem_pio2.o) (__eqsf2) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_gt_sf.o) - build/fft_lea.c.o (__gtsf2) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_ge_sf.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_rem_pio2.o) (__gesf2) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_lt_sf.o) - build/fft_lea.c.o (__ltsf2) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_si_to_sf.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-ef_rem_pio2.o) (__mspabi_fltlif) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_sf_to_si.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-ef_rem_pio2.o) (__mspabi_fixfli) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_sf_to_df.o) - build/fft_lea.c.o (__mspabi_cvtfd) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_thenan_sf.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_addsub_sf.o) (__thenan_sf) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_mul_df.o) - build/fft_lea.c.o (__mspabi_mpyd) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_df_to_si.o) - build/fft_lea.c.o (__mspabi_fixdli) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_make_df.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_sf_to_df.o) (__make_dp) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_thenan_df.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_mul_df.o) (__thenan_df) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(lib2divHI.o) - build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o (__mspabi_divi) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(slli.o) - build/os/tpl_os_kernel.c.o (__mspabi_slli) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srai.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-ef_rem_pio2.o) (__mspabi_sral) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srli.o) - build/machines/msp430x/small/tpl_startup.c.o (__mspabi_srll_4) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_clzsi2.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_si_to_sf.o) (__clzsi2) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_pack_sf.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_addsub_sf.o) (__pack_f) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_unpack_sf.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_addsub_sf.o) (__unpack_f) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_fpcmp_parts_sf.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_eq_sf.o) (__fpcmp_parts_f) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_pack_df.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_mul_df.o) (__pack_d) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_unpack_df.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_mul_df.o) (__unpack_d) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_clz.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_clzsi2.o) (__clz_tab) -/home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libc.a(lib_a-memcpy.o) - /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_addsub_sf.o) (memcpy) - -Discarded input sections - - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_kernel.c.o - .text 0x0000000000000000 0x0 build/os/tpl_os_kernel.c.o - .data 0x0000000000000000 0x0 build/os/tpl_os_kernel.c.o - .bss 0x0000000000000000 0x0 build/os/tpl_os_kernel.c.o - .osVar_UNSPECIFIED - 0x0000000000000000 0x3 build/os/tpl_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_timeobj_kernel.c.o - .text 0x0000000000000000 0x0 build/os/tpl_os_timeobj_kernel.c.o - .data 0x0000000000000000 0x0 build/os/tpl_os_timeobj_kernel.c.o - .bss 0x0000000000000000 0x0 build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x694 build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x16 build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x19c build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x6d build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x2c5 build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x94 build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x59 build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x19 build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x59 build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x7a build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x35 build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x35 build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x1db build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000000000 0x67 build/os/tpl_os_timeobj_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_action.c.o - .text 0x0000000000000000 0x0 build/os/tpl_os_action.c.o - .data 0x0000000000000000 0x0 build/os/tpl_os_action.c.o - .bss 0x0000000000000000 0x0 build/os/tpl_os_action.c.o - .osCode 0x0000000000000000 0x34 build/os/tpl_os_action.c.o - .debug_frame 0x0000000000000000 0x54 build/os/tpl_os_action.c.o - .debug_info 0x0000000000000000 0x5ec build/os/tpl_os_action.c.o - .debug_abbrev 0x0000000000000000 0x181 build/os/tpl_os_action.c.o - .debug_loc 0x0000000000000000 0x58 build/os/tpl_os_action.c.o - .debug_aranges - 0x0000000000000000 0x28 build/os/tpl_os_action.c.o - .debug_ranges 0x0000000000000000 0x18 build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x3e8 build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x694 build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x16 build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x19c build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x6d build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x1d5 build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x2c5 build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x94 build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x7a build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x35 build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x35 build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x59 build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x59 build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x169 build/os/tpl_os_action.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_action.c.o - .debug_line 0x0000000000000000 0x286 build/os/tpl_os_action.c.o - .debug_str 0x0000000000000000 0x5a8a build/os/tpl_os_action.c.o - .comment 0x0000000000000000 0x3a build/os/tpl_os_action.c.o - .debug_line.osCode - 0x0000000000000000 0x48 build/os/tpl_os_action.c.o - .debug_line_end - 0x0000000000000000 0x0 build/os/tpl_os_action.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/os/tpl_os_action.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_error.c.o - .text 0x0000000000000000 0x0 build/os/tpl_os_error.c.o - .data 0x0000000000000000 0x0 build/os/tpl_os_error.c.o - .bss 0x0000000000000000 0x0 build/os/tpl_os_error.c.o - .debug_info 0x0000000000000000 0x48e build/os/tpl_os_error.c.o - .debug_abbrev 0x0000000000000000 0x113 build/os/tpl_os_error.c.o - .debug_aranges - 0x0000000000000000 0x18 build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x2b7 build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x694 build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x16 build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x19c build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x6d build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x2c5 build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x94 build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x59 build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x59 build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x169 build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x1db build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x7a build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x3b build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x35 build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_error.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_error.c.o - .debug_line 0x0000000000000000 0x241 build/os/tpl_os_error.c.o - .debug_str 0x0000000000000000 0x5945 build/os/tpl_os_error.c.o - .comment 0x0000000000000000 0x3a build/os/tpl_os_error.c.o - .debug_line_end - 0x0000000000000000 0x0 build/os/tpl_os_error.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/os/tpl_os_error.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os_kernel.c.o - .text 0x0000000000000000 0x0 build/os/tpl_os_os_kernel.c.o - .data 0x0000000000000000 0x0 build/os/tpl_os_os_kernel.c.o - .bss 0x0000000000000000 0x0 build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x694 build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x16 build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x19c build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x6d build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x2c5 build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x94 build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x7a build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x35 build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x35 build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x59 build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x59 build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x1db build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x169 build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x11 build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x19 build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000000000 0x67 build/os/tpl_os_os_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_os.c.o - .text 0x0000000000000000 0x0 build/os/tpl_os_os.c.o - .data 0x0000000000000000 0x0 build/os/tpl_os_os.c.o - .bss 0x0000000000000000 0x0 build/os/tpl_os_os.c.o - .debug_macro 0x0000000000000000 0x694 build/os/tpl_os_os.c.o - .debug_macro 0x0000000000000000 0x16 build/os/tpl_os_os.c.o - .debug_macro 0x0000000000000000 0x19c build/os/tpl_os_os.c.o - .debug_macro 0x0000000000000000 0x6d build/os/tpl_os_os.c.o - .debug_macro 0x0000000000000000 0x2c5 build/os/tpl_os_os.c.o - .debug_macro 0x0000000000000000 0x94 build/os/tpl_os_os.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_os.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_os.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_os.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_os.c.o - .debug_macro 0x0000000000000000 0x7a build/os/tpl_os_os.c.o - .debug_macro 0x0000000000000000 0x35 build/os/tpl_os_os.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_os.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_os.c.o - .debug_macro 0x0000000000000000 0x35 build/os/tpl_os_os.c.o - .debug_macro 0x0000000000000000 0x59 build/os/tpl_os_os.c.o - .debug_macro 0x0000000000000000 0x59 build/os/tpl_os_os.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_os.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_interrupt_kernel.c.o - .text 0x0000000000000000 0x0 build/os/tpl_os_interrupt_kernel.c.o - .data 0x0000000000000000 0x0 build/os/tpl_os_interrupt_kernel.c.o - .bss 0x0000000000000000 0x0 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x694 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x16 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x19c build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x6d build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x1d5 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x2c5 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x94 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x7a build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x35 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x35 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x59 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x59 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x169 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x11 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x19 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x67 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_interrupt_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_task_kernel.c.o - .text 0x0000000000000000 0x0 build/os/tpl_os_task_kernel.c.o - .data 0x0000000000000000 0x0 build/os/tpl_os_task_kernel.c.o - .bss 0x0000000000000000 0x0 build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x694 build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x16 build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x19c build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x6d build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x2c5 build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x94 build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x7a build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x35 build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x35 build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x59 build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x59 build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x1db build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x169 build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x49 build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x11 build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x19 build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x67 build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_task_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/os/tpl_os_resource_kernel.c.o - .text 0x0000000000000000 0x0 build/os/tpl_os_resource_kernel.c.o - .data 0x0000000000000000 0x0 build/os/tpl_os_resource_kernel.c.o - .bss 0x0000000000000000 0x0 build/os/tpl_os_resource_kernel.c.o - .osConst 0x0000000000000000 0x2 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x694 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x16 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x19c build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x6d build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x2c5 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x94 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x59 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x59 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x1db build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x7a build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x35 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x35 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x5e build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x169 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x11 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x19 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x67 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x0000000000000000 0x10 build/os/tpl_os_resource_kernel.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea.c.o - .text 0x0000000000000000 0x0 build/fft_lea.c.o - .data 0x0000000000000000 0x0 build/fft_lea.c.o - .bss 0x0000000000000000 0x0 build/fft_lea.c.o - .debug_macro 0x0000000000000000 0x694 build/fft_lea.c.o - .debug_macro 0x0000000000000000 0x16 build/fft_lea.c.o - .debug_macro 0x0000000000000000 0x19c build/fft_lea.c.o - .debug_macro 0x0000000000000000 0x6d build/fft_lea.c.o - .debug_macro 0x0000000000000000 0x1d5 build/fft_lea.c.o - .debug_macro 0x0000000000000000 0x2c5 build/fft_lea.c.o - .debug_macro 0x0000000000000000 0x94 build/fft_lea.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea.c.o - .debug_macro 0x0000000000000000 0x10 build/fft_lea.c.o - .debug_macro 0x0000000000000000 0x59 build/fft_lea.c.o - .debug_macro 0x0000000000000000 0x59 build/fft_lea.c.o - .debug_macro 0x0000000000000000 0x169 build/fft_lea.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea.c.o - .debug_macro 0x0000000000000000 0x10 build/fft_lea.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .text 0x0000000000000000 0x0 build/fft_lea/tpl_app_config.c.o - .data 0x0000000000000000 0x0 build/fft_lea/tpl_app_config.c.o - .bss 0x0000000000000000 0x0 build/fft_lea/tpl_app_config.c.o - .rodata 0x0000000000000000 0xb build/fft_lea/tpl_app_config.c.o - .osApiConst 0x0000000000000000 0xc build/fft_lea/tpl_app_config.c.o - .rodata.std 0x0000000000000000 0x1 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x694 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x22 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x22 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x87 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x44 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x110 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x22 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x1df build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x16 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x19c build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x6d build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x2c5 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x94 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x10 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x7a build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x35 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x35 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x59 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x59 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x11 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x19 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x10 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x16 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x10 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x1db build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x10 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_app_config.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_dispatch_table.c.o - .text 0x0000000000000000 0x0 build/fft_lea/tpl_dispatch_table.c.o - .data 0x0000000000000000 0x0 build/fft_lea/tpl_dispatch_table.c.o - .bss 0x0000000000000000 0x0 build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x694 build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x16 build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x6d build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x2c5 build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x94 build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x10 build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x7a build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x35 build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x35 build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x59 build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x59 build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x10 build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x10 build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000000000 0x16 build/fft_lea/tpl_dispatch_table.c.o - .text 0x0000000000000000 0x0 build/fft_lea/tpl_invoque.S.o - .data 0x0000000000000000 0x0 build/fft_lea/tpl_invoque.S.o - .bss 0x0000000000000000 0x0 build/fft_lea/tpl_invoque.S.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/fft_lea/tpl_interrupt_vectors.c.o - .text 0x0000000000000000 0x0 build/fft_lea/tpl_interrupt_vectors.c.o - .data 0x0000000000000000 0x0 build/fft_lea/tpl_interrupt_vectors.c.o - .bss 0x0000000000000000 0x0 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x694 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x16 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x19c build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x6d build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x2c5 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x94 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x1d5 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x10 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x59 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x59 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x169 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x1c build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x1ef build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x10 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x76 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0xf808 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x2900 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x22 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x87 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x44 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x110 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x22 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x1df build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x22 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x93 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x5f build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x22 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x62 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x3b build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x10 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x10 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x10 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x7a build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x35 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x5e build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x0000000000000000 0x35 build/fft_lea/tpl_interrupt_vectors.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_machine_msp430x.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x16 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x19c build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x6d build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x2c5 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x94 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x5e build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x7a build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x35 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x5e build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x5e build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x35 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x5e build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x5e build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x59 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x59 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x1db build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x169 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_startup.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_startup.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_startup.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_startup.c.o - .rodata.TPL_MPU_B2_BOUNDARY - 0x0000000000000000 0x4 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x16 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x19c build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x6d build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x1d5 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x2c5 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x94 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x5e build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x59 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x59 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x169 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x5e build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x5e build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/tpl_startup.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_clocks.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_clocks.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_clocks.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_clocks.c.o - .rodata.tpl_DCOfreq - 0x0000000000000000 0x40 build/machines/msp430x/small/tpl_clocks.c.o - .text.tpl_getDCOFrequency - 0x0000000000000000 0x12 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x16 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x19c build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x6d build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x2c5 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x94 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x59 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x59 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x12 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x4c build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x9c build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x52 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x16 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x43 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x1a3 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x30d build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x5e build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000000000 0x5e build/machines/msp430x/small/tpl_clocks.c.o - .debug_line.text.tpl_getDCOFrequency - 0x0000000000000000 0x2b build/machines/msp430x/small/tpl_clocks.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_trace.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_trace.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_trace.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_trace.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_trace.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_trace.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_trace.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_trace.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_trace.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_trace.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_trace.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_trace.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_trace.c.o - .debug_info 0x0000000000000000 0x68 build/machines/msp430x/small/tpl_trace.c.o - .debug_abbrev 0x0000000000000000 0x29 build/machines/msp430x/small/tpl_trace.c.o - .debug_aranges - 0x0000000000000000 0x18 build/machines/msp430x/small/tpl_trace.c.o - .debug_macro 0x0000000000000000 0x97 build/machines/msp430x/small/tpl_trace.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/tpl_trace.c.o - .debug_macro 0x0000000000000000 0x16 build/machines/msp430x/small/tpl_trace.c.o - .debug_macro 0x0000000000000000 0x19c build/machines/msp430x/small/tpl_trace.c.o - .debug_macro 0x0000000000000000 0x6d build/machines/msp430x/small/tpl_trace.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/tpl_trace.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/tpl_trace.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/tpl_trace.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/tpl_trace.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/tpl_trace.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/tpl_trace.c.o - .debug_line 0x0000000000000000 0x237 build/machines/msp430x/small/tpl_trace.c.o - .debug_str 0x0000000000000000 0x3433 build/machines/msp430x/small/tpl_trace.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/tpl_trace.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_trace.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/tpl_trace.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_checkpointing.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_checkpointing.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_checkpointing.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/tpl_checkpointing.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_checkpointing.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_checkpointing.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_checkpointing.c.o - .debug_info 0x0000000000000000 0x21 build/machines/msp430x/small/tpl_checkpointing.c.o - .debug_abbrev 0x0000000000000000 0x13 build/machines/msp430x/small/tpl_checkpointing.c.o - .debug_aranges - 0x0000000000000000 0x18 build/machines/msp430x/small/tpl_checkpointing.c.o - .debug_macro 0x0000000000000000 0x39 build/machines/msp430x/small/tpl_checkpointing.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/tpl_checkpointing.c.o - .debug_macro 0x0000000000000000 0x16 build/machines/msp430x/small/tpl_checkpointing.c.o - .debug_macro 0x0000000000000000 0x19c build/machines/msp430x/small/tpl_checkpointing.c.o - .debug_macro 0x0000000000000000 0x6d build/machines/msp430x/small/tpl_checkpointing.c.o - .debug_line 0x0000000000000000 0xb8 build/machines/msp430x/small/tpl_checkpointing.c.o - .debug_str 0x0000000000000000 0x25f8 build/machines/msp430x/small/tpl_checkpointing.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/tpl_checkpointing.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_checkpointing.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/tpl_checkpointing.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .text.msp_biquad_cascade_df1_q15 - 0x0000000000000000 0xa4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_info 0x0000000000000000 0x5c6c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_abbrev 0x0000000000000000 0x182 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_line 0x0000000000000000 0x3d3 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_str 0x0000000000000000 0x42bf2 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_line.text.msp_biquad_cascade_df1_q15 - 0x0000000000000000 0xce build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .text.msp_biquad_cascade_df2_ext_q15 - 0x0000000000000000 0xa4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_info 0x0000000000000000 0x5d10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_abbrev 0x0000000000000000 0x160 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_line 0x0000000000000000 0x3d7 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_str 0x0000000000000000 0x42c52 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_line.text.msp_biquad_cascade_df2_ext_q15 - 0x0000000000000000 0xce build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .text.msp_biquad_cascade_df2_q15 - 0x0000000000000000 0x9e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_info 0x0000000000000000 0x5c7c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_abbrev 0x0000000000000000 0x160 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_line 0x0000000000000000 0x3d3 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_str 0x0000000000000000 0x42bfc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_line.text.msp_biquad_cascade_df2_q15 - 0x0000000000000000 0xce build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .text.msp_biquad_df2_ext_q15 - 0x0000000000000000 0x30c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_info 0x0000000000000000 0x5e3d build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_line 0x0000000000000000 0x3cf build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_str 0x0000000000000000 0x42cc9 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_line.text.msp_biquad_df2_ext_q15 - 0x0000000000000000 0x2b4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .text.msp_biquad_df2_q15 - 0x0000000000000000 0x2dc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_info 0x0000000000000000 0x5da9 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_line 0x0000000000000000 0x3cb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_str 0x0000000000000000 0x42c7a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_line.text.msp_biquad_df2_q15 - 0x0000000000000000 0x274 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .text.msp_cmplx_fir_iq31 - 0x0000000000000000 0x2c4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_info 0x0000000000000000 0x5d1d build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_line 0x0000000000000000 0x3cb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_str 0x0000000000000000 0x42c6d build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_line.text.msp_cmplx_fir_iq31 - 0x0000000000000000 0x2a2 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .text.msp_cmplx_fir_q15 - 0x0000000000000000 0x2ae build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_info 0x0000000000000000 0x5d0e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_line 0x0000000000000000 0x3ca build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_str 0x0000000000000000 0x42c65 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_line.text.msp_cmplx_fir_q15 - 0x0000000000000000 0x282 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .text.msp_fir_q15 - 0x0000000000000000 0x2c4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_info 0x0000000000000000 0x5d0e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_line 0x0000000000000000 0x3c4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_str 0x0000000000000000 0x42c4c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_line.text.msp_fir_q15 - 0x0000000000000000 0x2aa build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .text.msp_fir_iq31 - 0x0000000000000000 0x2c4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_info 0x0000000000000000 0x5d1d build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_line 0x0000000000000000 0x3c5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_str 0x0000000000000000 0x42c54 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_line.text.msp_fir_iq31 - 0x0000000000000000 0x2a2 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .bss.commandTable - 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .text.msp_lea_initCommandTable - 0x0000000000000000 0x30 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .text.msp_lea_loadCommand - 0x0000000000000000 0x17a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_MIN - 0x0000000000000000 0x5c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_MINUNSIGNED - 0x0000000000000000 0x5c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_MINLONGMATRIX - 0x0000000000000000 0x50 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_MINUNSIGNEDLONGMATRIX - 0x0000000000000000 0x50 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_MAX - 0x0000000000000000 0x5c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_MAXUNSIGNED - 0x0000000000000000 0x5c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_MAXLONGMATRIX - 0x0000000000000000 0x50 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_MAXUNSIGNEDLONGMATRIX - 0x0000000000000000 0x50 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_MACLONGMATRIX - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_FFTCOMPLEXAUTOSCALING - 0x0000000000000000 0xe8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_FFTCOMPLEXLONG - 0x0000000000000000 0x100 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_MPYLONGMATRIX - 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_IIRBQ1 - 0x0000000000000000 0x7c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_IIRBQ2 - 0x0000000000000000 0x80 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_IIRBQ2EXTENDED - 0x0000000000000000 0xbc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_FIRLONG - 0x0000000000000000 0x78 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_FIRCOMPLEXLONG - 0x0000000000000000 0xac build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_INTERLEAVEEVENEVEN - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_INTERLEAVEEVENODD - 0x0000000000000000 0x60 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_INTERLEAVEODDEVEN - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .rodata.MSP_LEA_INTERLEAVEODDODD - 0x0000000000000000 0x60 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_line.text.msp_lea_initCommandTable - 0x0000000000000000 0x4e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_line.text.msp_lea_loadCommand - 0x0000000000000000 0x143 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .text.msp_matrix_abs_iq31 - 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_info 0x0000000000000000 0x5b18 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_abbrev 0x0000000000000000 0x12f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_line 0x0000000000000000 0x3cc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_str 0x0000000000000000 0x42b76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_line.text.msp_matrix_abs_iq31 - 0x0000000000000000 0x42 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .text.msp_matrix_abs_q15 - 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_info 0x0000000000000000 0x5b18 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_abbrev 0x0000000000000000 0x12f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_line 0x0000000000000000 0x3cb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_str 0x0000000000000000 0x42b71 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_line.text.msp_matrix_abs_q15 - 0x0000000000000000 0x42 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .text.msp_matrix_add_iq31 - 0x0000000000000000 0x42 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_info 0x0000000000000000 0x5b27 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_abbrev 0x0000000000000000 0x12f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_line 0x0000000000000000 0x3cc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_str 0x0000000000000000 0x42b80 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_line.text.msp_matrix_add_iq31 - 0x0000000000000000 0x42 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .text.msp_matrix_add_q15 - 0x0000000000000000 0x42 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_info 0x0000000000000000 0x5b1b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_abbrev 0x0000000000000000 0x12f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_line 0x0000000000000000 0x3cb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_str 0x0000000000000000 0x42b76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_line.text.msp_matrix_add_q15 - 0x0000000000000000 0x42 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .text.msp_matrix_mpy_iq31 - 0x0000000000000000 0x2ca build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_info 0x0000000000000000 0x5d46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_abbrev 0x0000000000000000 0x218 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_line 0x0000000000000000 0x3cc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_str 0x0000000000000000 0x42c6c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_line.text.msp_matrix_mpy_iq31 - 0x0000000000000000 0x2b6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .text.msp_matrix_mpy_q15 - 0x0000000000000000 0x274 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_info 0x0000000000000000 0x5cfd build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_line 0x0000000000000000 0x3cb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_str 0x0000000000000000 0x42c52 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_line.text.msp_matrix_mpy_q15 - 0x0000000000000000 0x24a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .text.msp_matrix_neg_iq31 - 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_info 0x0000000000000000 0x5b18 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_abbrev 0x0000000000000000 0x12f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_line 0x0000000000000000 0x3cc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_str 0x0000000000000000 0x42b76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_line.text.msp_matrix_neg_iq31 - 0x0000000000000000 0x42 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .text.msp_matrix_neg_q15 - 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_info 0x0000000000000000 0x5b18 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_abbrev 0x0000000000000000 0x12f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_line 0x0000000000000000 0x3cb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_str 0x0000000000000000 0x42b71 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_line.text.msp_matrix_neg_q15 - 0x0000000000000000 0x42 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .text.msp_matrix_offset_iq31 - 0x0000000000000000 0x50 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_info 0x0000000000000000 0x5b3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_abbrev 0x0000000000000000 0x160 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_line 0x0000000000000000 0x3cf build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_str 0x0000000000000000 0x42b89 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_line.text.msp_matrix_offset_iq31 - 0x0000000000000000 0x52 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .text.msp_matrix_offset_q15 - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_info 0x0000000000000000 0x5b36 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_abbrev 0x0000000000000000 0x12f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_line 0x0000000000000000 0x3ce build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_str 0x0000000000000000 0x42b84 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_line.text.msp_matrix_offset_q15 - 0x0000000000000000 0x52 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .text.msp_matrix_scale_iq31 - 0x0000000000000000 0x5c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_info 0x0000000000000000 0x5b77 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_abbrev 0x0000000000000000 0x13e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_line 0x0000000000000000 0x3ce build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_str 0x0000000000000000 0x42b9c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_line.text.msp_matrix_scale_iq31 - 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .text.msp_matrix_scale_q15 - 0x0000000000000000 0x54 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_info 0x0000000000000000 0x5b72 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_abbrev 0x0000000000000000 0x160 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_line 0x0000000000000000 0x3cd build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_str 0x0000000000000000 0x42b97 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_line.text.msp_matrix_scale_q15 - 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .text.msp_matrix_shift_iq31 - 0x0000000000000000 0x4a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_info 0x0000000000000000 0x5b57 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_abbrev 0x0000000000000000 0x13e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_line 0x0000000000000000 0x3ce build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_str 0x0000000000000000 0x42b94 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_line.text.msp_matrix_shift_iq31 - 0x0000000000000000 0x52 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .text.msp_matrix_shift_q15 - 0x0000000000000000 0x4a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_info 0x0000000000000000 0x5b57 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_abbrev 0x0000000000000000 0x13e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_line 0x0000000000000000 0x3cd build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_str 0x0000000000000000 0x42b8f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_line.text.msp_matrix_shift_q15 - 0x0000000000000000 0x52 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .text.msp_matrix_sub_iq31 - 0x0000000000000000 0x42 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_info 0x0000000000000000 0x5b27 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_abbrev 0x0000000000000000 0x12f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_line 0x0000000000000000 0x3cc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_str 0x0000000000000000 0x42b80 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_line.text.msp_matrix_sub_iq31 - 0x0000000000000000 0x42 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .text.msp_matrix_sub_q15 - 0x0000000000000000 0x42 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_info 0x0000000000000000 0x5b1b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_abbrev 0x0000000000000000 0x12f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_line 0x0000000000000000 0x3cb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_str 0x0000000000000000 0x42b76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_line.text.msp_matrix_sub_q15 - 0x0000000000000000 0x42 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .text.msp_matrix_trans_iq31 - 0x0000000000000000 0x8c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_info 0x0000000000000000 0x5b70 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_abbrev 0x0000000000000000 0x140 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_line 0x0000000000000000 0x3ce build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_str 0x0000000000000000 0x42ba3 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_line.text.msp_matrix_trans_iq31 - 0x0000000000000000 0x9c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .text.msp_matrix_trans_q15 - 0x0000000000000000 0xa6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_info 0x0000000000000000 0x5b70 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_abbrev 0x0000000000000000 0x140 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_line 0x0000000000000000 0x3cd build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_str 0x0000000000000000 0x42b9e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_line.text.msp_matrix_trans_q15 - 0x0000000000000000 0xcc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .text.msp_cmplx_bitrev_iq31 - 0x0000000000000000 0x184 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_frame 0x0000000000000000 0x100 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_info 0x0000000000000000 0x5c78 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_line 0x0000000000000000 0x3d4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_str 0x0000000000000000 0x42c3c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_line.text.msp_cmplx_bitrev_iq31 - 0x0000000000000000 0x1aa build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .text.msp_cmplx_fft_auto_q15 - 0x0000000000000000 0x1f6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_frame 0x0000000000000000 0x108 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_info 0x0000000000000000 0x5cfd build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_abbrev 0x0000000000000000 0x218 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_line 0x0000000000000000 0x3d5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_str 0x0000000000000000 0x42c74 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_line.text.msp_cmplx_fft_auto_q15 - 0x0000000000000000 0x20e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .text.msp_cmplx_fft_iq31 - 0x0000000000000000 0x1f6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_frame 0x0000000000000000 0x108 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_info 0x0000000000000000 0x5d00 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_abbrev 0x0000000000000000 0x218 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_line 0x0000000000000000 0x3d1 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_str 0x0000000000000000 0x42c70 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_line.text.msp_cmplx_fft_iq31 - 0x0000000000000000 0x224 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .text.msp_cmplx_ifft_auto_q15 - 0x0000000000000000 0xe6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_info 0x0000000000000000 0x5bde build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_abbrev 0x0000000000000000 0x13e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_line 0x0000000000000000 0x3d6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_str 0x0000000000000000 0x42bfb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_line.text.msp_cmplx_ifft_auto_q15 - 0x0000000000000000 0xee build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .text.msp_cmplx_ifft_fixed_q15 - 0x0000000000000000 0xa6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_info 0x0000000000000000 0x5bc0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_abbrev 0x0000000000000000 0x13e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_line 0x0000000000000000 0x3d7 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_str 0x0000000000000000 0x42bfd build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_line.text.msp_cmplx_ifft_fixed_q15 - 0x0000000000000000 0xbe build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .text.msp_cmplx_ifft_iq31 - 0x0000000000000000 0x1cc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_frame 0x0000000000000000 0x50 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_info 0x0000000000000000 0x5c5e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_abbrev 0x0000000000000000 0x13e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_loc 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_line 0x0000000000000000 0x3d2 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_str 0x0000000000000000 0x42c3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_line.text.msp_cmplx_ifft_iq31 - 0x0000000000000000 0x1a4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .text.msp_fft_auto_q15 - 0x0000000000000000 0x80 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_info 0x0000000000000000 0x5baf build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_abbrev 0x0000000000000000 0x13e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_line 0x0000000000000000 0x3cf build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_str 0x0000000000000000 0x42baf build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_line.text.msp_fft_auto_q15 - 0x0000000000000000 0x96 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .text.msp_fft_iq31 - 0x0000000000000000 0x74 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_info 0x0000000000000000 0x5bb2 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_abbrev 0x0000000000000000 0x13e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_line 0x0000000000000000 0x3cb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_str 0x0000000000000000 0x42bb6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_line.text.msp_fft_iq31 - 0x0000000000000000 0x96 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .text.msp_ifft_auto_q15 - 0x0000000000000000 0x122 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_info 0x0000000000000000 0x5c75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_abbrev 0x0000000000000000 0x13e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_line 0x0000000000000000 0x3d0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_str 0x0000000000000000 0x42c23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_line.text.msp_ifft_auto_q15 - 0x0000000000000000 0x13e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .text.msp_ifft_fixed_q15 - 0x0000000000000000 0xe0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_info 0x0000000000000000 0x5c57 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_abbrev 0x0000000000000000 0x13e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_line 0x0000000000000000 0x3d1 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_str 0x0000000000000000 0x42c25 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_line.text.msp_ifft_fixed_q15 - 0x0000000000000000 0x10e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .text.msp_ifft_iq31 - 0x0000000000000000 0x210 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_frame 0x0000000000000000 0x50 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_info 0x0000000000000000 0x5cf5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_abbrev 0x0000000000000000 0x13e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_loc 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_line 0x0000000000000000 0x3cc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_str 0x0000000000000000 0x42c65 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_line.text.msp_ifft_iq31 - 0x0000000000000000 0x1e4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .text.msp_split_iq31 - 0x0000000000000000 0x186 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_frame 0x0000000000000000 0x104 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_info 0x0000000000000000 0x5cac build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_line 0x0000000000000000 0x3cd build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_str 0x0000000000000000 0x42c28 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_line.text.msp_split_iq31 - 0x0000000000000000 0x1a2 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_info 0x0000000000000000 0x59b8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_abbrev 0x0000000000000000 0x91 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_aranges - 0x0000000000000000 0x18 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_line 0x0000000000000000 0x3d3 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_str 0x0000000000000000 0x42a21 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .text.msp_cmplx_fill_iq31 - 0x0000000000000000 0x210 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_frame 0x0000000000000000 0x100 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_info 0x0000000000000000 0x5cc5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_abbrev 0x0000000000000000 0x1e7 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_line 0x0000000000000000 0x3ce build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_str 0x0000000000000000 0x42c64 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_line.text.msp_cmplx_fill_iq31 - 0x0000000000000000 0x202 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .text.msp_cmplx_fill_q15 - 0x0000000000000000 0x1a2 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_frame 0x0000000000000000 0x100 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_info 0x0000000000000000 0x5cc5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_abbrev 0x0000000000000000 0x1e7 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_line 0x0000000000000000 0x3cd build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_str 0x0000000000000000 0x42c60 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_line.text.msp_cmplx_fill_q15 - 0x0000000000000000 0x1b6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .text.msp_cmplx_iq31 - 0x0000000000000000 0x66 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_info 0x0000000000000000 0x5b54 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_abbrev 0x0000000000000000 0x12f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_line 0x0000000000000000 0x3c9 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_str 0x0000000000000000 0x42b90 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_line.text.msp_cmplx_iq31 - 0x0000000000000000 0x6a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .text.msp_cmplx_q15 - 0x0000000000000000 0x66 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_info 0x0000000000000000 0x5b54 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_abbrev 0x0000000000000000 0x12f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_line 0x0000000000000000 0x3c8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_str 0x0000000000000000 0x42b8b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_line.text.msp_cmplx_q15 - 0x0000000000000000 0x6a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .text.msp_copy_iq31 - 0x0000000000000000 0x170 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_frame 0x0000000000000000 0x100 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_info 0x0000000000000000 0x5cb4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_line 0x0000000000000000 0x3c8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_str 0x0000000000000000 0x42c37 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_line.text.msp_copy_iq31 - 0x0000000000000000 0x178 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .text.msp_copy_q15 - 0x0000000000000000 0x170 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_frame 0x0000000000000000 0x100 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_info 0x0000000000000000 0x5cac build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_abbrev 0x0000000000000000 0x1e7 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_line 0x0000000000000000 0x3c7 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_str 0x0000000000000000 0x42c2f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_line.text.msp_copy_q15 - 0x0000000000000000 0x178 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .text.msp_deinterleave_iq31 - 0x0000000000000000 0x1d4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_frame 0x0000000000000000 0x108 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_info 0x0000000000000000 0x5cd0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_line 0x0000000000000000 0x3d0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_str 0x0000000000000000 0x42c51 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_line.text.msp_deinterleave_iq31 - 0x0000000000000000 0x1b8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .text.msp_deinterleave_q15 - 0x0000000000000000 0x216 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_frame 0x0000000000000000 0x108 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_info 0x0000000000000000 0x5cdf build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_line 0x0000000000000000 0x3cf build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_str 0x0000000000000000 0x42c49 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_line.text.msp_deinterleave_q15 - 0x0000000000000000 0x204 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .text.msp_fill_iq31 - 0x0000000000000000 0x194 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_frame 0x0000000000000000 0x100 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_info 0x0000000000000000 0x5cbe build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_line 0x0000000000000000 0x3c8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_str 0x0000000000000000 0x42c48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_line.text.msp_fill_iq31 - 0x0000000000000000 0x196 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .text.msp_fill_q15 - 0x0000000000000000 0x19e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_frame 0x0000000000000000 0x100 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_info 0x0000000000000000 0x5cb6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_abbrev 0x0000000000000000 0x1e7 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_line 0x0000000000000000 0x3c7 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_str 0x0000000000000000 0x42c40 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_line.text.msp_fill_q15 - 0x0000000000000000 0x1ae build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .text.msp_interleave_iq31 - 0x0000000000000000 0x1f2 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_frame 0x0000000000000000 0x108 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_info 0x0000000000000000 0x5cf0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_line 0x0000000000000000 0x3ce build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_str 0x0000000000000000 0x42c5d build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_line.text.msp_interleave_iq31 - 0x0000000000000000 0x1cc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .text.msp_interleave_q15 - 0x0000000000000000 0x262 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_frame 0x0000000000000000 0x108 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_info 0x0000000000000000 0x5cdf build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_line 0x0000000000000000 0x3cd build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_str 0x0000000000000000 0x42c28 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_line.text.msp_interleave_q15 - 0x0000000000000000 0x224 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .text.msp_iq31_to_q15 - 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_info 0x0000000000000000 0x5b69 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_abbrev 0x0000000000000000 0x12f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_line 0x0000000000000000 0x3ca build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_str 0x0000000000000000 0x42ba3 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_line.text.msp_iq31_to_q15 - 0x0000000000000000 0x4a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .text.msp_q15_to_iq31 - 0x0000000000000000 0x70 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_info 0x0000000000000000 0x5bb0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_abbrev 0x0000000000000000 0x12f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_line 0x0000000000000000 0x3ca build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_str 0x0000000000000000 0x42bc5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_line.text.msp_q15_to_iq31 - 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .text.msp_abs_iq31 - 0x0000000000000000 0x98 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_frame 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_info 0x0000000000000000 0x5ae0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_abbrev 0x0000000000000000 0x12f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_loc 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_line 0x0000000000000000 0x3c5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_str 0x0000000000000000 0x42b38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_line.text.msp_abs_iq31 - 0x0000000000000000 0x9a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .text.msp_abs_q15 - 0x0000000000000000 0x86 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_info 0x0000000000000000 0x5ae0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_abbrev 0x0000000000000000 0x12f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_line 0x0000000000000000 0x3c4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_str 0x0000000000000000 0x42b34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_line.text.msp_abs_q15 - 0x0000000000000000 0xaa build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .text.msp_add_iq31 - 0x0000000000000000 0x22e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_info 0x0000000000000000 0x5cc3 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_line 0x0000000000000000 0x3c5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_str 0x0000000000000000 0x42c3d build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_line.text.msp_add_iq31 - 0x0000000000000000 0x1f6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .text.msp_add_q15 - 0x0000000000000000 0x23e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_info 0x0000000000000000 0x5cbb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_abbrev 0x0000000000000000 0x1e7 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_line 0x0000000000000000 0x3c4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_str 0x0000000000000000 0x42c35 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_line.text.msp_add_q15 - 0x0000000000000000 0x20e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .text.msp_cmplx_add_iq31 - 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_info 0x0000000000000000 0x5b1b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_abbrev 0x0000000000000000 0x160 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_line 0x0000000000000000 0x3cb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_str 0x0000000000000000 0x42b73 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_line.text.msp_cmplx_add_iq31 - 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .text.msp_cmplx_add_q15 - 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_info 0x0000000000000000 0x5b1b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_abbrev 0x0000000000000000 0x160 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_line 0x0000000000000000 0x3ca build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_str 0x0000000000000000 0x42b6e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_line.text.msp_cmplx_add_q15 - 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .text.msp_cmplx_conj_iq31 - 0x0000000000000000 0x22a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_frame 0x0000000000000000 0x108 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_info 0x0000000000000000 0x5cc6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_abbrev 0x0000000000000000 0x1f6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_line 0x0000000000000000 0x3cc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_str 0x0000000000000000 0x42c48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_line.text.msp_cmplx_conj_iq31 - 0x0000000000000000 0x21a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .text.msp_cmplx_conj_q15 - 0x0000000000000000 0x6c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_info 0x0000000000000000 0x5ae3 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_abbrev 0x0000000000000000 0x13e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_line 0x0000000000000000 0x3cb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_str 0x0000000000000000 0x42b49 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_line.text.msp_cmplx_conj_q15 - 0x0000000000000000 0x8a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .text.msp_cmplx_mac_iq31 - 0x0000000000000000 0x404 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_info 0x0000000000000000 0x5b16 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_abbrev 0x0000000000000000 0x12d build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_line 0x0000000000000000 0x3cb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_str 0x0000000000000000 0x42b72 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_line.text.msp_cmplx_mac_iq31 - 0x0000000000000000 0x27c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .text.msp_cmplx_mac_q15 - 0x0000000000000000 0x226 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_info 0x0000000000000000 0x5cea build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_abbrev 0x0000000000000000 0x1e5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_line 0x0000000000000000 0x3ca build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_str 0x0000000000000000 0x42c69 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_line.text.msp_cmplx_mac_q15 - 0x0000000000000000 0x1f0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .text.msp_cmplx_mpy_iq31 - 0x0000000000000000 0x3a4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_info 0x0000000000000000 0x5b16 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_abbrev 0x0000000000000000 0x13e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_line 0x0000000000000000 0x3cb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_str 0x0000000000000000 0x42b68 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_line.text.msp_cmplx_mpy_iq31 - 0x0000000000000000 0x200 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .text.msp_cmplx_mpy_q15 - 0x0000000000000000 0x22e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_info 0x0000000000000000 0x5cc6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_abbrev 0x0000000000000000 0x1f6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_line 0x0000000000000000 0x3ca build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_str 0x0000000000000000 0x42c4e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_line.text.msp_cmplx_mpy_q15 - 0x0000000000000000 0x1f6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .text.msp_cmplx_mpy_real_iq31 - 0x0000000000000000 0x27e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_info 0x0000000000000000 0x5cd5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_abbrev 0x0000000000000000 0x1f6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_line 0x0000000000000000 0x3d0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_str 0x0000000000000000 0x42c65 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_line.text.msp_cmplx_mpy_real_iq31 - 0x0000000000000000 0x24e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .text.msp_cmplx_mpy_real_q15 - 0x0000000000000000 0xa4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_info 0x0000000000000000 0x5b01 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_abbrev 0x0000000000000000 0x13e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_line 0x0000000000000000 0x3cf build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_str 0x0000000000000000 0x42b73 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_line.text.msp_cmplx_mpy_real_q15 - 0x0000000000000000 0xd2 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .text.msp_cmplx_scale_iq31 - 0x0000000000000000 0x52 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_info 0x0000000000000000 0x5b67 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_abbrev 0x0000000000000000 0x13e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_line 0x0000000000000000 0x3cd build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_str 0x0000000000000000 0x42b8f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_line.text.msp_cmplx_scale_iq31 - 0x0000000000000000 0x5a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .text.msp_cmplx_scale_q15 - 0x0000000000000000 0x4a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_info 0x0000000000000000 0x5b62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_abbrev 0x0000000000000000 0x160 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_line 0x0000000000000000 0x3cc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_str 0x0000000000000000 0x42b8a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_line.text.msp_cmplx_scale_q15 - 0x0000000000000000 0x5a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .text.msp_cmplx_shift_iq31 - 0x0000000000000000 0x156 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .text.msp_cmplx_shift_right_conj_iq31 - 0x0000000000000000 0x2d4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_frame 0x0000000000000000 0x144 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_info 0x0000000000000000 0x5e47 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_abbrev 0x0000000000000000 0x212 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_loc 0x0000000000000000 0x168 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_aranges - 0x0000000000000000 0x50 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_ranges 0x0000000000000000 0x40 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_line 0x0000000000000000 0x3cd build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_str 0x0000000000000000 0x42d21 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_line.text.msp_cmplx_shift_iq31 - 0x0000000000000000 0x13c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_line.text.msp_cmplx_shift_right_conj_iq31 - 0x0000000000000000 0x267 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .text.msp_cmplx_shift_q15 - 0x0000000000000000 0x12e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .text.msp_cmplx_shift_right_conj_q15 - 0x0000000000000000 0x21c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_frame 0x0000000000000000 0x138 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_info 0x0000000000000000 0x5e43 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_abbrev 0x0000000000000000 0x212 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_loc 0x0000000000000000 0x168 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_aranges - 0x0000000000000000 0x50 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_ranges 0x0000000000000000 0x40 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_line 0x0000000000000000 0x3cc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_str 0x0000000000000000 0x42d0c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_line.text.msp_cmplx_shift_q15 - 0x0000000000000000 0x13c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_line.text.msp_cmplx_shift_right_conj_q15 - 0x0000000000000000 0x209 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .text.msp_cmplx_sub_iq31 - 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_info 0x0000000000000000 0x5b1b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_abbrev 0x0000000000000000 0x160 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_line 0x0000000000000000 0x3cb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_str 0x0000000000000000 0x42b73 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_line.text.msp_cmplx_sub_iq31 - 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .text.msp_cmplx_sub_q15 - 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_frame 0x0000000000000000 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_info 0x0000000000000000 0x5b1b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_abbrev 0x0000000000000000 0x160 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_loc 0x0000000000000000 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_line 0x0000000000000000 0x3ca build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_str 0x0000000000000000 0x42b6e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_line.text.msp_cmplx_sub_q15 - 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .text.msp_mac_iq31 - 0x0000000000000000 0x23c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_info 0x0000000000000000 0x5cd2 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_abbrev 0x0000000000000000 0x1f6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_line 0x0000000000000000 0x3c5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_str 0x0000000000000000 0x42c3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_line.text.msp_mac_iq31 - 0x0000000000000000 0x210 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .text.msp_mac_q15 - 0x0000000000000000 0x222 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_info 0x0000000000000000 0x5cc7 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_abbrev 0x0000000000000000 0x1f6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_line 0x0000000000000000 0x3c4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_str 0x0000000000000000 0x42c30 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_line.text.msp_mac_q15 - 0x0000000000000000 0x1fa build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .text.msp_max_iq31 - 0x0000000000000000 0x1ae build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_frame 0x0000000000000000 0x100 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_info 0x0000000000000000 0x5cd0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_abbrev 0x0000000000000000 0x1f6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_line 0x0000000000000000 0x3c5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_str 0x0000000000000000 0x42c1a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_line.text.msp_max_iq31 - 0x0000000000000000 0x1b4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .text.msp_max_q15 - 0x0000000000000000 0x1aa build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_frame 0x0000000000000000 0x100 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_info 0x0000000000000000 0x5cb0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_abbrev 0x0000000000000000 0x1f6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_line 0x0000000000000000 0x3c4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_str 0x0000000000000000 0x42bfd build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_line.text.msp_max_q15 - 0x0000000000000000 0x1c4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .text.msp_max_uq31 - 0x0000000000000000 0x1ae build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_frame 0x0000000000000000 0x100 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_info 0x0000000000000000 0x5cb8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_abbrev 0x0000000000000000 0x1f6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_line 0x0000000000000000 0x3c5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_str 0x0000000000000000 0x42c10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_line.text.msp_max_uq31 - 0x0000000000000000 0x1b4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .text.msp_max_uq15 - 0x0000000000000000 0x19c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_frame 0x0000000000000000 0x100 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_info 0x0000000000000000 0x5cb0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_abbrev 0x0000000000000000 0x1f6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_line 0x0000000000000000 0x3c5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_str 0x0000000000000000 0x42c09 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_line.text.msp_max_uq15 - 0x0000000000000000 0x1ac build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .text.msp_min_iq31 - 0x0000000000000000 0x1ae build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_frame 0x0000000000000000 0x100 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_info 0x0000000000000000 0x5cd0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_abbrev 0x0000000000000000 0x1f6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_line 0x0000000000000000 0x3c5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_str 0x0000000000000000 0x42c1a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_line.text.msp_min_iq31 - 0x0000000000000000 0x1b4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .text.msp_min_q15 - 0x0000000000000000 0x1aa build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_frame 0x0000000000000000 0x100 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_info 0x0000000000000000 0x5cb0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_abbrev 0x0000000000000000 0x1f6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_line 0x0000000000000000 0x3c4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_str 0x0000000000000000 0x42bfd build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_line.text.msp_min_q15 - 0x0000000000000000 0x1c4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .text.msp_min_uq31 - 0x0000000000000000 0x1ae build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_frame 0x0000000000000000 0x100 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_info 0x0000000000000000 0x5cb8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_abbrev 0x0000000000000000 0x1f6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_line 0x0000000000000000 0x3c5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_str 0x0000000000000000 0x42c10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_line.text.msp_min_uq31 - 0x0000000000000000 0x1b4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .text.msp_min_uq15 - 0x0000000000000000 0x1ac build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_frame 0x0000000000000000 0x100 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_info 0x0000000000000000 0x5cd0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_abbrev 0x0000000000000000 0x1f6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_line 0x0000000000000000 0x3c5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_str 0x0000000000000000 0x42c1e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_line.text.msp_min_uq15 - 0x0000000000000000 0x1c4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .text.msp_mpy_iq31 - 0x0000000000000000 0x244 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_info 0x0000000000000000 0x5cd2 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_line 0x0000000000000000 0x3c5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_str 0x0000000000000000 0x42c3d build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_line.text.msp_mpy_iq31 - 0x0000000000000000 0x216 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .text.msp_mpy_q15 - 0x0000000000000000 0x23e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_info 0x0000000000000000 0x5cc3 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_line 0x0000000000000000 0x3c4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_str 0x0000000000000000 0x42c35 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_line.text.msp_mpy_q15 - 0x0000000000000000 0x20e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .text.msp_neg_iq31 - 0x0000000000000000 0x1de build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_frame 0x0000000000000000 0x108 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_info 0x0000000000000000 0x5cc3 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_line 0x0000000000000000 0x3c5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_str 0x0000000000000000 0x42c33 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_line.text.msp_neg_iq31 - 0x0000000000000000 0x1cc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .text.msp_neg_q15 - 0x0000000000000000 0x1d8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_frame 0x0000000000000000 0x108 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_info 0x0000000000000000 0x5cb4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_line 0x0000000000000000 0x3c4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_str 0x0000000000000000 0x42c2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_line.text.msp_neg_q15 - 0x0000000000000000 0x1c4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .text.msp_offset_iq31 - 0x0000000000000000 0x1fe build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_frame 0x0000000000000000 0x108 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_info 0x0000000000000000 0x5ce7 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_line 0x0000000000000000 0x3c8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_str 0x0000000000000000 0x42c5b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_line.text.msp_offset_iq31 - 0x0000000000000000 0x1d2 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .text.msp_offset_q15 - 0x0000000000000000 0x20e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_frame 0x0000000000000000 0x108 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_info 0x0000000000000000 0x5cdf build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_abbrev 0x0000000000000000 0x1e7 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_line 0x0000000000000000 0x3c7 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_str 0x0000000000000000 0x42c52 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_line.text.msp_offset_q15 - 0x0000000000000000 0x1fa build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .text.msp_scale_iq31 - 0x0000000000000000 0x2c8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_frame 0x0000000000000000 0x54 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_info 0x0000000000000000 0x5b57 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_abbrev 0x0000000000000000 0x13e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_loc 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_line 0x0000000000000000 0x3c7 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_str 0x0000000000000000 0x42b70 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_line.text.msp_scale_iq31 - 0x0000000000000000 0x1e2 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .text.msp_scale_q15 - 0x0000000000000000 0x130 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_frame 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_info 0x0000000000000000 0x5b5b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_abbrev 0x0000000000000000 0x12f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_loc 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_aranges - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_ranges 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_line 0x0000000000000000 0x3c6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_str 0x0000000000000000 0x42b77 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_line.text.msp_scale_q15 - 0x0000000000000000 0x108 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .text.msp_shift_iq31 - 0x0000000000000000 0xba build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .rodata.msp_shift_right_factor_iq31 - 0x0000000000000000 0x80 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .text.msp_shift_right_iq31 - 0x0000000000000000 0x254 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_frame 0x0000000000000000 0x138 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_info 0x0000000000000000 0x5de9 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_abbrev 0x0000000000000000 0x247 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_loc 0x0000000000000000 0x168 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_aranges - 0x0000000000000000 0x50 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_ranges 0x0000000000000000 0x40 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_line 0x0000000000000000 0x3c7 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_str 0x0000000000000000 0x42cc9 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_line.text.msp_shift_iq31 - 0x0000000000000000 0xa8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_line.text.msp_shift_right_iq31 - 0x0000000000000000 0x231 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .text.msp_shift_q15 - 0x0000000000000000 0xaa build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .rodata.msp_shift_right_factor_q15 - 0x0000000000000000 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .text.msp_shift_right_q15 - 0x0000000000000000 0x23c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_frame 0x0000000000000000 0x138 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_info 0x0000000000000000 0x5df4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_abbrev 0x0000000000000000 0x247 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_loc 0x0000000000000000 0x168 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_aranges - 0x0000000000000000 0x50 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_ranges 0x0000000000000000 0x40 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_line 0x0000000000000000 0x3c6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_str 0x0000000000000000 0x42cbe build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_line.text.msp_shift_q15 - 0x0000000000000000 0xa8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_line.text.msp_shift_right_q15 - 0x0000000000000000 0x221 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .text.msp_sub_iq31 - 0x0000000000000000 0x22e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_info 0x0000000000000000 0x5cc3 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_line 0x0000000000000000 0x3c5 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_str 0x0000000000000000 0x42c3d build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_line.text.msp_sub_iq31 - 0x0000000000000000 0x1f6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .text.msp_lea_invokeCommand - 0x0000000000000000 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000000000 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000000000 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000000000 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .text.msp_lea_freeLock - 0x0000000000000000 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .text.msp_sub_q15 - 0x0000000000000000 0x23e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_frame 0x0000000000000000 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_info 0x0000000000000000 0x5cc3 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_abbrev 0x0000000000000000 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_loc 0x0000000000000000 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_aranges - 0x0000000000000000 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_ranges 0x0000000000000000 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x93 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x5f build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_macro 0x0000000000000000 0x3b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_line 0x0000000000000000 0x3c4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_str 0x0000000000000000 0x42c35 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .comment 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_line.text.msp_sub_q15 - 0x0000000000000000 0x20e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .group 0x0000000000000000 0xc build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .text.tpl_serial_available - 0x0000000000000000 0x26 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .text.tpl_serial_read - 0x0000000000000000 0x4c build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x694 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x1c build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x1ef build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x76 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0xf808 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x2900 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x12 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x9c build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x16 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x10e build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x8d build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x52 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x16 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x43 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x1a3 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x30d build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x16 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x29 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x110 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x1df build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x16 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x19c build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x6d build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x2c5 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x94 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_line.text.tpl_serial_available - 0x0000000000000000 0x43 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_line.text.tpl_serial_read - 0x0000000000000000 0x73 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .text 0x0000000000000000 0x0 build/fft_lea/tpl_irq_handlers.S.o - .data 0x0000000000000000 0x0 build/fft_lea/tpl_irq_handlers.S.o - .bss 0x0000000000000000 0x0 build/fft_lea/tpl_irq_handlers.S.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_startup.S.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_startup.S.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_startup.S.o - .osCode 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_startup.S.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_sc_handler.S.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_sc_handler.S.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_sc_handler.S.o - .text 0x0000000000000000 0x0 build/machines/msp430x/small/framtr.S.o - .data 0x0000000000000000 0x0 build/machines/msp430x/small/framtr.S.o - .bss 0x0000000000000000 0x0 build/machines/msp430x/small/framtr.S.o - .MSP430.attributes - 0x0000000000000000 0x17 build/machines/msp430x/small/framtr.S.o - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_cos.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_cos.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_cos.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_cos.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_cos.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_sin.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_sin.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_sin.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_sin.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_sin.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-ef_rem_pio2.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-ef_rem_pio2.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-ef_rem_pio2.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-ef_rem_pio2.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-ef_rem_pio2.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_cos.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_cos.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_cos.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_cos.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_cos.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_rem_pio2.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_rem_pio2.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_rem_pio2.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_rem_pio2.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_rem_pio2.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_sin.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_sin.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_sin.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_sin.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_sin.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_fabs.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_fabs.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_fabs.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_fabs.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_fabs.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_floor.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_floor.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_floor.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_floor.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_floor.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_scalbn.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_scalbn.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_scalbn.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_scalbn.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_scalbn.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_copysign.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_copysign.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_copysign.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_copysign.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_copysign.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_addsub_sf.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_addsub_sf.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_addsub_sf.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_addsub_sf.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_addsub_sf.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_mul_sf.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_mul_sf.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_mul_sf.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_mul_sf.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_mul_sf.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_eq_sf.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_eq_sf.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_eq_sf.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_eq_sf.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_eq_sf.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_gt_sf.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_gt_sf.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_gt_sf.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_gt_sf.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_gt_sf.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_ge_sf.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_ge_sf.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_ge_sf.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_ge_sf.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_ge_sf.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_lt_sf.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_lt_sf.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_lt_sf.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_lt_sf.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_lt_sf.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_si_to_sf.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_si_to_sf.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_si_to_sf.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_si_to_sf.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_si_to_sf.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_sf_to_si.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_sf_to_si.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_sf_to_si.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_sf_to_si.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_sf_to_si.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_sf_to_df.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_sf_to_df.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_sf_to_df.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_sf_to_df.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_sf_to_df.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_thenan_sf.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_thenan_sf.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_thenan_sf.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_thenan_sf.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_thenan_sf.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_mul_df.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_mul_df.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_mul_df.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_mul_df.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_mul_df.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_df_to_si.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_df_to_si.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_df_to_si.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_df_to_si.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_df_to_si.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_make_df.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_make_df.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_make_df.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_make_df.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_make_df.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_thenan_df.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_thenan_df.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_thenan_df.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_thenan_df.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_thenan_df.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(lib2divHI.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(lib2divHI.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(lib2divHI.o) - .text.__udivhi3 - 0x0000000000000000 0x8 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(lib2divHI.o) - .text.__umodhi3 - 0x0000000000000000 0x8 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(lib2divHI.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(lib2divHI.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(lib2divHI.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(slli.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(slli.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(slli.o) - .text.__mspabi_slli_n - 0x0000000000000000 0x20 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(slli.o) - .text.__gnu_mspabi_sllp - 0x0000000000000000 0xc /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(slli.o) - .text.__mspabi_slll_n - 0x0000000000000000 0x3e /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(slli.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(slli.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srai.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srai.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srai.o) - .text.__mspabi_srai_n - 0x0000000000000000 0x20 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srai.o) - .text.__mspabi_srai - 0x0000000000000000 0xa /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srai.o) - .text.__gnu_mspabi_srap - 0x0000000000000000 0xe /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srai.o) - .text.__mspabi_sral_n - 0x0000000000000000 0x3e /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srai.o) - .text.__mspabi_srall - 0x0000000000000000 0x1e /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srai.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srai.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srli.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srli.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srli.o) - .text.__mspabi_srli_n - 0x0000000000000000 0x3e /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srli.o) - .text.__mspabi_srli - 0x0000000000000000 0xc /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srli.o) - .text.__gnu_mspabi_srlp - 0x0000000000000000 0x10 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srli.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srli.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_clzsi2.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_clzsi2.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_clzsi2.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_clzsi2.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_clzsi2.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_pack_sf.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_pack_sf.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_pack_sf.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_pack_sf.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_pack_sf.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_unpack_sf.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_unpack_sf.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_unpack_sf.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_unpack_sf.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_unpack_sf.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_fpcmp_parts_sf.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_fpcmp_parts_sf.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_fpcmp_parts_sf.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_fpcmp_parts_sf.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_fpcmp_parts_sf.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_pack_df.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_pack_df.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_pack_df.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_pack_df.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_pack_df.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_unpack_df.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_unpack_df.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_unpack_df.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_unpack_df.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_unpack_df.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_clz.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_clz.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_clz.o) - .comment 0x0000000000000000 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_clz.o) - .MSP430.attributes - 0x0000000000000000 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_clz.o) - .text 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libc.a(lib_a-memcpy.o) - .data 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libc.a(lib_a-memcpy.o) - .bss 0x0000000000000000 0x0 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libc.a(lib_a-memcpy.o) - -Memory Configuration - -Name Origin Length Attributes -VECTOR 0x000000000000ffb4 0x000000000000004c xr -FRAM 0x0000000000004000 0x000000000000bf80 xr -RAM 0x0000000000001c00 0x0000000000001000 xrw -LEA_RAM 0x0000000000002bff 0x0000000000001000 xrw -*default* 0x0000000000000000 0xffffffffffffffff - -Linker script and memory map - -LOAD build/os/tpl_os_kernel.c.o -LOAD build/os/tpl_os_timeobj_kernel.c.o -LOAD build/os/tpl_os_action.c.o -LOAD build/os/tpl_os_error.c.o -LOAD build/os/tpl_os_os_kernel.c.o -LOAD build/os/tpl_os_os.c.o -LOAD build/os/tpl_os_interrupt_kernel.c.o -LOAD build/os/tpl_os_task_kernel.c.o -LOAD build/os/tpl_os_resource_kernel.c.o -LOAD build/fft_lea.c.o -LOAD build/fft_lea/tpl_app_config.c.o -LOAD build/fft_lea/tpl_dispatch_table.c.o -LOAD build/fft_lea/tpl_invoque.S.o -LOAD build/fft_lea/tpl_interrupt_vectors.c.o -LOAD build/machines/msp430x/small/tpl_machine_msp430x.c.o -LOAD build/machines/msp430x/small/tpl_startup.c.o -LOAD build/machines/msp430x/small/tpl_clocks.c.o -LOAD build/machines/msp430x/small/tpl_trace.c.o -LOAD build/machines/msp430x/small/tpl_checkpointing.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df1_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_ext_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_cascade_df2_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_ext_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df2_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_cmplx_fir_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_fir_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_abs_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_add_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_mpy_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_neg_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_offset_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_scale_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_shift_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_sub_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/matrix/msp_matrix_trans_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_auto_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_auto_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_fixed_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_ifft_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_auto_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_auto_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_fixed_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_ifft_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_transform_tables.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_fill_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_cmplx_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_copy_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_deinterleave_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_fill_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_interleave_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_iq31_to_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_q15_to_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_abs_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_add_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_add_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_conj_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mac_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_mpy_real_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_scale_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_shift_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_cmplx_sub_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mac_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_max_uq15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_min_uq15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_mpy_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_neg_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_offset_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_scale_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_shift_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_iq31.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/vector/msp_sub_q15.c.o -LOAD build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o -LOAD build/fft_lea/tpl_irq_handlers.S.o -LOAD build/machines/msp430x/small/tpl_startup.S.o -LOAD build/machines/msp430x/small/tpl_sc_handler.S.o -LOAD build/machines/msp430x/small/framtr.S.o - [!provide] PROVIDE (ADC12CTL0 = 0x800) - [!provide] PROVIDE (ADC12CTL0_L = 0x800) - [!provide] PROVIDE (ADC12CTL0_H = 0x801) - [!provide] PROVIDE (ADC12CTL1 = 0x802) - [!provide] PROVIDE (ADC12CTL1_L = 0x802) - [!provide] PROVIDE (ADC12CTL1_H = 0x803) - [!provide] PROVIDE (ADC12CTL2 = 0x804) - [!provide] PROVIDE (ADC12CTL2_L = 0x804) - [!provide] PROVIDE (ADC12CTL2_H = 0x805) - [!provide] PROVIDE (ADC12CTL3 = 0x806) - [!provide] PROVIDE (ADC12CTL3_L = 0x806) - [!provide] PROVIDE (ADC12CTL3_H = 0x807) - [!provide] PROVIDE (ADC12LO = 0x808) - [!provide] PROVIDE (ADC12LO_L = 0x808) - [!provide] PROVIDE (ADC12LO_H = 0x809) - [!provide] PROVIDE (ADC12HI = 0x80a) - [!provide] PROVIDE (ADC12HI_L = 0x80a) - [!provide] PROVIDE (ADC12HI_H = 0x80b) - [!provide] PROVIDE (ADC12IFGR0 = 0x80c) - [!provide] PROVIDE (ADC12IFGR0_L = 0x80c) - [!provide] PROVIDE (ADC12IFGR0_H = 0x80d) - [!provide] PROVIDE (ADC12IFGR1 = 0x80e) - [!provide] PROVIDE (ADC12IFGR1_L = 0x80e) - [!provide] PROVIDE (ADC12IFGR1_H = 0x80f) - [!provide] PROVIDE (ADC12IFGR2 = 0x810) - [!provide] PROVIDE (ADC12IFGR2_L = 0x810) - [!provide] PROVIDE (ADC12IFGR2_H = 0x811) - [!provide] PROVIDE (ADC12IER0 = 0x812) - [!provide] PROVIDE (ADC12IER0_L = 0x812) - [!provide] PROVIDE (ADC12IER0_H = 0x813) - [!provide] PROVIDE (ADC12IER1 = 0x814) - [!provide] PROVIDE (ADC12IER1_L = 0x814) - [!provide] PROVIDE (ADC12IER1_H = 0x815) - [!provide] PROVIDE (ADC12IER2 = 0x816) - [!provide] PROVIDE (ADC12IER2_L = 0x816) - [!provide] PROVIDE (ADC12IER2_H = 0x817) - [!provide] PROVIDE (ADC12IV = 0x818) - [!provide] PROVIDE (ADC12IV_L = 0x818) - [!provide] PROVIDE (ADC12IV_H = 0x819) - [!provide] PROVIDE (ADC12MCTL0 = 0x820) - [!provide] PROVIDE (ADC12MCTL0_L = 0x820) - [!provide] PROVIDE (ADC12MCTL0_H = 0x821) - [!provide] PROVIDE (ADC12MCTL1 = 0x822) - [!provide] PROVIDE (ADC12MCTL1_L = 0x822) - [!provide] PROVIDE (ADC12MCTL1_H = 0x823) - [!provide] PROVIDE (ADC12MCTL2 = 0x824) - [!provide] PROVIDE (ADC12MCTL2_L = 0x824) - [!provide] PROVIDE (ADC12MCTL2_H = 0x825) - [!provide] PROVIDE (ADC12MCTL3 = 0x826) - [!provide] PROVIDE (ADC12MCTL3_L = 0x826) - [!provide] PROVIDE (ADC12MCTL3_H = 0x827) - [!provide] PROVIDE (ADC12MCTL4 = 0x828) - [!provide] PROVIDE (ADC12MCTL4_L = 0x828) - [!provide] PROVIDE (ADC12MCTL4_H = 0x829) - [!provide] PROVIDE (ADC12MCTL5 = 0x82a) - [!provide] PROVIDE (ADC12MCTL5_L = 0x82a) - [!provide] PROVIDE (ADC12MCTL5_H = 0x82b) - [!provide] PROVIDE (ADC12MCTL6 = 0x82c) - [!provide] PROVIDE (ADC12MCTL6_L = 0x82c) - [!provide] PROVIDE (ADC12MCTL6_H = 0x82d) - [!provide] PROVIDE (ADC12MCTL7 = 0x82e) - [!provide] PROVIDE (ADC12MCTL7_L = 0x82e) - [!provide] PROVIDE (ADC12MCTL7_H = 0x82f) - [!provide] PROVIDE (ADC12MCTL8 = 0x830) - [!provide] PROVIDE (ADC12MCTL8_L = 0x830) - [!provide] PROVIDE (ADC12MCTL8_H = 0x831) - [!provide] PROVIDE (ADC12MCTL9 = 0x832) - [!provide] PROVIDE (ADC12MCTL9_L = 0x832) - [!provide] PROVIDE (ADC12MCTL9_H = 0x833) - [!provide] PROVIDE (ADC12MCTL10 = 0x834) - [!provide] PROVIDE (ADC12MCTL10_L = 0x834) - [!provide] PROVIDE (ADC12MCTL10_H = 0x835) - [!provide] PROVIDE (ADC12MCTL11 = 0x836) - [!provide] PROVIDE (ADC12MCTL11_L = 0x836) - [!provide] PROVIDE (ADC12MCTL11_H = 0x837) - [!provide] PROVIDE (ADC12MCTL12 = 0x838) - [!provide] PROVIDE (ADC12MCTL12_L = 0x838) - [!provide] PROVIDE (ADC12MCTL12_H = 0x839) - [!provide] PROVIDE (ADC12MCTL13 = 0x83a) - [!provide] PROVIDE (ADC12MCTL13_L = 0x83a) - [!provide] PROVIDE (ADC12MCTL13_H = 0x83b) - [!provide] PROVIDE (ADC12MCTL14 = 0x83c) - [!provide] PROVIDE (ADC12MCTL14_L = 0x83c) - [!provide] PROVIDE (ADC12MCTL14_H = 0x83d) - [!provide] PROVIDE (ADC12MCTL15 = 0x83e) - [!provide] PROVIDE (ADC12MCTL15_L = 0x83e) - [!provide] PROVIDE (ADC12MCTL15_H = 0x83f) - [!provide] PROVIDE (ADC12MCTL16 = 0x840) - [!provide] PROVIDE (ADC12MCTL16_L = 0x840) - [!provide] PROVIDE (ADC12MCTL16_H = 0x841) - [!provide] PROVIDE (ADC12MCTL17 = 0x842) - [!provide] PROVIDE (ADC12MCTL17_L = 0x842) - [!provide] PROVIDE (ADC12MCTL17_H = 0x843) - [!provide] PROVIDE (ADC12MCTL18 = 0x844) - [!provide] PROVIDE (ADC12MCTL18_L = 0x844) - [!provide] PROVIDE (ADC12MCTL18_H = 0x845) - [!provide] PROVIDE (ADC12MCTL19 = 0x846) - [!provide] PROVIDE (ADC12MCTL19_L = 0x846) - [!provide] PROVIDE (ADC12MCTL19_H = 0x847) - [!provide] PROVIDE (ADC12MCTL20 = 0x848) - [!provide] PROVIDE (ADC12MCTL20_L = 0x848) - [!provide] PROVIDE (ADC12MCTL20_H = 0x849) - [!provide] PROVIDE (ADC12MCTL21 = 0x84a) - [!provide] PROVIDE (ADC12MCTL21_L = 0x84a) - [!provide] PROVIDE (ADC12MCTL21_H = 0x84b) - [!provide] PROVIDE (ADC12MCTL22 = 0x84c) - [!provide] PROVIDE (ADC12MCTL22_L = 0x84c) - [!provide] PROVIDE (ADC12MCTL22_H = 0x84d) - [!provide] PROVIDE (ADC12MCTL23 = 0x84e) - [!provide] PROVIDE (ADC12MCTL23_L = 0x84e) - [!provide] PROVIDE (ADC12MCTL23_H = 0x84f) - [!provide] PROVIDE (ADC12MCTL24 = 0x850) - [!provide] PROVIDE (ADC12MCTL24_L = 0x850) - [!provide] PROVIDE (ADC12MCTL24_H = 0x851) - [!provide] PROVIDE (ADC12MCTL25 = 0x852) - [!provide] PROVIDE (ADC12MCTL25_L = 0x852) - [!provide] PROVIDE (ADC12MCTL25_H = 0x853) - [!provide] PROVIDE (ADC12MCTL26 = 0x854) - [!provide] PROVIDE (ADC12MCTL26_L = 0x854) - [!provide] PROVIDE (ADC12MCTL26_H = 0x855) - [!provide] PROVIDE (ADC12MCTL27 = 0x856) - [!provide] PROVIDE (ADC12MCTL27_L = 0x856) - [!provide] PROVIDE (ADC12MCTL27_H = 0x857) - [!provide] PROVIDE (ADC12MCTL28 = 0x858) - [!provide] PROVIDE (ADC12MCTL28_L = 0x858) - [!provide] PROVIDE (ADC12MCTL28_H = 0x859) - [!provide] PROVIDE (ADC12MCTL29 = 0x85a) - [!provide] PROVIDE (ADC12MCTL29_L = 0x85a) - [!provide] PROVIDE (ADC12MCTL29_H = 0x85b) - [!provide] PROVIDE (ADC12MCTL30 = 0x85c) - [!provide] PROVIDE (ADC12MCTL30_L = 0x85c) - [!provide] PROVIDE (ADC12MCTL30_H = 0x85d) - [!provide] PROVIDE (ADC12MCTL31 = 0x85e) - [!provide] PROVIDE (ADC12MCTL31_L = 0x85e) - [!provide] PROVIDE (ADC12MCTL31_H = 0x85f) - [!provide] PROVIDE (ADC12MEM0 = 0x860) - [!provide] PROVIDE (ADC12MEM0_L = 0x860) - [!provide] PROVIDE (ADC12MEM0_H = 0x861) - [!provide] PROVIDE (ADC12MEM1 = 0x862) - [!provide] PROVIDE (ADC12MEM1_L = 0x862) - [!provide] PROVIDE (ADC12MEM1_H = 0x863) - [!provide] PROVIDE (ADC12MEM2 = 0x864) - [!provide] PROVIDE (ADC12MEM2_L = 0x864) - [!provide] PROVIDE (ADC12MEM2_H = 0x865) - [!provide] PROVIDE (ADC12MEM3 = 0x866) - [!provide] PROVIDE (ADC12MEM3_L = 0x866) - [!provide] PROVIDE (ADC12MEM3_H = 0x867) - [!provide] PROVIDE (ADC12MEM4 = 0x868) - [!provide] PROVIDE (ADC12MEM4_L = 0x868) - [!provide] PROVIDE (ADC12MEM4_H = 0x869) - [!provide] PROVIDE (ADC12MEM5 = 0x86a) - [!provide] PROVIDE (ADC12MEM5_L = 0x86a) - [!provide] PROVIDE (ADC12MEM5_H = 0x86b) - [!provide] PROVIDE (ADC12MEM6 = 0x86c) - [!provide] PROVIDE (ADC12MEM6_L = 0x86c) - [!provide] PROVIDE (ADC12MEM6_H = 0x86d) - [!provide] PROVIDE (ADC12MEM7 = 0x86e) - [!provide] PROVIDE (ADC12MEM7_L = 0x86e) - [!provide] PROVIDE (ADC12MEM7_H = 0x86f) - [!provide] PROVIDE (ADC12MEM8 = 0x870) - [!provide] PROVIDE (ADC12MEM8_L = 0x870) - [!provide] PROVIDE (ADC12MEM8_H = 0x871) - [!provide] PROVIDE (ADC12MEM9 = 0x872) - [!provide] PROVIDE (ADC12MEM9_L = 0x872) - [!provide] PROVIDE (ADC12MEM9_H = 0x873) - [!provide] PROVIDE (ADC12MEM10 = 0x874) - [!provide] PROVIDE (ADC12MEM10_L = 0x874) - [!provide] PROVIDE (ADC12MEM10_H = 0x875) - [!provide] PROVIDE (ADC12MEM11 = 0x876) - [!provide] PROVIDE (ADC12MEM11_L = 0x876) - [!provide] PROVIDE (ADC12MEM11_H = 0x877) - [!provide] PROVIDE (ADC12MEM12 = 0x878) - [!provide] PROVIDE (ADC12MEM12_L = 0x878) - [!provide] PROVIDE (ADC12MEM12_H = 0x879) - [!provide] PROVIDE (ADC12MEM13 = 0x87a) - [!provide] PROVIDE (ADC12MEM13_L = 0x87a) - [!provide] PROVIDE (ADC12MEM13_H = 0x87b) - [!provide] PROVIDE (ADC12MEM14 = 0x87c) - [!provide] PROVIDE (ADC12MEM14_L = 0x87c) - [!provide] PROVIDE (ADC12MEM14_H = 0x87d) - [!provide] PROVIDE (ADC12MEM15 = 0x87e) - [!provide] PROVIDE (ADC12MEM15_L = 0x87e) - [!provide] PROVIDE (ADC12MEM15_H = 0x87f) - [!provide] PROVIDE (ADC12MEM16 = 0x880) - [!provide] PROVIDE (ADC12MEM16_L = 0x880) - [!provide] PROVIDE (ADC12MEM16_H = 0x881) - [!provide] PROVIDE (ADC12MEM17 = 0x882) - [!provide] PROVIDE (ADC12MEM17_L = 0x882) - [!provide] PROVIDE (ADC12MEM17_H = 0x883) - [!provide] PROVIDE (ADC12MEM18 = 0x884) - [!provide] PROVIDE (ADC12MEM18_L = 0x884) - [!provide] PROVIDE (ADC12MEM18_H = 0x885) - [!provide] PROVIDE (ADC12MEM19 = 0x886) - [!provide] PROVIDE (ADC12MEM19_L = 0x886) - [!provide] PROVIDE (ADC12MEM19_H = 0x887) - [!provide] PROVIDE (ADC12MEM20 = 0x888) - [!provide] PROVIDE (ADC12MEM20_L = 0x888) - [!provide] PROVIDE (ADC12MEM20_H = 0x889) - [!provide] PROVIDE (ADC12MEM21 = 0x88a) - [!provide] PROVIDE (ADC12MEM21_L = 0x88a) - [!provide] PROVIDE (ADC12MEM21_H = 0x88b) - [!provide] PROVIDE (ADC12MEM22 = 0x88c) - [!provide] PROVIDE (ADC12MEM22_L = 0x88c) - [!provide] PROVIDE (ADC12MEM22_H = 0x88d) - [!provide] PROVIDE (ADC12MEM23 = 0x88e) - [!provide] PROVIDE (ADC12MEM23_L = 0x88e) - [!provide] PROVIDE (ADC12MEM23_H = 0x88f) - [!provide] PROVIDE (ADC12MEM24 = 0x890) - [!provide] PROVIDE (ADC12MEM24_L = 0x890) - [!provide] PROVIDE (ADC12MEM24_H = 0x891) - [!provide] PROVIDE (ADC12MEM25 = 0x892) - [!provide] PROVIDE (ADC12MEM25_L = 0x892) - [!provide] PROVIDE (ADC12MEM25_H = 0x893) - [!provide] PROVIDE (ADC12MEM26 = 0x894) - [!provide] PROVIDE (ADC12MEM26_L = 0x894) - [!provide] PROVIDE (ADC12MEM26_H = 0x895) - [!provide] PROVIDE (ADC12MEM27 = 0x896) - [!provide] PROVIDE (ADC12MEM27_L = 0x896) - [!provide] PROVIDE (ADC12MEM27_H = 0x897) - [!provide] PROVIDE (ADC12MEM28 = 0x898) - [!provide] PROVIDE (ADC12MEM28_L = 0x898) - [!provide] PROVIDE (ADC12MEM28_H = 0x899) - [!provide] PROVIDE (ADC12MEM29 = 0x89a) - [!provide] PROVIDE (ADC12MEM29_L = 0x89a) - [!provide] PROVIDE (ADC12MEM29_H = 0x89b) - [!provide] PROVIDE (ADC12MEM30 = 0x89c) - [!provide] PROVIDE (ADC12MEM30_L = 0x89c) - [!provide] PROVIDE (ADC12MEM30_H = 0x89d) - [!provide] PROVIDE (ADC12MEM31 = 0x89e) - [!provide] PROVIDE (ADC12MEM31_L = 0x89e) - [!provide] PROVIDE (ADC12MEM31_H = 0x89f) - [!provide] PROVIDE (AESACTL0 = 0x9c0) - [!provide] PROVIDE (AESACTL0_L = 0x9c0) - [!provide] PROVIDE (AESACTL0_H = 0x9c1) - [!provide] PROVIDE (AESACTL1 = 0x9c2) - [!provide] PROVIDE (AESACTL1_L = 0x9c2) - [!provide] PROVIDE (AESACTL1_H = 0x9c3) - [!provide] PROVIDE (AESASTAT = 0x9c4) - [!provide] PROVIDE (AESASTAT_L = 0x9c4) - [!provide] PROVIDE (AESASTAT_H = 0x9c5) - [!provide] PROVIDE (AESAKEY = 0x9c6) - [!provide] PROVIDE (AESAKEY_L = 0x9c6) - [!provide] PROVIDE (AESAKEY_H = 0x9c7) - [!provide] PROVIDE (AESADIN = 0x9c8) - [!provide] PROVIDE (AESADIN_L = 0x9c8) - [!provide] PROVIDE (AESADIN_H = 0x9c9) - [!provide] PROVIDE (AESADOUT = 0x9ca) - [!provide] PROVIDE (AESADOUT_L = 0x9ca) - [!provide] PROVIDE (AESADOUT_H = 0x9cb) - [!provide] PROVIDE (AESAXDIN = 0x9cc) - [!provide] PROVIDE (AESAXDIN_L = 0x9cc) - [!provide] PROVIDE (AESAXDIN_H = 0x9cd) - [!provide] PROVIDE (AESAXIN = 0x9ce) - [!provide] PROVIDE (AESAXIN_L = 0x9ce) - [!provide] PROVIDE (AESAXIN_H = 0x9cf) - [!provide] PROVIDE (CAPTIO0CTL = 0x43e) - [!provide] PROVIDE (CAPTIO0CTL_L = 0x43e) - [!provide] PROVIDE (CAPTIO0CTL_H = 0x43f) - [!provide] PROVIDE (CAPTIO1CTL = 0x47e) - [!provide] PROVIDE (CAPTIO1CTL_L = 0x47e) - [!provide] PROVIDE (CAPTIO1CTL_H = 0x47f) - [!provide] PROVIDE (CECTL0 = 0x8c0) - [!provide] PROVIDE (CECTL0_L = 0x8c0) - [!provide] PROVIDE (CECTL0_H = 0x8c1) - [!provide] PROVIDE (CECTL1 = 0x8c2) - [!provide] PROVIDE (CECTL1_L = 0x8c2) - [!provide] PROVIDE (CECTL1_H = 0x8c3) - [!provide] PROVIDE (CECTL2 = 0x8c4) - [!provide] PROVIDE (CECTL2_L = 0x8c4) - [!provide] PROVIDE (CECTL2_H = 0x8c5) - [!provide] PROVIDE (CECTL3 = 0x8c6) - [!provide] PROVIDE (CECTL3_L = 0x8c6) - [!provide] PROVIDE (CECTL3_H = 0x8c7) - [!provide] PROVIDE (CEINT = 0x8cc) - [!provide] PROVIDE (CEINT_L = 0x8cc) - [!provide] PROVIDE (CEINT_H = 0x8cd) - [!provide] PROVIDE (CEIV = 0x8ce) - [!provide] PROVIDE (CEIV_L = 0x8ce) - [!provide] PROVIDE (CEIV_H = 0x8cf) - [!provide] PROVIDE (CRCDI = 0x150) - [!provide] PROVIDE (CRCDI_L = 0x150) - [!provide] PROVIDE (CRCDI_H = 0x151) - [!provide] PROVIDE (CRCDIRB = 0x152) - [!provide] PROVIDE (CRCDIRB_L = 0x152) - [!provide] PROVIDE (CRCDIRB_H = 0x153) - [!provide] PROVIDE (CRCINIRES = 0x154) - [!provide] PROVIDE (CRCINIRES_L = 0x154) - [!provide] PROVIDE (CRCINIRES_H = 0x155) - [!provide] PROVIDE (CRCRESR = 0x156) - [!provide] PROVIDE (CRCRESR_L = 0x156) - [!provide] PROVIDE (CRCRESR_H = 0x157) - [!provide] PROVIDE (CRC32DIW0 = 0x980) - [!provide] PROVIDE (CRC32DIW0_L = 0x980) - [!provide] PROVIDE (CRC32DIW0_H = 0x981) - [!provide] PROVIDE (CRC32DIW1 = 0x982) - [!provide] PROVIDE (CRC32DIW1_L = 0x982) - [!provide] PROVIDE (CRC32DIW1_H = 0x983) - [!provide] PROVIDE (CRC32DIRBW1 = 0x984) - [!provide] PROVIDE (CRC32DIRBW1_L = 0x984) - [!provide] PROVIDE (CRC32DIRBW1_H = 0x985) - [!provide] PROVIDE (CRC32DIRBW0 = 0x986) - [!provide] PROVIDE (CRC32DIRBW0_L = 0x986) - [!provide] PROVIDE (CRC32DIRBW0_H = 0x987) - [!provide] PROVIDE (CRC32INIRESW0 = 0x988) - [!provide] PROVIDE (CRC32INIRESW0_L = 0x988) - [!provide] PROVIDE (CRC32INIRESW0_H = 0x989) - [!provide] PROVIDE (CRC32INIRESW1 = 0x98a) - [!provide] PROVIDE (CRC32INIRESW1_L = 0x98a) - [!provide] PROVIDE (CRC32INIRESW1_H = 0x98b) - [!provide] PROVIDE (CRC32RESRW1 = 0x98c) - [!provide] PROVIDE (CRC32RESRW1_L = 0x98c) - [!provide] PROVIDE (CRC32RESRW1_H = 0x98d) - [!provide] PROVIDE (CRC32RESRW0 = 0x98e) - [!provide] PROVIDE (CRC32RESRW0_L = 0x98e) - [!provide] PROVIDE (CRC32RESRW0_H = 0x98f) - [!provide] PROVIDE (CRC16DIW0 = 0x990) - [!provide] PROVIDE (CRC16DIW0_L = 0x990) - [!provide] PROVIDE (CRC16DIW0_H = 0x991) - [!provide] PROVIDE (CRC16DIRBW0 = 0x996) - [!provide] PROVIDE (CRC16DIRBW0_L = 0x996) - [!provide] PROVIDE (CRC16DIRBW0_H = 0x997) - [!provide] PROVIDE (CRC16INIRESW0 = 0x998) - [!provide] PROVIDE (CRC16INIRESW0_L = 0x998) - [!provide] PROVIDE (CRC16INIRESW0_H = 0x999) - [!provide] PROVIDE (CRC16RESRW0 = 0x99e) - [!provide] PROVIDE (CRC16RESRW0_L = 0x99e) - [!provide] PROVIDE (CRC16RESRW0_H = 0x99f) - 0x0000000000000160 PROVIDE (CSCTL0 = 0x160) - [!provide] PROVIDE (CSCTL0_L = 0x160) - [!provide] PROVIDE (CSCTL0_H = 0x161) - 0x0000000000000162 PROVIDE (CSCTL1 = 0x162) - [!provide] PROVIDE (CSCTL1_L = 0x162) - [!provide] PROVIDE (CSCTL1_H = 0x163) - 0x0000000000000164 PROVIDE (CSCTL2 = 0x164) - [!provide] PROVIDE (CSCTL2_L = 0x164) - [!provide] PROVIDE (CSCTL2_H = 0x165) - 0x0000000000000166 PROVIDE (CSCTL3 = 0x166) - [!provide] PROVIDE (CSCTL3_L = 0x166) - [!provide] PROVIDE (CSCTL3_H = 0x167) - [!provide] PROVIDE (CSCTL4 = 0x168) - [!provide] PROVIDE (CSCTL4_L = 0x168) - [!provide] PROVIDE (CSCTL4_H = 0x169) - [!provide] PROVIDE (CSCTL5 = 0x16a) - [!provide] PROVIDE (CSCTL5_L = 0x16a) - [!provide] PROVIDE (CSCTL5_H = 0x16b) - [!provide] PROVIDE (CSCTL6 = 0x16c) - [!provide] PROVIDE (CSCTL6_L = 0x16c) - [!provide] PROVIDE (CSCTL6_H = 0x16d) - [!provide] PROVIDE (PAIN = 0x200) - [!provide] PROVIDE (PAIN_L = 0x200) - [!provide] PROVIDE (PAIN_H = 0x201) - [!provide] PROVIDE (PAOUT = 0x202) - [!provide] PROVIDE (PAOUT_L = 0x202) - [!provide] PROVIDE (PAOUT_H = 0x203) - [!provide] PROVIDE (PADIR = 0x204) - [!provide] PROVIDE (PADIR_L = 0x204) - [!provide] PROVIDE (PADIR_H = 0x205) - [!provide] PROVIDE (PAREN = 0x206) - [!provide] PROVIDE (PAREN_L = 0x206) - [!provide] PROVIDE (PAREN_H = 0x207) - [!provide] PROVIDE (PASEL0 = 0x20a) - [!provide] PROVIDE (PASEL0_L = 0x20a) - [!provide] PROVIDE (PASEL0_H = 0x20b) - [!provide] PROVIDE (PASEL1 = 0x20c) - [!provide] PROVIDE (PASEL1_L = 0x20c) - [!provide] PROVIDE (PASEL1_H = 0x20d) - [!provide] PROVIDE (P1IV = 0x20e) - [!provide] PROVIDE (P1IV_L = 0x20e) - [!provide] PROVIDE (P1IV_H = 0x20f) - [!provide] PROVIDE (PASELC = 0x216) - [!provide] PROVIDE (PASELC_L = 0x216) - [!provide] PROVIDE (PASELC_H = 0x217) - [!provide] PROVIDE (PAIES = 0x218) - [!provide] PROVIDE (PAIES_L = 0x218) - [!provide] PROVIDE (PAIES_H = 0x219) - [!provide] PROVIDE (PAIE = 0x21a) - [!provide] PROVIDE (PAIE_L = 0x21a) - [!provide] PROVIDE (PAIE_H = 0x21b) - [!provide] PROVIDE (PAIFG = 0x21c) - [!provide] PROVIDE (PAIFG_L = 0x21c) - [!provide] PROVIDE (PAIFG_H = 0x21d) - [!provide] PROVIDE (P2IV = 0x21e) - [!provide] PROVIDE (P2IV_L = 0x21e) - [!provide] PROVIDE (P2IV_H = 0x21f) - [!provide] PROVIDE (PBIN = 0x220) - [!provide] PROVIDE (PBIN_L = 0x220) - [!provide] PROVIDE (PBIN_H = 0x221) - [!provide] PROVIDE (PBOUT = 0x222) - [!provide] PROVIDE (PBOUT_L = 0x222) - [!provide] PROVIDE (PBOUT_H = 0x223) - [!provide] PROVIDE (PBDIR = 0x224) - [!provide] PROVIDE (PBDIR_L = 0x224) - [!provide] PROVIDE (PBDIR_H = 0x225) - [!provide] PROVIDE (PBREN = 0x226) - [!provide] PROVIDE (PBREN_L = 0x226) - [!provide] PROVIDE (PBREN_H = 0x227) - [!provide] PROVIDE (PBSEL0 = 0x22a) - [!provide] PROVIDE (PBSEL0_L = 0x22a) - [!provide] PROVIDE (PBSEL0_H = 0x22b) - [!provide] PROVIDE (PBSEL1 = 0x22c) - [!provide] PROVIDE (PBSEL1_L = 0x22c) - [!provide] PROVIDE (PBSEL1_H = 0x22d) - [!provide] PROVIDE (P3IV = 0x22e) - [!provide] PROVIDE (P3IV_L = 0x22e) - [!provide] PROVIDE (P3IV_H = 0x22f) - [!provide] PROVIDE (PBSELC = 0x236) - [!provide] PROVIDE (PBSELC_L = 0x236) - [!provide] PROVIDE (PBSELC_H = 0x237) - [!provide] PROVIDE (PBIES = 0x238) - [!provide] PROVIDE (PBIES_L = 0x238) - [!provide] PROVIDE (PBIES_H = 0x239) - [!provide] PROVIDE (PBIE = 0x23a) - [!provide] PROVIDE (PBIE_L = 0x23a) - [!provide] PROVIDE (PBIE_H = 0x23b) - [!provide] PROVIDE (PBIFG = 0x23c) - [!provide] PROVIDE (PBIFG_L = 0x23c) - [!provide] PROVIDE (PBIFG_H = 0x23d) - [!provide] PROVIDE (P4IV = 0x23e) - [!provide] PROVIDE (P4IV_L = 0x23e) - [!provide] PROVIDE (P4IV_H = 0x23f) - [!provide] PROVIDE (PCIN = 0x240) - [!provide] PROVIDE (PCIN_L = 0x240) - [!provide] PROVIDE (PCIN_H = 0x241) - [!provide] PROVIDE (PCOUT = 0x242) - [!provide] PROVIDE (PCOUT_L = 0x242) - [!provide] PROVIDE (PCOUT_H = 0x243) - [!provide] PROVIDE (PCDIR = 0x244) - [!provide] PROVIDE (PCDIR_L = 0x244) - [!provide] PROVIDE (PCDIR_H = 0x245) - [!provide] PROVIDE (PCREN = 0x246) - [!provide] PROVIDE (PCREN_L = 0x246) - [!provide] PROVIDE (PCREN_H = 0x247) - [!provide] PROVIDE (PCSEL0 = 0x24a) - [!provide] PROVIDE (PCSEL0_L = 0x24a) - [!provide] PROVIDE (PCSEL0_H = 0x24b) - [!provide] PROVIDE (PCSEL1 = 0x24c) - [!provide] PROVIDE (PCSEL1_L = 0x24c) - [!provide] PROVIDE (PCSEL1_H = 0x24d) - [!provide] PROVIDE (P5IV = 0x24e) - [!provide] PROVIDE (P5IV_L = 0x24e) - [!provide] PROVIDE (P5IV_H = 0x24f) - [!provide] PROVIDE (PCSELC = 0x256) - [!provide] PROVIDE (PCSELC_L = 0x256) - [!provide] PROVIDE (PCSELC_H = 0x257) - [!provide] PROVIDE (PCIES = 0x258) - [!provide] PROVIDE (PCIES_L = 0x258) - [!provide] PROVIDE (PCIES_H = 0x259) - [!provide] PROVIDE (PCIE = 0x25a) - [!provide] PROVIDE (PCIE_L = 0x25a) - [!provide] PROVIDE (PCIE_H = 0x25b) - [!provide] PROVIDE (PCIFG = 0x25c) - [!provide] PROVIDE (PCIFG_L = 0x25c) - [!provide] PROVIDE (PCIFG_H = 0x25d) - [!provide] PROVIDE (P6IV = 0x25e) - [!provide] PROVIDE (P6IV_L = 0x25e) - [!provide] PROVIDE (P6IV_H = 0x25f) - [!provide] PROVIDE (PDIN = 0x260) - [!provide] PROVIDE (PDIN_L = 0x260) - [!provide] PROVIDE (PDIN_H = 0x261) - [!provide] PROVIDE (PDOUT = 0x262) - [!provide] PROVIDE (PDOUT_L = 0x262) - [!provide] PROVIDE (PDOUT_H = 0x263) - [!provide] PROVIDE (PDDIR = 0x264) - [!provide] PROVIDE (PDDIR_L = 0x264) - [!provide] PROVIDE (PDDIR_H = 0x265) - [!provide] PROVIDE (PDREN = 0x266) - [!provide] PROVIDE (PDREN_L = 0x266) - [!provide] PROVIDE (PDREN_H = 0x267) - [!provide] PROVIDE (PDSEL0 = 0x26a) - [!provide] PROVIDE (PDSEL0_L = 0x26a) - [!provide] PROVIDE (PDSEL0_H = 0x26b) - [!provide] PROVIDE (PDSEL1 = 0x26c) - [!provide] PROVIDE (PDSEL1_L = 0x26c) - [!provide] PROVIDE (PDSEL1_H = 0x26d) - [!provide] PROVIDE (P7IV = 0x26e) - [!provide] PROVIDE (P7IV_L = 0x26e) - [!provide] PROVIDE (P7IV_H = 0x26f) - [!provide] PROVIDE (PDSELC = 0x276) - [!provide] PROVIDE (PDSELC_L = 0x276) - [!provide] PROVIDE (PDSELC_H = 0x277) - [!provide] PROVIDE (PDIES = 0x278) - [!provide] PROVIDE (PDIES_L = 0x278) - [!provide] PROVIDE (PDIES_H = 0x279) - [!provide] PROVIDE (PDIE = 0x27a) - [!provide] PROVIDE (PDIE_L = 0x27a) - [!provide] PROVIDE (PDIE_H = 0x27b) - [!provide] PROVIDE (PDIFG = 0x27c) - [!provide] PROVIDE (PDIFG_L = 0x27c) - [!provide] PROVIDE (PDIFG_H = 0x27d) - [!provide] PROVIDE (P8IV = 0x27e) - [!provide] PROVIDE (P8IV_L = 0x27e) - [!provide] PROVIDE (P8IV_H = 0x27f) - [!provide] PROVIDE (PJIN = 0x320) - [!provide] PROVIDE (PJIN_L = 0x320) - [!provide] PROVIDE (PJIN_H = 0x321) - [!provide] PROVIDE (PJOUT = 0x322) - [!provide] PROVIDE (PJOUT_L = 0x322) - [!provide] PROVIDE (PJOUT_H = 0x323) - [!provide] PROVIDE (PJDIR = 0x324) - [!provide] PROVIDE (PJDIR_L = 0x324) - [!provide] PROVIDE (PJDIR_H = 0x325) - [!provide] PROVIDE (PJREN = 0x326) - [!provide] PROVIDE (PJREN_L = 0x326) - [!provide] PROVIDE (PJREN_H = 0x327) - [!provide] PROVIDE (PJSEL0 = 0x32a) - [!provide] PROVIDE (PJSEL0_L = 0x32a) - [!provide] PROVIDE (PJSEL0_H = 0x32b) - [!provide] PROVIDE (PJSEL1 = 0x32c) - [!provide] PROVIDE (PJSEL1_L = 0x32c) - [!provide] PROVIDE (PJSEL1_H = 0x32d) - [!provide] PROVIDE (PJSELC = 0x336) - [!provide] PROVIDE (PJSELC_L = 0x336) - [!provide] PROVIDE (PJSELC_H = 0x337) - [!provide] PROVIDE (P1IN = 0x200) - [!provide] PROVIDE (P2IN = 0x201) - [!provide] PROVIDE (P2OUT = 0x203) - 0x0000000000000202 PROVIDE (P1OUT = 0x202) - 0x0000000000000204 PROVIDE (P1DIR = 0x204) - [!provide] PROVIDE (P2DIR = 0x205) - [!provide] PROVIDE (P1REN = 0x206) - [!provide] PROVIDE (P2REN = 0x207) - [!provide] PROVIDE (P1SEL0 = 0x20a) - 0x000000000000020b PROVIDE (P2SEL0 = 0x20b) - [!provide] PROVIDE (P1SEL1 = 0x20c) - 0x000000000000020d PROVIDE (P2SEL1 = 0x20d) - [!provide] PROVIDE (P1SELC = 0x216) - [!provide] PROVIDE (P2SELC = 0x217) - [!provide] PROVIDE (P1IES = 0x218) - [!provide] PROVIDE (P2IES = 0x219) - [!provide] PROVIDE (P1IE = 0x21a) - [!provide] PROVIDE (P2IE = 0x21b) - [!provide] PROVIDE (P1IFG = 0x21c) - [!provide] PROVIDE (P2IFG = 0x21d) - [!provide] PROVIDE (P3IN = 0x220) - [!provide] PROVIDE (P4IN = 0x221) - [!provide] PROVIDE (P3OUT = 0x222) - [!provide] PROVIDE (P4OUT = 0x223) - [!provide] PROVIDE (P3DIR = 0x224) - [!provide] PROVIDE (P4DIR = 0x225) - [!provide] PROVIDE (P3REN = 0x226) - [!provide] PROVIDE (P4REN = 0x227) - [!provide] PROVIDE (P4SEL0 = 0x22b) - [!provide] PROVIDE (P3SEL0 = 0x22a) - [!provide] PROVIDE (P3SEL1 = 0x22c) - [!provide] PROVIDE (P4SEL1 = 0x22d) - [!provide] PROVIDE (P3SELC = 0x236) - [!provide] PROVIDE (P4SELC = 0x237) - [!provide] PROVIDE (P3IES = 0x238) - [!provide] PROVIDE (P4IES = 0x239) - [!provide] PROVIDE (P3IE = 0x23a) - [!provide] PROVIDE (P4IE = 0x23b) - [!provide] PROVIDE (P3IFG = 0x23c) - [!provide] PROVIDE (P4IFG = 0x23d) - [!provide] PROVIDE (P5IN = 0x240) - [!provide] PROVIDE (P6IN = 0x241) - [!provide] PROVIDE (P5OUT = 0x242) - [!provide] PROVIDE (P6OUT = 0x243) - [!provide] PROVIDE (P5DIR = 0x244) - [!provide] PROVIDE (P6DIR = 0x245) - [!provide] PROVIDE (P5REN = 0x246) - [!provide] PROVIDE (P6REN = 0x247) - [!provide] PROVIDE (P5SEL0 = 0x24a) - [!provide] PROVIDE (P6SEL0 = 0x24b) - [!provide] PROVIDE (P5SEL1 = 0x24c) - [!provide] PROVIDE (P6SEL1 = 0x24d) - [!provide] PROVIDE (P5SELC = 0x256) - [!provide] PROVIDE (P6SELC = 0x257) - [!provide] PROVIDE (P5IES = 0x258) - [!provide] PROVIDE (P6IES = 0x259) - [!provide] PROVIDE (P5IE = 0x25a) - [!provide] PROVIDE (P6IE = 0x25b) - [!provide] PROVIDE (P5IFG = 0x25c) - [!provide] PROVIDE (P6IFG = 0x25d) - [!provide] PROVIDE (P7IN = 0x260) - [!provide] PROVIDE (P8IN = 0x261) - [!provide] PROVIDE (P7OUT = 0x262) - [!provide] PROVIDE (P8OUT = 0x263) - [!provide] PROVIDE (P7DIR = 0x264) - [!provide] PROVIDE (P8DIR = 0x265) - [!provide] PROVIDE (P7REN = 0x266) - [!provide] PROVIDE (P8REN = 0x267) - [!provide] PROVIDE (P7SEL0 = 0x26a) - [!provide] PROVIDE (P8SEL0 = 0x26b) - [!provide] PROVIDE (P7SEL1 = 0x26c) - [!provide] PROVIDE (P8SEL1 = 0x26d) - [!provide] PROVIDE (P7SELC = 0x276) - [!provide] PROVIDE (P8SELC = 0x277) - [!provide] PROVIDE (P7IES = 0x278) - [!provide] PROVIDE (P8IES = 0x279) - [!provide] PROVIDE (P7IE = 0x27a) - [!provide] PROVIDE (P8IE = 0x27b) - [!provide] PROVIDE (P7IFG = 0x27c) - [!provide] PROVIDE (P8IFG = 0x27d) - [!provide] PROVIDE (DMACTL0 = 0x500) - [!provide] PROVIDE (DMACTL0_L = 0x500) - [!provide] PROVIDE (DMACTL0_H = 0x501) - [!provide] PROVIDE (DMACTL1 = 0x502) - [!provide] PROVIDE (DMACTL1_L = 0x502) - [!provide] PROVIDE (DMACTL1_H = 0x503) - [!provide] PROVIDE (DMACTL2 = 0x504) - [!provide] PROVIDE (DMACTL2_L = 0x504) - [!provide] PROVIDE (DMACTL2_H = 0x505) - [!provide] PROVIDE (DMACTL4 = 0x508) - [!provide] PROVIDE (DMACTL4_L = 0x508) - [!provide] PROVIDE (DMACTL4_H = 0x509) - [!provide] PROVIDE (DMAIV = 0x50e) - [!provide] PROVIDE (DMAIV_L = 0x50e) - [!provide] PROVIDE (DMAIV_H = 0x50f) - [!provide] PROVIDE (DMA0CTL = 0x510) - [!provide] PROVIDE (DMA0CTL_L = 0x510) - [!provide] PROVIDE (DMA0CTL_H = 0x511) - [!provide] PROVIDE (DMA0SA = 0x512) - [!provide] PROVIDE (DMA0SAL = 0x512) - [!provide] PROVIDE (DMA0SAH = 0x514) - [!provide] PROVIDE (DMA0DA = 0x516) - [!provide] PROVIDE (DMA0DAL = 0x516) - [!provide] PROVIDE (DMA0DAH = 0x518) - [!provide] PROVIDE (DMA0SZ = 0x51a) - [!provide] PROVIDE (DMA0SZ_L = 0x51a) - [!provide] PROVIDE (DMA0SZ_H = 0x51b) - [!provide] PROVIDE (DMA1CTL = 0x520) - [!provide] PROVIDE (DMA1CTL_L = 0x520) - [!provide] PROVIDE (DMA1CTL_H = 0x521) - [!provide] PROVIDE (DMA1SA = 0x522) - [!provide] PROVIDE (DMA1SAL = 0x522) - [!provide] PROVIDE (DMA1SAH = 0x524) - [!provide] PROVIDE (DMA1DA = 0x526) - [!provide] PROVIDE (DMA1DAL = 0x526) - [!provide] PROVIDE (DMA1DAH = 0x528) - [!provide] PROVIDE (DMA1SZ = 0x52a) - [!provide] PROVIDE (DMA1SZ_L = 0x52a) - [!provide] PROVIDE (DMA1SZ_H = 0x52b) - [!provide] PROVIDE (DMA2CTL = 0x530) - [!provide] PROVIDE (DMA2CTL_L = 0x530) - [!provide] PROVIDE (DMA2CTL_H = 0x531) - [!provide] PROVIDE (DMA2SA = 0x532) - [!provide] PROVIDE (DMA2SAL = 0x532) - [!provide] PROVIDE (DMA2SAH = 0x534) - [!provide] PROVIDE (DMA2DA = 0x536) - [!provide] PROVIDE (DMA2DAL = 0x536) - [!provide] PROVIDE (DMA2DAH = 0x538) - [!provide] PROVIDE (DMA2SZ = 0x53a) - [!provide] PROVIDE (DMA2SZ_L = 0x53a) - [!provide] PROVIDE (DMA2SZ_H = 0x53b) - [!provide] PROVIDE (DMA3CTL = 0x540) - [!provide] PROVIDE (DMA3CTL_L = 0x540) - [!provide] PROVIDE (DMA3CTL_H = 0x541) - [!provide] PROVIDE (DMA3SA = 0x542) - [!provide] PROVIDE (DMA3SAL = 0x542) - [!provide] PROVIDE (DMA3SAH = 0x544) - [!provide] PROVIDE (DMA3DA = 0x546) - [!provide] PROVIDE (DMA3DAL = 0x546) - [!provide] PROVIDE (DMA3DAH = 0x548) - [!provide] PROVIDE (DMA3SZ = 0x54a) - [!provide] PROVIDE (DMA3SZ_L = 0x54a) - [!provide] PROVIDE (DMA3SZ_H = 0x54b) - [!provide] PROVIDE (DMA4CTL = 0x550) - [!provide] PROVIDE (DMA4CTL_L = 0x550) - [!provide] PROVIDE (DMA4CTL_H = 0x551) - [!provide] PROVIDE (DMA4SA = 0x552) - [!provide] PROVIDE (DMA4SAL = 0x552) - [!provide] PROVIDE (DMA4SAH = 0x554) - [!provide] PROVIDE (DMA4DA = 0x556) - [!provide] PROVIDE (DMA4DAL = 0x556) - [!provide] PROVIDE (DMA4DAH = 0x558) - [!provide] PROVIDE (DMA4SZ = 0x55a) - [!provide] PROVIDE (DMA4SZ_L = 0x55a) - [!provide] PROVIDE (DMA4SZ_H = 0x55b) - [!provide] PROVIDE (DMA5CTL = 0x560) - [!provide] PROVIDE (DMA5CTL_L = 0x560) - [!provide] PROVIDE (DMA5CTL_H = 0x561) - [!provide] PROVIDE (DMA5SA = 0x562) - [!provide] PROVIDE (DMA5SAL = 0x562) - [!provide] PROVIDE (DMA5SAH = 0x564) - [!provide] PROVIDE (DMA5DA = 0x566) - [!provide] PROVIDE (DMA5DAL = 0x566) - [!provide] PROVIDE (DMA5DAH = 0x568) - [!provide] PROVIDE (DMA5SZ = 0x56a) - [!provide] PROVIDE (DMA5SZ_L = 0x56a) - [!provide] PROVIDE (DMA5SZ_H = 0x56b) - 0x0000000000000140 PROVIDE (FRCTL0 = 0x140) - [!provide] PROVIDE (FRCTL0_L = 0x140) - [!provide] PROVIDE (FRCTL0_H = 0x141) - [!provide] PROVIDE (GCCTL0 = 0x144) - [!provide] PROVIDE (GCCTL0_L = 0x144) - [!provide] PROVIDE (GCCTL0_H = 0x145) - [!provide] PROVIDE (GCCTL1 = 0x146) - [!provide] PROVIDE (GCCTL1_L = 0x146) - [!provide] PROVIDE (GCCTL1_H = 0x147) - [!provide] PROVIDE (LEACAP = 0xa80) - [!provide] PROVIDE (LEACAPL = 0xa80) - [!provide] PROVIDE (LEACAPH = 0xa82) - 0x0000000000000a84 PROVIDE (LEACNF0 = 0xa84) - [!provide] PROVIDE (LEACNF0L = 0xa84) - [!provide] PROVIDE (LEACNF0H = 0xa86) - 0x0000000000000a88 PROVIDE (LEACNF1 = 0xa88) - [!provide] PROVIDE (LEACNF1L = 0xa88) - [!provide] PROVIDE (LEACNF1H = 0xa8a) - 0x0000000000000a8c PROVIDE (LEACNF2 = 0xa8c) - [!provide] PROVIDE (LEACNF2L = 0xa8c) - [!provide] PROVIDE (LEACNF2H = 0xa8e) - 0x0000000000000a90 PROVIDE (LEAMB = 0xa90) - [!provide] PROVIDE (LEAMBL = 0xa90) - [!provide] PROVIDE (LEAMBH = 0xa92) - 0x0000000000000a94 PROVIDE (LEAMT = 0xa94) - [!provide] PROVIDE (LEAMTL = 0xa94) - [!provide] PROVIDE (LEAMTH = 0xa96) - 0x0000000000000a98 PROVIDE (LEACMA = 0xa98) - [!provide] PROVIDE (LEACMAL = 0xa98) - [!provide] PROVIDE (LEACMAH = 0xa9a) - 0x0000000000000a9c PROVIDE (LEACMCTL = 0xa9c) - [!provide] PROVIDE (LEACMCTLL = 0xa9c) - [!provide] PROVIDE (LEACMCTLH = 0xa9e) - [!provide] PROVIDE (LEACMDSTAT = 0xaa8) - [!provide] PROVIDE (LEACMDSTATL = 0xaa8) - [!provide] PROVIDE (LEACMDSTATH = 0xaaa) - [!provide] PROVIDE (LEAS1STAT = 0xaac) - [!provide] PROVIDE (LEAS1STATL = 0xaac) - [!provide] PROVIDE (LEAS1STATH = 0xaae) - [!provide] PROVIDE (LEAS0STAT = 0xab0) - [!provide] PROVIDE (LEAS0STATL = 0xab0) - [!provide] PROVIDE (LEAS0STATH = 0xab2) - [!provide] PROVIDE (LEADSTSTAT = 0xab4) - [!provide] PROVIDE (LEADSTSTATL = 0xab4) - [!provide] PROVIDE (LEADSTSTATH = 0xab6) - 0x0000000000000ac0 PROVIDE (LEAPMCTL = 0xac0) - [!provide] PROVIDE (LEAPMCTLL = 0xac0) - [!provide] PROVIDE (LEAPMCTLH = 0xac2) - 0x0000000000000ac4 PROVIDE (LEAPMDST = 0xac4) - [!provide] PROVIDE (LEAPMDSTL = 0xac4) - [!provide] PROVIDE (LEAPMDSTH = 0xac6) - 0x0000000000000ac8 PROVIDE (LEAPMS1 = 0xac8) - [!provide] PROVIDE (LEAPMS1L = 0xac8) - [!provide] PROVIDE (LEAPMS1H = 0xaca) - 0x0000000000000acc PROVIDE (LEAPMS0 = 0xacc) - [!provide] PROVIDE (LEAPMS0L = 0xacc) - [!provide] PROVIDE (LEAPMS0H = 0xace) - 0x0000000000000ad0 PROVIDE (LEAPMCB = 0xad0) - [!provide] PROVIDE (LEAPMCBL = 0xad0) - [!provide] PROVIDE (LEAPMCBH = 0xad2) - [!provide] PROVIDE (LEAIFGSET = 0xaf0) - [!provide] PROVIDE (LEAIFGSETL = 0xaf0) - [!provide] PROVIDE (LEAIFGSETH = 0xaf2) - 0x0000000000000af4 PROVIDE (LEAIE = 0xaf4) - [!provide] PROVIDE (LEAIEL = 0xaf4) - [!provide] PROVIDE (LEAIEH = 0xaf6) - 0x0000000000000af8 PROVIDE (LEAIFG = 0xaf8) - [!provide] PROVIDE (LEAIFGL = 0xaf8) - [!provide] PROVIDE (LEAIFGH = 0xafa) - [!provide] PROVIDE (LEAIV = 0xafc) - [!provide] PROVIDE (LEAIVL = 0xafc) - [!provide] PROVIDE (LEAIVH = 0xafe) - 0x00000000000005a0 PROVIDE (MPUCTL0 = 0x5a0) - [!provide] PROVIDE (MPUCTL0_L = 0x5a0) - 0x00000000000005a1 PROVIDE (MPUCTL0_H = 0x5a1) - [!provide] PROVIDE (MPUCTL1 = 0x5a2) - [!provide] PROVIDE (MPUCTL1_L = 0x5a2) - [!provide] PROVIDE (MPUCTL1_H = 0x5a3) - 0x00000000000005a4 PROVIDE (MPUSEGB2 = 0x5a4) - [!provide] PROVIDE (MPUSEGB2_L = 0x5a4) - [!provide] PROVIDE (MPUSEGB2_H = 0x5a5) - 0x00000000000005a6 PROVIDE (MPUSEGB1 = 0x5a6) - [!provide] PROVIDE (MPUSEGB1_L = 0x5a6) - [!provide] PROVIDE (MPUSEGB1_H = 0x5a7) - 0x00000000000005a8 PROVIDE (MPUSAM = 0x5a8) - [!provide] PROVIDE (MPUSAM_L = 0x5a8) - [!provide] PROVIDE (MPUSAM_H = 0x5a9) - [!provide] PROVIDE (MPUIPC0 = 0x5aa) - [!provide] PROVIDE (MPUIPC0_L = 0x5aa) - [!provide] PROVIDE (MPUIPC0_H = 0x5ab) - [!provide] PROVIDE (MPUIPSEGB2 = 0x5ac) - [!provide] PROVIDE (MPUIPSEGB2_L = 0x5ac) - [!provide] PROVIDE (MPUIPSEGB2_H = 0x5ad) - [!provide] PROVIDE (MPUIPSEGB1 = 0x5ae) - [!provide] PROVIDE (MPUIPSEGB1_L = 0x5ae) - [!provide] PROVIDE (MPUIPSEGB1_H = 0x5af) - [!provide] PROVIDE (MPY = 0x4c0) - [!provide] PROVIDE (MPY_L = 0x4c0) - [!provide] PROVIDE (MPY_H = 0x4c1) - 0x00000000000004c2 PROVIDE (MPYS = 0x4c2) - [!provide] PROVIDE (MPYS_L = 0x4c2) - [!provide] PROVIDE (MPYS_H = 0x4c3) - [!provide] PROVIDE (MAC = 0x4c4) - [!provide] PROVIDE (MAC_L = 0x4c4) - [!provide] PROVIDE (MAC_H = 0x4c5) - [!provide] PROVIDE (MACS = 0x4c6) - [!provide] PROVIDE (MACS_L = 0x4c6) - [!provide] PROVIDE (MACS_H = 0x4c7) - 0x00000000000004c8 PROVIDE (OP2 = 0x4c8) - [!provide] PROVIDE (OP2_L = 0x4c8) - [!provide] PROVIDE (OP2_H = 0x4c9) - [!provide] PROVIDE (RESLO = 0x4ca) - [!provide] PROVIDE (RESLO_L = 0x4ca) - [!provide] PROVIDE (RESLO_H = 0x4cb) - 0x00000000000004cc PROVIDE (RESHI = 0x4cc) - [!provide] PROVIDE (RESHI_L = 0x4cc) - [!provide] PROVIDE (RESHI_H = 0x4cd) - [!provide] PROVIDE (SUMEXT = 0x4ce) - [!provide] PROVIDE (SUMEXT_L = 0x4ce) - [!provide] PROVIDE (SUMEXT_H = 0x4cf) - [!provide] PROVIDE (MPY32L = 0x4d0) - [!provide] PROVIDE (MPY32L_L = 0x4d0) - [!provide] PROVIDE (MPY32L_H = 0x4d1) - [!provide] PROVIDE (MPY32H = 0x4d2) - [!provide] PROVIDE (MPY32H_L = 0x4d2) - [!provide] PROVIDE (MPY32H_H = 0x4d3) - 0x00000000000004d4 PROVIDE (MPYS32L = 0x4d4) - [!provide] PROVIDE (MPYS32L_L = 0x4d4) - [!provide] PROVIDE (MPYS32L_H = 0x4d5) - 0x00000000000004d6 PROVIDE (MPYS32H = 0x4d6) - [!provide] PROVIDE (MPYS32H_L = 0x4d6) - [!provide] PROVIDE (MPYS32H_H = 0x4d7) - [!provide] PROVIDE (MAC32L = 0x4d8) - [!provide] PROVIDE (MAC32L_L = 0x4d8) - [!provide] PROVIDE (MAC32L_H = 0x4d9) - [!provide] PROVIDE (MAC32H = 0x4da) - [!provide] PROVIDE (MAC32H_L = 0x4da) - [!provide] PROVIDE (MAC32H_H = 0x4db) - 0x00000000000004dc PROVIDE (MACS32L = 0x4dc) - [!provide] PROVIDE (MACS32L_L = 0x4dc) - [!provide] PROVIDE (MACS32L_H = 0x4dd) - 0x00000000000004de PROVIDE (MACS32H = 0x4de) - [!provide] PROVIDE (MACS32H_L = 0x4de) - [!provide] PROVIDE (MACS32H_H = 0x4df) - 0x00000000000004e0 PROVIDE (OP2L = 0x4e0) - [!provide] PROVIDE (OP2L_L = 0x4e0) - [!provide] PROVIDE (OP2L_H = 0x4e1) - 0x00000000000004e2 PROVIDE (OP2H = 0x4e2) - [!provide] PROVIDE (OP2H_L = 0x4e2) - [!provide] PROVIDE (OP2H_H = 0x4e3) - 0x00000000000004e4 PROVIDE (RES0 = 0x4e4) - [!provide] PROVIDE (RES0_L = 0x4e4) - [!provide] PROVIDE (RES0_H = 0x4e5) - 0x00000000000004e6 PROVIDE (RES1 = 0x4e6) - [!provide] PROVIDE (RES1_L = 0x4e6) - [!provide] PROVIDE (RES1_H = 0x4e7) - 0x00000000000004e8 PROVIDE (RES2 = 0x4e8) - [!provide] PROVIDE (RES2_L = 0x4e8) - [!provide] PROVIDE (RES2_H = 0x4e9) - 0x00000000000004ea PROVIDE (RES3 = 0x4ea) - [!provide] PROVIDE (RES3_L = 0x4ea) - [!provide] PROVIDE (RES3_H = 0x4eb) - 0x00000000000004ec PROVIDE (MPY32CTL0 = 0x4ec) - [!provide] PROVIDE (MPY32CTL0_L = 0x4ec) - [!provide] PROVIDE (MPY32CTL0_H = 0x4ed) - [!provide] PROVIDE (PMMCTL0 = 0x120) - [!provide] PROVIDE (PMMCTL0_L = 0x120) - [!provide] PROVIDE (PMMCTL0_H = 0x121) - [!provide] PROVIDE (PMMIFG = 0x12a) - [!provide] PROVIDE (PMMIFG_L = 0x12a) - [!provide] PROVIDE (PMMIFG_H = 0x12b) - 0x0000000000000130 PROVIDE (PM5CTL0 = 0x130) - [!provide] PROVIDE (PM5CTL0_L = 0x130) - [!provide] PROVIDE (PM5CTL0_H = 0x131) - [!provide] PROVIDE (RCCTL0 = 0x158) - [!provide] PROVIDE (RCCTL0_L = 0x158) - [!provide] PROVIDE (RCCTL0_H = 0x159) - [!provide] PROVIDE (REFCTL0 = 0x1b0) - [!provide] PROVIDE (REFCTL0_L = 0x1b0) - [!provide] PROVIDE (REFCTL0_H = 0x1b1) - [!provide] PROVIDE (RTCCTL0 = 0x4a0) - [!provide] PROVIDE (RTCCTL0_L = 0x4a0) - [!provide] PROVIDE (RTCCTL0_H = 0x4a1) - [!provide] PROVIDE (RTCCTL13 = 0x4a2) - [!provide] PROVIDE (RTCCTL13_L = 0x4a2) - [!provide] PROVIDE (RTCCTL13_H = 0x4a3) - [!provide] PROVIDE (RTCOCAL = 0x4a4) - [!provide] PROVIDE (RTCOCAL_L = 0x4a4) - [!provide] PROVIDE (RTCOCAL_H = 0x4a5) - [!provide] PROVIDE (RTCTCMP = 0x4a6) - [!provide] PROVIDE (RTCTCMP_L = 0x4a6) - [!provide] PROVIDE (RTCTCMP_H = 0x4a7) - [!provide] PROVIDE (RTCPS0CTL = 0x4a8) - [!provide] PROVIDE (RTCPS0CTL_L = 0x4a8) - [!provide] PROVIDE (RTCPS0CTL_H = 0x4a9) - [!provide] PROVIDE (RTCPS1CTL = 0x4aa) - [!provide] PROVIDE (RTCPS1CTL_L = 0x4aa) - [!provide] PROVIDE (RTCPS1CTL_H = 0x4ab) - [!provide] PROVIDE (RTCPS = 0x4ac) - [!provide] PROVIDE (RTCPS_L = 0x4ac) - [!provide] PROVIDE (RTCPS_H = 0x4ad) - [!provide] PROVIDE (RTCIV = 0x4ae) - [!provide] PROVIDE (RTCIV_L = 0x4ae) - [!provide] PROVIDE (RTCIV_H = 0x4af) - [!provide] PROVIDE (RTCTIM0 = 0x4b0) - [!provide] PROVIDE (RTCTIM0_L = 0x4b0) - [!provide] PROVIDE (RTCTIM0_H = 0x4b1) - [!provide] PROVIDE (RTCCNT12 = 0x4b0) - [!provide] PROVIDE (RTCCNT12_L = 0x4b0) - [!provide] PROVIDE (RTCCNT12_H = 0x4b1) - [!provide] PROVIDE (RTCTIM1 = 0x4b2) - [!provide] PROVIDE (RTCTIM1_L = 0x4b2) - [!provide] PROVIDE (RTCTIM1_H = 0x4b3) - [!provide] PROVIDE (RTCCNT34 = 0x4b2) - [!provide] PROVIDE (RTCCNT34_L = 0x4b2) - [!provide] PROVIDE (RTCCNT34_H = 0x4b3) - [!provide] PROVIDE (RTCDATE = 0x4b4) - [!provide] PROVIDE (RTCDATE_L = 0x4b4) - [!provide] PROVIDE (RTCDATE_H = 0x4b5) - [!provide] PROVIDE (RTCYEAR = 0x4b6) - [!provide] PROVIDE (RTCYEAR_L = 0x4b6) - [!provide] PROVIDE (RTCYEAR_H = 0x4b7) - [!provide] PROVIDE (RTCAMINHR = 0x4b8) - [!provide] PROVIDE (RTCAMINHR_L = 0x4b8) - [!provide] PROVIDE (RTCAMINHR_H = 0x4b9) - [!provide] PROVIDE (RTCADOWDAY = 0x4ba) - [!provide] PROVIDE (RTCADOWDAY_L = 0x4ba) - [!provide] PROVIDE (RTCADOWDAY_H = 0x4bb) - [!provide] PROVIDE (BIN2BCD = 0x4bc) - [!provide] PROVIDE (BIN2BCD_L = 0x4bc) - [!provide] PROVIDE (BIN2BCD_H = 0x4bd) - [!provide] PROVIDE (BCD2BIN = 0x4be) - [!provide] PROVIDE (BCD2BIN_L = 0x4be) - [!provide] PROVIDE (BCD2BIN_H = 0x4bf) - [!provide] PROVIDE (RT0PS = 0x4ac) - [!provide] PROVIDE (RT1PS = 0x4ad) - [!provide] PROVIDE (RTCCNT1 = 0x4b0) - [!provide] PROVIDE (RTCCNT2 = 0x4b1) - [!provide] PROVIDE (RTCCNT3 = 0x4b2) - [!provide] PROVIDE (RTCCNT4 = 0x4b3) - [!provide] PROVIDE (SFRIE1 = 0x100) - [!provide] PROVIDE (SFRIE1_L = 0x100) - [!provide] PROVIDE (SFRIE1_H = 0x101) - [!provide] PROVIDE (SFRIFG1 = 0x102) - [!provide] PROVIDE (SFRIFG1_L = 0x102) - [!provide] PROVIDE (SFRIFG1_H = 0x103) - [!provide] PROVIDE (SFRRPCR = 0x104) - [!provide] PROVIDE (SFRRPCR_L = 0x104) - [!provide] PROVIDE (SFRRPCR_H = 0x105) - [!provide] PROVIDE (SYSCTL = 0x180) - [!provide] PROVIDE (SYSCTL_L = 0x180) - [!provide] PROVIDE (SYSCTL_H = 0x181) - [!provide] PROVIDE (SYSJMBC = 0x186) - [!provide] PROVIDE (SYSJMBC_L = 0x186) - [!provide] PROVIDE (SYSJMBC_H = 0x187) - [!provide] PROVIDE (SYSJMBI0 = 0x188) - [!provide] PROVIDE (SYSJMBI0_L = 0x188) - [!provide] PROVIDE (SYSJMBI0_H = 0x189) - [!provide] PROVIDE (SYSJMBI1 = 0x18a) - [!provide] PROVIDE (SYSJMBI1_L = 0x18a) - [!provide] PROVIDE (SYSJMBI1_H = 0x18b) - [!provide] PROVIDE (SYSJMBO0 = 0x18c) - [!provide] PROVIDE (SYSJMBO0_L = 0x18c) - [!provide] PROVIDE (SYSJMBO0_H = 0x18d) - [!provide] PROVIDE (SYSJMBO1 = 0x18e) - [!provide] PROVIDE (SYSJMBO1_L = 0x18e) - [!provide] PROVIDE (SYSJMBO1_H = 0x18f) - [!provide] PROVIDE (SYSUNIV = 0x19a) - [!provide] PROVIDE (SYSUNIV_L = 0x19a) - [!provide] PROVIDE (SYSUNIV_H = 0x19b) - [!provide] PROVIDE (SYSSNIV = 0x19c) - [!provide] PROVIDE (SYSSNIV_L = 0x19c) - [!provide] PROVIDE (SYSSNIV_H = 0x19d) - [!provide] PROVIDE (SYSRSTIV = 0x19e) - [!provide] PROVIDE (SYSRSTIV_L = 0x19e) - [!provide] PROVIDE (SYSRSTIV_H = 0x19f) - [!provide] PROVIDE (TA0CTL = 0x340) - [!provide] PROVIDE (TA0CTL_L = 0x340) - [!provide] PROVIDE (TA0CTL_H = 0x341) - [!provide] PROVIDE (TA0CCTL0 = 0x342) - [!provide] PROVIDE (TA0CCTL0_L = 0x342) - [!provide] PROVIDE (TA0CCTL0_H = 0x343) - [!provide] PROVIDE (TA0CCTL1 = 0x344) - [!provide] PROVIDE (TA0CCTL1_L = 0x344) - [!provide] PROVIDE (TA0CCTL1_H = 0x345) - [!provide] PROVIDE (TA0CCTL2 = 0x346) - [!provide] PROVIDE (TA0CCTL2_L = 0x346) - [!provide] PROVIDE (TA0CCTL2_H = 0x347) - [!provide] PROVIDE (TA0R = 0x350) - [!provide] PROVIDE (TA0R_L = 0x350) - [!provide] PROVIDE (TA0R_H = 0x351) - [!provide] PROVIDE (TA0CCR0 = 0x352) - [!provide] PROVIDE (TA0CCR0_L = 0x352) - [!provide] PROVIDE (TA0CCR0_H = 0x353) - [!provide] PROVIDE (TA0CCR1 = 0x354) - [!provide] PROVIDE (TA0CCR1_L = 0x354) - [!provide] PROVIDE (TA0CCR1_H = 0x355) - [!provide] PROVIDE (TA0CCR2 = 0x356) - [!provide] PROVIDE (TA0CCR2_L = 0x356) - [!provide] PROVIDE (TA0CCR2_H = 0x357) - [!provide] PROVIDE (TA0EX0 = 0x360) - [!provide] PROVIDE (TA0EX0_L = 0x360) - [!provide] PROVIDE (TA0EX0_H = 0x361) - [!provide] PROVIDE (TA0IV = 0x36e) - [!provide] PROVIDE (TA0IV_L = 0x36e) - [!provide] PROVIDE (TA0IV_H = 0x36f) - [!provide] PROVIDE (TA1CTL = 0x380) - [!provide] PROVIDE (TA1CTL_L = 0x380) - [!provide] PROVIDE (TA1CTL_H = 0x381) - [!provide] PROVIDE (TA1CCTL0 = 0x382) - [!provide] PROVIDE (TA1CCTL0_L = 0x382) - [!provide] PROVIDE (TA1CCTL0_H = 0x383) - [!provide] PROVIDE (TA1CCTL1 = 0x384) - [!provide] PROVIDE (TA1CCTL1_L = 0x384) - [!provide] PROVIDE (TA1CCTL1_H = 0x385) - [!provide] PROVIDE (TA1CCTL2 = 0x386) - [!provide] PROVIDE (TA1CCTL2_L = 0x386) - [!provide] PROVIDE (TA1CCTL2_H = 0x387) - [!provide] PROVIDE (TA1R = 0x390) - [!provide] PROVIDE (TA1R_L = 0x390) - [!provide] PROVIDE (TA1R_H = 0x391) - [!provide] PROVIDE (TA1CCR0 = 0x392) - [!provide] PROVIDE (TA1CCR0_L = 0x392) - [!provide] PROVIDE (TA1CCR0_H = 0x393) - [!provide] PROVIDE (TA1CCR1 = 0x394) - [!provide] PROVIDE (TA1CCR1_L = 0x394) - [!provide] PROVIDE (TA1CCR1_H = 0x395) - [!provide] PROVIDE (TA1CCR2 = 0x396) - [!provide] PROVIDE (TA1CCR2_L = 0x396) - [!provide] PROVIDE (TA1CCR2_H = 0x397) - [!provide] PROVIDE (TA1EX0 = 0x3a0) - [!provide] PROVIDE (TA1EX0_L = 0x3a0) - [!provide] PROVIDE (TA1EX0_H = 0x3a1) - [!provide] PROVIDE (TA1IV = 0x3ae) - [!provide] PROVIDE (TA1IV_L = 0x3ae) - [!provide] PROVIDE (TA1IV_H = 0x3af) - [!provide] PROVIDE (TA2CTL = 0x400) - [!provide] PROVIDE (TA2CTL_L = 0x400) - [!provide] PROVIDE (TA2CTL_H = 0x401) - [!provide] PROVIDE (TA2CCTL0 = 0x402) - [!provide] PROVIDE (TA2CCTL0_L = 0x402) - [!provide] PROVIDE (TA2CCTL0_H = 0x403) - [!provide] PROVIDE (TA2CCTL1 = 0x404) - [!provide] PROVIDE (TA2CCTL1_L = 0x404) - [!provide] PROVIDE (TA2CCTL1_H = 0x405) - [!provide] PROVIDE (TA2R = 0x410) - [!provide] PROVIDE (TA2R_L = 0x410) - [!provide] PROVIDE (TA2R_H = 0x411) - [!provide] PROVIDE (TA2CCR0 = 0x412) - [!provide] PROVIDE (TA2CCR0_L = 0x412) - [!provide] PROVIDE (TA2CCR0_H = 0x413) - [!provide] PROVIDE (TA2CCR1 = 0x414) - [!provide] PROVIDE (TA2CCR1_L = 0x414) - [!provide] PROVIDE (TA2CCR1_H = 0x415) - [!provide] PROVIDE (TA2EX0 = 0x420) - [!provide] PROVIDE (TA2EX0_L = 0x420) - [!provide] PROVIDE (TA2EX0_H = 0x421) - [!provide] PROVIDE (TA2IV = 0x42e) - [!provide] PROVIDE (TA2IV_L = 0x42e) - [!provide] PROVIDE (TA2IV_H = 0x42f) - 0x0000000000000440 PROVIDE (TA3CTL = 0x440) - [!provide] PROVIDE (TA3CTL_L = 0x440) - [!provide] PROVIDE (TA3CTL_H = 0x441) - 0x0000000000000442 PROVIDE (TA3CCTL0 = 0x442) - [!provide] PROVIDE (TA3CCTL0_L = 0x442) - [!provide] PROVIDE (TA3CCTL0_H = 0x443) - [!provide] PROVIDE (TA3CCTL1 = 0x444) - [!provide] PROVIDE (TA3CCTL1_L = 0x444) - [!provide] PROVIDE (TA3CCTL1_H = 0x445) - [!provide] PROVIDE (TA3R = 0x450) - [!provide] PROVIDE (TA3R_L = 0x450) - [!provide] PROVIDE (TA3R_H = 0x451) - 0x0000000000000452 PROVIDE (TA3CCR0 = 0x452) - [!provide] PROVIDE (TA3CCR0_L = 0x452) - [!provide] PROVIDE (TA3CCR0_H = 0x453) - [!provide] PROVIDE (TA3CCR1 = 0x454) - [!provide] PROVIDE (TA3CCR1_L = 0x454) - [!provide] PROVIDE (TA3CCR1_H = 0x455) - [!provide] PROVIDE (TA3EX0 = 0x460) - [!provide] PROVIDE (TA3EX0_L = 0x460) - [!provide] PROVIDE (TA3EX0_H = 0x461) - [!provide] PROVIDE (TA3IV = 0x46e) - [!provide] PROVIDE (TA3IV_L = 0x46e) - [!provide] PROVIDE (TA3IV_H = 0x46f) - [!provide] PROVIDE (TA4CTL = 0x7c0) - [!provide] PROVIDE (TA4CTL_L = 0x7c0) - [!provide] PROVIDE (TA4CTL_H = 0x7c1) - [!provide] PROVIDE (TA4CCTL0 = 0x7c2) - [!provide] PROVIDE (TA4CCTL0_L = 0x7c2) - [!provide] PROVIDE (TA4CCTL0_H = 0x7c3) - [!provide] PROVIDE (TA4CCTL1 = 0x7c4) - [!provide] PROVIDE (TA4CCTL1_L = 0x7c4) - [!provide] PROVIDE (TA4CCTL1_H = 0x7c5) - [!provide] PROVIDE (TA4CCTL2 = 0x7c6) - [!provide] PROVIDE (TA4CCTL2_L = 0x7c6) - [!provide] PROVIDE (TA4CCTL2_H = 0x7c7) - [!provide] PROVIDE (TA4R = 0x7d0) - [!provide] PROVIDE (TA4R_L = 0x7d0) - [!provide] PROVIDE (TA4R_H = 0x7d1) - [!provide] PROVIDE (TA4CCR0 = 0x7d2) - [!provide] PROVIDE (TA4CCR0_L = 0x7d2) - [!provide] PROVIDE (TA4CCR0_H = 0x7d3) - [!provide] PROVIDE (TA4CCR1 = 0x7d4) - [!provide] PROVIDE (TA4CCR1_L = 0x7d4) - [!provide] PROVIDE (TA4CCR1_H = 0x7d5) - [!provide] PROVIDE (TA4CCR2 = 0x7d6) - [!provide] PROVIDE (TA4CCR2_L = 0x7d6) - [!provide] PROVIDE (TA4CCR2_H = 0x7d7) - [!provide] PROVIDE (TA4EX0 = 0x7e0) - [!provide] PROVIDE (TA4EX0_L = 0x7e0) - [!provide] PROVIDE (TA4EX0_H = 0x7e1) - [!provide] PROVIDE (TA4IV = 0x7ee) - [!provide] PROVIDE (TA4IV_L = 0x7ee) - [!provide] PROVIDE (TA4IV_H = 0x7ef) - [!provide] PROVIDE (TB0CTL = 0x3c0) - [!provide] PROVIDE (TB0CTL_L = 0x3c0) - [!provide] PROVIDE (TB0CTL_H = 0x3c1) - [!provide] PROVIDE (TB0CCTL0 = 0x3c2) - [!provide] PROVIDE (TB0CCTL0_L = 0x3c2) - [!provide] PROVIDE (TB0CCTL0_H = 0x3c3) - [!provide] PROVIDE (TB0CCTL1 = 0x3c4) - [!provide] PROVIDE (TB0CCTL1_L = 0x3c4) - [!provide] PROVIDE (TB0CCTL1_H = 0x3c5) - [!provide] PROVIDE (TB0CCTL2 = 0x3c6) - [!provide] PROVIDE (TB0CCTL2_L = 0x3c6) - [!provide] PROVIDE (TB0CCTL2_H = 0x3c7) - [!provide] PROVIDE (TB0CCTL3 = 0x3c8) - [!provide] PROVIDE (TB0CCTL3_L = 0x3c8) - [!provide] PROVIDE (TB0CCTL3_H = 0x3c9) - [!provide] PROVIDE (TB0CCTL4 = 0x3ca) - [!provide] PROVIDE (TB0CCTL4_L = 0x3ca) - [!provide] PROVIDE (TB0CCTL4_H = 0x3cb) - [!provide] PROVIDE (TB0CCTL5 = 0x3cc) - [!provide] PROVIDE (TB0CCTL5_L = 0x3cc) - [!provide] PROVIDE (TB0CCTL5_H = 0x3cd) - [!provide] PROVIDE (TB0CCTL6 = 0x3ce) - [!provide] PROVIDE (TB0CCTL6_L = 0x3ce) - [!provide] PROVIDE (TB0CCTL6_H = 0x3cf) - [!provide] PROVIDE (TB0R = 0x3d0) - [!provide] PROVIDE (TB0R_L = 0x3d0) - [!provide] PROVIDE (TB0R_H = 0x3d1) - [!provide] PROVIDE (TB0CCR0 = 0x3d2) - [!provide] PROVIDE (TB0CCR0_L = 0x3d2) - [!provide] PROVIDE (TB0CCR0_H = 0x3d3) - [!provide] PROVIDE (TB0CCR1 = 0x3d4) - [!provide] PROVIDE (TB0CCR1_L = 0x3d4) - [!provide] PROVIDE (TB0CCR1_H = 0x3d5) - [!provide] PROVIDE (TB0CCR2 = 0x3d6) - [!provide] PROVIDE (TB0CCR2_L = 0x3d6) - [!provide] PROVIDE (TB0CCR2_H = 0x3d7) - [!provide] PROVIDE (TB0CCR3 = 0x3d8) - [!provide] PROVIDE (TB0CCR3_L = 0x3d8) - [!provide] PROVIDE (TB0CCR3_H = 0x3d9) - [!provide] PROVIDE (TB0CCR4 = 0x3da) - [!provide] PROVIDE (TB0CCR4_L = 0x3da) - [!provide] PROVIDE (TB0CCR4_H = 0x3db) - [!provide] PROVIDE (TB0CCR5 = 0x3dc) - [!provide] PROVIDE (TB0CCR5_L = 0x3dc) - [!provide] PROVIDE (TB0CCR5_H = 0x3dd) - [!provide] PROVIDE (TB0CCR6 = 0x3de) - [!provide] PROVIDE (TB0CCR6_L = 0x3de) - [!provide] PROVIDE (TB0CCR6_H = 0x3df) - [!provide] PROVIDE (TB0EX0 = 0x3e0) - [!provide] PROVIDE (TB0EX0_L = 0x3e0) - [!provide] PROVIDE (TB0EX0_H = 0x3e1) - [!provide] PROVIDE (TB0IV = 0x3ee) - [!provide] PROVIDE (TB0IV_L = 0x3ee) - [!provide] PROVIDE (TB0IV_H = 0x3ef) - 0x000000000000015c PROVIDE (WDTCTL = 0x15c) - [!provide] PROVIDE (WDTCTL_L = 0x15c) - [!provide] PROVIDE (WDTCTL_H = 0x15d) - 0x00000000000005c0 PROVIDE (UCA0CTLW0 = 0x5c0) - [!provide] PROVIDE (UCA0CTLW0_L = 0x5c0) - [!provide] PROVIDE (UCA0CTLW0_H = 0x5c1) - [!provide] PROVIDE (UCA0CTLW1 = 0x5c2) - [!provide] PROVIDE (UCA0CTLW1_L = 0x5c2) - [!provide] PROVIDE (UCA0CTLW1_H = 0x5c3) - 0x00000000000005c6 PROVIDE (UCA0BRW = 0x5c6) - [!provide] PROVIDE (UCA0BRW_L = 0x5c6) - [!provide] PROVIDE (UCA0BRW_H = 0x5c7) - 0x00000000000005c8 PROVIDE (UCA0MCTLW = 0x5c8) - [!provide] PROVIDE (UCA0MCTLW_L = 0x5c8) - [!provide] PROVIDE (UCA0MCTLW_H = 0x5c9) - [!provide] PROVIDE (UCA0STATW = 0x5ca) - [!provide] PROVIDE (UCA0STATW_L = 0x5ca) - [!provide] PROVIDE (UCA0STATW_H = 0x5cb) - 0x00000000000005cc PROVIDE (UCA0RXBUF = 0x5cc) - [!provide] PROVIDE (UCA0RXBUF_L = 0x5cc) - [!provide] PROVIDE (UCA0RXBUF_H = 0x5cd) - 0x00000000000005ce PROVIDE (UCA0TXBUF = 0x5ce) - [!provide] PROVIDE (UCA0TXBUF_L = 0x5ce) - [!provide] PROVIDE (UCA0TXBUF_H = 0x5cf) - [!provide] PROVIDE (UCA0ABCTL = 0x5d0) - [!provide] PROVIDE (UCA0ABCTL_L = 0x5d0) - [!provide] PROVIDE (UCA0ABCTL_H = 0x5d1) - [!provide] PROVIDE (UCA0IRCTL = 0x5d2) - [!provide] PROVIDE (UCA0IRCTL_L = 0x5d2) - [!provide] PROVIDE (UCA0IRCTL_H = 0x5d3) - 0x00000000000005da PROVIDE (UCA0IE = 0x5da) - [!provide] PROVIDE (UCA0IE_L = 0x5da) - [!provide] PROVIDE (UCA0IE_H = 0x5db) - 0x00000000000005dc PROVIDE (UCA0IFG = 0x5dc) - [!provide] PROVIDE (UCA0IFG_L = 0x5dc) - [!provide] PROVIDE (UCA0IFG_H = 0x5dd) - 0x00000000000005de PROVIDE (UCA0IV = 0x5de) - [!provide] PROVIDE (UCA0IV_L = 0x5de) - [!provide] PROVIDE (UCA0IV_H = 0x5df) - [!provide] PROVIDE (UCA1CTLW0 = 0x5e0) - [!provide] PROVIDE (UCA1CTLW0_L = 0x5e0) - [!provide] PROVIDE (UCA1CTLW0_H = 0x5e1) - [!provide] PROVIDE (UCA1CTLW1 = 0x5e2) - [!provide] PROVIDE (UCA1CTLW1_L = 0x5e2) - [!provide] PROVIDE (UCA1CTLW1_H = 0x5e3) - [!provide] PROVIDE (UCA1BRW = 0x5e6) - [!provide] PROVIDE (UCA1BRW_L = 0x5e6) - [!provide] PROVIDE (UCA1BRW_H = 0x5e7) - [!provide] PROVIDE (UCA1MCTLW = 0x5e8) - [!provide] PROVIDE (UCA1MCTLW_L = 0x5e8) - [!provide] PROVIDE (UCA1MCTLW_H = 0x5e9) - [!provide] PROVIDE (UCA1STATW = 0x5ea) - [!provide] PROVIDE (UCA1STATW_L = 0x5ea) - [!provide] PROVIDE (UCA1STATW_H = 0x5eb) - [!provide] PROVIDE (UCA1RXBUF = 0x5ec) - [!provide] PROVIDE (UCA1RXBUF_L = 0x5ec) - [!provide] PROVIDE (UCA1RXBUF_H = 0x5ed) - [!provide] PROVIDE (UCA1TXBUF = 0x5ee) - [!provide] PROVIDE (UCA1TXBUF_L = 0x5ee) - [!provide] PROVIDE (UCA1TXBUF_H = 0x5ef) - [!provide] PROVIDE (UCA1ABCTL = 0x5f0) - [!provide] PROVIDE (UCA1ABCTL_L = 0x5f0) - [!provide] PROVIDE (UCA1ABCTL_H = 0x5f1) - [!provide] PROVIDE (UCA1IRCTL = 0x5f2) - [!provide] PROVIDE (UCA1IRCTL_L = 0x5f2) - [!provide] PROVIDE (UCA1IRCTL_H = 0x5f3) - [!provide] PROVIDE (UCA1IE = 0x5fa) - [!provide] PROVIDE (UCA1IE_L = 0x5fa) - [!provide] PROVIDE (UCA1IE_H = 0x5fb) - [!provide] PROVIDE (UCA1IFG = 0x5fc) - [!provide] PROVIDE (UCA1IFG_L = 0x5fc) - [!provide] PROVIDE (UCA1IFG_H = 0x5fd) - [!provide] PROVIDE (UCA1IV = 0x5fe) - [!provide] PROVIDE (UCA1IV_L = 0x5fe) - [!provide] PROVIDE (UCA1IV_H = 0x5ff) - [!provide] PROVIDE (UCA2CTLW0 = 0x600) - [!provide] PROVIDE (UCA2CTLW0_L = 0x600) - [!provide] PROVIDE (UCA2CTLW0_H = 0x601) - [!provide] PROVIDE (UCA2CTLW1 = 0x602) - [!provide] PROVIDE (UCA2CTLW1_L = 0x602) - [!provide] PROVIDE (UCA2CTLW1_H = 0x603) - [!provide] PROVIDE (UCA2BRW = 0x606) - [!provide] PROVIDE (UCA2BRW_L = 0x606) - [!provide] PROVIDE (UCA2BRW_H = 0x607) - [!provide] PROVIDE (UCA2MCTLW = 0x608) - [!provide] PROVIDE (UCA2MCTLW_L = 0x608) - [!provide] PROVIDE (UCA2MCTLW_H = 0x609) - [!provide] PROVIDE (UCA2STATW = 0x60a) - [!provide] PROVIDE (UCA2STATW_L = 0x60a) - [!provide] PROVIDE (UCA2STATW_H = 0x60b) - [!provide] PROVIDE (UCA2RXBUF = 0x60c) - [!provide] PROVIDE (UCA2RXBUF_L = 0x60c) - [!provide] PROVIDE (UCA2RXBUF_H = 0x60d) - [!provide] PROVIDE (UCA2TXBUF = 0x60e) - [!provide] PROVIDE (UCA2TXBUF_L = 0x60e) - [!provide] PROVIDE (UCA2TXBUF_H = 0x60f) - [!provide] PROVIDE (UCA2ABCTL = 0x610) - [!provide] PROVIDE (UCA2ABCTL_L = 0x610) - [!provide] PROVIDE (UCA2ABCTL_H = 0x611) - [!provide] PROVIDE (UCA2IRCTL = 0x612) - [!provide] PROVIDE (UCA2IRCTL_L = 0x612) - [!provide] PROVIDE (UCA2IRCTL_H = 0x613) - [!provide] PROVIDE (UCA2IE = 0x61a) - [!provide] PROVIDE (UCA2IE_L = 0x61a) - [!provide] PROVIDE (UCA2IE_H = 0x61b) - [!provide] PROVIDE (UCA2IFG = 0x61c) - [!provide] PROVIDE (UCA2IFG_L = 0x61c) - [!provide] PROVIDE (UCA2IFG_H = 0x61d) - [!provide] PROVIDE (UCA2IV = 0x61e) - [!provide] PROVIDE (UCA2IV_L = 0x61e) - [!provide] PROVIDE (UCA2IV_H = 0x61f) - [!provide] PROVIDE (UCA3CTLW0 = 0x620) - [!provide] PROVIDE (UCA3CTLW0_L = 0x620) - [!provide] PROVIDE (UCA3CTLW0_H = 0x621) - [!provide] PROVIDE (UCA3CTLW1 = 0x622) - [!provide] PROVIDE (UCA3CTLW1_L = 0x622) - [!provide] PROVIDE (UCA3CTLW1_H = 0x623) - [!provide] PROVIDE (UCA3BRW = 0x626) - [!provide] PROVIDE (UCA3BRW_L = 0x626) - [!provide] PROVIDE (UCA3BRW_H = 0x627) - [!provide] PROVIDE (UCA3MCTLW = 0x628) - [!provide] PROVIDE (UCA3MCTLW_L = 0x628) - [!provide] PROVIDE (UCA3MCTLW_H = 0x629) - [!provide] PROVIDE (UCA3STATW = 0x62a) - [!provide] PROVIDE (UCA3STATW_L = 0x62a) - [!provide] PROVIDE (UCA3STATW_H = 0x62b) - [!provide] PROVIDE (UCA3RXBUF = 0x62c) - [!provide] PROVIDE (UCA3RXBUF_L = 0x62c) - [!provide] PROVIDE (UCA3RXBUF_H = 0x62d) - [!provide] PROVIDE (UCA3TXBUF = 0x62e) - [!provide] PROVIDE (UCA3TXBUF_L = 0x62e) - [!provide] PROVIDE (UCA3TXBUF_H = 0x62f) - [!provide] PROVIDE (UCA3ABCTL = 0x630) - [!provide] PROVIDE (UCA3ABCTL_L = 0x630) - [!provide] PROVIDE (UCA3ABCTL_H = 0x631) - [!provide] PROVIDE (UCA3IRCTL = 0x632) - [!provide] PROVIDE (UCA3IRCTL_L = 0x632) - [!provide] PROVIDE (UCA3IRCTL_H = 0x633) - [!provide] PROVIDE (UCA3IE = 0x63a) - [!provide] PROVIDE (UCA3IE_L = 0x63a) - [!provide] PROVIDE (UCA3IE_H = 0x63b) - [!provide] PROVIDE (UCA3IFG = 0x63c) - [!provide] PROVIDE (UCA3IFG_L = 0x63c) - [!provide] PROVIDE (UCA3IFG_H = 0x63d) - [!provide] PROVIDE (UCA3IV = 0x63e) - [!provide] PROVIDE (UCA3IV_L = 0x63e) - [!provide] PROVIDE (UCA3IV_H = 0x63f) - [!provide] PROVIDE (UCB0CTLW0 = 0x640) - [!provide] PROVIDE (UCB0CTLW0_L = 0x640) - [!provide] PROVIDE (UCB0CTLW0_H = 0x641) - [!provide] PROVIDE (UCB0CTLW1 = 0x642) - [!provide] PROVIDE (UCB0CTLW1_L = 0x642) - [!provide] PROVIDE (UCB0CTLW1_H = 0x643) - [!provide] PROVIDE (UCB0BRW = 0x646) - [!provide] PROVIDE (UCB0BRW_L = 0x646) - [!provide] PROVIDE (UCB0BRW_H = 0x647) - [!provide] PROVIDE (UCB0STATW = 0x648) - [!provide] PROVIDE (UCB0STATW_L = 0x648) - [!provide] PROVIDE (UCB0STATW_H = 0x649) - [!provide] PROVIDE (UCB0TBCNT = 0x64a) - [!provide] PROVIDE (UCB0TBCNT_L = 0x64a) - [!provide] PROVIDE (UCB0TBCNT_H = 0x64b) - [!provide] PROVIDE (UCB0RXBUF = 0x64c) - [!provide] PROVIDE (UCB0RXBUF_L = 0x64c) - [!provide] PROVIDE (UCB0RXBUF_H = 0x64d) - [!provide] PROVIDE (UCB0TXBUF = 0x64e) - [!provide] PROVIDE (UCB0TXBUF_L = 0x64e) - [!provide] PROVIDE (UCB0TXBUF_H = 0x64f) - [!provide] PROVIDE (UCB0I2COA0 = 0x654) - [!provide] PROVIDE (UCB0I2COA0_L = 0x654) - [!provide] PROVIDE (UCB0I2COA0_H = 0x655) - [!provide] PROVIDE (UCB0I2COA1 = 0x656) - [!provide] PROVIDE (UCB0I2COA1_L = 0x656) - [!provide] PROVIDE (UCB0I2COA1_H = 0x657) - [!provide] PROVIDE (UCB0I2COA2 = 0x658) - [!provide] PROVIDE (UCB0I2COA2_L = 0x658) - [!provide] PROVIDE (UCB0I2COA2_H = 0x659) - [!provide] PROVIDE (UCB0I2COA3 = 0x65a) - [!provide] PROVIDE (UCB0I2COA3_L = 0x65a) - [!provide] PROVIDE (UCB0I2COA3_H = 0x65b) - [!provide] PROVIDE (UCB0ADDRX = 0x65c) - [!provide] PROVIDE (UCB0ADDRX_L = 0x65c) - [!provide] PROVIDE (UCB0ADDRX_H = 0x65d) - [!provide] PROVIDE (UCB0ADDMASK = 0x65e) - [!provide] PROVIDE (UCB0ADDMASK_L = 0x65e) - [!provide] PROVIDE (UCB0ADDMASK_H = 0x65f) - [!provide] PROVIDE (UCB0I2CSA = 0x660) - [!provide] PROVIDE (UCB0I2CSA_L = 0x660) - [!provide] PROVIDE (UCB0I2CSA_H = 0x661) - [!provide] PROVIDE (UCB0IE = 0x66a) - [!provide] PROVIDE (UCB0IE_L = 0x66a) - [!provide] PROVIDE (UCB0IE_H = 0x66b) - [!provide] PROVIDE (UCB0IFG = 0x66c) - [!provide] PROVIDE (UCB0IFG_L = 0x66c) - [!provide] PROVIDE (UCB0IFG_H = 0x66d) - [!provide] PROVIDE (UCB0IV = 0x66e) - [!provide] PROVIDE (UCB0IV_L = 0x66e) - [!provide] PROVIDE (UCB0IV_H = 0x66f) - [!provide] PROVIDE (UCB1CTLW0 = 0x680) - [!provide] PROVIDE (UCB1CTLW0_L = 0x680) - [!provide] PROVIDE (UCB1CTLW0_H = 0x681) - [!provide] PROVIDE (UCB1CTLW1 = 0x682) - [!provide] PROVIDE (UCB1CTLW1_L = 0x682) - [!provide] PROVIDE (UCB1CTLW1_H = 0x683) - [!provide] PROVIDE (UCB1BRW = 0x686) - [!provide] PROVIDE (UCB1BRW_L = 0x686) - [!provide] PROVIDE (UCB1BRW_H = 0x687) - [!provide] PROVIDE (UCB1STATW = 0x688) - [!provide] PROVIDE (UCB1STATW_L = 0x688) - [!provide] PROVIDE (UCB1STATW_H = 0x689) - [!provide] PROVIDE (UCB1TBCNT = 0x68a) - [!provide] PROVIDE (UCB1TBCNT_L = 0x68a) - [!provide] PROVIDE (UCB1TBCNT_H = 0x68b) - [!provide] PROVIDE (UCB1RXBUF = 0x68c) - [!provide] PROVIDE (UCB1RXBUF_L = 0x68c) - [!provide] PROVIDE (UCB1RXBUF_H = 0x68d) - [!provide] PROVIDE (UCB1TXBUF = 0x68e) - [!provide] PROVIDE (UCB1TXBUF_L = 0x68e) - [!provide] PROVIDE (UCB1TXBUF_H = 0x68f) - [!provide] PROVIDE (UCB1I2COA0 = 0x694) - [!provide] PROVIDE (UCB1I2COA0_L = 0x694) - [!provide] PROVIDE (UCB1I2COA0_H = 0x695) - [!provide] PROVIDE (UCB1I2COA1 = 0x696) - [!provide] PROVIDE (UCB1I2COA1_L = 0x696) - [!provide] PROVIDE (UCB1I2COA1_H = 0x697) - [!provide] PROVIDE (UCB1I2COA2 = 0x698) - [!provide] PROVIDE (UCB1I2COA2_L = 0x698) - [!provide] PROVIDE (UCB1I2COA2_H = 0x699) - [!provide] PROVIDE (UCB1I2COA3 = 0x69a) - [!provide] PROVIDE (UCB1I2COA3_L = 0x69a) - [!provide] PROVIDE (UCB1I2COA3_H = 0x69b) - [!provide] PROVIDE (UCB1ADDRX = 0x69c) - [!provide] PROVIDE (UCB1ADDRX_L = 0x69c) - [!provide] PROVIDE (UCB1ADDRX_H = 0x69d) - [!provide] PROVIDE (UCB1ADDMASK = 0x69e) - [!provide] PROVIDE (UCB1ADDMASK_L = 0x69e) - [!provide] PROVIDE (UCB1ADDMASK_H = 0x69f) - [!provide] PROVIDE (UCB1I2CSA = 0x6a0) - [!provide] PROVIDE (UCB1I2CSA_L = 0x6a0) - [!provide] PROVIDE (UCB1I2CSA_H = 0x6a1) - [!provide] PROVIDE (UCB1IE = 0x6aa) - [!provide] PROVIDE (UCB1IE_L = 0x6aa) - [!provide] PROVIDE (UCB1IE_H = 0x6ab) - [!provide] PROVIDE (UCB1IFG = 0x6ac) - [!provide] PROVIDE (UCB1IFG_L = 0x6ac) - [!provide] PROVIDE (UCB1IFG_H = 0x6ad) - [!provide] PROVIDE (UCB1IV = 0x6ae) - [!provide] PROVIDE (UCB1IV_L = 0x6ae) - [!provide] PROVIDE (UCB1IV_H = 0x6af) - [!provide] PROVIDE (UCB2CTLW0 = 0x6c0) - [!provide] PROVIDE (UCB2CTLW0_L = 0x6c0) - [!provide] PROVIDE (UCB2CTLW0_H = 0x6c1) - [!provide] PROVIDE (UCB2CTLW1 = 0x6c2) - [!provide] PROVIDE (UCB2CTLW1_L = 0x6c2) - [!provide] PROVIDE (UCB2CTLW1_H = 0x6c3) - [!provide] PROVIDE (UCB2BRW = 0x6c6) - [!provide] PROVIDE (UCB2BRW_L = 0x6c6) - [!provide] PROVIDE (UCB2BRW_H = 0x6c7) - [!provide] PROVIDE (UCB2STATW = 0x6c8) - [!provide] PROVIDE (UCB2STATW_L = 0x6c8) - [!provide] PROVIDE (UCB2STATW_H = 0x6c9) - [!provide] PROVIDE (UCB2TBCNT = 0x6ca) - [!provide] PROVIDE (UCB2TBCNT_L = 0x6ca) - [!provide] PROVIDE (UCB2TBCNT_H = 0x6cb) - [!provide] PROVIDE (UCB2RXBUF = 0x6cc) - [!provide] PROVIDE (UCB2RXBUF_L = 0x6cc) - [!provide] PROVIDE (UCB2RXBUF_H = 0x6cd) - [!provide] PROVIDE (UCB2TXBUF = 0x6ce) - [!provide] PROVIDE (UCB2TXBUF_L = 0x6ce) - [!provide] PROVIDE (UCB2TXBUF_H = 0x6cf) - [!provide] PROVIDE (UCB2I2COA0 = 0x6d4) - [!provide] PROVIDE (UCB2I2COA0_L = 0x6d4) - [!provide] PROVIDE (UCB2I2COA0_H = 0x6d5) - [!provide] PROVIDE (UCB2I2COA1 = 0x6d6) - [!provide] PROVIDE (UCB2I2COA1_L = 0x6d6) - [!provide] PROVIDE (UCB2I2COA1_H = 0x6d7) - [!provide] PROVIDE (UCB2I2COA2 = 0x6d8) - [!provide] PROVIDE (UCB2I2COA2_L = 0x6d8) - [!provide] PROVIDE (UCB2I2COA2_H = 0x6d9) - [!provide] PROVIDE (UCB2I2COA3 = 0x6da) - [!provide] PROVIDE (UCB2I2COA3_L = 0x6da) - [!provide] PROVIDE (UCB2I2COA3_H = 0x6db) - [!provide] PROVIDE (UCB2ADDRX = 0x6dc) - [!provide] PROVIDE (UCB2ADDRX_L = 0x6dc) - [!provide] PROVIDE (UCB2ADDRX_H = 0x6dd) - [!provide] PROVIDE (UCB2ADDMASK = 0x6de) - [!provide] PROVIDE (UCB2ADDMASK_L = 0x6de) - [!provide] PROVIDE (UCB2ADDMASK_H = 0x6df) - [!provide] PROVIDE (UCB2I2CSA = 0x6e0) - [!provide] PROVIDE (UCB2I2CSA_L = 0x6e0) - [!provide] PROVIDE (UCB2I2CSA_H = 0x6e1) - [!provide] PROVIDE (UCB2IE = 0x6ea) - [!provide] PROVIDE (UCB2IE_L = 0x6ea) - [!provide] PROVIDE (UCB2IE_H = 0x6eb) - [!provide] PROVIDE (UCB2IFG = 0x6ec) - [!provide] PROVIDE (UCB2IFG_L = 0x6ec) - [!provide] PROVIDE (UCB2IFG_H = 0x6ed) - [!provide] PROVIDE (UCB2IV = 0x6ee) - [!provide] PROVIDE (UCB2IV_L = 0x6ee) - [!provide] PROVIDE (UCB2IV_H = 0x6ef) - [!provide] PROVIDE (UCB3CTLW0 = 0x700) - [!provide] PROVIDE (UCB3CTLW0_L = 0x700) - [!provide] PROVIDE (UCB3CTLW0_H = 0x701) - [!provide] PROVIDE (UCB3CTLW1 = 0x702) - [!provide] PROVIDE (UCB3CTLW1_L = 0x702) - [!provide] PROVIDE (UCB3CTLW1_H = 0x703) - [!provide] PROVIDE (UCB3BRW = 0x706) - [!provide] PROVIDE (UCB3BRW_L = 0x706) - [!provide] PROVIDE (UCB3BRW_H = 0x707) - [!provide] PROVIDE (UCB3STATW = 0x708) - [!provide] PROVIDE (UCB3STATW_L = 0x708) - [!provide] PROVIDE (UCB3STATW_H = 0x709) - [!provide] PROVIDE (UCB3TBCNT = 0x70a) - [!provide] PROVIDE (UCB3TBCNT_L = 0x70a) - [!provide] PROVIDE (UCB3TBCNT_H = 0x70b) - [!provide] PROVIDE (UCB3RXBUF = 0x70c) - [!provide] PROVIDE (UCB3RXBUF_L = 0x70c) - [!provide] PROVIDE (UCB3RXBUF_H = 0x70d) - [!provide] PROVIDE (UCB3TXBUF = 0x70e) - [!provide] PROVIDE (UCB3TXBUF_L = 0x70e) - [!provide] PROVIDE (UCB3TXBUF_H = 0x70f) - [!provide] PROVIDE (UCB3I2COA0 = 0x714) - [!provide] PROVIDE (UCB3I2COA0_L = 0x714) - [!provide] PROVIDE (UCB3I2COA0_H = 0x715) - [!provide] PROVIDE (UCB3I2COA1 = 0x716) - [!provide] PROVIDE (UCB3I2COA1_L = 0x716) - [!provide] PROVIDE (UCB3I2COA1_H = 0x717) - [!provide] PROVIDE (UCB3I2COA2 = 0x718) - [!provide] PROVIDE (UCB3I2COA2_L = 0x718) - [!provide] PROVIDE (UCB3I2COA2_H = 0x719) - [!provide] PROVIDE (UCB3I2COA3 = 0x71a) - [!provide] PROVIDE (UCB3I2COA3_L = 0x71a) - [!provide] PROVIDE (UCB3I2COA3_H = 0x71b) - [!provide] PROVIDE (UCB3ADDRX = 0x71c) - [!provide] PROVIDE (UCB3ADDRX_L = 0x71c) - [!provide] PROVIDE (UCB3ADDRX_H = 0x71d) - [!provide] PROVIDE (UCB3ADDMASK = 0x71e) - [!provide] PROVIDE (UCB3ADDMASK_L = 0x71e) - [!provide] PROVIDE (UCB3ADDMASK_H = 0x71f) - [!provide] PROVIDE (UCB3I2CSA = 0x720) - [!provide] PROVIDE (UCB3I2CSA_L = 0x720) - [!provide] PROVIDE (UCB3I2CSA_H = 0x721) - [!provide] PROVIDE (UCB3IE = 0x72a) - [!provide] PROVIDE (UCB3IE_L = 0x72a) - [!provide] PROVIDE (UCB3IE_H = 0x72b) - [!provide] PROVIDE (UCB3IFG = 0x72c) - [!provide] PROVIDE (UCB3IFG_L = 0x72c) - [!provide] PROVIDE (UCB3IFG_H = 0x72d) - [!provide] PROVIDE (UCB3IV = 0x72e) - [!provide] PROVIDE (UCB3IV_L = 0x72e) - [!provide] PROVIDE (UCB3IV_H = 0x72f) - 0x0000000000000800 __ADC12CTL0 = 0x800 - 0x0000000000000800 __ADC12CTL0_L = 0x800 - 0x0000000000000801 __ADC12CTL0_H = 0x801 - 0x0000000000000802 __ADC12CTL1 = 0x802 - 0x0000000000000802 __ADC12CTL1_L = 0x802 - 0x0000000000000803 __ADC12CTL1_H = 0x803 - 0x0000000000000804 __ADC12CTL2 = 0x804 - 0x0000000000000804 __ADC12CTL2_L = 0x804 - 0x0000000000000805 __ADC12CTL2_H = 0x805 - 0x0000000000000806 __ADC12CTL3 = 0x806 - 0x0000000000000806 __ADC12CTL3_L = 0x806 - 0x0000000000000807 __ADC12CTL3_H = 0x807 - 0x0000000000000808 __ADC12LO = 0x808 - 0x0000000000000808 __ADC12LO_L = 0x808 - 0x0000000000000809 __ADC12LO_H = 0x809 - 0x000000000000080a __ADC12HI = 0x80a - 0x000000000000080a __ADC12HI_L = 0x80a - 0x000000000000080b __ADC12HI_H = 0x80b - 0x000000000000080c __ADC12IFGR0 = 0x80c - 0x000000000000080c __ADC12IFGR0_L = 0x80c - 0x000000000000080d __ADC12IFGR0_H = 0x80d - 0x000000000000080e __ADC12IFGR1 = 0x80e - 0x000000000000080e __ADC12IFGR1_L = 0x80e - 0x000000000000080f __ADC12IFGR1_H = 0x80f - 0x0000000000000810 __ADC12IFGR2 = 0x810 - 0x0000000000000810 __ADC12IFGR2_L = 0x810 - 0x0000000000000811 __ADC12IFGR2_H = 0x811 - 0x0000000000000812 __ADC12IER0 = 0x812 - 0x0000000000000812 __ADC12IER0_L = 0x812 - 0x0000000000000813 __ADC12IER0_H = 0x813 - 0x0000000000000814 __ADC12IER1 = 0x814 - 0x0000000000000814 __ADC12IER1_L = 0x814 - 0x0000000000000815 __ADC12IER1_H = 0x815 - 0x0000000000000816 __ADC12IER2 = 0x816 - 0x0000000000000816 __ADC12IER2_L = 0x816 - 0x0000000000000817 __ADC12IER2_H = 0x817 - 0x0000000000000818 __ADC12IV = 0x818 - 0x0000000000000818 __ADC12IV_L = 0x818 - 0x0000000000000819 __ADC12IV_H = 0x819 - 0x0000000000000820 __ADC12MCTL0 = 0x820 - 0x0000000000000820 __ADC12MCTL0_L = 0x820 - 0x0000000000000821 __ADC12MCTL0_H = 0x821 - 0x0000000000000822 __ADC12MCTL1 = 0x822 - 0x0000000000000822 __ADC12MCTL1_L = 0x822 - 0x0000000000000823 __ADC12MCTL1_H = 0x823 - 0x0000000000000824 __ADC12MCTL2 = 0x824 - 0x0000000000000824 __ADC12MCTL2_L = 0x824 - 0x0000000000000825 __ADC12MCTL2_H = 0x825 - 0x0000000000000826 __ADC12MCTL3 = 0x826 - 0x0000000000000826 __ADC12MCTL3_L = 0x826 - 0x0000000000000827 __ADC12MCTL3_H = 0x827 - 0x0000000000000828 __ADC12MCTL4 = 0x828 - 0x0000000000000828 __ADC12MCTL4_L = 0x828 - 0x0000000000000829 __ADC12MCTL4_H = 0x829 - 0x000000000000082a __ADC12MCTL5 = 0x82a - 0x000000000000082a __ADC12MCTL5_L = 0x82a - 0x000000000000082b __ADC12MCTL5_H = 0x82b - 0x000000000000082c __ADC12MCTL6 = 0x82c - 0x000000000000082c __ADC12MCTL6_L = 0x82c - 0x000000000000082d __ADC12MCTL6_H = 0x82d - 0x000000000000082e __ADC12MCTL7 = 0x82e - 0x000000000000082e __ADC12MCTL7_L = 0x82e - 0x000000000000082f __ADC12MCTL7_H = 0x82f - 0x0000000000000830 __ADC12MCTL8 = 0x830 - 0x0000000000000830 __ADC12MCTL8_L = 0x830 - 0x0000000000000831 __ADC12MCTL8_H = 0x831 - 0x0000000000000832 __ADC12MCTL9 = 0x832 - 0x0000000000000832 __ADC12MCTL9_L = 0x832 - 0x0000000000000833 __ADC12MCTL9_H = 0x833 - 0x0000000000000834 __ADC12MCTL10 = 0x834 - 0x0000000000000834 __ADC12MCTL10_L = 0x834 - 0x0000000000000835 __ADC12MCTL10_H = 0x835 - 0x0000000000000836 __ADC12MCTL11 = 0x836 - 0x0000000000000836 __ADC12MCTL11_L = 0x836 - 0x0000000000000837 __ADC12MCTL11_H = 0x837 - 0x0000000000000838 __ADC12MCTL12 = 0x838 - 0x0000000000000838 __ADC12MCTL12_L = 0x838 - 0x0000000000000839 __ADC12MCTL12_H = 0x839 - 0x000000000000083a __ADC12MCTL13 = 0x83a - 0x000000000000083a __ADC12MCTL13_L = 0x83a - 0x000000000000083b __ADC12MCTL13_H = 0x83b - 0x000000000000083c __ADC12MCTL14 = 0x83c - 0x000000000000083c __ADC12MCTL14_L = 0x83c - 0x000000000000083d __ADC12MCTL14_H = 0x83d - 0x000000000000083e __ADC12MCTL15 = 0x83e - 0x000000000000083e __ADC12MCTL15_L = 0x83e - 0x000000000000083f __ADC12MCTL15_H = 0x83f - 0x0000000000000840 __ADC12MCTL16 = 0x840 - 0x0000000000000840 __ADC12MCTL16_L = 0x840 - 0x0000000000000841 __ADC12MCTL16_H = 0x841 - 0x0000000000000842 __ADC12MCTL17 = 0x842 - 0x0000000000000842 __ADC12MCTL17_L = 0x842 - 0x0000000000000843 __ADC12MCTL17_H = 0x843 - 0x0000000000000844 __ADC12MCTL18 = 0x844 - 0x0000000000000844 __ADC12MCTL18_L = 0x844 - 0x0000000000000845 __ADC12MCTL18_H = 0x845 - 0x0000000000000846 __ADC12MCTL19 = 0x846 - 0x0000000000000846 __ADC12MCTL19_L = 0x846 - 0x0000000000000847 __ADC12MCTL19_H = 0x847 - 0x0000000000000848 __ADC12MCTL20 = 0x848 - 0x0000000000000848 __ADC12MCTL20_L = 0x848 - 0x0000000000000849 __ADC12MCTL20_H = 0x849 - 0x000000000000084a __ADC12MCTL21 = 0x84a - 0x000000000000084a __ADC12MCTL21_L = 0x84a - 0x000000000000084b __ADC12MCTL21_H = 0x84b - 0x000000000000084c __ADC12MCTL22 = 0x84c - 0x000000000000084c __ADC12MCTL22_L = 0x84c - 0x000000000000084d __ADC12MCTL22_H = 0x84d - 0x000000000000084e __ADC12MCTL23 = 0x84e - 0x000000000000084e __ADC12MCTL23_L = 0x84e - 0x000000000000084f __ADC12MCTL23_H = 0x84f - 0x0000000000000850 __ADC12MCTL24 = 0x850 - 0x0000000000000850 __ADC12MCTL24_L = 0x850 - 0x0000000000000851 __ADC12MCTL24_H = 0x851 - 0x0000000000000852 __ADC12MCTL25 = 0x852 - 0x0000000000000852 __ADC12MCTL25_L = 0x852 - 0x0000000000000853 __ADC12MCTL25_H = 0x853 - 0x0000000000000854 __ADC12MCTL26 = 0x854 - 0x0000000000000854 __ADC12MCTL26_L = 0x854 - 0x0000000000000855 __ADC12MCTL26_H = 0x855 - 0x0000000000000856 __ADC12MCTL27 = 0x856 - 0x0000000000000856 __ADC12MCTL27_L = 0x856 - 0x0000000000000857 __ADC12MCTL27_H = 0x857 - 0x0000000000000858 __ADC12MCTL28 = 0x858 - 0x0000000000000858 __ADC12MCTL28_L = 0x858 - 0x0000000000000859 __ADC12MCTL28_H = 0x859 - 0x000000000000085a __ADC12MCTL29 = 0x85a - 0x000000000000085a __ADC12MCTL29_L = 0x85a - 0x000000000000085b __ADC12MCTL29_H = 0x85b - 0x000000000000085c __ADC12MCTL30 = 0x85c - 0x000000000000085c __ADC12MCTL30_L = 0x85c - 0x000000000000085d __ADC12MCTL30_H = 0x85d - 0x000000000000085e __ADC12MCTL31 = 0x85e - 0x000000000000085e __ADC12MCTL31_L = 0x85e - 0x000000000000085f __ADC12MCTL31_H = 0x85f - 0x0000000000000860 __ADC12MEM0 = 0x860 - 0x0000000000000860 __ADC12MEM0_L = 0x860 - 0x0000000000000861 __ADC12MEM0_H = 0x861 - 0x0000000000000862 __ADC12MEM1 = 0x862 - 0x0000000000000862 __ADC12MEM1_L = 0x862 - 0x0000000000000863 __ADC12MEM1_H = 0x863 - 0x0000000000000864 __ADC12MEM2 = 0x864 - 0x0000000000000864 __ADC12MEM2_L = 0x864 - 0x0000000000000865 __ADC12MEM2_H = 0x865 - 0x0000000000000866 __ADC12MEM3 = 0x866 - 0x0000000000000866 __ADC12MEM3_L = 0x866 - 0x0000000000000867 __ADC12MEM3_H = 0x867 - 0x0000000000000868 __ADC12MEM4 = 0x868 - 0x0000000000000868 __ADC12MEM4_L = 0x868 - 0x0000000000000869 __ADC12MEM4_H = 0x869 - 0x000000000000086a __ADC12MEM5 = 0x86a - 0x000000000000086a __ADC12MEM5_L = 0x86a - 0x000000000000086b __ADC12MEM5_H = 0x86b - 0x000000000000086c __ADC12MEM6 = 0x86c - 0x000000000000086c __ADC12MEM6_L = 0x86c - 0x000000000000086d __ADC12MEM6_H = 0x86d - 0x000000000000086e __ADC12MEM7 = 0x86e - 0x000000000000086e __ADC12MEM7_L = 0x86e - 0x000000000000086f __ADC12MEM7_H = 0x86f - 0x0000000000000870 __ADC12MEM8 = 0x870 - 0x0000000000000870 __ADC12MEM8_L = 0x870 - 0x0000000000000871 __ADC12MEM8_H = 0x871 - 0x0000000000000872 __ADC12MEM9 = 0x872 - 0x0000000000000872 __ADC12MEM9_L = 0x872 - 0x0000000000000873 __ADC12MEM9_H = 0x873 - 0x0000000000000874 __ADC12MEM10 = 0x874 - 0x0000000000000874 __ADC12MEM10_L = 0x874 - 0x0000000000000875 __ADC12MEM10_H = 0x875 - 0x0000000000000876 __ADC12MEM11 = 0x876 - 0x0000000000000876 __ADC12MEM11_L = 0x876 - 0x0000000000000877 __ADC12MEM11_H = 0x877 - 0x0000000000000878 __ADC12MEM12 = 0x878 - 0x0000000000000878 __ADC12MEM12_L = 0x878 - 0x0000000000000879 __ADC12MEM12_H = 0x879 - 0x000000000000087a __ADC12MEM13 = 0x87a - 0x000000000000087a __ADC12MEM13_L = 0x87a - 0x000000000000087b __ADC12MEM13_H = 0x87b - 0x000000000000087c __ADC12MEM14 = 0x87c - 0x000000000000087c __ADC12MEM14_L = 0x87c - 0x000000000000087d __ADC12MEM14_H = 0x87d - 0x000000000000087e __ADC12MEM15 = 0x87e - 0x000000000000087e __ADC12MEM15_L = 0x87e - 0x000000000000087f __ADC12MEM15_H = 0x87f - 0x0000000000000880 __ADC12MEM16 = 0x880 - 0x0000000000000880 __ADC12MEM16_L = 0x880 - 0x0000000000000881 __ADC12MEM16_H = 0x881 - 0x0000000000000882 __ADC12MEM17 = 0x882 - 0x0000000000000882 __ADC12MEM17_L = 0x882 - 0x0000000000000883 __ADC12MEM17_H = 0x883 - 0x0000000000000884 __ADC12MEM18 = 0x884 - 0x0000000000000884 __ADC12MEM18_L = 0x884 - 0x0000000000000885 __ADC12MEM18_H = 0x885 - 0x0000000000000886 __ADC12MEM19 = 0x886 - 0x0000000000000886 __ADC12MEM19_L = 0x886 - 0x0000000000000887 __ADC12MEM19_H = 0x887 - 0x0000000000000888 __ADC12MEM20 = 0x888 - 0x0000000000000888 __ADC12MEM20_L = 0x888 - 0x0000000000000889 __ADC12MEM20_H = 0x889 - 0x000000000000088a __ADC12MEM21 = 0x88a - 0x000000000000088a __ADC12MEM21_L = 0x88a - 0x000000000000088b __ADC12MEM21_H = 0x88b - 0x000000000000088c __ADC12MEM22 = 0x88c - 0x000000000000088c __ADC12MEM22_L = 0x88c - 0x000000000000088d __ADC12MEM22_H = 0x88d - 0x000000000000088e __ADC12MEM23 = 0x88e - 0x000000000000088e __ADC12MEM23_L = 0x88e - 0x000000000000088f __ADC12MEM23_H = 0x88f - 0x0000000000000890 __ADC12MEM24 = 0x890 - 0x0000000000000890 __ADC12MEM24_L = 0x890 - 0x0000000000000891 __ADC12MEM24_H = 0x891 - 0x0000000000000892 __ADC12MEM25 = 0x892 - 0x0000000000000892 __ADC12MEM25_L = 0x892 - 0x0000000000000893 __ADC12MEM25_H = 0x893 - 0x0000000000000894 __ADC12MEM26 = 0x894 - 0x0000000000000894 __ADC12MEM26_L = 0x894 - 0x0000000000000895 __ADC12MEM26_H = 0x895 - 0x0000000000000896 __ADC12MEM27 = 0x896 - 0x0000000000000896 __ADC12MEM27_L = 0x896 - 0x0000000000000897 __ADC12MEM27_H = 0x897 - 0x0000000000000898 __ADC12MEM28 = 0x898 - 0x0000000000000898 __ADC12MEM28_L = 0x898 - 0x0000000000000899 __ADC12MEM28_H = 0x899 - 0x000000000000089a __ADC12MEM29 = 0x89a - 0x000000000000089a __ADC12MEM29_L = 0x89a - 0x000000000000089b __ADC12MEM29_H = 0x89b - 0x000000000000089c __ADC12MEM30 = 0x89c - 0x000000000000089c __ADC12MEM30_L = 0x89c - 0x000000000000089d __ADC12MEM30_H = 0x89d - 0x000000000000089e __ADC12MEM31 = 0x89e - 0x000000000000089e __ADC12MEM31_L = 0x89e - 0x000000000000089f __ADC12MEM31_H = 0x89f - 0x00000000000009c0 __AESACTL0 = 0x9c0 - 0x00000000000009c0 __AESACTL0_L = 0x9c0 - 0x00000000000009c1 __AESACTL0_H = 0x9c1 - 0x00000000000009c2 __AESACTL1 = 0x9c2 - 0x00000000000009c2 __AESACTL1_L = 0x9c2 - 0x00000000000009c3 __AESACTL1_H = 0x9c3 - 0x00000000000009c4 __AESASTAT = 0x9c4 - 0x00000000000009c4 __AESASTAT_L = 0x9c4 - 0x00000000000009c5 __AESASTAT_H = 0x9c5 - 0x00000000000009c6 __AESAKEY = 0x9c6 - 0x00000000000009c6 __AESAKEY_L = 0x9c6 - 0x00000000000009c7 __AESAKEY_H = 0x9c7 - 0x00000000000009c8 __AESADIN = 0x9c8 - 0x00000000000009c8 __AESADIN_L = 0x9c8 - 0x00000000000009c9 __AESADIN_H = 0x9c9 - 0x00000000000009ca __AESADOUT = 0x9ca - 0x00000000000009ca __AESADOUT_L = 0x9ca - 0x00000000000009cb __AESADOUT_H = 0x9cb - 0x00000000000009cc __AESAXDIN = 0x9cc - 0x00000000000009cc __AESAXDIN_L = 0x9cc - 0x00000000000009cd __AESAXDIN_H = 0x9cd - 0x00000000000009ce __AESAXIN = 0x9ce - 0x00000000000009ce __AESAXIN_L = 0x9ce - 0x00000000000009cf __AESAXIN_H = 0x9cf - 0x000000000000043e __CAPTIO0CTL = 0x43e - 0x000000000000043e __CAPTIO0CTL_L = 0x43e - 0x000000000000043f __CAPTIO0CTL_H = 0x43f - 0x000000000000047e __CAPTIO1CTL = 0x47e - 0x000000000000047e __CAPTIO1CTL_L = 0x47e - 0x000000000000047f __CAPTIO1CTL_H = 0x47f - 0x00000000000008c0 __CECTL0 = 0x8c0 - 0x00000000000008c0 __CECTL0_L = 0x8c0 - 0x00000000000008c1 __CECTL0_H = 0x8c1 - 0x00000000000008c2 __CECTL1 = 0x8c2 - 0x00000000000008c2 __CECTL1_L = 0x8c2 - 0x00000000000008c3 __CECTL1_H = 0x8c3 - 0x00000000000008c4 __CECTL2 = 0x8c4 - 0x00000000000008c4 __CECTL2_L = 0x8c4 - 0x00000000000008c5 __CECTL2_H = 0x8c5 - 0x00000000000008c6 __CECTL3 = 0x8c6 - 0x00000000000008c6 __CECTL3_L = 0x8c6 - 0x00000000000008c7 __CECTL3_H = 0x8c7 - 0x00000000000008cc __CEINT = 0x8cc - 0x00000000000008cc __CEINT_L = 0x8cc - 0x00000000000008cd __CEINT_H = 0x8cd - 0x00000000000008ce __CEIV = 0x8ce - 0x00000000000008ce __CEIV_L = 0x8ce - 0x00000000000008cf __CEIV_H = 0x8cf - 0x0000000000000150 __CRCDI = 0x150 - 0x0000000000000150 __CRCDI_L = 0x150 - 0x0000000000000151 __CRCDI_H = 0x151 - 0x0000000000000152 __CRCDIRB = 0x152 - 0x0000000000000152 __CRCDIRB_L = 0x152 - 0x0000000000000153 __CRCDIRB_H = 0x153 - 0x0000000000000154 __CRCINIRES = 0x154 - 0x0000000000000154 __CRCINIRES_L = 0x154 - 0x0000000000000155 __CRCINIRES_H = 0x155 - 0x0000000000000156 __CRCRESR = 0x156 - 0x0000000000000156 __CRCRESR_L = 0x156 - 0x0000000000000157 __CRCRESR_H = 0x157 - 0x0000000000000980 __CRC32DIW0 = 0x980 - 0x0000000000000980 __CRC32DIW0_L = 0x980 - 0x0000000000000981 __CRC32DIW0_H = 0x981 - 0x0000000000000982 __CRC32DIW1 = 0x982 - 0x0000000000000982 __CRC32DIW1_L = 0x982 - 0x0000000000000983 __CRC32DIW1_H = 0x983 - 0x0000000000000984 __CRC32DIRBW1 = 0x984 - 0x0000000000000984 __CRC32DIRBW1_L = 0x984 - 0x0000000000000985 __CRC32DIRBW1_H = 0x985 - 0x0000000000000986 __CRC32DIRBW0 = 0x986 - 0x0000000000000986 __CRC32DIRBW0_L = 0x986 - 0x0000000000000987 __CRC32DIRBW0_H = 0x987 - 0x0000000000000988 __CRC32INIRESW0 = 0x988 - 0x0000000000000988 __CRC32INIRESW0_L = 0x988 - 0x0000000000000989 __CRC32INIRESW0_H = 0x989 - 0x000000000000098a __CRC32INIRESW1 = 0x98a - 0x000000000000098a __CRC32INIRESW1_L = 0x98a - 0x000000000000098b __CRC32INIRESW1_H = 0x98b - 0x000000000000098c __CRC32RESRW1 = 0x98c - 0x000000000000098c __CRC32RESRW1_L = 0x98c - 0x000000000000098d __CRC32RESRW1_H = 0x98d - 0x000000000000098e __CRC32RESRW0 = 0x98e - 0x000000000000098e __CRC32RESRW0_L = 0x98e - 0x000000000000098f __CRC32RESRW0_H = 0x98f - 0x0000000000000990 __CRC16DIW0 = 0x990 - 0x0000000000000990 __CRC16DIW0_L = 0x990 - 0x0000000000000991 __CRC16DIW0_H = 0x991 - 0x0000000000000996 __CRC16DIRBW0 = 0x996 - 0x0000000000000996 __CRC16DIRBW0_L = 0x996 - 0x0000000000000997 __CRC16DIRBW0_H = 0x997 - 0x0000000000000998 __CRC16INIRESW0 = 0x998 - 0x0000000000000998 __CRC16INIRESW0_L = 0x998 - 0x0000000000000999 __CRC16INIRESW0_H = 0x999 - 0x000000000000099e __CRC16RESRW0 = 0x99e - 0x000000000000099e __CRC16RESRW0_L = 0x99e - 0x000000000000099f __CRC16RESRW0_H = 0x99f - 0x0000000000000160 __CSCTL0 = 0x160 - 0x0000000000000160 __CSCTL0_L = 0x160 - 0x0000000000000161 __CSCTL0_H = 0x161 - 0x0000000000000162 __CSCTL1 = 0x162 - 0x0000000000000162 __CSCTL1_L = 0x162 - 0x0000000000000163 __CSCTL1_H = 0x163 - 0x0000000000000164 __CSCTL2 = 0x164 - 0x0000000000000164 __CSCTL2_L = 0x164 - 0x0000000000000165 __CSCTL2_H = 0x165 - 0x0000000000000166 __CSCTL3 = 0x166 - 0x0000000000000166 __CSCTL3_L = 0x166 - 0x0000000000000167 __CSCTL3_H = 0x167 - 0x0000000000000168 __CSCTL4 = 0x168 - 0x0000000000000168 __CSCTL4_L = 0x168 - 0x0000000000000169 __CSCTL4_H = 0x169 - 0x000000000000016a __CSCTL5 = 0x16a - 0x000000000000016a __CSCTL5_L = 0x16a - 0x000000000000016b __CSCTL5_H = 0x16b - 0x000000000000016c __CSCTL6 = 0x16c - 0x000000000000016c __CSCTL6_L = 0x16c - 0x000000000000016d __CSCTL6_H = 0x16d - 0x0000000000000200 __PAIN = 0x200 - 0x0000000000000200 __PAIN_L = 0x200 - 0x0000000000000201 __PAIN_H = 0x201 - 0x0000000000000202 __PAOUT = 0x202 - 0x0000000000000202 __PAOUT_L = 0x202 - 0x0000000000000203 __PAOUT_H = 0x203 - 0x0000000000000204 __PADIR = 0x204 - 0x0000000000000204 __PADIR_L = 0x204 - 0x0000000000000205 __PADIR_H = 0x205 - 0x0000000000000206 __PAREN = 0x206 - 0x0000000000000206 __PAREN_L = 0x206 - 0x0000000000000207 __PAREN_H = 0x207 - 0x000000000000020a __PASEL0 = 0x20a - 0x000000000000020a __PASEL0_L = 0x20a - 0x000000000000020b __PASEL0_H = 0x20b - 0x000000000000020c __PASEL1 = 0x20c - 0x000000000000020c __PASEL1_L = 0x20c - 0x000000000000020d __PASEL1_H = 0x20d - 0x000000000000020e __P1IV = 0x20e - 0x000000000000020e __P1IV_L = 0x20e - 0x000000000000020f __P1IV_H = 0x20f - 0x0000000000000216 __PASELC = 0x216 - 0x0000000000000216 __PASELC_L = 0x216 - 0x0000000000000217 __PASELC_H = 0x217 - 0x0000000000000218 __PAIES = 0x218 - 0x0000000000000218 __PAIES_L = 0x218 - 0x0000000000000219 __PAIES_H = 0x219 - 0x000000000000021a __PAIE = 0x21a - 0x000000000000021a __PAIE_L = 0x21a - 0x000000000000021b __PAIE_H = 0x21b - 0x000000000000021c __PAIFG = 0x21c - 0x000000000000021c __PAIFG_L = 0x21c - 0x000000000000021d __PAIFG_H = 0x21d - 0x000000000000021e __P2IV = 0x21e - 0x000000000000021e __P2IV_L = 0x21e - 0x000000000000021f __P2IV_H = 0x21f - 0x0000000000000220 __PBIN = 0x220 - 0x0000000000000220 __PBIN_L = 0x220 - 0x0000000000000221 __PBIN_H = 0x221 - 0x0000000000000222 __PBOUT = 0x222 - 0x0000000000000222 __PBOUT_L = 0x222 - 0x0000000000000223 __PBOUT_H = 0x223 - 0x0000000000000224 __PBDIR = 0x224 - 0x0000000000000224 __PBDIR_L = 0x224 - 0x0000000000000225 __PBDIR_H = 0x225 - 0x0000000000000226 __PBREN = 0x226 - 0x0000000000000226 __PBREN_L = 0x226 - 0x0000000000000227 __PBREN_H = 0x227 - 0x000000000000022a __PBSEL0 = 0x22a - 0x000000000000022a __PBSEL0_L = 0x22a - 0x000000000000022b __PBSEL0_H = 0x22b - 0x000000000000022c __PBSEL1 = 0x22c - 0x000000000000022c __PBSEL1_L = 0x22c - 0x000000000000022d __PBSEL1_H = 0x22d - 0x000000000000022e __P3IV = 0x22e - 0x000000000000022e __P3IV_L = 0x22e - 0x000000000000022f __P3IV_H = 0x22f - 0x0000000000000236 __PBSELC = 0x236 - 0x0000000000000236 __PBSELC_L = 0x236 - 0x0000000000000237 __PBSELC_H = 0x237 - 0x0000000000000238 __PBIES = 0x238 - 0x0000000000000238 __PBIES_L = 0x238 - 0x0000000000000239 __PBIES_H = 0x239 - 0x000000000000023a __PBIE = 0x23a - 0x000000000000023a __PBIE_L = 0x23a - 0x000000000000023b __PBIE_H = 0x23b - 0x000000000000023c __PBIFG = 0x23c - 0x000000000000023c __PBIFG_L = 0x23c - 0x000000000000023d __PBIFG_H = 0x23d - 0x000000000000023e __P4IV = 0x23e - 0x000000000000023e __P4IV_L = 0x23e - 0x000000000000023f __P4IV_H = 0x23f - 0x0000000000000240 __PCIN = 0x240 - 0x0000000000000240 __PCIN_L = 0x240 - 0x0000000000000241 __PCIN_H = 0x241 - 0x0000000000000242 __PCOUT = 0x242 - 0x0000000000000242 __PCOUT_L = 0x242 - 0x0000000000000243 __PCOUT_H = 0x243 - 0x0000000000000244 __PCDIR = 0x244 - 0x0000000000000244 __PCDIR_L = 0x244 - 0x0000000000000245 __PCDIR_H = 0x245 - 0x0000000000000246 __PCREN = 0x246 - 0x0000000000000246 __PCREN_L = 0x246 - 0x0000000000000247 __PCREN_H = 0x247 - 0x000000000000024a __PCSEL0 = 0x24a - 0x000000000000024a __PCSEL0_L = 0x24a - 0x000000000000024b __PCSEL0_H = 0x24b - 0x000000000000024c __PCSEL1 = 0x24c - 0x000000000000024c __PCSEL1_L = 0x24c - 0x000000000000024d __PCSEL1_H = 0x24d - 0x000000000000024e __P5IV = 0x24e - 0x000000000000024e __P5IV_L = 0x24e - 0x000000000000024f __P5IV_H = 0x24f - 0x0000000000000256 __PCSELC = 0x256 - 0x0000000000000256 __PCSELC_L = 0x256 - 0x0000000000000257 __PCSELC_H = 0x257 - 0x0000000000000258 __PCIES = 0x258 - 0x0000000000000258 __PCIES_L = 0x258 - 0x0000000000000259 __PCIES_H = 0x259 - 0x000000000000025a __PCIE = 0x25a - 0x000000000000025a __PCIE_L = 0x25a - 0x000000000000025b __PCIE_H = 0x25b - 0x000000000000025c __PCIFG = 0x25c - 0x000000000000025c __PCIFG_L = 0x25c - 0x000000000000025d __PCIFG_H = 0x25d - 0x000000000000025e __P6IV = 0x25e - 0x000000000000025e __P6IV_L = 0x25e - 0x000000000000025f __P6IV_H = 0x25f - 0x0000000000000260 __PDIN = 0x260 - 0x0000000000000260 __PDIN_L = 0x260 - 0x0000000000000261 __PDIN_H = 0x261 - 0x0000000000000262 __PDOUT = 0x262 - 0x0000000000000262 __PDOUT_L = 0x262 - 0x0000000000000263 __PDOUT_H = 0x263 - 0x0000000000000264 __PDDIR = 0x264 - 0x0000000000000264 __PDDIR_L = 0x264 - 0x0000000000000265 __PDDIR_H = 0x265 - 0x0000000000000266 __PDREN = 0x266 - 0x0000000000000266 __PDREN_L = 0x266 - 0x0000000000000267 __PDREN_H = 0x267 - 0x000000000000026a __PDSEL0 = 0x26a - 0x000000000000026a __PDSEL0_L = 0x26a - 0x000000000000026b __PDSEL0_H = 0x26b - 0x000000000000026c __PDSEL1 = 0x26c - 0x000000000000026c __PDSEL1_L = 0x26c - 0x000000000000026d __PDSEL1_H = 0x26d - 0x000000000000026e __P7IV = 0x26e - 0x000000000000026e __P7IV_L = 0x26e - 0x000000000000026f __P7IV_H = 0x26f - 0x0000000000000276 __PDSELC = 0x276 - 0x0000000000000276 __PDSELC_L = 0x276 - 0x0000000000000277 __PDSELC_H = 0x277 - 0x0000000000000278 __PDIES = 0x278 - 0x0000000000000278 __PDIES_L = 0x278 - 0x0000000000000279 __PDIES_H = 0x279 - 0x000000000000027a __PDIE = 0x27a - 0x000000000000027a __PDIE_L = 0x27a - 0x000000000000027b __PDIE_H = 0x27b - 0x000000000000027c __PDIFG = 0x27c - 0x000000000000027c __PDIFG_L = 0x27c - 0x000000000000027d __PDIFG_H = 0x27d - 0x000000000000027e __P8IV = 0x27e - 0x000000000000027e __P8IV_L = 0x27e - 0x000000000000027f __P8IV_H = 0x27f - 0x0000000000000320 __PJIN = 0x320 - 0x0000000000000320 __PJIN_L = 0x320 - 0x0000000000000321 __PJIN_H = 0x321 - 0x0000000000000322 __PJOUT = 0x322 - 0x0000000000000322 __PJOUT_L = 0x322 - 0x0000000000000323 __PJOUT_H = 0x323 - 0x0000000000000324 __PJDIR = 0x324 - 0x0000000000000324 __PJDIR_L = 0x324 - 0x0000000000000325 __PJDIR_H = 0x325 - 0x0000000000000326 __PJREN = 0x326 - 0x0000000000000326 __PJREN_L = 0x326 - 0x0000000000000327 __PJREN_H = 0x327 - 0x000000000000032a __PJSEL0 = 0x32a - 0x000000000000032a __PJSEL0_L = 0x32a - 0x000000000000032b __PJSEL0_H = 0x32b - 0x000000000000032c __PJSEL1 = 0x32c - 0x000000000000032c __PJSEL1_L = 0x32c - 0x000000000000032d __PJSEL1_H = 0x32d - 0x0000000000000336 __PJSELC = 0x336 - 0x0000000000000336 __PJSELC_L = 0x336 - 0x0000000000000337 __PJSELC_H = 0x337 - 0x0000000000000200 __P1IN = 0x200 - 0x0000000000000201 __P2IN = 0x201 - 0x0000000000000203 __P2OUT = 0x203 - 0x0000000000000202 __P1OUT = 0x202 - 0x0000000000000204 __P1DIR = 0x204 - 0x0000000000000205 __P2DIR = 0x205 - 0x0000000000000206 __P1REN = 0x206 - 0x0000000000000207 __P2REN = 0x207 - 0x000000000000020a __P1SEL0 = 0x20a - 0x000000000000020b __P2SEL0 = 0x20b - 0x000000000000020c __P1SEL1 = 0x20c - 0x000000000000020d __P2SEL1 = 0x20d - 0x0000000000000216 __P1SELC = 0x216 - 0x0000000000000217 __P2SELC = 0x217 - 0x0000000000000218 __P1IES = 0x218 - 0x0000000000000219 __P2IES = 0x219 - 0x000000000000021a __P1IE = 0x21a - 0x000000000000021b __P2IE = 0x21b - 0x000000000000021c __P1IFG = 0x21c - 0x000000000000021d __P2IFG = 0x21d - 0x0000000000000220 __P3IN = 0x220 - 0x0000000000000221 __P4IN = 0x221 - 0x0000000000000222 __P3OUT = 0x222 - 0x0000000000000223 __P4OUT = 0x223 - 0x0000000000000224 __P3DIR = 0x224 - 0x0000000000000225 __P4DIR = 0x225 - 0x0000000000000226 __P3REN = 0x226 - 0x0000000000000227 __P4REN = 0x227 - 0x000000000000022b __P4SEL0 = 0x22b - 0x000000000000022a __P3SEL0 = 0x22a - 0x000000000000022c __P3SEL1 = 0x22c - 0x000000000000022d __P4SEL1 = 0x22d - 0x0000000000000236 __P3SELC = 0x236 - 0x0000000000000237 __P4SELC = 0x237 - 0x0000000000000238 __P3IES = 0x238 - 0x0000000000000239 __P4IES = 0x239 - 0x000000000000023a __P3IE = 0x23a - 0x000000000000023b __P4IE = 0x23b - 0x000000000000023c __P3IFG = 0x23c - 0x000000000000023d __P4IFG = 0x23d - 0x0000000000000240 __P5IN = 0x240 - 0x0000000000000241 __P6IN = 0x241 - 0x0000000000000242 __P5OUT = 0x242 - 0x0000000000000243 __P6OUT = 0x243 - 0x0000000000000244 __P5DIR = 0x244 - 0x0000000000000245 __P6DIR = 0x245 - 0x0000000000000246 __P5REN = 0x246 - 0x0000000000000247 __P6REN = 0x247 - 0x000000000000024a __P5SEL0 = 0x24a - 0x000000000000024b __P6SEL0 = 0x24b - 0x000000000000024c __P5SEL1 = 0x24c - 0x000000000000024d __P6SEL1 = 0x24d - 0x0000000000000256 __P5SELC = 0x256 - 0x0000000000000257 __P6SELC = 0x257 - 0x0000000000000258 __P5IES = 0x258 - 0x0000000000000259 __P6IES = 0x259 - 0x000000000000025a __P5IE = 0x25a - 0x000000000000025b __P6IE = 0x25b - 0x000000000000025c __P5IFG = 0x25c - 0x000000000000025d __P6IFG = 0x25d - 0x0000000000000260 __P7IN = 0x260 - 0x0000000000000261 __P8IN = 0x261 - 0x0000000000000262 __P7OUT = 0x262 - 0x0000000000000263 __P8OUT = 0x263 - 0x0000000000000264 __P7DIR = 0x264 - 0x0000000000000265 __P8DIR = 0x265 - 0x0000000000000266 __P7REN = 0x266 - 0x0000000000000267 __P8REN = 0x267 - 0x000000000000026a __P7SEL0 = 0x26a - 0x000000000000026b __P8SEL0 = 0x26b - 0x000000000000026c __P7SEL1 = 0x26c - 0x000000000000026d __P8SEL1 = 0x26d - 0x0000000000000276 __P7SELC = 0x276 - 0x0000000000000277 __P8SELC = 0x277 - 0x0000000000000278 __P7IES = 0x278 - 0x0000000000000279 __P8IES = 0x279 - 0x000000000000027a __P7IE = 0x27a - 0x000000000000027b __P8IE = 0x27b - 0x000000000000027c __P7IFG = 0x27c - 0x000000000000027d __P8IFG = 0x27d - 0x0000000000000500 __DMACTL0 = 0x500 - 0x0000000000000500 __DMACTL0_L = 0x500 - 0x0000000000000501 __DMACTL0_H = 0x501 - 0x0000000000000502 __DMACTL1 = 0x502 - 0x0000000000000502 __DMACTL1_L = 0x502 - 0x0000000000000503 __DMACTL1_H = 0x503 - 0x0000000000000504 __DMACTL2 = 0x504 - 0x0000000000000504 __DMACTL2_L = 0x504 - 0x0000000000000505 __DMACTL2_H = 0x505 - 0x0000000000000508 __DMACTL4 = 0x508 - 0x0000000000000508 __DMACTL4_L = 0x508 - 0x0000000000000509 __DMACTL4_H = 0x509 - 0x000000000000050e __DMAIV = 0x50e - 0x000000000000050e __DMAIV_L = 0x50e - 0x000000000000050f __DMAIV_H = 0x50f - 0x0000000000000510 __DMA0CTL = 0x510 - 0x0000000000000510 __DMA0CTL_L = 0x510 - 0x0000000000000511 __DMA0CTL_H = 0x511 - 0x0000000000000512 __DMA0SA = 0x512 - 0x0000000000000512 __DMA0SAL = 0x512 - 0x0000000000000514 __DMA0SAH = 0x514 - 0x0000000000000516 __DMA0DA = 0x516 - 0x0000000000000516 __DMA0DAL = 0x516 - 0x0000000000000518 __DMA0DAH = 0x518 - 0x000000000000051a __DMA0SZ = 0x51a - 0x000000000000051a __DMA0SZ_L = 0x51a - 0x000000000000051b __DMA0SZ_H = 0x51b - 0x0000000000000520 __DMA1CTL = 0x520 - 0x0000000000000520 __DMA1CTL_L = 0x520 - 0x0000000000000521 __DMA1CTL_H = 0x521 - 0x0000000000000522 __DMA1SA = 0x522 - 0x0000000000000522 __DMA1SAL = 0x522 - 0x0000000000000524 __DMA1SAH = 0x524 - 0x0000000000000526 __DMA1DA = 0x526 - 0x0000000000000526 __DMA1DAL = 0x526 - 0x0000000000000528 __DMA1DAH = 0x528 - 0x000000000000052a __DMA1SZ = 0x52a - 0x000000000000052a __DMA1SZ_L = 0x52a - 0x000000000000052b __DMA1SZ_H = 0x52b - 0x0000000000000530 __DMA2CTL = 0x530 - 0x0000000000000530 __DMA2CTL_L = 0x530 - 0x0000000000000531 __DMA2CTL_H = 0x531 - 0x0000000000000532 __DMA2SA = 0x532 - 0x0000000000000532 __DMA2SAL = 0x532 - 0x0000000000000534 __DMA2SAH = 0x534 - 0x0000000000000536 __DMA2DA = 0x536 - 0x0000000000000536 __DMA2DAL = 0x536 - 0x0000000000000538 __DMA2DAH = 0x538 - 0x000000000000053a __DMA2SZ = 0x53a - 0x000000000000053a __DMA2SZ_L = 0x53a - 0x000000000000053b __DMA2SZ_H = 0x53b - 0x0000000000000540 __DMA3CTL = 0x540 - 0x0000000000000540 __DMA3CTL_L = 0x540 - 0x0000000000000541 __DMA3CTL_H = 0x541 - 0x0000000000000542 __DMA3SA = 0x542 - 0x0000000000000542 __DMA3SAL = 0x542 - 0x0000000000000544 __DMA3SAH = 0x544 - 0x0000000000000546 __DMA3DA = 0x546 - 0x0000000000000546 __DMA3DAL = 0x546 - 0x0000000000000548 __DMA3DAH = 0x548 - 0x000000000000054a __DMA3SZ = 0x54a - 0x000000000000054a __DMA3SZ_L = 0x54a - 0x000000000000054b __DMA3SZ_H = 0x54b - 0x0000000000000550 __DMA4CTL = 0x550 - 0x0000000000000550 __DMA4CTL_L = 0x550 - 0x0000000000000551 __DMA4CTL_H = 0x551 - 0x0000000000000552 __DMA4SA = 0x552 - 0x0000000000000552 __DMA4SAL = 0x552 - 0x0000000000000554 __DMA4SAH = 0x554 - 0x0000000000000556 __DMA4DA = 0x556 - 0x0000000000000556 __DMA4DAL = 0x556 - 0x0000000000000558 __DMA4DAH = 0x558 - 0x000000000000055a __DMA4SZ = 0x55a - 0x000000000000055a __DMA4SZ_L = 0x55a - 0x000000000000055b __DMA4SZ_H = 0x55b - 0x0000000000000560 __DMA5CTL = 0x560 - 0x0000000000000560 __DMA5CTL_L = 0x560 - 0x0000000000000561 __DMA5CTL_H = 0x561 - 0x0000000000000562 __DMA5SA = 0x562 - 0x0000000000000562 __DMA5SAL = 0x562 - 0x0000000000000564 __DMA5SAH = 0x564 - 0x0000000000000566 __DMA5DA = 0x566 - 0x0000000000000566 __DMA5DAL = 0x566 - 0x0000000000000568 __DMA5DAH = 0x568 - 0x000000000000056a __DMA5SZ = 0x56a - 0x000000000000056a __DMA5SZ_L = 0x56a - 0x000000000000056b __DMA5SZ_H = 0x56b - 0x0000000000000140 __FRCTL0 = 0x140 - 0x0000000000000140 __FRCTL0_L = 0x140 - 0x0000000000000141 __FRCTL0_H = 0x141 - 0x0000000000000144 __GCCTL0 = 0x144 - 0x0000000000000144 __GCCTL0_L = 0x144 - 0x0000000000000145 __GCCTL0_H = 0x145 - 0x0000000000000146 __GCCTL1 = 0x146 - 0x0000000000000146 __GCCTL1_L = 0x146 - 0x0000000000000147 __GCCTL1_H = 0x147 - 0x0000000000000a80 __LEACAP = 0xa80 - 0x0000000000000a80 __LEACAPL = 0xa80 - 0x0000000000000a82 __LEACAPH = 0xa82 - 0x0000000000000a84 __LEACNF0 = 0xa84 - 0x0000000000000a84 __LEACNF0L = 0xa84 - 0x0000000000000a86 __LEACNF0H = 0xa86 - 0x0000000000000a88 __LEACNF1 = 0xa88 - 0x0000000000000a88 __LEACNF1L = 0xa88 - 0x0000000000000a8a __LEACNF1H = 0xa8a - 0x0000000000000a8c __LEACNF2 = 0xa8c - 0x0000000000000a8c __LEACNF2L = 0xa8c - 0x0000000000000a8e __LEACNF2H = 0xa8e - 0x0000000000000a90 __LEAMB = 0xa90 - 0x0000000000000a90 __LEAMBL = 0xa90 - 0x0000000000000a92 __LEAMBH = 0xa92 - 0x0000000000000a94 __LEAMT = 0xa94 - 0x0000000000000a94 __LEAMTL = 0xa94 - 0x0000000000000a96 __LEAMTH = 0xa96 - 0x0000000000000a98 __LEACMA = 0xa98 - 0x0000000000000a98 __LEACMAL = 0xa98 - 0x0000000000000a9a __LEACMAH = 0xa9a - 0x0000000000000a9c __LEACMCTL = 0xa9c - 0x0000000000000a9c __LEACMCTLL = 0xa9c - 0x0000000000000a9e __LEACMCTLH = 0xa9e - 0x0000000000000aa8 __LEACMDSTAT = 0xaa8 - 0x0000000000000aa8 __LEACMDSTATL = 0xaa8 - 0x0000000000000aaa __LEACMDSTATH = 0xaaa - 0x0000000000000aac __LEAS1STAT = 0xaac - 0x0000000000000aac __LEAS1STATL = 0xaac - 0x0000000000000aae __LEAS1STATH = 0xaae - 0x0000000000000ab0 __LEAS0STAT = 0xab0 - 0x0000000000000ab0 __LEAS0STATL = 0xab0 - 0x0000000000000ab2 __LEAS0STATH = 0xab2 - 0x0000000000000ab4 __LEADSTSTAT = 0xab4 - 0x0000000000000ab4 __LEADSTSTATL = 0xab4 - 0x0000000000000ab6 __LEADSTSTATH = 0xab6 - 0x0000000000000ac0 __LEAPMCTL = 0xac0 - 0x0000000000000ac0 __LEAPMCTLL = 0xac0 - 0x0000000000000ac2 __LEAPMCTLH = 0xac2 - 0x0000000000000ac4 __LEAPMDST = 0xac4 - 0x0000000000000ac4 __LEAPMDSTL = 0xac4 - 0x0000000000000ac6 __LEAPMDSTH = 0xac6 - 0x0000000000000ac8 __LEAPMS1 = 0xac8 - 0x0000000000000ac8 __LEAPMS1L = 0xac8 - 0x0000000000000aca __LEAPMS1H = 0xaca - 0x0000000000000acc __LEAPMS0 = 0xacc - 0x0000000000000acc __LEAPMS0L = 0xacc - 0x0000000000000ace __LEAPMS0H = 0xace - 0x0000000000000ad0 __LEAPMCB = 0xad0 - 0x0000000000000ad0 __LEAPMCBL = 0xad0 - 0x0000000000000ad2 __LEAPMCBH = 0xad2 - 0x0000000000000af0 __LEAIFGSET = 0xaf0 - 0x0000000000000af0 __LEAIFGSETL = 0xaf0 - 0x0000000000000af2 __LEAIFGSETH = 0xaf2 - 0x0000000000000af4 __LEAIE = 0xaf4 - 0x0000000000000af4 __LEAIEL = 0xaf4 - 0x0000000000000af6 __LEAIEH = 0xaf6 - 0x0000000000000af8 __LEAIFG = 0xaf8 - 0x0000000000000af8 __LEAIFGL = 0xaf8 - 0x0000000000000afa __LEAIFGH = 0xafa - 0x0000000000000afc __LEAIV = 0xafc - 0x0000000000000afc __LEAIVL = 0xafc - 0x0000000000000afe __LEAIVH = 0xafe - 0x00000000000005a0 __MPUCTL0 = 0x5a0 - 0x00000000000005a0 __MPUCTL0_L = 0x5a0 - 0x00000000000005a1 __MPUCTL0_H = 0x5a1 - 0x00000000000005a2 __MPUCTL1 = 0x5a2 - 0x00000000000005a2 __MPUCTL1_L = 0x5a2 - 0x00000000000005a3 __MPUCTL1_H = 0x5a3 - 0x00000000000005a4 __MPUSEGB2 = 0x5a4 - 0x00000000000005a4 __MPUSEGB2_L = 0x5a4 - 0x00000000000005a5 __MPUSEGB2_H = 0x5a5 - 0x00000000000005a6 __MPUSEGB1 = 0x5a6 - 0x00000000000005a6 __MPUSEGB1_L = 0x5a6 - 0x00000000000005a7 __MPUSEGB1_H = 0x5a7 - 0x00000000000005a8 __MPUSAM = 0x5a8 - 0x00000000000005a8 __MPUSAM_L = 0x5a8 - 0x00000000000005a9 __MPUSAM_H = 0x5a9 - 0x00000000000005aa __MPUIPC0 = 0x5aa - 0x00000000000005aa __MPUIPC0_L = 0x5aa - 0x00000000000005ab __MPUIPC0_H = 0x5ab - 0x00000000000005ac __MPUIPSEGB2 = 0x5ac - 0x00000000000005ac __MPUIPSEGB2_L = 0x5ac - 0x00000000000005ad __MPUIPSEGB2_H = 0x5ad - 0x00000000000005ae __MPUIPSEGB1 = 0x5ae - 0x00000000000005ae __MPUIPSEGB1_L = 0x5ae - 0x00000000000005af __MPUIPSEGB1_H = 0x5af - 0x00000000000004c0 __MPY = 0x4c0 - 0x00000000000004c0 __MPY_L = 0x4c0 - 0x00000000000004c1 __MPY_H = 0x4c1 - 0x00000000000004c2 __MPYS = 0x4c2 - 0x00000000000004c2 __MPYS_L = 0x4c2 - 0x00000000000004c3 __MPYS_H = 0x4c3 - 0x00000000000004c4 __MAC = 0x4c4 - 0x00000000000004c4 __MAC_L = 0x4c4 - 0x00000000000004c5 __MAC_H = 0x4c5 - 0x00000000000004c6 __MACS = 0x4c6 - 0x00000000000004c6 __MACS_L = 0x4c6 - 0x00000000000004c7 __MACS_H = 0x4c7 - 0x00000000000004c8 __OP2 = 0x4c8 - 0x00000000000004c8 __OP2_L = 0x4c8 - 0x00000000000004c9 __OP2_H = 0x4c9 - 0x00000000000004ca __RESLO = 0x4ca - 0x00000000000004ca __RESLO_L = 0x4ca - 0x00000000000004cb __RESLO_H = 0x4cb - 0x00000000000004cc __RESHI = 0x4cc - 0x00000000000004cc __RESHI_L = 0x4cc - 0x00000000000004cd __RESHI_H = 0x4cd - 0x00000000000004ce __SUMEXT = 0x4ce - 0x00000000000004ce __SUMEXT_L = 0x4ce - 0x00000000000004cf __SUMEXT_H = 0x4cf - 0x00000000000004d0 __MPY32L = 0x4d0 - 0x00000000000004d0 __MPY32L_L = 0x4d0 - 0x00000000000004d1 __MPY32L_H = 0x4d1 - 0x00000000000004d2 __MPY32H = 0x4d2 - 0x00000000000004d2 __MPY32H_L = 0x4d2 - 0x00000000000004d3 __MPY32H_H = 0x4d3 - 0x00000000000004d4 __MPYS32L = 0x4d4 - 0x00000000000004d4 __MPYS32L_L = 0x4d4 - 0x00000000000004d5 __MPYS32L_H = 0x4d5 - 0x00000000000004d6 __MPYS32H = 0x4d6 - 0x00000000000004d6 __MPYS32H_L = 0x4d6 - 0x00000000000004d7 __MPYS32H_H = 0x4d7 - 0x00000000000004d8 __MAC32L = 0x4d8 - 0x00000000000004d8 __MAC32L_L = 0x4d8 - 0x00000000000004d9 __MAC32L_H = 0x4d9 - 0x00000000000004da __MAC32H = 0x4da - 0x00000000000004da __MAC32H_L = 0x4da - 0x00000000000004db __MAC32H_H = 0x4db - 0x00000000000004dc __MACS32L = 0x4dc - 0x00000000000004dc __MACS32L_L = 0x4dc - 0x00000000000004dd __MACS32L_H = 0x4dd - 0x00000000000004de __MACS32H = 0x4de - 0x00000000000004de __MACS32H_L = 0x4de - 0x00000000000004df __MACS32H_H = 0x4df - 0x00000000000004e0 __OP2L = 0x4e0 - 0x00000000000004e0 __OP2L_L = 0x4e0 - 0x00000000000004e1 __OP2L_H = 0x4e1 - 0x00000000000004e2 __OP2H = 0x4e2 - 0x00000000000004e2 __OP2H_L = 0x4e2 - 0x00000000000004e3 __OP2H_H = 0x4e3 - 0x00000000000004e4 __RES0 = 0x4e4 - 0x00000000000004e4 __RES0_L = 0x4e4 - 0x00000000000004e5 __RES0_H = 0x4e5 - 0x00000000000004e6 __RES1 = 0x4e6 - 0x00000000000004e6 __RES1_L = 0x4e6 - 0x00000000000004e7 __RES1_H = 0x4e7 - 0x00000000000004e8 __RES2 = 0x4e8 - 0x00000000000004e8 __RES2_L = 0x4e8 - 0x00000000000004e9 __RES2_H = 0x4e9 - 0x00000000000004ea __RES3 = 0x4ea - 0x00000000000004ea __RES3_L = 0x4ea - 0x00000000000004eb __RES3_H = 0x4eb - 0x00000000000004ec __MPY32CTL0 = 0x4ec - 0x00000000000004ec __MPY32CTL0_L = 0x4ec - 0x00000000000004ed __MPY32CTL0_H = 0x4ed - 0x0000000000000120 __PMMCTL0 = 0x120 - 0x0000000000000120 __PMMCTL0_L = 0x120 - 0x0000000000000121 __PMMCTL0_H = 0x121 - 0x000000000000012a __PMMIFG = 0x12a - 0x000000000000012a __PMMIFG_L = 0x12a - 0x000000000000012b __PMMIFG_H = 0x12b - 0x0000000000000130 __PM5CTL0 = 0x130 - 0x0000000000000130 __PM5CTL0_L = 0x130 - 0x0000000000000131 __PM5CTL0_H = 0x131 - 0x0000000000000158 __RCCTL0 = 0x158 - 0x0000000000000158 __RCCTL0_L = 0x158 - 0x0000000000000159 __RCCTL0_H = 0x159 - 0x00000000000001b0 __REFCTL0 = 0x1b0 - 0x00000000000001b0 __REFCTL0_L = 0x1b0 - 0x00000000000001b1 __REFCTL0_H = 0x1b1 - 0x00000000000004a0 __RTCCTL0 = 0x4a0 - 0x00000000000004a0 __RTCCTL0_L = 0x4a0 - 0x00000000000004a1 __RTCCTL0_H = 0x4a1 - 0x00000000000004a2 __RTCCTL13 = 0x4a2 - 0x00000000000004a2 __RTCCTL13_L = 0x4a2 - 0x00000000000004a3 __RTCCTL13_H = 0x4a3 - 0x00000000000004a4 __RTCOCAL = 0x4a4 - 0x00000000000004a4 __RTCOCAL_L = 0x4a4 - 0x00000000000004a5 __RTCOCAL_H = 0x4a5 - 0x00000000000004a6 __RTCTCMP = 0x4a6 - 0x00000000000004a6 __RTCTCMP_L = 0x4a6 - 0x00000000000004a7 __RTCTCMP_H = 0x4a7 - 0x00000000000004a8 __RTCPS0CTL = 0x4a8 - 0x00000000000004a8 __RTCPS0CTL_L = 0x4a8 - 0x00000000000004a9 __RTCPS0CTL_H = 0x4a9 - 0x00000000000004aa __RTCPS1CTL = 0x4aa - 0x00000000000004aa __RTCPS1CTL_L = 0x4aa - 0x00000000000004ab __RTCPS1CTL_H = 0x4ab - 0x00000000000004ac __RTCPS = 0x4ac - 0x00000000000004ac __RTCPS_L = 0x4ac - 0x00000000000004ad __RTCPS_H = 0x4ad - 0x00000000000004ae __RTCIV = 0x4ae - 0x00000000000004ae __RTCIV_L = 0x4ae - 0x00000000000004af __RTCIV_H = 0x4af - 0x00000000000004b0 __RTCTIM0 = 0x4b0 - 0x00000000000004b0 __RTCTIM0_L = 0x4b0 - 0x00000000000004b1 __RTCTIM0_H = 0x4b1 - 0x00000000000004b0 __RTCCNT12 = 0x4b0 - 0x00000000000004b0 __RTCCNT12_L = 0x4b0 - 0x00000000000004b1 __RTCCNT12_H = 0x4b1 - 0x00000000000004b2 __RTCTIM1 = 0x4b2 - 0x00000000000004b2 __RTCTIM1_L = 0x4b2 - 0x00000000000004b3 __RTCTIM1_H = 0x4b3 - 0x00000000000004b2 __RTCCNT34 = 0x4b2 - 0x00000000000004b2 __RTCCNT34_L = 0x4b2 - 0x00000000000004b3 __RTCCNT34_H = 0x4b3 - 0x00000000000004b4 __RTCDATE = 0x4b4 - 0x00000000000004b4 __RTCDATE_L = 0x4b4 - 0x00000000000004b5 __RTCDATE_H = 0x4b5 - 0x00000000000004b6 __RTCYEAR = 0x4b6 - 0x00000000000004b6 __RTCYEAR_L = 0x4b6 - 0x00000000000004b7 __RTCYEAR_H = 0x4b7 - 0x00000000000004b8 __RTCAMINHR = 0x4b8 - 0x00000000000004b8 __RTCAMINHR_L = 0x4b8 - 0x00000000000004b9 __RTCAMINHR_H = 0x4b9 - 0x00000000000004ba __RTCADOWDAY = 0x4ba - 0x00000000000004ba __RTCADOWDAY_L = 0x4ba - 0x00000000000004bb __RTCADOWDAY_H = 0x4bb - 0x00000000000004bc __BIN2BCD = 0x4bc - 0x00000000000004bc __BIN2BCD_L = 0x4bc - 0x00000000000004bd __BIN2BCD_H = 0x4bd - 0x00000000000004be __BCD2BIN = 0x4be - 0x00000000000004be __BCD2BIN_L = 0x4be - 0x00000000000004bf __BCD2BIN_H = 0x4bf - 0x00000000000004ac __RT0PS = 0x4ac - 0x00000000000004ad __RT1PS = 0x4ad - 0x00000000000004b0 __RTCCNT1 = 0x4b0 - 0x00000000000004b1 __RTCCNT2 = 0x4b1 - 0x00000000000004b2 __RTCCNT3 = 0x4b2 - 0x00000000000004b3 __RTCCNT4 = 0x4b3 - 0x0000000000000100 __SFRIE1 = 0x100 - 0x0000000000000100 __SFRIE1_L = 0x100 - 0x0000000000000101 __SFRIE1_H = 0x101 - 0x0000000000000102 __SFRIFG1 = 0x102 - 0x0000000000000102 __SFRIFG1_L = 0x102 - 0x0000000000000103 __SFRIFG1_H = 0x103 - 0x0000000000000104 __SFRRPCR = 0x104 - 0x0000000000000104 __SFRRPCR_L = 0x104 - 0x0000000000000105 __SFRRPCR_H = 0x105 - 0x0000000000000180 __SYSCTL = 0x180 - 0x0000000000000180 __SYSCTL_L = 0x180 - 0x0000000000000181 __SYSCTL_H = 0x181 - 0x0000000000000186 __SYSJMBC = 0x186 - 0x0000000000000186 __SYSJMBC_L = 0x186 - 0x0000000000000187 __SYSJMBC_H = 0x187 - 0x0000000000000188 __SYSJMBI0 = 0x188 - 0x0000000000000188 __SYSJMBI0_L = 0x188 - 0x0000000000000189 __SYSJMBI0_H = 0x189 - 0x000000000000018a __SYSJMBI1 = 0x18a - 0x000000000000018a __SYSJMBI1_L = 0x18a - 0x000000000000018b __SYSJMBI1_H = 0x18b - 0x000000000000018c __SYSJMBO0 = 0x18c - 0x000000000000018c __SYSJMBO0_L = 0x18c - 0x000000000000018d __SYSJMBO0_H = 0x18d - 0x000000000000018e __SYSJMBO1 = 0x18e - 0x000000000000018e __SYSJMBO1_L = 0x18e - 0x000000000000018f __SYSJMBO1_H = 0x18f - 0x000000000000019a __SYSUNIV = 0x19a - 0x000000000000019a __SYSUNIV_L = 0x19a - 0x000000000000019b __SYSUNIV_H = 0x19b - 0x000000000000019c __SYSSNIV = 0x19c - 0x000000000000019c __SYSSNIV_L = 0x19c - 0x000000000000019d __SYSSNIV_H = 0x19d - 0x000000000000019e __SYSRSTIV = 0x19e - 0x000000000000019e __SYSRSTIV_L = 0x19e - 0x000000000000019f __SYSRSTIV_H = 0x19f - 0x0000000000000340 __TA0CTL = 0x340 - 0x0000000000000340 __TA0CTL_L = 0x340 - 0x0000000000000341 __TA0CTL_H = 0x341 - 0x0000000000000342 __TA0CCTL0 = 0x342 - 0x0000000000000342 __TA0CCTL0_L = 0x342 - 0x0000000000000343 __TA0CCTL0_H = 0x343 - 0x0000000000000344 __TA0CCTL1 = 0x344 - 0x0000000000000344 __TA0CCTL1_L = 0x344 - 0x0000000000000345 __TA0CCTL1_H = 0x345 - 0x0000000000000346 __TA0CCTL2 = 0x346 - 0x0000000000000346 __TA0CCTL2_L = 0x346 - 0x0000000000000347 __TA0CCTL2_H = 0x347 - 0x0000000000000350 __TA0R = 0x350 - 0x0000000000000350 __TA0R_L = 0x350 - 0x0000000000000351 __TA0R_H = 0x351 - 0x0000000000000352 __TA0CCR0 = 0x352 - 0x0000000000000352 __TA0CCR0_L = 0x352 - 0x0000000000000353 __TA0CCR0_H = 0x353 - 0x0000000000000354 __TA0CCR1 = 0x354 - 0x0000000000000354 __TA0CCR1_L = 0x354 - 0x0000000000000355 __TA0CCR1_H = 0x355 - 0x0000000000000356 __TA0CCR2 = 0x356 - 0x0000000000000356 __TA0CCR2_L = 0x356 - 0x0000000000000357 __TA0CCR2_H = 0x357 - 0x0000000000000360 __TA0EX0 = 0x360 - 0x0000000000000360 __TA0EX0_L = 0x360 - 0x0000000000000361 __TA0EX0_H = 0x361 - 0x000000000000036e __TA0IV = 0x36e - 0x000000000000036e __TA0IV_L = 0x36e - 0x000000000000036f __TA0IV_H = 0x36f - 0x0000000000000380 __TA1CTL = 0x380 - 0x0000000000000380 __TA1CTL_L = 0x380 - 0x0000000000000381 __TA1CTL_H = 0x381 - 0x0000000000000382 __TA1CCTL0 = 0x382 - 0x0000000000000382 __TA1CCTL0_L = 0x382 - 0x0000000000000383 __TA1CCTL0_H = 0x383 - 0x0000000000000384 __TA1CCTL1 = 0x384 - 0x0000000000000384 __TA1CCTL1_L = 0x384 - 0x0000000000000385 __TA1CCTL1_H = 0x385 - 0x0000000000000386 __TA1CCTL2 = 0x386 - 0x0000000000000386 __TA1CCTL2_L = 0x386 - 0x0000000000000387 __TA1CCTL2_H = 0x387 - 0x0000000000000390 __TA1R = 0x390 - 0x0000000000000390 __TA1R_L = 0x390 - 0x0000000000000391 __TA1R_H = 0x391 - 0x0000000000000392 __TA1CCR0 = 0x392 - 0x0000000000000392 __TA1CCR0_L = 0x392 - 0x0000000000000393 __TA1CCR0_H = 0x393 - 0x0000000000000394 __TA1CCR1 = 0x394 - 0x0000000000000394 __TA1CCR1_L = 0x394 - 0x0000000000000395 __TA1CCR1_H = 0x395 - 0x0000000000000396 __TA1CCR2 = 0x396 - 0x0000000000000396 __TA1CCR2_L = 0x396 - 0x0000000000000397 __TA1CCR2_H = 0x397 - 0x00000000000003a0 __TA1EX0 = 0x3a0 - 0x00000000000003a0 __TA1EX0_L = 0x3a0 - 0x00000000000003a1 __TA1EX0_H = 0x3a1 - 0x00000000000003ae __TA1IV = 0x3ae - 0x00000000000003ae __TA1IV_L = 0x3ae - 0x00000000000003af __TA1IV_H = 0x3af - 0x0000000000000400 __TA2CTL = 0x400 - 0x0000000000000400 __TA2CTL_L = 0x400 - 0x0000000000000401 __TA2CTL_H = 0x401 - 0x0000000000000402 __TA2CCTL0 = 0x402 - 0x0000000000000402 __TA2CCTL0_L = 0x402 - 0x0000000000000403 __TA2CCTL0_H = 0x403 - 0x0000000000000404 __TA2CCTL1 = 0x404 - 0x0000000000000404 __TA2CCTL1_L = 0x404 - 0x0000000000000405 __TA2CCTL1_H = 0x405 - 0x0000000000000410 __TA2R = 0x410 - 0x0000000000000410 __TA2R_L = 0x410 - 0x0000000000000411 __TA2R_H = 0x411 - 0x0000000000000412 __TA2CCR0 = 0x412 - 0x0000000000000412 __TA2CCR0_L = 0x412 - 0x0000000000000413 __TA2CCR0_H = 0x413 - 0x0000000000000414 __TA2CCR1 = 0x414 - 0x0000000000000414 __TA2CCR1_L = 0x414 - 0x0000000000000415 __TA2CCR1_H = 0x415 - 0x0000000000000420 __TA2EX0 = 0x420 - 0x0000000000000420 __TA2EX0_L = 0x420 - 0x0000000000000421 __TA2EX0_H = 0x421 - 0x000000000000042e __TA2IV = 0x42e - 0x000000000000042e __TA2IV_L = 0x42e - 0x000000000000042f __TA2IV_H = 0x42f - 0x0000000000000440 __TA3CTL = 0x440 - 0x0000000000000440 __TA3CTL_L = 0x440 - 0x0000000000000441 __TA3CTL_H = 0x441 - 0x0000000000000442 __TA3CCTL0 = 0x442 - 0x0000000000000442 __TA3CCTL0_L = 0x442 - 0x0000000000000443 __TA3CCTL0_H = 0x443 - 0x0000000000000444 __TA3CCTL1 = 0x444 - 0x0000000000000444 __TA3CCTL1_L = 0x444 - 0x0000000000000445 __TA3CCTL1_H = 0x445 - 0x0000000000000450 __TA3R = 0x450 - 0x0000000000000450 __TA3R_L = 0x450 - 0x0000000000000451 __TA3R_H = 0x451 - 0x0000000000000452 __TA3CCR0 = 0x452 - 0x0000000000000452 __TA3CCR0_L = 0x452 - 0x0000000000000453 __TA3CCR0_H = 0x453 - 0x0000000000000454 __TA3CCR1 = 0x454 - 0x0000000000000454 __TA3CCR1_L = 0x454 - 0x0000000000000455 __TA3CCR1_H = 0x455 - 0x0000000000000460 __TA3EX0 = 0x460 - 0x0000000000000460 __TA3EX0_L = 0x460 - 0x0000000000000461 __TA3EX0_H = 0x461 - 0x000000000000046e __TA3IV = 0x46e - 0x000000000000046e __TA3IV_L = 0x46e - 0x000000000000046f __TA3IV_H = 0x46f - 0x00000000000007c0 __TA4CTL = 0x7c0 - 0x00000000000007c0 __TA4CTL_L = 0x7c0 - 0x00000000000007c1 __TA4CTL_H = 0x7c1 - 0x00000000000007c2 __TA4CCTL0 = 0x7c2 - 0x00000000000007c2 __TA4CCTL0_L = 0x7c2 - 0x00000000000007c3 __TA4CCTL0_H = 0x7c3 - 0x00000000000007c4 __TA4CCTL1 = 0x7c4 - 0x00000000000007c4 __TA4CCTL1_L = 0x7c4 - 0x00000000000007c5 __TA4CCTL1_H = 0x7c5 - 0x00000000000007c6 __TA4CCTL2 = 0x7c6 - 0x00000000000007c6 __TA4CCTL2_L = 0x7c6 - 0x00000000000007c7 __TA4CCTL2_H = 0x7c7 - 0x00000000000007d0 __TA4R = 0x7d0 - 0x00000000000007d0 __TA4R_L = 0x7d0 - 0x00000000000007d1 __TA4R_H = 0x7d1 - 0x00000000000007d2 __TA4CCR0 = 0x7d2 - 0x00000000000007d2 __TA4CCR0_L = 0x7d2 - 0x00000000000007d3 __TA4CCR0_H = 0x7d3 - 0x00000000000007d4 __TA4CCR1 = 0x7d4 - 0x00000000000007d4 __TA4CCR1_L = 0x7d4 - 0x00000000000007d5 __TA4CCR1_H = 0x7d5 - 0x00000000000007d6 __TA4CCR2 = 0x7d6 - 0x00000000000007d6 __TA4CCR2_L = 0x7d6 - 0x00000000000007d7 __TA4CCR2_H = 0x7d7 - 0x00000000000007e0 __TA4EX0 = 0x7e0 - 0x00000000000007e0 __TA4EX0_L = 0x7e0 - 0x00000000000007e1 __TA4EX0_H = 0x7e1 - 0x00000000000007ee __TA4IV = 0x7ee - 0x00000000000007ee __TA4IV_L = 0x7ee - 0x00000000000007ef __TA4IV_H = 0x7ef - 0x00000000000003c0 __TB0CTL = 0x3c0 - 0x00000000000003c0 __TB0CTL_L = 0x3c0 - 0x00000000000003c1 __TB0CTL_H = 0x3c1 - 0x00000000000003c2 __TB0CCTL0 = 0x3c2 - 0x00000000000003c2 __TB0CCTL0_L = 0x3c2 - 0x00000000000003c3 __TB0CCTL0_H = 0x3c3 - 0x00000000000003c4 __TB0CCTL1 = 0x3c4 - 0x00000000000003c4 __TB0CCTL1_L = 0x3c4 - 0x00000000000003c5 __TB0CCTL1_H = 0x3c5 - 0x00000000000003c6 __TB0CCTL2 = 0x3c6 - 0x00000000000003c6 __TB0CCTL2_L = 0x3c6 - 0x00000000000003c7 __TB0CCTL2_H = 0x3c7 - 0x00000000000003c8 __TB0CCTL3 = 0x3c8 - 0x00000000000003c8 __TB0CCTL3_L = 0x3c8 - 0x00000000000003c9 __TB0CCTL3_H = 0x3c9 - 0x00000000000003ca __TB0CCTL4 = 0x3ca - 0x00000000000003ca __TB0CCTL4_L = 0x3ca - 0x00000000000003cb __TB0CCTL4_H = 0x3cb - 0x00000000000003cc __TB0CCTL5 = 0x3cc - 0x00000000000003cc __TB0CCTL5_L = 0x3cc - 0x00000000000003cd __TB0CCTL5_H = 0x3cd - 0x00000000000003ce __TB0CCTL6 = 0x3ce - 0x00000000000003ce __TB0CCTL6_L = 0x3ce - 0x00000000000003cf __TB0CCTL6_H = 0x3cf - 0x00000000000003d0 __TB0R = 0x3d0 - 0x00000000000003d0 __TB0R_L = 0x3d0 - 0x00000000000003d1 __TB0R_H = 0x3d1 - 0x00000000000003d2 __TB0CCR0 = 0x3d2 - 0x00000000000003d2 __TB0CCR0_L = 0x3d2 - 0x00000000000003d3 __TB0CCR0_H = 0x3d3 - 0x00000000000003d4 __TB0CCR1 = 0x3d4 - 0x00000000000003d4 __TB0CCR1_L = 0x3d4 - 0x00000000000003d5 __TB0CCR1_H = 0x3d5 - 0x00000000000003d6 __TB0CCR2 = 0x3d6 - 0x00000000000003d6 __TB0CCR2_L = 0x3d6 - 0x00000000000003d7 __TB0CCR2_H = 0x3d7 - 0x00000000000003d8 __TB0CCR3 = 0x3d8 - 0x00000000000003d8 __TB0CCR3_L = 0x3d8 - 0x00000000000003d9 __TB0CCR3_H = 0x3d9 - 0x00000000000003da __TB0CCR4 = 0x3da - 0x00000000000003da __TB0CCR4_L = 0x3da - 0x00000000000003db __TB0CCR4_H = 0x3db - 0x00000000000003dc __TB0CCR5 = 0x3dc - 0x00000000000003dc __TB0CCR5_L = 0x3dc - 0x00000000000003dd __TB0CCR5_H = 0x3dd - 0x00000000000003de __TB0CCR6 = 0x3de - 0x00000000000003de __TB0CCR6_L = 0x3de - 0x00000000000003df __TB0CCR6_H = 0x3df - 0x00000000000003e0 __TB0EX0 = 0x3e0 - 0x00000000000003e0 __TB0EX0_L = 0x3e0 - 0x00000000000003e1 __TB0EX0_H = 0x3e1 - 0x00000000000003ee __TB0IV = 0x3ee - 0x00000000000003ee __TB0IV_L = 0x3ee - 0x00000000000003ef __TB0IV_H = 0x3ef - 0x000000000000015c __WDTCTL = 0x15c - 0x000000000000015c __WDTCTL_L = 0x15c - 0x000000000000015d __WDTCTL_H = 0x15d - 0x00000000000005c0 __UCA0CTLW0 = 0x5c0 - 0x00000000000005c0 __UCA0CTLW0_L = 0x5c0 - 0x00000000000005c1 __UCA0CTLW0_H = 0x5c1 - 0x00000000000005c2 __UCA0CTLW1 = 0x5c2 - 0x00000000000005c2 __UCA0CTLW1_L = 0x5c2 - 0x00000000000005c3 __UCA0CTLW1_H = 0x5c3 - 0x00000000000005c6 __UCA0BRW = 0x5c6 - 0x00000000000005c6 __UCA0BRW_L = 0x5c6 - 0x00000000000005c7 __UCA0BRW_H = 0x5c7 - 0x00000000000005c8 __UCA0MCTLW = 0x5c8 - 0x00000000000005c8 __UCA0MCTLW_L = 0x5c8 - 0x00000000000005c9 __UCA0MCTLW_H = 0x5c9 - 0x00000000000005ca __UCA0STATW = 0x5ca - 0x00000000000005ca __UCA0STATW_L = 0x5ca - 0x00000000000005cb __UCA0STATW_H = 0x5cb - 0x00000000000005cc __UCA0RXBUF = 0x5cc - 0x00000000000005cc __UCA0RXBUF_L = 0x5cc - 0x00000000000005cd __UCA0RXBUF_H = 0x5cd - 0x00000000000005ce __UCA0TXBUF = 0x5ce - 0x00000000000005ce __UCA0TXBUF_L = 0x5ce - 0x00000000000005cf __UCA0TXBUF_H = 0x5cf - 0x00000000000005d0 __UCA0ABCTL = 0x5d0 - 0x00000000000005d0 __UCA0ABCTL_L = 0x5d0 - 0x00000000000005d1 __UCA0ABCTL_H = 0x5d1 - 0x00000000000005d2 __UCA0IRCTL = 0x5d2 - 0x00000000000005d2 __UCA0IRCTL_L = 0x5d2 - 0x00000000000005d3 __UCA0IRCTL_H = 0x5d3 - 0x00000000000005da __UCA0IE = 0x5da - 0x00000000000005da __UCA0IE_L = 0x5da - 0x00000000000005db __UCA0IE_H = 0x5db - 0x00000000000005dc __UCA0IFG = 0x5dc - 0x00000000000005dc __UCA0IFG_L = 0x5dc - 0x00000000000005dd __UCA0IFG_H = 0x5dd - 0x00000000000005de __UCA0IV = 0x5de - 0x00000000000005de __UCA0IV_L = 0x5de - 0x00000000000005df __UCA0IV_H = 0x5df - 0x00000000000005e0 __UCA1CTLW0 = 0x5e0 - 0x00000000000005e0 __UCA1CTLW0_L = 0x5e0 - 0x00000000000005e1 __UCA1CTLW0_H = 0x5e1 - 0x00000000000005e2 __UCA1CTLW1 = 0x5e2 - 0x00000000000005e2 __UCA1CTLW1_L = 0x5e2 - 0x00000000000005e3 __UCA1CTLW1_H = 0x5e3 - 0x00000000000005e6 __UCA1BRW = 0x5e6 - 0x00000000000005e6 __UCA1BRW_L = 0x5e6 - 0x00000000000005e7 __UCA1BRW_H = 0x5e7 - 0x00000000000005e8 __UCA1MCTLW = 0x5e8 - 0x00000000000005e8 __UCA1MCTLW_L = 0x5e8 - 0x00000000000005e9 __UCA1MCTLW_H = 0x5e9 - 0x00000000000005ea __UCA1STATW = 0x5ea - 0x00000000000005ea __UCA1STATW_L = 0x5ea - 0x00000000000005eb __UCA1STATW_H = 0x5eb - 0x00000000000005ec __UCA1RXBUF = 0x5ec - 0x00000000000005ec __UCA1RXBUF_L = 0x5ec - 0x00000000000005ed __UCA1RXBUF_H = 0x5ed - 0x00000000000005ee __UCA1TXBUF = 0x5ee - 0x00000000000005ee __UCA1TXBUF_L = 0x5ee - 0x00000000000005ef __UCA1TXBUF_H = 0x5ef - 0x00000000000005f0 __UCA1ABCTL = 0x5f0 - 0x00000000000005f0 __UCA1ABCTL_L = 0x5f0 - 0x00000000000005f1 __UCA1ABCTL_H = 0x5f1 - 0x00000000000005f2 __UCA1IRCTL = 0x5f2 - 0x00000000000005f2 __UCA1IRCTL_L = 0x5f2 - 0x00000000000005f3 __UCA1IRCTL_H = 0x5f3 - 0x00000000000005fa __UCA1IE = 0x5fa - 0x00000000000005fa __UCA1IE_L = 0x5fa - 0x00000000000005fb __UCA1IE_H = 0x5fb - 0x00000000000005fc __UCA1IFG = 0x5fc - 0x00000000000005fc __UCA1IFG_L = 0x5fc - 0x00000000000005fd __UCA1IFG_H = 0x5fd - 0x00000000000005fe __UCA1IV = 0x5fe - 0x00000000000005fe __UCA1IV_L = 0x5fe - 0x00000000000005ff __UCA1IV_H = 0x5ff - 0x0000000000000600 __UCA2CTLW0 = 0x600 - 0x0000000000000600 __UCA2CTLW0_L = 0x600 - 0x0000000000000601 __UCA2CTLW0_H = 0x601 - 0x0000000000000602 __UCA2CTLW1 = 0x602 - 0x0000000000000602 __UCA2CTLW1_L = 0x602 - 0x0000000000000603 __UCA2CTLW1_H = 0x603 - 0x0000000000000606 __UCA2BRW = 0x606 - 0x0000000000000606 __UCA2BRW_L = 0x606 - 0x0000000000000607 __UCA2BRW_H = 0x607 - 0x0000000000000608 __UCA2MCTLW = 0x608 - 0x0000000000000608 __UCA2MCTLW_L = 0x608 - 0x0000000000000609 __UCA2MCTLW_H = 0x609 - 0x000000000000060a __UCA2STATW = 0x60a - 0x000000000000060a __UCA2STATW_L = 0x60a - 0x000000000000060b __UCA2STATW_H = 0x60b - 0x000000000000060c __UCA2RXBUF = 0x60c - 0x000000000000060c __UCA2RXBUF_L = 0x60c - 0x000000000000060d __UCA2RXBUF_H = 0x60d - 0x000000000000060e __UCA2TXBUF = 0x60e - 0x000000000000060e __UCA2TXBUF_L = 0x60e - 0x000000000000060f __UCA2TXBUF_H = 0x60f - 0x0000000000000610 __UCA2ABCTL = 0x610 - 0x0000000000000610 __UCA2ABCTL_L = 0x610 - 0x0000000000000611 __UCA2ABCTL_H = 0x611 - 0x0000000000000612 __UCA2IRCTL = 0x612 - 0x0000000000000612 __UCA2IRCTL_L = 0x612 - 0x0000000000000613 __UCA2IRCTL_H = 0x613 - 0x000000000000061a __UCA2IE = 0x61a - 0x000000000000061a __UCA2IE_L = 0x61a - 0x000000000000061b __UCA2IE_H = 0x61b - 0x000000000000061c __UCA2IFG = 0x61c - 0x000000000000061c __UCA2IFG_L = 0x61c - 0x000000000000061d __UCA2IFG_H = 0x61d - 0x000000000000061e __UCA2IV = 0x61e - 0x000000000000061e __UCA2IV_L = 0x61e - 0x000000000000061f __UCA2IV_H = 0x61f - 0x0000000000000620 __UCA3CTLW0 = 0x620 - 0x0000000000000620 __UCA3CTLW0_L = 0x620 - 0x0000000000000621 __UCA3CTLW0_H = 0x621 - 0x0000000000000622 __UCA3CTLW1 = 0x622 - 0x0000000000000622 __UCA3CTLW1_L = 0x622 - 0x0000000000000623 __UCA3CTLW1_H = 0x623 - 0x0000000000000626 __UCA3BRW = 0x626 - 0x0000000000000626 __UCA3BRW_L = 0x626 - 0x0000000000000627 __UCA3BRW_H = 0x627 - 0x0000000000000628 __UCA3MCTLW = 0x628 - 0x0000000000000628 __UCA3MCTLW_L = 0x628 - 0x0000000000000629 __UCA3MCTLW_H = 0x629 - 0x000000000000062a __UCA3STATW = 0x62a - 0x000000000000062a __UCA3STATW_L = 0x62a - 0x000000000000062b __UCA3STATW_H = 0x62b - 0x000000000000062c __UCA3RXBUF = 0x62c - 0x000000000000062c __UCA3RXBUF_L = 0x62c - 0x000000000000062d __UCA3RXBUF_H = 0x62d - 0x000000000000062e __UCA3TXBUF = 0x62e - 0x000000000000062e __UCA3TXBUF_L = 0x62e - 0x000000000000062f __UCA3TXBUF_H = 0x62f - 0x0000000000000630 __UCA3ABCTL = 0x630 - 0x0000000000000630 __UCA3ABCTL_L = 0x630 - 0x0000000000000631 __UCA3ABCTL_H = 0x631 - 0x0000000000000632 __UCA3IRCTL = 0x632 - 0x0000000000000632 __UCA3IRCTL_L = 0x632 - 0x0000000000000633 __UCA3IRCTL_H = 0x633 - 0x000000000000063a __UCA3IE = 0x63a - 0x000000000000063a __UCA3IE_L = 0x63a - 0x000000000000063b __UCA3IE_H = 0x63b - 0x000000000000063c __UCA3IFG = 0x63c - 0x000000000000063c __UCA3IFG_L = 0x63c - 0x000000000000063d __UCA3IFG_H = 0x63d - 0x000000000000063e __UCA3IV = 0x63e - 0x000000000000063e __UCA3IV_L = 0x63e - 0x000000000000063f __UCA3IV_H = 0x63f - 0x0000000000000640 __UCB0CTLW0 = 0x640 - 0x0000000000000640 __UCB0CTLW0_L = 0x640 - 0x0000000000000641 __UCB0CTLW0_H = 0x641 - 0x0000000000000642 __UCB0CTLW1 = 0x642 - 0x0000000000000642 __UCB0CTLW1_L = 0x642 - 0x0000000000000643 __UCB0CTLW1_H = 0x643 - 0x0000000000000646 __UCB0BRW = 0x646 - 0x0000000000000646 __UCB0BRW_L = 0x646 - 0x0000000000000647 __UCB0BRW_H = 0x647 - 0x0000000000000648 __UCB0STATW = 0x648 - 0x0000000000000648 __UCB0STATW_L = 0x648 - 0x0000000000000649 __UCB0STATW_H = 0x649 - 0x000000000000064a __UCB0TBCNT = 0x64a - 0x000000000000064a __UCB0TBCNT_L = 0x64a - 0x000000000000064b __UCB0TBCNT_H = 0x64b - 0x000000000000064c __UCB0RXBUF = 0x64c - 0x000000000000064c __UCB0RXBUF_L = 0x64c - 0x000000000000064d __UCB0RXBUF_H = 0x64d - 0x000000000000064e __UCB0TXBUF = 0x64e - 0x000000000000064e __UCB0TXBUF_L = 0x64e - 0x000000000000064f __UCB0TXBUF_H = 0x64f - 0x0000000000000654 __UCB0I2COA0 = 0x654 - 0x0000000000000654 __UCB0I2COA0_L = 0x654 - 0x0000000000000655 __UCB0I2COA0_H = 0x655 - 0x0000000000000656 __UCB0I2COA1 = 0x656 - 0x0000000000000656 __UCB0I2COA1_L = 0x656 - 0x0000000000000657 __UCB0I2COA1_H = 0x657 - 0x0000000000000658 __UCB0I2COA2 = 0x658 - 0x0000000000000658 __UCB0I2COA2_L = 0x658 - 0x0000000000000659 __UCB0I2COA2_H = 0x659 - 0x000000000000065a __UCB0I2COA3 = 0x65a - 0x000000000000065a __UCB0I2COA3_L = 0x65a - 0x000000000000065b __UCB0I2COA3_H = 0x65b - 0x000000000000065c __UCB0ADDRX = 0x65c - 0x000000000000065c __UCB0ADDRX_L = 0x65c - 0x000000000000065d __UCB0ADDRX_H = 0x65d - 0x000000000000065e __UCB0ADDMASK = 0x65e - 0x000000000000065e __UCB0ADDMASK_L = 0x65e - 0x000000000000065f __UCB0ADDMASK_H = 0x65f - 0x0000000000000660 __UCB0I2CSA = 0x660 - 0x0000000000000660 __UCB0I2CSA_L = 0x660 - 0x0000000000000661 __UCB0I2CSA_H = 0x661 - 0x000000000000066a __UCB0IE = 0x66a - 0x000000000000066a __UCB0IE_L = 0x66a - 0x000000000000066b __UCB0IE_H = 0x66b - 0x000000000000066c __UCB0IFG = 0x66c - 0x000000000000066c __UCB0IFG_L = 0x66c - 0x000000000000066d __UCB0IFG_H = 0x66d - 0x000000000000066e __UCB0IV = 0x66e - 0x000000000000066e __UCB0IV_L = 0x66e - 0x000000000000066f __UCB0IV_H = 0x66f - 0x0000000000000680 __UCB1CTLW0 = 0x680 - 0x0000000000000680 __UCB1CTLW0_L = 0x680 - 0x0000000000000681 __UCB1CTLW0_H = 0x681 - 0x0000000000000682 __UCB1CTLW1 = 0x682 - 0x0000000000000682 __UCB1CTLW1_L = 0x682 - 0x0000000000000683 __UCB1CTLW1_H = 0x683 - 0x0000000000000686 __UCB1BRW = 0x686 - 0x0000000000000686 __UCB1BRW_L = 0x686 - 0x0000000000000687 __UCB1BRW_H = 0x687 - 0x0000000000000688 __UCB1STATW = 0x688 - 0x0000000000000688 __UCB1STATW_L = 0x688 - 0x0000000000000689 __UCB1STATW_H = 0x689 - 0x000000000000068a __UCB1TBCNT = 0x68a - 0x000000000000068a __UCB1TBCNT_L = 0x68a - 0x000000000000068b __UCB1TBCNT_H = 0x68b - 0x000000000000068c __UCB1RXBUF = 0x68c - 0x000000000000068c __UCB1RXBUF_L = 0x68c - 0x000000000000068d __UCB1RXBUF_H = 0x68d - 0x000000000000068e __UCB1TXBUF = 0x68e - 0x000000000000068e __UCB1TXBUF_L = 0x68e - 0x000000000000068f __UCB1TXBUF_H = 0x68f - 0x0000000000000694 __UCB1I2COA0 = 0x694 - 0x0000000000000694 __UCB1I2COA0_L = 0x694 - 0x0000000000000695 __UCB1I2COA0_H = 0x695 - 0x0000000000000696 __UCB1I2COA1 = 0x696 - 0x0000000000000696 __UCB1I2COA1_L = 0x696 - 0x0000000000000697 __UCB1I2COA1_H = 0x697 - 0x0000000000000698 __UCB1I2COA2 = 0x698 - 0x0000000000000698 __UCB1I2COA2_L = 0x698 - 0x0000000000000699 __UCB1I2COA2_H = 0x699 - 0x000000000000069a __UCB1I2COA3 = 0x69a - 0x000000000000069a __UCB1I2COA3_L = 0x69a - 0x000000000000069b __UCB1I2COA3_H = 0x69b - 0x000000000000069c __UCB1ADDRX = 0x69c - 0x000000000000069c __UCB1ADDRX_L = 0x69c - 0x000000000000069d __UCB1ADDRX_H = 0x69d - 0x000000000000069e __UCB1ADDMASK = 0x69e - 0x000000000000069e __UCB1ADDMASK_L = 0x69e - 0x000000000000069f __UCB1ADDMASK_H = 0x69f - 0x00000000000006a0 __UCB1I2CSA = 0x6a0 - 0x00000000000006a0 __UCB1I2CSA_L = 0x6a0 - 0x00000000000006a1 __UCB1I2CSA_H = 0x6a1 - 0x00000000000006aa __UCB1IE = 0x6aa - 0x00000000000006aa __UCB1IE_L = 0x6aa - 0x00000000000006ab __UCB1IE_H = 0x6ab - 0x00000000000006ac __UCB1IFG = 0x6ac - 0x00000000000006ac __UCB1IFG_L = 0x6ac - 0x00000000000006ad __UCB1IFG_H = 0x6ad - 0x00000000000006ae __UCB1IV = 0x6ae - 0x00000000000006ae __UCB1IV_L = 0x6ae - 0x00000000000006af __UCB1IV_H = 0x6af - 0x00000000000006c0 __UCB2CTLW0 = 0x6c0 - 0x00000000000006c0 __UCB2CTLW0_L = 0x6c0 - 0x00000000000006c1 __UCB2CTLW0_H = 0x6c1 - 0x00000000000006c2 __UCB2CTLW1 = 0x6c2 - 0x00000000000006c2 __UCB2CTLW1_L = 0x6c2 - 0x00000000000006c3 __UCB2CTLW1_H = 0x6c3 - 0x00000000000006c6 __UCB2BRW = 0x6c6 - 0x00000000000006c6 __UCB2BRW_L = 0x6c6 - 0x00000000000006c7 __UCB2BRW_H = 0x6c7 - 0x00000000000006c8 __UCB2STATW = 0x6c8 - 0x00000000000006c8 __UCB2STATW_L = 0x6c8 - 0x00000000000006c9 __UCB2STATW_H = 0x6c9 - 0x00000000000006ca __UCB2TBCNT = 0x6ca - 0x00000000000006ca __UCB2TBCNT_L = 0x6ca - 0x00000000000006cb __UCB2TBCNT_H = 0x6cb - 0x00000000000006cc __UCB2RXBUF = 0x6cc - 0x00000000000006cc __UCB2RXBUF_L = 0x6cc - 0x00000000000006cd __UCB2RXBUF_H = 0x6cd - 0x00000000000006ce __UCB2TXBUF = 0x6ce - 0x00000000000006ce __UCB2TXBUF_L = 0x6ce - 0x00000000000006cf __UCB2TXBUF_H = 0x6cf - 0x00000000000006d4 __UCB2I2COA0 = 0x6d4 - 0x00000000000006d4 __UCB2I2COA0_L = 0x6d4 - 0x00000000000006d5 __UCB2I2COA0_H = 0x6d5 - 0x00000000000006d6 __UCB2I2COA1 = 0x6d6 - 0x00000000000006d6 __UCB2I2COA1_L = 0x6d6 - 0x00000000000006d7 __UCB2I2COA1_H = 0x6d7 - 0x00000000000006d8 __UCB2I2COA2 = 0x6d8 - 0x00000000000006d8 __UCB2I2COA2_L = 0x6d8 - 0x00000000000006d9 __UCB2I2COA2_H = 0x6d9 - 0x00000000000006da __UCB2I2COA3 = 0x6da - 0x00000000000006da __UCB2I2COA3_L = 0x6da - 0x00000000000006db __UCB2I2COA3_H = 0x6db - 0x00000000000006dc __UCB2ADDRX = 0x6dc - 0x00000000000006dc __UCB2ADDRX_L = 0x6dc - 0x00000000000006dd __UCB2ADDRX_H = 0x6dd - 0x00000000000006de __UCB2ADDMASK = 0x6de - 0x00000000000006de __UCB2ADDMASK_L = 0x6de - 0x00000000000006df __UCB2ADDMASK_H = 0x6df - 0x00000000000006e0 __UCB2I2CSA = 0x6e0 - 0x00000000000006e0 __UCB2I2CSA_L = 0x6e0 - 0x00000000000006e1 __UCB2I2CSA_H = 0x6e1 - 0x00000000000006ea __UCB2IE = 0x6ea - 0x00000000000006ea __UCB2IE_L = 0x6ea - 0x00000000000006eb __UCB2IE_H = 0x6eb - 0x00000000000006ec __UCB2IFG = 0x6ec - 0x00000000000006ec __UCB2IFG_L = 0x6ec - 0x00000000000006ed __UCB2IFG_H = 0x6ed - 0x00000000000006ee __UCB2IV = 0x6ee - 0x00000000000006ee __UCB2IV_L = 0x6ee - 0x00000000000006ef __UCB2IV_H = 0x6ef - 0x0000000000000700 __UCB3CTLW0 = 0x700 - 0x0000000000000700 __UCB3CTLW0_L = 0x700 - 0x0000000000000701 __UCB3CTLW0_H = 0x701 - 0x0000000000000702 __UCB3CTLW1 = 0x702 - 0x0000000000000702 __UCB3CTLW1_L = 0x702 - 0x0000000000000703 __UCB3CTLW1_H = 0x703 - 0x0000000000000706 __UCB3BRW = 0x706 - 0x0000000000000706 __UCB3BRW_L = 0x706 - 0x0000000000000707 __UCB3BRW_H = 0x707 - 0x0000000000000708 __UCB3STATW = 0x708 - 0x0000000000000708 __UCB3STATW_L = 0x708 - 0x0000000000000709 __UCB3STATW_H = 0x709 - 0x000000000000070a __UCB3TBCNT = 0x70a - 0x000000000000070a __UCB3TBCNT_L = 0x70a - 0x000000000000070b __UCB3TBCNT_H = 0x70b - 0x000000000000070c __UCB3RXBUF = 0x70c - 0x000000000000070c __UCB3RXBUF_L = 0x70c - 0x000000000000070d __UCB3RXBUF_H = 0x70d - 0x000000000000070e __UCB3TXBUF = 0x70e - 0x000000000000070e __UCB3TXBUF_L = 0x70e - 0x000000000000070f __UCB3TXBUF_H = 0x70f - 0x0000000000000714 __UCB3I2COA0 = 0x714 - 0x0000000000000714 __UCB3I2COA0_L = 0x714 - 0x0000000000000715 __UCB3I2COA0_H = 0x715 - 0x0000000000000716 __UCB3I2COA1 = 0x716 - 0x0000000000000716 __UCB3I2COA1_L = 0x716 - 0x0000000000000717 __UCB3I2COA1_H = 0x717 - 0x0000000000000718 __UCB3I2COA2 = 0x718 - 0x0000000000000718 __UCB3I2COA2_L = 0x718 - 0x0000000000000719 __UCB3I2COA2_H = 0x719 - 0x000000000000071a __UCB3I2COA3 = 0x71a - 0x000000000000071a __UCB3I2COA3_L = 0x71a - 0x000000000000071b __UCB3I2COA3_H = 0x71b - 0x000000000000071c __UCB3ADDRX = 0x71c - 0x000000000000071c __UCB3ADDRX_L = 0x71c - 0x000000000000071d __UCB3ADDRX_H = 0x71d - 0x000000000000071e __UCB3ADDMASK = 0x71e - 0x000000000000071e __UCB3ADDMASK_L = 0x71e - 0x000000000000071f __UCB3ADDMASK_H = 0x71f - 0x0000000000000720 __UCB3I2CSA = 0x720 - 0x0000000000000720 __UCB3I2CSA_L = 0x720 - 0x0000000000000721 __UCB3I2CSA_H = 0x721 - 0x000000000000072a __UCB3IE = 0x72a - 0x000000000000072a __UCB3IE_L = 0x72a - 0x000000000000072b __UCB3IE_H = 0x72b - 0x000000000000072c __UCB3IFG = 0x72c - 0x000000000000072c __UCB3IFG_L = 0x72c - 0x000000000000072d __UCB3IFG_H = 0x72d - 0x000000000000072e __UCB3IV = 0x72e - 0x000000000000072e __UCB3IV_L = 0x72e - 0x000000000000072f __UCB3IV_H = 0x72f - 0x0000000000003c00 _estack = 0x3c00 - 0x0000000000000000 _Min_Heap_Size = 0x0 - 0x0000000000000100 _Min_Stack_Size = 0x100 - -.isr_vector 0x000000000000ffb4 0x4c - 0x000000000000ffb4 . = ALIGN (0x4) - *(.isr_vector) - .isr_vector 0x000000000000ffb4 0x4c build/fft_lea/tpl_interrupt_vectors.c.o - 0x000000000000ffb4 tpl_it_vectors - 0x0000000000010000 . = ALIGN (0x4) - -.NVdata 0x0000000000004000 0x0 - 0x0000000000004000 . = ALIGN (0x4) - 0x0000000000004000 __nvdata_start = . - *(.osVar_NON_VOLATILE_32BIT) - *(.osVar_NON_VOLATILE_16BIT) - *(.osVar_NON_VOLATILE_8BIT) - *(.osVar_NON_VOLATILE_BOOLEAN) - *(.osVar_NON_VOLATILE_UNSPECIFIED) - *(.Task_fft_SEC_VAR_NON_VOLATILE_32BIT) - *(.Task_fft_SEC_VAR_NON_VOLATILE_16BIT) - *(.Task_fft_SEC_VAR_NON_VOLATILE_8BIT) - *(.Task_fft_SEC_VAR_NON_VOLATILE_BOOLEAN) - *(.Task_fft_SEC_VAR_NON_VOLATILE_UNSPECIFIED) - 0x0000000000004000 . = ALIGN (0x2) - 0x0000000000004000 __nvdata_end = . - 0x0000000000004000 __nvdata_size = SIZEOF (.NVdata) - -.NVdataInit 0x0000000000004000 0x0 - 0x0000000000004000 . = ALIGN (0x400) - 0x0000000000004000 TPL_MPU_B1_BOUNDARY = . - 0x0000000000004000 __nvdata_load_start = . - 0x0000000000004000 . = (. + SIZEOF (.NVdata)) - 0x0000000000004000 __nvdata_load_end = . - -.textInit 0x0000000000004000 0x1e - *(.init) - .init 0x0000000000004000 0x1e build/machines/msp430x/small/tpl_startup.S.o - 0x0000000000004000 tpl_reset_handler - 0x0000000000004020 . = ALIGN (0x4) - -ostext 0x0000000000004020 0x1aa2 - *(.SC_handler) - *(.EI_handler) - *(.osCode) - .osCode 0x0000000000004020 0x9de build/os/tpl_os_kernel.c.o - 0x0000000000004020 tpl_current_os_state - 0x00000000000040a2 tpl_schedule_from_running - 0x00000000000040e2 tpl_start_scheduling - 0x00000000000040ee tpl_start - 0x000000000000416a tpl_run_elected - 0x00000000000041ea tpl_block - 0x0000000000004210 tpl_release - 0x0000000000004240 tpl_front_proc - 0x000000000000425a tpl_terminate - 0x000000000000428c tpl_init_proc - 0x00000000000042b8 tpl_put_preempted_proc - 0x0000000000004334 tpl_put_new_proc - 0x00000000000043e2 tpl_init_os - 0x000000000000444e tpl_get_internal_resource - 0x00000000000044ea tpl_release_internal_resource - 0x0000000000004540 tpl_call_terminate_task_service - 0x0000000000004570 tpl_call_terminate_isr2_service - 0x00000000000045b4 tpl_activate_task - 0x0000000000004634 tpl_set_event - 0x000000000000464a tpl_compare_entries - 0x000000000000475e tpl_bubble_up - 0x0000000000004816 tpl_bubble_down - 0x000000000000493e tpl_remove_front_proc - 0x00000000000049c2 tpl_preempt - .osCode 0x00000000000049fe 0x3c8 build/os/tpl_os_timeobj_kernel.c.o - 0x00000000000049fe tpl_enable_counters - 0x0000000000004a06 tpl_insert_time_obj - 0x0000000000004b2a tpl_remove_time_obj - 0x0000000000004bc6 tpl_counter_tick - .osCode 0x0000000000004dc6 0x8e build/os/tpl_os_os_kernel.c.o - 0x0000000000004dc6 tpl_get_active_application_mode_service - 0x0000000000004dec tpl_start_os_service - 0x0000000000004e30 tpl_call_shutdown_os - 0x0000000000004e40 tpl_shutdown_os_service - .osCode 0x0000000000004e54 0x220 build/os/tpl_os_interrupt_kernel.c.o - 0x0000000000004e54 tpl_get_interrupt_lock_status - 0x0000000000004e90 tpl_reset_interrupt_lock_status - 0x0000000000004eb8 tpl_terminate_isr2_service - 0x0000000000004ef8 tpl_null_it - 0x0000000000004f04 tpl_enable_all_interrupts_service - 0x0000000000004f18 tpl_disable_all_interrupts_service - 0x0000000000004f44 tpl_resume_all_interrupts_service - 0x0000000000004fa0 tpl_suspend_all_interrupts_service - 0x0000000000004fdc tpl_resume_os_interrupts_service - 0x0000000000005038 tpl_suspend_os_interrupts_service - .osCode 0x0000000000005074 0x2de build/os/tpl_os_task_kernel.c.o - 0x0000000000005074 tpl_activate_task_service - 0x00000000000050d0 tpl_terminate_task_service - 0x0000000000005140 tpl_chain_task_service - 0x00000000000051f4 tpl_schedule_service - 0x0000000000005286 tpl_get_task_id_service - 0x00000000000052e8 tpl_get_task_state_service - .osCode 0x0000000000005352 0x24c build/os/tpl_os_resource_kernel.c.o - 0x0000000000005352 tpl_release_all_resources - 0x00000000000053b8 tpl_get_resource_service - 0x00000000000054d6 tpl_release_resource_service - .osCode 0x000000000000559e 0x34 build/fft_lea/tpl_app_config.c.o - 0x000000000000559e tpl_tick_TIMER3_A0_VECTOR - .osCode 0x00000000000055d2 0x14a build/machines/msp430x/small/tpl_machine_msp430x.c.o - 0x00000000000055d2 tpl_init_context - 0x00000000000056ac tpl_disable_interrupts - 0x00000000000056b4 tpl_enable_interrupts - 0x00000000000056be tpl_disable_os_interrupts - 0x00000000000056c6 tpl_enable_os_interrupts - 0x00000000000056ce tpl_init_machine - 0x00000000000056da tpl_shutdown - 0x00000000000056e6 tpl_init_machine_generic - 0x00000000000056ea tpl_init_machine_specific - 0x00000000000056f2 tpl_set_systick_timer - 0x0000000000005712 idle_function - .osCode 0x000000000000571c 0xda build/machines/msp430x/small/tpl_startup.c.o - 0x000000000000571c tpl_MPU_violation - 0x000000000000571e memInit - 0x000000000000576e tpl_continue_reset_handler - *fill* 0x00000000000057f6 0x2 - .osCode 0x00000000000057f8 0x15c build/machines/msp430x/small/tpl_clocks.c.o - 0x00000000000057f8 tpl_set_mcu_clock - .osCode 0x0000000000005954 0x4e build/fft_lea/tpl_irq_handlers.S.o - 0x0000000000005954 tpl_primary_irq_handler_TIMER3_A0_VECTOR - .osCode 0x00000000000059a2 0x94 build/machines/msp430x/small/tpl_sc_handler.S.o - 0x00000000000059a2 tpl_sc_handler - *(.osApiCode) - .osApiCode 0x0000000000005a36 0x24 build/os/tpl_os_os.c.o - 0x0000000000005a36 StartOS - .osApiCode 0x0000000000005a5a 0x68 build/fft_lea/tpl_invoque.S.o - 0x0000000000005a5a GetActiveApplicationMode - 0x0000000000005a60 tpl_start_os - 0x0000000000005a66 ShutdownOS - 0x0000000000005a6c EnableAllInterrupts - 0x0000000000005a72 DisableAllInterrupts - 0x0000000000005a78 ResumeAllInterrupts - 0x0000000000005a7e SuspendAllInterrupts - 0x0000000000005a82 ResumeOSInterrupts - 0x0000000000005a86 SuspendOSInterrupts - 0x0000000000005a8a CallTerminateISR2 - 0x0000000000005a8e ActivateTask - 0x0000000000005a94 TerminateTask - 0x0000000000005a9a ChainTask - 0x0000000000005aa0 Schedule - 0x0000000000005aa6 GetTaskID - 0x0000000000005aac GetTaskState - 0x0000000000005ab2 CallTerminateTask - 0x0000000000005ab8 GetResource - 0x0000000000005abe ReleaseResource - *(.appCommonCode) - 0x0000000000005ac4 . = ALIGN (0x4) - -osconst 0x0000000000005ac2 0x4e - *(.osConst) - .osConst 0x0000000000005ac2 0x2 build/os/tpl_os_kernel.c.o - 0x0000000000005ac2 INVALID_PROC - 0x0000000000005ac3 INVALID_TASK - .osConst 0x0000000000005ac4 0x26 build/fft_lea/tpl_app_config.c.o - 0x0000000000005ac4 tpl_stat_proc_table - 0x0000000000005ac8 tpl_dyn_proc_table - 0x0000000000005acc tpl_resource_table - 0x0000000000005ace IDLE_TASK_task_stat_desc - 0x0000000000005adc fft_task_stat_desc - .osConst 0x0000000000005aea 0x26 build/fft_lea/tpl_dispatch_table.c.o - 0x0000000000005aea tpl_dispatch_table - *(.osApiConst) - 0x0000000000005b10 . = ALIGN (0x4) - -apptext 0x0000000000005b10 0xfe - 0x0000000000005b10 __PROGCONST_SECTION_START = . - 0x0000000000005b10 __SEG_START_APP_CODE_CONST_RGN = . - 0x0000000000005b10 . = ALIGN (0x4) - *fill* 0x0000000000005b10 0x0 - *(.Task_fftCode) - .Task_fftCode 0x0000000000005b10 0xfe build/fft_lea.c.o - 0x0000000000005b10 main - 0x0000000000005b5e fft_function - 0x0000000000005c10 . = ALIGN (0x4) - -appconst 0x0000000000005c0e 0x526 - *(.rodata) - .rodata 0x0000000000005c0e 0x2 build/fft_lea.c.o - *(.rodata*) - .rodata.OSDEFAULTAPPMODE - 0x0000000000005c10 0x1 build/fft_lea/tpl_app_config.c.o - 0x0000000000005c10 OSDEFAULTAPPMODE - .rodata.tpl_task_app_mode - 0x0000000000005c11 0x1 build/fft_lea/tpl_app_config.c.o - 0x0000000000005c11 tpl_task_app_mode - .rodata.tpl_brwTab - 0x0000000000005c12 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - 0x0000000000005c12 tpl_brwTab - .rodata.tpl_mctlwTab - 0x0000000000005c32 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - 0x0000000000005c32 tpl_mctlwTab - .rodata.npio2_hw - 0x0000000000005c52 0x80 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-ef_rem_pio2.o) - .rodata.two_over_pi - 0x0000000000005cd2 0x318 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-ef_rem_pio2.o) - .rodata.PIo2 0x0000000000005fea 0x2c /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_rem_pio2.o) - .rodata.init_jk - 0x0000000000006016 0x6 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_rem_pio2.o) - .rodata.__thenan_sf - 0x000000000000601c 0xa /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_thenan_sf.o) - 0x000000000000601c __thenan_sf - .rodata.__thenan_df - 0x0000000000006026 0xe /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_thenan_df.o) - 0x0000000000006026 __thenan_df - .rodata.__clz_tab - 0x0000000000006034 0x100 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_clz.o) - 0x0000000000006034 __clz_tab - 0x0000000000006134 . = ALIGN (0x4) - -procconst 0x0000000000006134 0x0 - *(.Task_fft_SEC_CONST_32BIT) - *(.Task_fft_SEC_CALIB_32BIT) - *(.Task_fft_SEC_CARTO_32BIT) - *(.Task_fft_SEC_CONFIG_DATA_32BIT) - *(.Task_fft_SEC_CONST_16BIT) - *(.Task_fft_SEC_CALIB_16BIT) - *(.Task_fft_SEC_CARTO_16BIT) - *(.Task_fft_SEC_CONFIG_DATA_16BIT) - *(.Task_fft_SEC_CONST_8BIT) - *(.Task_fft_SEC_CALIB_8BIT) - *(.Task_fft_SEC_CARTO_8BIT) - *(.Task_fft_SEC_CONFIG_DATA_8BIT) - *(.Task_fft_SEC_CONST_BOOLEAN) - *(.Task_fft_SEC_CALIB_BOOLEAN) - *(.Task_fft_SEC_CARTO_BOOLEAN) - *(.Task_fft_SEC_CONFIG_DATA_BOOLEAN) - *(.Task_fft_SEC_CONST_UNSPECIFIED) - *(.Task_fft_SEC_CALIB_UNSPECIFIED) - *(.Task_fft_SEC_CARTO_UNSPECIFIED) - *(.Task_fft_SEC_CONFIG_DATA_UNSPECIFIED) - 0x0000000000006134 . = ALIGN (0x4) - 0x0000000000006133 __SEG_STOP_APP_CODE_CONST_RGN = (. - 0x1) - 0x0000000000006133 __PROGCONST_SECTION_STOP = (. - 0x1) - -.text 0x0000000000006134 0x41ec - 0x0000000000006134 . = ALIGN (0x4) - *(.text) - *(.text*) - .text.msp_checkStatus - 0x0000000000006134 0x60 build/fft_lea.c.o - .text.initSignal - 0x0000000000006194 0x1d2 build/fft_lea.c.o - 0x0000000000006194 initSignal - .text.tpl_add_freq_update_callback - 0x0000000000006366 0x5a build/machines/msp430x/small/tpl_clocks.c.o - 0x0000000000006366 tpl_add_freq_update_callback - .text.tpl_getDCOConfig - 0x00000000000063c0 0x2a build/machines/msp430x/small/tpl_clocks.c.o - 0x00000000000063c0 tpl_getDCOConfig - .text.msp_lea_invokeCommand - 0x00000000000063ea 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000006430 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000006462 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000006490 0x56 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .text.msp_lea_freeLock - 0x00000000000064e6 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .text.msp_biquad_df1_q15 - 0x00000000000064ee 0x2d4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - 0x00000000000064ee msp_biquad_df1_q15 - .text.msp_lea_init - 0x00000000000067c2 0x90 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - 0x00000000000067c2 msp_lea_init - .text.tpl_direct_irq_handler_LEA_VECTOR - 0x0000000000006852 0x40 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - 0x0000000000006852 tpl_direct_irq_handler_LEA_VECTOR - .text.msp_lea_getRevision - 0x0000000000006892 0x54 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - 0x0000000000006892 msp_lea_getRevision - .text.msp_lea_invokeCommand - 0x00000000000068e6 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .text.msp_lea_allocMemory - 0x000000000000692c 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .text.msp_lea_freeMemory - 0x000000000000695e 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .text.msp_lea_acquireLock - 0x000000000000698c 0x56 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .text.msp_lea_freeLock - 0x00000000000069e2 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .text.msp_cmplx_bitrev_q15 - 0x00000000000069ea 0x174 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - 0x00000000000069ea msp_cmplx_bitrev_q15 - .text.msp_lea_invokeCommand - 0x0000000000006b5e 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000006ba4 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000006bd6 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000006c04 0x56 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .text.msp_lea_freeLock - 0x0000000000006c5a 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .text.msp_cmplx_fft_fixed_q15 - 0x0000000000006c62 0x1b0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - 0x0000000000006c62 msp_cmplx_fft_fixed_q15 - .text.msp_fft_fixed_q15 - 0x0000000000006e12 0x72 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - 0x0000000000006e12 msp_fft_fixed_q15 - .text.msp_lea_invokeCommand - 0x0000000000006e84 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .text.msp_lea_allocMemory - 0x0000000000006eca 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000006efc 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .text.msp_lea_acquireLock - 0x0000000000006f2a 0x56 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .text.msp_lea_freeLock - 0x0000000000006f80 0x8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .text.msp_split_q15 - 0x0000000000006f88 0x178 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - 0x0000000000006f88 msp_split_q15 - .text.msp_lea_allocMemory - 0x0000000000007100 0x32 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .text.msp_lea_freeMemory - 0x0000000000007132 0x2e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .text.__q15mpy - 0x0000000000007160 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .text.msp_sinusoid_q15 - 0x0000000000007180 0x104 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - 0x0000000000007180 msp_sinusoid_q15 - .text.tpl_serial_update_freq - 0x0000000000007284 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - 0x0000000000007284 tpl_serial_update_freq - .text.tpl_serial_putchar - 0x00000000000072ca 0x60 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - 0x00000000000072ca tpl_serial_putchar - .text.tpl_serial_print_string - 0x000000000000732a 0x28 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - 0x000000000000732a tpl_serial_print_string - .text.tpl_serial_print_int - 0x0000000000007352 0x138 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - 0x0000000000007352 tpl_serial_print_int - .text.tpl_serial_begin - 0x000000000000748a 0x64 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - 0x000000000000748a tpl_serial_begin - .text.tpl_direct_irq_handler_USCI_A0_VECTOR - 0x00000000000074ee 0xe8 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - 0x00000000000074ee tpl_direct_irq_handler_USCI_A0_VECTOR - .text.cosf 0x00000000000075d6 0xca /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_cos.o) - 0x00000000000075d6 cosf - .text.sinf 0x00000000000076a0 0xce /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_sin.o) - 0x00000000000076a0 sinf - .text.__ieee754_rem_pio2f - 0x000000000000776e 0x576 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-ef_rem_pio2.o) - 0x000000000000776e __ieee754_rem_pio2f - .text.__kernel_cosf - 0x0000000000007ce4 0x17a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_cos.o) - 0x0000000000007ce4 __kernel_cosf - .text.__kernel_rem_pio2f - 0x0000000000007e5e 0xba8 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_rem_pio2.o) - 0x0000000000007e5e __kernel_rem_pio2f - .text.__kernel_sinf - 0x0000000000008a06 0x15a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-kf_sin.o) - 0x0000000000008a06 __kernel_sinf - .text.fabsf 0x0000000000008b60 0x6 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_fabs.o) - 0x0000000000008b60 fabsf - .text.floorf 0x0000000000008b66 0x10a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_floor.o) - 0x0000000000008b66 floorf - .text.scalbnf 0x0000000000008c70 0x11e /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_scalbn.o) - 0x0000000000008c70 scalbnf - .text.copysignf - 0x0000000000008d8e 0xc /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a(lib_a-sf_copysign.o) - 0x0000000000008d8e copysignf - .text._fpadd_parts - 0x0000000000008d9a 0x212 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_addsub_sf.o) - .text.__addsf3 - 0x0000000000008fac 0x4e /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_addsub_sf.o) - 0x0000000000008fac __mspabi_addf - .text.__subsf3 - 0x0000000000008ffa 0x52 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_addsub_sf.o) - 0x0000000000008ffa __mspabi_subf - .text.__mulsf3 - 0x000000000000904c 0x23a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_mul_sf.o) - 0x000000000000904c __mspabi_mpyf - .text.__eqsf2 0x0000000000009286 0x52 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_eq_sf.o) - 0x0000000000009286 __eqsf2 - .text.__gtsf2 0x00000000000092d8 0x54 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_gt_sf.o) - 0x00000000000092d8 __gtsf2 - .text.__gesf2 0x000000000000932c 0x54 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_ge_sf.o) - 0x000000000000932c __gesf2 - .text.__ltsf2 0x0000000000009380 0x52 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_lt_sf.o) - 0x0000000000009380 __ltsf2 - .text.__floatsisf - 0x00000000000093d2 0x92 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_si_to_sf.o) - 0x00000000000093d2 __mspabi_fltlif - .text.__fixsfsi - 0x0000000000009464 0x8e /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_sf_to_si.o) - 0x0000000000009464 __mspabi_fixfli - .text.__extendsfdf2 - 0x00000000000094f2 0x58 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_sf_to_df.o) - 0x00000000000094f2 __mspabi_cvtfd - .text.__muldf3 - 0x000000000000954a 0x4f8 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_mul_df.o) - 0x000000000000954a __mspabi_mpyd - .text.__fixdfsi - 0x0000000000009a42 0x9c /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_df_to_si.o) - 0x0000000000009a42 __mspabi_fixdli - .text.__make_dp - 0x0000000000009ade 0x34 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_make_df.o) - 0x0000000000009ade __make_dp - .text.udivmodhi4 - 0x0000000000009b12 0x38 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(lib2divHI.o) - 0x0000000000009b12 udivmodhi4 - .text.__divhi3 - 0x0000000000009b4a 0x30 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(lib2divHI.o) - 0x0000000000009b4a __mspabi_divi - .text.__modhi3 - 0x0000000000009b7a 0x2e /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(lib2divHI.o) - 0x0000000000009b7a __mspabi_remi - .text.__mspabi_slli - 0x0000000000009ba8 0xa /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(slli.o) - 0x0000000000009bac __mspabi_slli - .text.__mspabi_slll - 0x0000000000009bb2 0xc /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(slli.o) - 0x0000000000009bb8 __mspabi_slll - .text.__mspabi_sllll - 0x0000000000009bbe 0x1e /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(slli.o) - 0x0000000000009bbe __mspabi_sllll - .text.__mspabi_sral - 0x0000000000009bdc 0xc /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srai.o) - 0x0000000000009be2 __mspabi_sral - .text.__mspabi_srll_n - 0x0000000000009be8 0x5c /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srli.o) - 0x0000000000009be8 __mspabi_srll_15 - 0x0000000000009bee __mspabi_srll_14 - 0x0000000000009bf4 __mspabi_srll_13 - 0x0000000000009bfa __mspabi_srll_12 - 0x0000000000009c00 __mspabi_srll_11 - 0x0000000000009c06 __mspabi_srll_10 - 0x0000000000009c0c __mspabi_srll_9 - 0x0000000000009c12 __mspabi_srll_8 - 0x0000000000009c18 __mspabi_srll_7 - 0x0000000000009c1e __mspabi_srll_6 - 0x0000000000009c24 __mspabi_srll_5 - 0x0000000000009c2a __mspabi_srll_4 - 0x0000000000009c30 __mspabi_srll_3 - 0x0000000000009c36 __mspabi_srll_2 - 0x0000000000009c3c __mspabi_srll_1 - .text.__mspabi_srll - 0x0000000000009c44 0xe /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srli.o) - 0x0000000000009c4c __mspabi_srll - .text.__mspabi_srlll - 0x0000000000009c52 0x20 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(srli.o) - 0x0000000000009c52 __mspabi_srlll - .text.__clzsi2 - 0x0000000000009c72 0x46 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_clzsi2.o) - 0x0000000000009c72 __clzsi2 - .text.__pack_f - 0x0000000000009cb8 0x142 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_pack_sf.o) - 0x0000000000009cb8 __pack_f - .text.__unpack_f - 0x0000000000009dfa 0xd2 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_unpack_sf.o) - 0x0000000000009dfa __unpack_f - .text.__fpcmp_parts_f - 0x0000000000009ecc 0xa8 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_fpcmp_parts_sf.o) - 0x0000000000009ecc __fpcmp_parts_f - .text.__pack_d - 0x0000000000009f74 0x266 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_pack_df.o) - 0x0000000000009f74 __pack_d - .text.__unpack_d - 0x000000000000a1da 0x134 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a(_unpack_df.o) - 0x000000000000a1da __unpack_d - .text.memcpy 0x000000000000a30e 0x12 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libc.a(lib_a-memcpy.o) - 0x000000000000a30e memcpy - *(.eh_frame) - 0x000000000000a320 PROVIDE (__ctors_start = .) - *(.ctors*) - *(SORT_BY_NAME(.ctors.*)) - 0x000000000000a320 PROVIDE (__ctors_end = .) - [!provide] PROVIDE (__dtors_start = .) - *(.dtors*) - *(SORT_BY_NAME(.dtors.*)) - [!provide] PROVIDE (__dtors_end = .) - 0x000000000000a320 . = ALIGN (0x4) - 0x000000000000a320 _etext = . - 0x000000000000a320 _exit = . - 0x000000000000a320 _sramStartAddress = . - -.data 0x0000000000001c00 0x58 load address 0x000000000000a320 - 0x0000000000001c00 . = ALIGN (0x4) - 0x0000000000001c00 __data_start = . - *(.data) - *(.data*) - .data.tpl_serial_callback - 0x0000000000001c00 0x4 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - 0x0000000000001c00 tpl_serial_callback - *(.osVar) - *(.osVar_POWER_ON_INIT_32BIT) - *(.osVar_FAST_32BIT) - *(.osVar_32BIT) - .osVar_32BIT 0x0000000000001c04 0x12 build/os/tpl_os_interrupt_kernel.c.o - 0x0000000000001c04 tpl_locking_depth - 0x0000000000001c08 tpl_user_task_lock - 0x0000000000001c0a tpl_cpt_user_task_lock_All - 0x0000000000001c0e tpl_cpt_user_task_lock_OS - 0x0000000000001c12 tpl_cpt_os_task_lock - .osVar_32BIT 0x0000000000001c16 0x4 build/fft_lea/tpl_app_config.c.o - 0x0000000000001c16 tpl_time_counter - *(.osVar_POWER_ON_INIT_16BIT) - *(.osVar_FAST_16BIT) - *(.osVar_16BIT) - *(.osVar_POWER_ON_INIT_8BIT) - *(.osVar_FAST_8BIT) - *(.osVar_8BIT) - *(.osVar_POWER_ON_INIT_BOOLEAN) - *(.osVar_FAST_BOOLEAN) - *(.osVar_BOOLEAN) - *(.osVar_POWER_ON_INIT_UNSPECIFIED) - .osVar_POWER_ON_INIT_UNSPECIFIED - 0x0000000000001c1a 0x1 build/os/tpl_os_timeobj_kernel.c.o - *(.osVar_FAST_UNSPECIFIED) - *(.osVar_UNSPECIFIED) - .osVar_UNSPECIFIED - 0x0000000000001c1b 0x1 build/os/tpl_os_os_kernel.c.o - .osVar_UNSPECIFIED - 0x0000000000001c1c 0x3c build/fft_lea/tpl_app_config.c.o - 0x0000000000001c1c tpl_kern - 0x0000000000001c2e tpl_ready_list - 0x0000000000001c34 tpl_tail_for_prio - 0x0000000000001c38 SystemCounter_counter_desc - 0x0000000000001c46 res_sched_rez_desc - 0x0000000000001c4c IDLE_TASK_task_desc - 0x0000000000001c52 fft_task_desc - *(.Task_fft_SEC_VAR_POWER_ON_INIT_32BIT) - *(.Task_fft_SEC_VAR_POWER_ON_INIT_16BIT) - *(.Task_fft_SEC_VAR_POWER_ON_INIT_8BIT) - *(.Task_fft_SEC_VAR_POWER_ON_INIT_BOOLEAN) - *(.Task_fft_SEC_VAR_POWER_ON_INIT_UNSPECIFIED) - 0x0000000000001c58 . = ALIGN (0x4) - 0x0000000000001c58 __data_end = . - 0x0000000000001c58 __data_size = SIZEOF (.data) - -.Task_IDLE_TASKStack - 0x0000000000001c58 0x64 load address 0x000000000000a378 - .Task_IDLE_TASKStack - 0x0000000000001c58 0x64 build/fft_lea/tpl_app_config.c.o - 0x0000000000001c58 IDLE_TASK_stack_zone - -.dataInit 0x000000000000a320 0x58 - 0x000000000000a320 . = ALIGN (0x10) - 0x000000000000a320 __data_load_start = . - 0x000000000000a378 . = (. + SIZEOF (.data)) - *fill* 0x000000000000a320 0x58 - -.data_lea 0x0000000000002c00 0x200 - *(.Task_fft_SEC_LEA_VAR_LEA_32BIT) - *(.Task_fft_SEC_LEA_VAR_LEA_16BIT) - .Task_fft_SEC_LEA_VAR_LEA_16BIT - 0x0000000000002c00 0x200 build/fft_lea.c.o - 0x0000000000002c00 input - *(.Task_fft_SEC_LEA_VAR_LEA_8BIT) - *(.Task_fft_SEC_LEA_VAR_LEA_BOOLEAN) - *(.Task_fft_SEC_LEA_VAR_LEA_UNSPECIFIED) - 0x0000000000002e00 . = ALIGN (0x4) - -.Task_fft_SEC_VAR - 0x0000000000001cbc 0x0 - 0x0000000000001cbc __SEG_START_Task_fft_VAR_RGN = . - *(.Task_fft_SEC_VAR_NOINIT_32BIT) - *(.Task_fft_SEC_VAR_FAST_32BIT) - *(.Task_fft_SEC_VAR_32BIT) - *(.Task_fft_SEC_VAR_NOINIT_16BIT) - *(.Task_fft_SEC_VAR_FAST_16BIT) - *(.Task_fft_SEC_VAR_16BIT) - *(.Task_fft_SEC_VAR_NOINIT_8BIT) - *(.Task_fft_SEC_VAR_FAST_8BIT) - *(.Task_fft_SEC_VAR_8BIT) - *(.Task_fft_SEC_VAR_NOINIT_BOOLEAN) - *(.Task_fft_SEC_VAR_FAST_BOOLEAN) - *(.Task_fft_SEC_VAR_BOOLEAN) - *(.Task_fft_SEC_VAR_NOINIT_UNSPECIFIED) - *(.Task_fft_SEC_VAR_FAST_UNSPECIFIED) - *(.Task_fft_SEC_VAR_UNSPECIFIED) - 0x0000000000001cbc __SEG_END_Task_fft_VAR_RGN = . - 0x0000000000001cdc __SEG_SIZE_Task_fft_VAR_RGN = ((__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 0x1000)?0x1000:__SEG_SIZE_Task_fft_VAR_RGN - 0x0000000000001cdc __SEG_SIZE_Task_fft_VAR_RGN = ((__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 0x400)?0x400:__SEG_SIZE_Task_fft_VAR_RGN - 0x0000000000001cdc __SEG_SIZE_Task_fft_VAR_RGN = ((__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 0x200)?0x200:__SEG_SIZE_Task_fft_VAR_RGN - 0x0000000000001cdc __SEG_SIZE_Task_fft_VAR_RGN = ((__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 0x100)?0x100:__SEG_SIZE_Task_fft_VAR_RGN - 0x0000000000001cdc __SEG_SIZE_Task_fft_VAR_RGN = ((__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 0x80)?0x80:__SEG_SIZE_Task_fft_VAR_RGN - 0x0000000000001cdc __SEG_SIZE_Task_fft_VAR_RGN = ((__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 0x40)?0x40:__SEG_SIZE_Task_fft_VAR_RGN - 0x0000000000001cdc __SEG_SIZE_Task_fft_VAR_RGN = ((__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 0x20)?0x20:__SEG_SIZE_Task_fft_VAR_RGN - 0x0000000000001cdc __SEG_ALIGN_Task_fft_VAR_RGN = __SEG_SIZE_Task_fft_VAR_RGN - -.Task_fft_SEC_STACK - 0x0000000000001cbc 0x64 load address 0x000000000000a3dc - 0x0000000000001cbc __SEG_START_Task_fft_STACK_RGN = . - *(.Task_fftStack) - .Task_fftStack - 0x0000000000001cbc 0x64 build/fft_lea/tpl_app_config.c.o - 0x0000000000001cbc fft_stack_zone - 0x0000000000001d20 . = ALIGN (0x4) - 0x0000000000001d20 __SEG_END_Task_fft_STACK_RGN = . - 0x0000000000001d3c __SEG_SIZE_Task_fft_STACK_RGN = ((__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 0x1000)?0x1000:__SEG_SIZE_Task_fft_STACK_RGN - 0x0000000000001d3c __SEG_SIZE_Task_fft_STACK_RGN = ((__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 0x400)?0x400:__SEG_SIZE_Task_fft_STACK_RGN - 0x0000000000001d3c __SEG_SIZE_Task_fft_STACK_RGN = ((__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 0x200)?0x200:__SEG_SIZE_Task_fft_STACK_RGN - 0x0000000000001d3c __SEG_SIZE_Task_fft_STACK_RGN = ((__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 0x100)?0x100:__SEG_SIZE_Task_fft_STACK_RGN - 0x0000000000001d3c __SEG_SIZE_Task_fft_STACK_RGN = ((__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 0x80)?0x80:__SEG_SIZE_Task_fft_STACK_RGN - [0x0000000000001d3c] __SEG_SIZE_Task_fft_STACK_RGN = ((__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 0x40)?0x40:__SEG_SIZE_Task_fft_STACK_RGN - [0x0000000000001d3c] __SEG_SIZE_Task_fft_STACK_RGN = ((__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 0x20)?0x20:__SEG_SIZE_Task_fft_STACK_RGN - 0x0000000000001d3c __SEG_ALIGN_Task_fft_STACK_RGN = __SEG_SIZE_Task_fft_STACK_RGN - -appvars - 0x0000000000001d20 . = ALIGN (0x4) - -.osVarNoInit 0x0000000000001d20 0x4 load address 0x000000000000a440 - *(.osVar_NOINIT_32BIT) - .osVar_NOINIT_32BIT - 0x0000000000001d20 0x4 build/fft_lea/tpl_app_config.c.o - 0x0000000000001d20 IDLE_TASK_int_context - 0x0000000000001d22 fft_int_context - *(.osVar_NOINIT_16BIT) - *(.osVar_NOINIT_8BIT) - *(.osVar_NOINIT_BOOLEAN) - *(.osVar_NOINIT_UNSPECIFIED) - 0x0000000000001d24 . = ALIGN (0x4) - -.bss 0x0000000000001d24 0x4c load address 0x000000000000a444 - 0x0000000000001d24 _sbss = . - 0x0000000000001d24 __bss_start__ = _sbss - *(.bss) - *(.bss*) - .bss.tpl_reentrancy_flag - 0x0000000000001d24 0x1 build/machines/msp430x/small/tpl_machine_msp430x.c.o - 0x0000000000001d24 tpl_reentrancy_flag - *fill* 0x0000000000001d25 0x1 - .bss.tpl_freq_update_callbacks - 0x0000000000001d26 0x2 build/machines/msp430x/small/tpl_clocks.c.o - 0x0000000000001d26 tpl_freq_update_callbacks - .bss.msp_lea_locked - 0x0000000000001d28 0x2 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - 0x0000000000001d28 msp_lea_locked - .bss.msp_lea_ifg - 0x0000000000001d2a 0x2 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - 0x0000000000001d2a msp_lea_ifg - .bss.tx_buffer - 0x0000000000001d2c 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - 0x0000000000001d2c tx_buffer - .bss.rx_buffer - 0x0000000000001d4e 0x22 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - 0x0000000000001d4e rx_buffer - *(COMMON) - 0x0000000000001d70 . = ALIGN (0x4) - 0x0000000000001d70 _ebss = . - 0x0000000000001d70 __bss_end__ = _ebss - -._user_heap_stack - 0x0000000000001d70 0x100 load address 0x000000000000a490 - 0x0000000000001d70 . = ALIGN (0x4) - 0x0000000000001d70 __heap_start__ = . - [!provide] PROVIDE (end = .) - [!provide] PROVIDE (_end = .) - 0x0000000000001d70 . = (. + _Min_Heap_Size) - 0x0000000000001e70 . = (. + _Min_Stack_Size) - *fill* 0x0000000000001d70 0x100 - 0x0000000000001e70 . = ALIGN (0x4) - -/DISCARD/ - libc.a(*) - libm.a(*) - libgcc.a(*) - 0x0000000000001e70 __tpl_end_of_checkpointing_zone = . - -.osVarKernStack - 0x0000000000001e70 0x190 load address 0x000000000000a590 - 0x0000000000001e70 . = ALIGN (0x2) - 0x0000000000001e70 __os_kern_stack_start = . - *(.osVarKernStack) - .osVarKernStack - 0x0000000000001e70 0x190 build/machines/msp430x/small/tpl_machine_msp430x.c.o - 0x0000000000001e70 tpl_kern_stack - 0x0000000000002000 __os_kern_stack_end = . -LOAD /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libc.a -LOAD /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a -LOAD /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libc.a -LOAD /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libm.a -LOAD /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/libgcc.a -OUTPUT(fft_lea_exe elf32-msp430) - -.debug_frame 0x0000000000000000 0x10f4 - .debug_frame 0x0000000000000000 0x2fc build/os/tpl_os_kernel.c.o - .debug_frame 0x00000000000002fc 0xa4 build/os/tpl_os_timeobj_kernel.c.o - .debug_frame 0x00000000000003a0 0x94 build/os/tpl_os_os_kernel.c.o - .debug_frame 0x0000000000000434 0x34 build/os/tpl_os_os.c.o - .debug_frame 0x0000000000000468 0x15c build/os/tpl_os_interrupt_kernel.c.o - .debug_frame 0x00000000000005c4 0xe4 build/os/tpl_os_task_kernel.c.o - .debug_frame 0x00000000000006a8 0x74 build/os/tpl_os_resource_kernel.c.o - .debug_frame 0x000000000000071c 0xb4 build/fft_lea.c.o - .debug_frame 0x00000000000007d0 0x3c build/fft_lea/tpl_app_config.c.o - .debug_frame 0x000000000000080c 0xd4 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_frame 0x00000000000008e0 0x5c build/machines/msp430x/small/tpl_startup.c.o - .debug_frame 0x000000000000093c 0x84 build/machines/msp430x/small/tpl_clocks.c.o - .debug_frame 0x00000000000009c0 0x114 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_frame 0x0000000000000ad4 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_frame 0x0000000000000b0c 0x5c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_frame 0x0000000000000b68 0x90 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_frame 0x0000000000000bf8 0x100 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_frame 0x0000000000000cf8 0x108 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_frame 0x0000000000000e00 0x34 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_frame 0x0000000000000e34 0x104 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_frame 0x0000000000000f38 0xb4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_frame 0x0000000000000fec 0x108 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - -.debug_info 0x0000000000000000 0x6266d - .debug_info 0x0000000000000000 0xd97 build/os/tpl_os_kernel.c.o - .debug_info 0x0000000000000d97 0x827 build/os/tpl_os_timeobj_kernel.c.o - .debug_info 0x00000000000015be 0x72d build/os/tpl_os_os_kernel.c.o - .debug_info 0x0000000000001ceb 0x4f1 build/os/tpl_os_os.c.o - .debug_info 0x00000000000021dc 0x7d7 build/os/tpl_os_interrupt_kernel.c.o - .debug_info 0x00000000000029b3 0x7e4 build/os/tpl_os_task_kernel.c.o - .debug_info 0x0000000000003197 0x7ec build/os/tpl_os_resource_kernel.c.o - .debug_info 0x0000000000003983 0x66a9 build/fft_lea.c.o - .debug_info 0x000000000000a02c 0x976 build/fft_lea/tpl_app_config.c.o - .debug_info 0x000000000000a9a2 0x56d build/fft_lea/tpl_dispatch_table.c.o - .debug_info 0x000000000000af0f 0x5ec1 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_info 0x0000000000010dd0 0x601f build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_info 0x0000000000016def 0x5c30 build/machines/msp430x/small/tpl_startup.c.o - .debug_info 0x000000000001ca1f 0x626b build/machines/msp430x/small/tpl_clocks.c.o - .debug_info 0x0000000000022c8a 0x5db9 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_info 0x0000000000028a43 0x59d4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_info 0x000000000002e417 0x59db build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_info 0x0000000000033df2 0x59eb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_info 0x00000000000397dd 0x5bfa build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_info 0x000000000003f3d7 0x5c78 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_info 0x000000000004504f 0x5cd9 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_info 0x000000000004ad28 0x5b9a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_info 0x00000000000508c2 0x5c94 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_info 0x0000000000056556 0x5ce8 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_info 0x000000000005c23e 0x642f build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - -.debug_abbrev 0x0000000000000000 0x2996 - .debug_abbrev 0x0000000000000000 0x2b0 build/os/tpl_os_kernel.c.o - .debug_abbrev 0x00000000000002b0 0x1e4 build/os/tpl_os_timeobj_kernel.c.o - .debug_abbrev 0x0000000000000494 0x183 build/os/tpl_os_os_kernel.c.o - .debug_abbrev 0x0000000000000617 0x144 build/os/tpl_os_os.c.o - .debug_abbrev 0x000000000000075b 0x207 build/os/tpl_os_interrupt_kernel.c.o - .debug_abbrev 0x0000000000000962 0x1c5 build/os/tpl_os_task_kernel.c.o - .debug_abbrev 0x0000000000000b27 0x1a7 build/os/tpl_os_resource_kernel.c.o - .debug_abbrev 0x0000000000000cce 0x23b build/fft_lea.c.o - .debug_abbrev 0x0000000000000f09 0x19e build/fft_lea/tpl_app_config.c.o - .debug_abbrev 0x00000000000010a7 0x119 build/fft_lea/tpl_dispatch_table.c.o - .debug_abbrev 0x00000000000011c0 0x159 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_abbrev 0x0000000000001319 0x1f2 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_abbrev 0x000000000000150b 0x166 build/machines/msp430x/small/tpl_startup.c.o - .debug_abbrev 0x0000000000001671 0x221 build/machines/msp430x/small/tpl_clocks.c.o - .debug_abbrev 0x0000000000001892 0x218 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_abbrev 0x0000000000001aaa 0xa0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_abbrev 0x0000000000001b4a 0xb1 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_abbrev 0x0000000000001bfb 0xc2 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_abbrev 0x0000000000001cbd 0x12e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_abbrev 0x0000000000001deb 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_abbrev 0x0000000000001ff2 0x218 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_abbrev 0x000000000000220a 0x13e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_abbrev 0x0000000000002348 0x207 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_abbrev 0x000000000000254f 0x1d0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_abbrev 0x000000000000271f 0x277 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - -.debug_loc 0x0000000000000000 0x1190 - .debug_loc 0x0000000000000000 0x3a0 build/os/tpl_os_kernel.c.o - .debug_loc 0x00000000000003a0 0xb0 build/os/tpl_os_timeobj_kernel.c.o - .debug_loc 0x0000000000000450 0xb0 build/os/tpl_os_os_kernel.c.o - .debug_loc 0x0000000000000500 0x2c build/os/tpl_os_os.c.o - .debug_loc 0x000000000000052c 0x134 build/os/tpl_os_interrupt_kernel.c.o - .debug_loc 0x0000000000000660 0x120 build/os/tpl_os_task_kernel.c.o - .debug_loc 0x0000000000000780 0x84 build/os/tpl_os_resource_kernel.c.o - .debug_loc 0x0000000000000804 0x9c build/fft_lea.c.o - .debug_loc 0x00000000000008a0 0x2c build/fft_lea/tpl_app_config.c.o - .debug_loc 0x00000000000008cc 0x2c build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_loc 0x00000000000008f8 0x4c build/machines/msp430x/small/tpl_startup.c.o - .debug_loc 0x0000000000000944 0x84 build/machines/msp430x/small/tpl_clocks.c.o - .debug_loc 0x00000000000009c8 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_loc 0x0000000000000aec 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_loc 0x0000000000000b18 0x44 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_loc 0x0000000000000b5c 0x9c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_loc 0x0000000000000bf8 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_loc 0x0000000000000d1c 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_loc 0x0000000000000e40 0x2c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_loc 0x0000000000000e6c 0x124 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_loc 0x0000000000000f90 0xe0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_loc 0x0000000000001070 0x120 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - -.debug_aranges 0x0000000000000000 0x608 - .debug_aranges - 0x0000000000000000 0xd8 build/os/tpl_os_kernel.c.o - .debug_aranges - 0x00000000000000d8 0x40 build/os/tpl_os_timeobj_kernel.c.o - .debug_aranges - 0x0000000000000118 0x38 build/os/tpl_os_os_kernel.c.o - .debug_aranges - 0x0000000000000150 0x20 build/os/tpl_os_os.c.o - .debug_aranges - 0x0000000000000170 0x68 build/os/tpl_os_interrupt_kernel.c.o - .debug_aranges - 0x00000000000001d8 0x48 build/os/tpl_os_task_kernel.c.o - .debug_aranges - 0x0000000000000220 0x30 build/os/tpl_os_resource_kernel.c.o - .debug_aranges - 0x0000000000000250 0x38 build/fft_lea.c.o - .debug_aranges - 0x0000000000000288 0x20 build/fft_lea/tpl_app_config.c.o - .debug_aranges - 0x00000000000002a8 0x18 build/fft_lea/tpl_dispatch_table.c.o - .debug_aranges - 0x00000000000002c0 0x18 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_aranges - 0x00000000000002d8 0x70 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_aranges - 0x0000000000000348 0x30 build/machines/msp430x/small/tpl_startup.c.o - .debug_aranges - 0x0000000000000378 0x38 build/machines/msp430x/small/tpl_clocks.c.o - .debug_aranges - 0x00000000000003b0 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_aranges - 0x00000000000003f8 0x18 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_aranges - 0x0000000000000410 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_aranges - 0x0000000000000430 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_aranges - 0x0000000000000450 0x30 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_aranges - 0x0000000000000480 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_aranges - 0x00000000000004c8 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_aranges - 0x0000000000000510 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_aranges - 0x0000000000000530 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_aranges - 0x0000000000000578 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_aranges - 0x00000000000005b0 0x58 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - -.debug_ranges 0x0000000000000000 0x478 - .debug_ranges 0x0000000000000000 0xe0 build/os/tpl_os_kernel.c.o - .debug_ranges 0x00000000000000e0 0x30 build/os/tpl_os_timeobj_kernel.c.o - .debug_ranges 0x0000000000000110 0x28 build/os/tpl_os_os_kernel.c.o - .debug_ranges 0x0000000000000138 0x10 build/os/tpl_os_os.c.o - .debug_ranges 0x0000000000000148 0x58 build/os/tpl_os_interrupt_kernel.c.o - .debug_ranges 0x00000000000001a0 0x38 build/os/tpl_os_task_kernel.c.o - .debug_ranges 0x00000000000001d8 0x20 build/os/tpl_os_resource_kernel.c.o - .debug_ranges 0x00000000000001f8 0x28 build/fft_lea.c.o - .debug_ranges 0x0000000000000220 0x10 build/fft_lea/tpl_app_config.c.o - .debug_ranges 0x0000000000000230 0x60 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_ranges 0x0000000000000290 0x20 build/machines/msp430x/small/tpl_startup.c.o - .debug_ranges 0x00000000000002b0 0x28 build/machines/msp430x/small/tpl_clocks.c.o - .debug_ranges 0x00000000000002d8 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_ranges 0x0000000000000310 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_ranges 0x0000000000000320 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_ranges 0x0000000000000330 0x20 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_ranges 0x0000000000000350 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_ranges 0x0000000000000388 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_ranges 0x00000000000003c0 0x10 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_ranges 0x00000000000003d0 0x38 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_ranges 0x0000000000000408 0x28 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_ranges 0x0000000000000430 0x48 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - -.debug_macro 0x0000000000000000 0x1a525 - .debug_macro 0x0000000000000000 0x5d5 build/os/tpl_os_kernel.c.o - .debug_macro 0x00000000000005d5 0x694 build/os/tpl_os_kernel.c.o - .debug_macro 0x0000000000000c69 0x16 build/os/tpl_os_kernel.c.o - .debug_macro 0x0000000000000c7f 0x19c build/os/tpl_os_kernel.c.o - .debug_macro 0x0000000000000e1b 0x6d build/os/tpl_os_kernel.c.o - .debug_macro 0x0000000000000e88 0x2c5 build/os/tpl_os_kernel.c.o - .debug_macro 0x000000000000114d 0x94 build/os/tpl_os_kernel.c.o - .debug_macro 0x00000000000011e1 0x5e build/os/tpl_os_kernel.c.o - .debug_macro 0x000000000000123f 0x10 build/os/tpl_os_kernel.c.o - .debug_macro 0x000000000000124f 0x7a build/os/tpl_os_kernel.c.o - .debug_macro 0x00000000000012c9 0x35 build/os/tpl_os_kernel.c.o - .debug_macro 0x00000000000012fe 0x5e build/os/tpl_os_kernel.c.o - .debug_macro 0x000000000000135c 0x5e build/os/tpl_os_kernel.c.o - .debug_macro 0x00000000000013ba 0x35 build/os/tpl_os_kernel.c.o - .debug_macro 0x00000000000013ef 0x5e build/os/tpl_os_kernel.c.o - .debug_macro 0x000000000000144d 0x5e build/os/tpl_os_kernel.c.o - .debug_macro 0x00000000000014ab 0x59 build/os/tpl_os_kernel.c.o - .debug_macro 0x0000000000001504 0x59 build/os/tpl_os_kernel.c.o - .debug_macro 0x000000000000155d 0x1db build/os/tpl_os_kernel.c.o - .debug_macro 0x0000000000001738 0x10 build/os/tpl_os_kernel.c.o - .debug_macro 0x0000000000001748 0x43 build/os/tpl_os_kernel.c.o - .debug_macro 0x000000000000178b 0x10 build/os/tpl_os_kernel.c.o - .debug_macro 0x000000000000179b 0x169 build/os/tpl_os_kernel.c.o - .debug_macro 0x0000000000001904 0x11 build/os/tpl_os_kernel.c.o - .debug_macro 0x0000000000001915 0x19 build/os/tpl_os_kernel.c.o - .debug_macro 0x000000000000192e 0x10 build/os/tpl_os_kernel.c.o - .debug_macro 0x000000000000193e 0x10 build/os/tpl_os_kernel.c.o - .debug_macro 0x000000000000194e 0x10 build/os/tpl_os_kernel.c.o - .debug_macro 0x000000000000195e 0x67 build/os/tpl_os_kernel.c.o - .debug_macro 0x00000000000019c5 0x10 build/os/tpl_os_kernel.c.o - .debug_macro 0x00000000000019d5 0x16 build/os/tpl_os_kernel.c.o - .debug_macro 0x00000000000019eb 0x10 build/os/tpl_os_kernel.c.o - .debug_macro 0x00000000000019fb 0x384 build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000001d7f 0x5e build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000001ddd 0x5e build/os/tpl_os_timeobj_kernel.c.o - .debug_macro 0x0000000000001e3b 0x43a build/os/tpl_os_os_kernel.c.o - .debug_macro 0x0000000000002275 0x49 build/os/tpl_os_os_kernel.c.o - .debug_macro 0x00000000000022be 0x2de build/os/tpl_os_os.c.o - .debug_macro 0x000000000000259c 0x10 build/os/tpl_os_os.c.o - .debug_macro 0x00000000000025ac 0x5e build/os/tpl_os_os.c.o - .debug_macro 0x000000000000260a 0x5e build/os/tpl_os_os.c.o - .debug_macro 0x0000000000002668 0x438 build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000002aa0 0x5e build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000002afe 0x5e build/os/tpl_os_interrupt_kernel.c.o - .debug_macro 0x0000000000002b5c 0x48f build/os/tpl_os_task_kernel.c.o - .debug_macro 0x0000000000002feb 0x450 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x000000000000343b 0x10 build/os/tpl_os_resource_kernel.c.o - .debug_macro 0x000000000000344b 0x455 build/fft_lea.c.o - .debug_macro 0x00000000000038a0 0x1c build/fft_lea.c.o - .debug_macro 0x00000000000038bc 0x1ef build/fft_lea.c.o - .debug_macro 0x0000000000003aab 0x10 build/fft_lea.c.o - .debug_macro 0x0000000000003abb 0x76 build/fft_lea.c.o - .debug_macro 0x0000000000003b31 0xf808 build/fft_lea.c.o - .debug_macro 0x0000000000013339 0x2900 build/fft_lea.c.o - .debug_macro 0x0000000000015c39 0x22 build/fft_lea.c.o - .debug_macro 0x0000000000015c5b 0x87 build/fft_lea.c.o - .debug_macro 0x0000000000015ce2 0x44 build/fft_lea.c.o - .debug_macro 0x0000000000015d26 0x110 build/fft_lea.c.o - .debug_macro 0x0000000000015e36 0x22 build/fft_lea.c.o - .debug_macro 0x0000000000015e58 0x1df build/fft_lea.c.o - .debug_macro 0x0000000000016037 0x22 build/fft_lea.c.o - .debug_macro 0x0000000000016059 0x93 build/fft_lea.c.o - .debug_macro 0x00000000000160ec 0x5f build/fft_lea.c.o - .debug_macro 0x000000000001614b 0x22 build/fft_lea.c.o - .debug_macro 0x000000000001616d 0x62 build/fft_lea.c.o - .debug_macro 0x00000000000161cf 0x3b build/fft_lea.c.o - .debug_macro 0x000000000001620a 0x10 build/fft_lea.c.o - .debug_macro 0x000000000001621a 0x10 build/fft_lea.c.o - .debug_macro 0x000000000001622a 0x4c build/fft_lea.c.o - .debug_macro 0x0000000000016276 0x12 build/fft_lea.c.o - .debug_macro 0x0000000000016288 0x62 build/fft_lea.c.o - .debug_macro 0x00000000000162ea 0x9c build/fft_lea.c.o - .debug_macro 0x0000000000016386 0x174 build/fft_lea.c.o - .debug_macro 0x00000000000164fa 0x52 build/fft_lea.c.o - .debug_macro 0x000000000001654c 0x16 build/fft_lea.c.o - .debug_macro 0x0000000000016562 0x43 build/fft_lea.c.o - .debug_macro 0x00000000000165a5 0x1a3 build/fft_lea.c.o - .debug_macro 0x0000000000016748 0x30d build/fft_lea.c.o - .debug_macro 0x0000000000016a55 0x1a9 build/fft_lea.c.o - .debug_macro 0x0000000000016bfe 0x10 build/fft_lea.c.o - .debug_macro 0x0000000000016c0e 0x5e build/fft_lea.c.o - .debug_macro 0x0000000000016c6c 0x5e build/fft_lea.c.o - .debug_macro 0x0000000000016cca 0x5e build/fft_lea.c.o - .debug_macro 0x0000000000016d28 0x5e build/fft_lea.c.o - .debug_macro 0x0000000000016d86 0xa7e build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000017804 0x5e build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000017862 0x5e build/fft_lea/tpl_app_config.c.o - .debug_macro 0x00000000000178c0 0x10 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x00000000000178d0 0x10 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x00000000000178e0 0x10 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x00000000000178f0 0x5e build/fft_lea/tpl_app_config.c.o - .debug_macro 0x000000000001794e 0x5e build/fft_lea/tpl_app_config.c.o - .debug_macro 0x00000000000179ac 0x59 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000017a05 0x59 build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000017a5e 0x5e build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000017abc 0x5e build/fft_lea/tpl_app_config.c.o - .debug_macro 0x0000000000017b1a 0x417 build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000017f31 0x8c build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000017fbd 0x1a2 build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x000000000001815f 0x16 build/fft_lea/tpl_dispatch_table.c.o - .debug_macro 0x0000000000018175 0x46e build/fft_lea/tpl_interrupt_vectors.c.o - .debug_macro 0x00000000000185e3 0x54f build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000018b32 0x5e build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000018b90 0x5e build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000018bee 0x5e build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000018c4c 0x5e build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_macro 0x0000000000018caa 0x36d build/machines/msp430x/small/tpl_startup.c.o - .debug_macro 0x0000000000019017 0x2d1 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x00000000000192e8 0x16 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x00000000000192fe 0x10e build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x000000000001940c 0x8d build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000019499 0x16 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x00000000000194af 0x29 build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x00000000000194d8 0x5e build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000019536 0x5e build/machines/msp430x/small/tpl_clocks.c.o - .debug_macro 0x0000000000019594 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_macro 0x0000000000019699 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_macro 0x000000000001979e 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_macro 0x00000000000198a3 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_macro 0x00000000000199a8 0x13b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_macro 0x0000000000019ae3 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_macro 0x0000000000019be8 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_macro 0x0000000000019ced 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_macro 0x0000000000019df2 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_macro 0x0000000000019ef7 0x105 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_macro 0x0000000000019ffc 0x294 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x000000000001a290 0x46 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x000000000001a2d6 0x8d build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x000000000001a363 0x4a build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x000000000001a3ad 0x5e build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x000000000001a40b 0x5e build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x000000000001a469 0x5e build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .debug_macro 0x000000000001a4c7 0x5e build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - -.debug_line 0x0000000000000000 0x6067 - .debug_line 0x0000000000000000 0x34c build/os/tpl_os_kernel.c.o - .debug_line 0x000000000000034c 0x273 build/os/tpl_os_timeobj_kernel.c.o - .debug_line 0x00000000000005bf 0x29c build/os/tpl_os_os_kernel.c.o - .debug_line 0x000000000000085b 0x216 build/os/tpl_os_os.c.o - .debug_line 0x0000000000000a71 0x2ae build/os/tpl_os_interrupt_kernel.c.o - .debug_line 0x0000000000000d1f 0x2db build/os/tpl_os_task_kernel.c.o - .debug_line 0x0000000000000ffa 0x2d1 build/os/tpl_os_resource_kernel.c.o - .debug_line 0x00000000000012cb 0x65a build/fft_lea.c.o - .debug_line 0x0000000000001925 0x4de build/fft_lea/tpl_app_config.c.o - .debug_line 0x0000000000001e03 0x298 build/fft_lea/tpl_dispatch_table.c.o - .debug_line 0x000000000000209b 0x628 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_line 0x00000000000026c3 0x624 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_line 0x0000000000002ce7 0x5e1 build/machines/msp430x/small/tpl_startup.c.o - .debug_line 0x00000000000032c8 0x3c2 build/machines/msp430x/small/tpl_clocks.c.o - .debug_line 0x000000000000368a 0x3cb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_line 0x0000000000003a55 0x3c0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_line 0x0000000000003e15 0x3bf build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_line 0x00000000000041d4 0x3be build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_line 0x0000000000004592 0x3c0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_line 0x0000000000004952 0x3d3 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_line 0x0000000000004d25 0x3d6 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_line 0x00000000000050fb 0x3d0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_line 0x00000000000054cb 0x3cc build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_line 0x0000000000005897 0x3cb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_line 0x0000000000005c62 0x405 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - -.debug_str 0x0000000000000000 0x4b419 - .debug_str 0x0000000000000000 0x5fba build/os/tpl_os_kernel.c.o - 0x61d8 (size before relaxing) - .debug_str 0x0000000000005fba 0x20d build/os/tpl_os_timeobj_kernel.c.o - 0x4ef8 (size before relaxing) - .debug_str 0x00000000000061c7 0xac build/os/tpl_os_os_kernel.c.o - 0x5e39 (size before relaxing) - .debug_str 0x0000000000006273 0x13b build/os/tpl_os_os.c.o - 0x44cb (size before relaxing) - .debug_str 0x00000000000063ae 0x28c build/os/tpl_os_interrupt_kernel.c.o - 0x5f06 (size before relaxing) - .debug_str 0x000000000000663a 0xbe build/os/tpl_os_task_kernel.c.o - 0x5e9b (size before relaxing) - .debug_str 0x00000000000066f8 0xa6 build/os/tpl_os_resource_kernel.c.o - 0x5dde (size before relaxing) - .debug_str 0x000000000000679e 0x431dc build/fft_lea.c.o - 0x49cda (size before relaxing) - .debug_str 0x000000000004997a 0x5b7 build/fft_lea/tpl_app_config.c.o - 0x6228 (size before relaxing) - .debug_str 0x0000000000049f31 0x2cd build/fft_lea/tpl_dispatch_table.c.o - 0x4762 (size before relaxing) - .debug_str 0x000000000004a1fe 0x3e build/fft_lea/tpl_interrupt_vectors.c.o - 0x46532 (size before relaxing) - .debug_str 0x000000000004a23c 0x2b7 build/machines/msp430x/small/tpl_machine_msp430x.c.o - 0x467be (size before relaxing) - .debug_str 0x000000000004a4f3 0x106 build/machines/msp430x/small/tpl_startup.c.o - 0x45e6c (size before relaxing) - .debug_str 0x000000000004a5f9 0x28f build/machines/msp430x/small/tpl_clocks.c.o - 0x46d0f (size before relaxing) - .debug_str 0x000000000004a888 0x1ac build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - 0x42c83 (size before relaxing) - .debug_str 0x000000000004aa34 0x62 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - 0x42a14 (size before relaxing) - .debug_str 0x000000000004aa96 0x6e build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - 0x42a20 (size before relaxing) - .debug_str 0x000000000004ab04 0x82 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - 0x42a3a (size before relaxing) - .debug_str 0x000000000004ab86 0x21b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - 0x42bd4 (size before relaxing) - .debug_str 0x000000000004ada1 0xdb build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - 0x42c34 (size before relaxing) - .debug_str 0x000000000004ae7c 0xc7 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - 0x42c71 (size before relaxing) - .debug_str 0x000000000004af43 0x9c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - 0x42bab (size before relaxing) - .debug_str 0x000000000004afdf 0x94 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - 0x42c0f (size before relaxing) - .debug_str 0x000000000004b073 0x9a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - 0x42c36 (size before relaxing) - .debug_str 0x000000000004b10d 0x30c build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - 0x46e51 (size before relaxing) - -.comment 0x0000000000000000 0x39 - .comment 0x0000000000000000 0x39 build/os/tpl_os_kernel.c.o - 0x3a (size before relaxing) - .comment 0x0000000000000039 0x3a build/os/tpl_os_timeobj_kernel.c.o - .comment 0x0000000000000039 0x3a build/os/tpl_os_os_kernel.c.o - .comment 0x0000000000000039 0x3a build/os/tpl_os_os.c.o - .comment 0x0000000000000039 0x3a build/os/tpl_os_interrupt_kernel.c.o - .comment 0x0000000000000039 0x3a build/os/tpl_os_task_kernel.c.o - .comment 0x0000000000000039 0x3a build/os/tpl_os_resource_kernel.c.o - .comment 0x0000000000000039 0x3a build/fft_lea.c.o - .comment 0x0000000000000039 0x3a build/fft_lea/tpl_app_config.c.o - .comment 0x0000000000000039 0x3a build/fft_lea/tpl_dispatch_table.c.o - .comment 0x0000000000000039 0x3a build/fft_lea/tpl_interrupt_vectors.c.o - .comment 0x0000000000000039 0x3a build/machines/msp430x/small/tpl_machine_msp430x.c.o - .comment 0x0000000000000039 0x3a build/machines/msp430x/small/tpl_startup.c.o - .comment 0x0000000000000039 0x3a build/machines/msp430x/small/tpl_clocks.c.o - .comment 0x0000000000000039 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .comment 0x0000000000000039 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .comment 0x0000000000000039 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .comment 0x0000000000000039 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .comment 0x0000000000000039 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .comment 0x0000000000000039 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .comment 0x0000000000000039 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .comment 0x0000000000000039 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .comment 0x0000000000000039 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .comment 0x0000000000000039 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .comment 0x0000000000000039 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .comment 0x0000000000000039 0x3a /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libc.a(lib_a-memcpy.o) - -.MSP430.attributes - 0x0000000000000000 0x17 - .MSP430.attributes - 0x0000000000000000 0x17 build/os/tpl_os_kernel.c.o - .MSP430.attributes - 0x0000000000000017 0x17 build/os/tpl_os_timeobj_kernel.c.o - .MSP430.attributes - 0x000000000000002e 0x17 build/os/tpl_os_os_kernel.c.o - .MSP430.attributes - 0x0000000000000045 0x17 build/os/tpl_os_os.c.o - .MSP430.attributes - 0x000000000000005c 0x17 build/os/tpl_os_interrupt_kernel.c.o - .MSP430.attributes - 0x0000000000000073 0x17 build/os/tpl_os_task_kernel.c.o - .MSP430.attributes - 0x000000000000008a 0x17 build/os/tpl_os_resource_kernel.c.o - .MSP430.attributes - 0x00000000000000a1 0x17 build/fft_lea.c.o - .MSP430.attributes - 0x00000000000000b8 0x17 build/fft_lea/tpl_app_config.c.o - .MSP430.attributes - 0x00000000000000cf 0x17 build/fft_lea/tpl_dispatch_table.c.o - .MSP430.attributes - 0x00000000000000e6 0x17 build/fft_lea/tpl_invoque.S.o - .MSP430.attributes - 0x00000000000000fd 0x17 build/fft_lea/tpl_interrupt_vectors.c.o - .MSP430.attributes - 0x0000000000000114 0x17 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .MSP430.attributes - 0x000000000000012b 0x17 build/machines/msp430x/small/tpl_startup.c.o - .MSP430.attributes - 0x0000000000000142 0x17 build/machines/msp430x/small/tpl_clocks.c.o - .MSP430.attributes - 0x0000000000000159 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .MSP430.attributes - 0x0000000000000170 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .MSP430.attributes - 0x0000000000000187 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .MSP430.attributes - 0x000000000000019e 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .MSP430.attributes - 0x00000000000001b5 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .MSP430.attributes - 0x00000000000001cc 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .MSP430.attributes - 0x00000000000001e3 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .MSP430.attributes - 0x00000000000001fa 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .MSP430.attributes - 0x0000000000000211 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .MSP430.attributes - 0x0000000000000228 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .MSP430.attributes - 0x000000000000023f 0x17 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - .MSP430.attributes - 0x0000000000000256 0x17 build/fft_lea/tpl_irq_handlers.S.o - .MSP430.attributes - 0x000000000000026d 0x17 build/machines/msp430x/small/tpl_startup.S.o - .MSP430.attributes - 0x0000000000000284 0x17 build/machines/msp430x/small/tpl_sc_handler.S.o - .MSP430.attributes - 0x000000000000029b 0x17 /home/user/Source/msp430-gcc-9.3.1.11_linux64/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/lib/libc.a(lib_a-memcpy.o) - -.debug_line.osCode - 0x0000000000000000 0x1dc4 - .debug_line.osCode - 0x0000000000000000 0xa54 build/os/tpl_os_kernel.c.o - .debug_line.osCode - 0x0000000000000a54 0x4e0 build/os/tpl_os_timeobj_kernel.c.o - .debug_line.osCode - 0x0000000000000f34 0xc9 build/os/tpl_os_os_kernel.c.o - .debug_line.osCode - 0x0000000000000ffd 0x252 build/os/tpl_os_interrupt_kernel.c.o - .debug_line.osCode - 0x000000000000124f 0x3aa build/os/tpl_os_task_kernel.c.o - .debug_line.osCode - 0x00000000000015f9 0x2a5 build/os/tpl_os_resource_kernel.c.o - .debug_line.osCode - 0x000000000000189e 0x4b build/fft_lea/tpl_app_config.c.o - .debug_line.osCode - 0x00000000000018e9 0x229 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_line.osCode - 0x0000000000001b12 0x142 build/machines/msp430x/small/tpl_startup.c.o - .debug_line.osCode - 0x0000000000001c54 0x170 build/machines/msp430x/small/tpl_clocks.c.o - -.debug_line_end - 0x0000000000000000 0x0 - .debug_line_end - 0x0000000000000000 0x0 build/os/tpl_os_kernel.c.o - .debug_line_end - 0x0000000000000000 0x0 build/os/tpl_os_timeobj_kernel.c.o - .debug_line_end - 0x0000000000000000 0x0 build/os/tpl_os_os_kernel.c.o - .debug_line_end - 0x0000000000000000 0x0 build/os/tpl_os_os.c.o - .debug_line_end - 0x0000000000000000 0x0 build/os/tpl_os_interrupt_kernel.c.o - .debug_line_end - 0x0000000000000000 0x0 build/os/tpl_os_task_kernel.c.o - .debug_line_end - 0x0000000000000000 0x0 build/os/tpl_os_resource_kernel.c.o - .debug_line_end - 0x0000000000000000 0x0 build/fft_lea.c.o - .debug_line_end - 0x0000000000000000 0x0 build/fft_lea/tpl_app_config.c.o - .debug_line_end - 0x0000000000000000 0x0 build/fft_lea/tpl_dispatch_table.c.o - .debug_line_end - 0x0000000000000000 0x0 build/fft_lea/tpl_interrupt_vectors.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_machine_msp430x.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_startup.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/tpl_clocks.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_flags.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - .debug_line_end - 0x0000000000000000 0x0 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - -.debug_line.osApiCode - 0x0000000000000000 0x3a - .debug_line.osApiCode - 0x0000000000000000 0x3a build/os/tpl_os_os.c.o - -.debug_line.text.msp_checkStatus - 0x0000000000000000 0x8b - .debug_line.text.msp_checkStatus - 0x0000000000000000 0x8b build/fft_lea.c.o - -.debug_line.Task_fftCode - 0x0000000000000000 0x128 - .debug_line.Task_fftCode - 0x0000000000000000 0x128 build/fft_lea.c.o - -.debug_line.text.initSignal - 0x0000000000000000 0xda - .debug_line.text.initSignal - 0x0000000000000000 0xda build/fft_lea.c.o - -.debug_line.text.tpl_add_freq_update_callback - 0x0000000000000000 0x80 - .debug_line.text.tpl_add_freq_update_callback - 0x0000000000000000 0x80 build/machines/msp430x/small/tpl_clocks.c.o - -.debug_line.text.tpl_getDCOConfig - 0x0000000000000000 0x41 - .debug_line.text.tpl_getDCOConfig - 0x0000000000000000 0x41 build/machines/msp430x/small/tpl_clocks.c.o - -.debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x164 - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x0000000000000059 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x00000000000000b2 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_line.text.msp_lea_invokeCommand - 0x000000000000010b 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - -.debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0xd7 - .debug_line.text.msp_lea_allocMemory - 0x0000000000000000 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x000000000000002b 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000056 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x0000000000000081 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_line.text.msp_lea_allocMemory - 0x00000000000000ac 0x2b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - -.debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0xaf - .debug_line.text.msp_lea_freeMemory - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000023 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000046 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x0000000000000069 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - .debug_line.text.msp_lea_freeMemory - 0x000000000000008c 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - -.debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x1d4 - .debug_line.text.msp_lea_acquireLock - 0x0000000000000000 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x0000000000000075 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x00000000000000ea 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_line.text.msp_lea_acquireLock - 0x000000000000015f 0x75 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - -.debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x8c - .debug_line.text.msp_lea_freeLock - 0x0000000000000000 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000023 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000046 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - .debug_line.text.msp_lea_freeLock - 0x0000000000000069 0x23 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - -.debug_line.text.msp_biquad_df1_q15 - 0x0000000000000000 0x27c - .debug_line.text.msp_biquad_df1_q15 - 0x0000000000000000 0x27c build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/filter/msp_biquad_df1_q15.c.o - -.debug_line.text.msp_lea_init - 0x0000000000000000 0x7a - .debug_line.text.msp_lea_init - 0x0000000000000000 0x7a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_init.c.o - -.debug_line.text.tpl_direct_irq_handler_LEA_VECTOR - 0x0000000000000000 0x3a - .debug_line.text.tpl_direct_irq_handler_LEA_VECTOR - 0x0000000000000000 0x3a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_isr.c.o - -.debug_line.text.msp_lea_getRevision - 0x0000000000000000 0x4b - .debug_line.text.msp_lea_getRevision - 0x0000000000000000 0x4b build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/lea/msp_lea_patch.c.o - -.debug_line.text.msp_cmplx_bitrev_q15 - 0x0000000000000000 0x1aa - .debug_line.text.msp_cmplx_bitrev_q15 - 0x0000000000000000 0x1aa build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_bitrev_q15.c.o - -.debug_line.text.msp_cmplx_fft_fixed_q15 - 0x0000000000000000 0x1e4 - .debug_line.text.msp_cmplx_fft_fixed_q15 - 0x0000000000000000 0x1e4 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_cmplx_fft_fixed_q15.c.o - -.debug_line.text.msp_fft_fixed_q15 - 0x0000000000000000 0x96 - .debug_line.text.msp_fft_fixed_q15 - 0x0000000000000000 0x96 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_fft_fixed_q15.c.o - -.debug_line.text.msp_split_q15 - 0x0000000000000000 0x1a2 - .debug_line.text.msp_split_q15 - 0x0000000000000000 0x1a2 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/transform/msp_split_q15.c.o - -.debug_line.text.__q15mpy - 0x0000000000000000 0x33 - .debug_line.text.__q15mpy - 0x0000000000000000 0x33 build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - -.debug_line.text.msp_sinusoid_q15 - 0x0000000000000000 0x15a - .debug_line.text.msp_sinusoid_q15 - 0x0000000000000000 0x15a build/machines/msp430x/small/msp430fr5994/launchpad/dsplib/source/utility/msp_sinusoid_q15.c.o - -.debug_line.text.tpl_serial_update_freq - 0x0000000000000000 0x57 - .debug_line.text.tpl_serial_update_freq - 0x0000000000000000 0x57 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - -.debug_line.text.tpl_serial_putchar - 0x0000000000000000 0x87 - .debug_line.text.tpl_serial_putchar - 0x0000000000000000 0x87 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - -.debug_line.text.tpl_serial_print_string - 0x0000000000000000 0x43 - .debug_line.text.tpl_serial_print_string - 0x0000000000000000 0x43 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - -.debug_line.text.tpl_serial_print_int - 0x0000000000000000 0x137 - .debug_line.text.tpl_serial_print_int - 0x0000000000000000 0x137 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - -.debug_line.text.tpl_serial_begin - 0x0000000000000000 0x59 - .debug_line.text.tpl_serial_begin - 0x0000000000000000 0x59 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o - -.debug_line.text.tpl_direct_irq_handler_USCI_A0_VECTOR - 0x0000000000000000 0x113 - .debug_line.text.tpl_direct_irq_handler_USCI_A0_VECTOR - 0x0000000000000000 0x113 build/machines/msp430x/small/msp430fr5994/launchpad/serial/serial.c.o diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/AsMemMap.h b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/AsMemMap.h deleted file mode 100644 index 76a4bf0d6..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/AsMemMap.h +++ /dev/null @@ -1,233 +0,0 @@ -/** - * @file AsMemMap.h - * - * @section desc File description - * - * Memory mapping using Metrowerks CodeWarrior pragmas - * Memory Mapping of Application checkpoint - * Automatically generated by goil on Wed May 12 23:14:32 2021 - * from root OIL file fft_lea.oil - * - * @section copyright Copyright - * - * Trampoline OS - * - * Trampoline is copyright (c) IRCCyN 2005-2007 - * Trampoline is protected by the French intellectual property law. - * - * This software is distributed under the Lesser GNU Public Licence - * - * @section infos File informations - * - * $Date$ - * $Rev$ - * $Author$ - * $URL$ - */ - -#define MEMMAP_ERROR - -/*============================================================================= - * OS memory mapping - * - * Code section - */ -#ifdef OS_START_SEC_CODE - #undef OS_START_SEC_CODE - #ifdef CURRENT_LINKER_CODE_SECTION - #error "Starting a .osCode while a section is already started" - #else - #undef MEMMAP_ERROR - .text - .section ".osCode", "ax" - #define CURRENT_LINKER_CODE_SECTION - #endif -#endif - -#ifdef OS_STOP_SEC_CODE - #undef OS_STOP_SEC_CODE - #ifdef CURRENT_LINKER_CODE_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_CODE_SECTION - #else - #error "No section .osCode started" - #endif -#endif - -#ifdef OS_START_SEC_VECTBL - #undef OS_START_SEC_VECTBL - #ifdef CURRENT_LINKER_CODE_SECTION - #error "Starting a .osCode while a section is already started" - #else - #undef MEMMAP_ERROR - .section ".vectbl", "ax" - #define CURRENT_LINKER_CODE_SECTION - #endif -#endif - -#ifdef OS_STOP_SEC_VECTBL - #undef OS_STOP_SEC_VECTBL - #ifdef CURRENT_LINKER_CODE_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_CODE_SECTION - #else - #error "No section .vectbl started" - #endif -#endif - -#ifdef OS_START_SEC_VAR - #undef OS_START_SEC_VAR - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - .section ".osVar", "ax" - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR - #undef OS_STOP_SEC_VAR - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #else - #error "No section started" - #endif -#endif - -/* - * Const, Calibration, Carto, Configuration data sections - */ -#ifdef OS_START_SEC_CONST - #undef OS_START_SEC_CONST - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - .section ".osConst", "ax" - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif - -#ifdef OS_STOP_SEC_CONST - #undef OS_STOP_SEC_CONST - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_STACKS - #undef OS_START_SEC_STACKS - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - .section ".stacks", "ax" - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif - -#ifdef OS_STOP_SEC_STACKS - #undef OS_STOP_SEC_STACKS - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #else - #error "No section started" - #endif -#endif - - -/* .ltorg */ -#ifdef OS_START_LTORG - #undef OS_START_LTORG - #ifdef CURRENT_LINKER_LTORG - #error "Starting a .ltorg while one is already started" - #else - #undef MEMMAP_ERROR - .ltorg - #define CURRENT_LINKER_LTORG - #endif -#endif - -#ifdef OS_STOP_LTORG - #undef OS_STOP_LTORG - #ifdef CURRENT_LINKER_LTORG - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_LTORG - #else - #error "No .ltorg started" - #endif -#endif - -#ifdef OS_START_SEC_TEXT - #undef OS_START_SEC_TEXT - #ifdef CURRENT_LINKER_CODE_SECTION - #error "Starting a .text while a section is already started" - #else - #undef MEMMAP_ERROR - .text - #define CURRENT_LINKER_CODE_SECTION - #endif -#endif - -#ifdef OS_STOP_SEC_TEXT - #undef OS_STOP_SEC_TEXT - #ifdef CURRENT_LINKER_CODE_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_CODE_SECTION - #else - #error "No section .text started" - #endif -#endif - -#ifdef API_START_SEC_CODE - #undef API_START_SEC_CODE - #ifdef CURRENT_LINKER_CODE_SECTION - #error "Starting a .osApiCode section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_CODE_SECTION_NAME - .section ".osApiCode", "ax" - #define CURRENT_LINKER_CODE_SECTION - #endif -#endif - -#ifdef API_STOP_SEC_CODE - #undef API_STOP_SEC_CODE - #ifdef CURRENT_LINKER_CODE_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_CODE_SECTION - #else - #error "No section .osApiCode started" - #endif -#endif - -#ifdef API_START_SEC_CONST_UNSPECIFIED - #undef API_START_SEC_CONST_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osApiConst section while a section is already started" - #else - #undef MEMMAP_ERROR - .section ".osApiConst", "a" - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif - -#ifdef API_STOP_SEC_CONST_UNSPECIFIED - #undef API_STOP_SEC_CONST_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #else - #error "No section .osApiConst started" - #endif -#endif - -#ifdef MEMMAP_ERROR - #error "MemMap.h, wrong section command" -#endif - diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/Compiler.h b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/Compiler.h deleted file mode 100644 index 4fdb53eb4..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/Compiler.h +++ /dev/null @@ -1,95 +0,0 @@ -/** - * @file Compiler.h - * - * @section desc File description - * - * Compiler abstraction for all AUTOSAR Modules - * - * @section copyright Copyright - * - * Trampoline OS - * - * Trampoline is copyright (c) IRCCyN 2005-2007 - * Trampoline is protected by the French intellectual property law. - * - * This software is distributed under the Lesser GNU Public Licence - * - * @section infos File informations - * - * $Date$ - * $Rev$ - * $Author$ - * $URL$ - */ - -#ifndef COMPILER_H -#define COMPILER_H - -/******************************************************************************/ -/* INCLUSIONS */ -/******************************************************************************/ -#include "Compiler_Cfg.h" - - -/******************************************************************************/ -/* DEFINITION OF MACROS */ -/******************************************************************************/ -#define _GCC_C_ARMADEUS_APF27_ -#define AUTOMATIC -#define TYPEDEF -#define STATIC static -#define NULL_PTR (0) -#define INLINE (#pragma INLINE) - -#define CURRENT_LINKER_CODE_SECTION_NAME -#define CURRENT_LINKER_DATA_SECTION_NAME - -#define FUNC(rettype, memclass) \ - rettype memclass \ - CURRENT_LINKER_CODE_SECTION_NAME - -#define P2VAR(ptrtype, memclass, ptrclass) \ - ptrtype memclass * ptrclass \ - CURRENT_LINKER_DATA_SECTION_NAME - -#define P2CONST(ptrtype, memclass, ptrclass) \ - const ptrtype memclass * ptrclass \ - CURRENT_LINKER_DATA_SECTION_NAME - -#define CONSTP2VAR(ptrtype, memclass, ptrclass) \ - ptrtype memclass * const ptrclass \ - CURRENT_LINKER_DATA_SECTION_NAME - -#define CONSTP2CONST(ptrtype, memclass, ptrclass) \ - const ptrtype memclass * const ptrclass \ - CURRENT_LINKER_DATA_SECTION_NAME - -#define P2FUNC(rettype, ptrclass, fctname) \ - rettype (*ptrclass fctname) \ - CURRENT_LINKER_DATA_SECTION_NAME - -#define CONST(consttype, memclass) \ - const consttype memclass \ - CURRENT_LINKER_DATA_SECTION_NAME - -#define VAR(vartype, memclass) \ - vartype memclass \ - CURRENT_LINKER_DATA_SECTION_NAME - -#define INLINE_FUNC(vartype, memclass) \ - static inline vartype __attribute__((always_inline, unused)) - -/*****************************************************************************/ -/* PUBLISHED INFORMATION */ -/*****************************************************************************/ -#define COMPILER_VENDOR_ID 48 -#define COMPILER_AR_MAJOR_VERSION 3 -#define COMPILER_AR_MINOR_VERSION 0 -#define COMPILER_AR_PATCH_VERSION 0 -#define COMPILER_SW_MAJOR_VERSION 1 -#define COMPILER_SW_MINOR_VERSION 1 -#define COMPILER_SW_PATCH_VERSION 0 - - -#endif /* COMPILER_H */ - diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/Compiler_Cfg.h b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/Compiler_Cfg.h deleted file mode 100644 index d3eec6753..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/Compiler_Cfg.h +++ /dev/null @@ -1,194 +0,0 @@ -/** - * @file Compiler_Cfg.h - * - * @section desc File description - * - * Compiler abstraction for all AUTOSAR Modules - * - * @section copyright Copyright - * - * Trampoline OS - * - * Trampoline is copyright (c) IRCCyN 2005-2007 - * Trampoline is protected by the French intellectual property law. - * - * This software is distributed under the Lesser GNU Public Licence - * - * @section infos File informations - * - * $Date$ - * $Rev$ - * $Author$ - * $URL$ - */ -#ifndef COMPILER_CFG_H -#define COMPILER_CFG_H - -/*****************************************************************************/ -/* DEFINITION OF MACROS */ -/*****************************************************************************/ - -/*****************************************************************************/ -/* Communication stack global definitions */ -/*****************************************************************************/ -#define AUTOSAR_COMSTACKDATA __long_call__ - - -/*****************************************************************************/ -/* GPT */ -/*****************************************************************************/ -#define GPT_CODE AUTOMATIC -#define GPT_VAR_NOINIT __long_call__ -#define GPT_VAR_POWER_ON_INIT AUTOMATIC -#define GPT_VAR_FAST AUTOMATIC -#define GPT_VAR AUTOMATIC -#define GPT_CONST AUTOMATIC -#define GPT_APPL_DATA AUTOMATIC -#define GPT_APPL_CONST AUTOMATIC -#define GPT_APPL_CODE __short_call__ - -/*****************************************************************************/ -/* ECUM */ -/*****************************************************************************/ -#define ECUM_CODE AUTOMATIC -#define ECUM_VAR_NOINIT __long_call__ -#define ECUM_VAR_POWER_ON_INIT AUTOMATIC -#define ECUM_VAR_FAST AUTOMATIC -#define ECUM_VAR AUTOMATIC -#define ECUM_CONST __long_call__ -#define ECUM_APPL_DATA AUTOMATIC -#define ECUM_APPL_CONST AUTOMATIC -#define ECUM_APPL_CODE __short_call__ - -/*****************************************************************************/ -/* SchM */ -/*****************************************************************************/ -#define SCHM_CODE AUTOMATIC -#define SCHM_VAR_NOINIT __long_call__ -#define SCHM_VAR_POWER_ON_INIT AUTOMATIC -#define SCHM_VAR_FAST AUTOMATIC -#define SCHM_VAR AUTOMATIC -#define SCHM_CONST AUTOMATIC -#define SCHM_APPL_DATA __long_call__ -#define SCHM_APPL_CONST AUTOMATIC -#define SCHM_APPL_CODE __short_call__ - -/*****************************************************************************/ -/* OS */ -/*****************************************************************************/ -#define OS_CODE AUTOMATIC -#define OS_VAR_NOINIT AUTOMATIC -#define OS_VAR_POWER_ON_INIT AUTOMATIC -#define OS_VAR_FAST AUTOMATIC -#define OS_VAR AUTOMATIC -#define OS_CONST AUTOMATIC -#define OS_APPL_DATA AUTOMATIC -#define OS_APPL_CONST AUTOMATIC -#define OS_APPL_CODE AUTOMATIC - -/*****************************************************************************/ -/* COM */ -/*****************************************************************************/ -#define COM_CODE AUTOMATIC -#define COM_VAR_NOINIT AUTOMATIC -#define COM_VAR_POWER_ON_INIT AUTOMATIC -#define COM_VAR_FAST AUTOMATIC -#define COM_VAR AUTOMATIC -#define COM_CONST AUTOMATIC -#define COM_APPL_DATA AUTOMATIC -#define COM_APPL_CONST AUTOMATIC -#define COM_APPL_CODE AUTOMATIC - -/*****************************************************************************/ -/* MCU */ -/*****************************************************************************/ -#define MCU_CODE AUTOMATIC -#define MCU_VAR_NOINIT __long_call__ -#define MCU_VAR_POWER_ON_INIT AUTOMATIC -#define MCU_VAR_FAST AUTOMATIC -#define MCU_VAR AUTOMATIC -#define MCU_CONST AUTOMATIC -#define MCU_APPL_DATA AUTOMATIC -#define MCU_APPL_CONST AUTOMATIC -#define MCU_APPL_CODE AUTOMATIC - -/*****************************************************************************/ -/* CAN TP */ -/*****************************************************************************/ -#define CANTP_CODE AUTOMATIC -#define CANTP_VAR_NOINIT __long_call__ -#define CANTP_VAR_POWER_ON_INIT AUTOMATIC -#define CANTP_VAR_FAST AUTOMATIC -#define CANTP_VAR AUTOMATIC -#define CANTP_CONST AUTOMATIC -#define CANTP_APPL_DATA AUTOMATIC -#define CANTP_APPL_CONST AUTOMATIC -#define CANTP_APPL_CODE __short_call__ - -/*****************************************************************************/ -/* FRIF */ -/*****************************************************************************/ -#define FRIF_CODE AUTOMATIC -#define FRIF_VAR_NOINIT __long_call__ -#define FRIF_VAR_POWER_ON_INIT AUTOMATIC -#define FRIF_VAR_FAST AUTOMATIC -#define FRIF_VAR AUTOMATIC -#define FRIF_CONST AUTOMATIC -#define FRIF_APPL_DATA AUTOMATIC -#define FRIF_APPL_CONST AUTOMATIC -#define FRIF_APPL_CODE __short_call__ - -/*****************************************************************************/ -/* LINIF */ -/*****************************************************************************/ -#define LINIF_CODE AUTOMATIC -#define LINIF_VAR_NOINIT __long_call__ -#define LINIF_VAR_POWER_ON_INIT AUTOMATIC -#define LINIF_VAR_FAST AUTOMATIC -#define LINIF_VAR AUTOMATIC -#define LINIF_CONST AUTOMATIC -#define LINIF_APPL_DATA AUTOMATIC -#define LINIF_APPL_CONST AUTOMATIC -#define LINIF_APPL_CODE __short_call__ - -/*****************************************************************************/ -/* LINTP */ -/*****************************************************************************/ -#define LINTP_CODE AUTOMATIC -#define LINTP_VAR_NOINIT __long_call__ -#define LINTP_VAR_POWER_ON_INIT AUTOMATIC -#define LINTP_VAR_FAST AUTOMATIC -#define LINTP_VAR AUTOMATIC -#define LINTP_CONST AUTOMATIC -#define LINTP_APPL_DATA AUTOMATIC -#define LINTP_APPL_CONST AUTOMATIC -#define LINTP_APPL_CODE __short_call__ - -/*****************************************************************************/ -/* WDGM */ -/*****************************************************************************/ -#define WDGM_CODE AUTOMATIC -#define WDGM_VAR_NOINIT __long_call__ -#define WDGM_VAR_POWER_ON_INIT AUTOMATIC -#define WDGM_VAR_FAST AUTOMATIC -#define WDGM_VAR AUTOMATIC -#define WDGM_CONST AUTOMATIC -#define WDGM_APPL_DATA AUTOMATIC -#define WDGM_APPL_CONST AUTOMATIC -#define WDGM_APPL_CODE __short_call__ - -/*****************************************************************************/ -/* WdgIf */ -/*****************************************************************************/ -#define WDGIF_CODE AUTOMATIC -#define WDGIF_VAR_NOINIT __long_call__ -#define WDGIF_VAR_POWER_ON_INIT AUTOMATIC -#define WDGIF_VAR_FAST AUTOMATIC -#define WDGIF_VAR AUTOMATIC -#define WDGIF_CONST AUTOMATIC -#define WDGIF_APPL_DATA AUTOMATIC -#define WDGIF_APPL_CONST AUTOMATIC -#define WDGIF_APPL_CODE __short_call__ - -#endif /* COMPILER_CFG_H */ - diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/MemMap.h b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/MemMap.h deleted file mode 100644 index bf116e0f2..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/MemMap.h +++ /dev/null @@ -1,3435 +0,0 @@ -/** - * @file MemMap.h - * - * @section desc File description - * - * Memory mapping using gcc __attribute__ - * Memory Mapping of Application checkpoint - * Automatically generated by goil on Wed May 12 23:14:32 2021 - * from root OIL file fft_lea.oil - * - * @section copyright Copyright - * - * Trampoline OS - * - * Trampoline is copyright (c) IRCCyN 2005-2007 - * Trampoline is protected by the French intellectual property law. - * - * This software is distributed under the Lesser GNU Public Licence - * - * @section infos File informations - * - * $Date$ - * $Rev$ - * $Author$ - * $URL$ - */ - -#define MEMMAP_ERROR - -/*============================================================================= - * OS memory mapping - * - * Code section - */ -#ifdef OS_START_SEC_CODE - #undef OS_START_SEC_CODE - #ifdef CURRENT_LINKER_CODE_SECTION - #error "Starting a .osCode while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_CODE_SECTION_NAME - #define CURRENT_LINKER_CODE_SECTION_NAME __attribute__ ((section (".osCode"))) - #define CURRENT_LINKER_CODE_SECTION - #endif -#endif - -#ifdef OS_STOP_SEC_CODE - #undef OS_STOP_SEC_CODE - #ifdef CURRENT_LINKER_CODE_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_CODE_SECTION - #undef CURRENT_LINKER_CODE_SECTION_NAME - #define CURRENT_LINKER_CODE_SECTION_NAME - #else - #error "No section .osCode started" - #endif -#endif - - -#ifdef OS_START_SEC_VAR_NOINIT_32BIT - #undef OS_START_SEC_VAR_NOINIT_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_NOINIT_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_NOINIT_32BIT - #undef OS_STOP_SEC_VAR_NOINIT_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_NOINIT_16BIT - #undef OS_START_SEC_VAR_NOINIT_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_NOINIT_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_NOINIT_16BIT - #undef OS_STOP_SEC_VAR_NOINIT_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_NOINIT_8BIT - #undef OS_START_SEC_VAR_NOINIT_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_NOINIT_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_NOINIT_8BIT - #undef OS_STOP_SEC_VAR_NOINIT_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_NOINIT_BOOLEAN - #undef OS_START_SEC_VAR_NOINIT_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_NOINIT_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_NOINIT_BOOLEAN - #undef OS_STOP_SEC_VAR_NOINIT_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_NOINIT_UNSPECIFIED - #undef OS_START_SEC_VAR_NOINIT_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_NOINIT_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_NOINIT_UNSPECIFIED - #undef OS_STOP_SEC_VAR_NOINIT_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_POWER_ON_INIT_32BIT - #undef OS_START_SEC_VAR_POWER_ON_INIT_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_POWER_ON_INIT_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_POWER_ON_INIT_32BIT - #undef OS_STOP_SEC_VAR_POWER_ON_INIT_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_POWER_ON_INIT_16BIT - #undef OS_START_SEC_VAR_POWER_ON_INIT_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_POWER_ON_INIT_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_POWER_ON_INIT_16BIT - #undef OS_STOP_SEC_VAR_POWER_ON_INIT_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_POWER_ON_INIT_8BIT - #undef OS_START_SEC_VAR_POWER_ON_INIT_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_POWER_ON_INIT_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_POWER_ON_INIT_8BIT - #undef OS_STOP_SEC_VAR_POWER_ON_INIT_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_POWER_ON_INIT_BOOLEAN - #undef OS_START_SEC_VAR_POWER_ON_INIT_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_POWER_ON_INIT_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_POWER_ON_INIT_BOOLEAN - #undef OS_STOP_SEC_VAR_POWER_ON_INIT_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_POWER_ON_INIT_UNSPECIFIED - #undef OS_START_SEC_VAR_POWER_ON_INIT_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_POWER_ON_INIT_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_POWER_ON_INIT_UNSPECIFIED - #undef OS_STOP_SEC_VAR_POWER_ON_INIT_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_FAST_32BIT - #undef OS_START_SEC_VAR_FAST_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_FAST_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_FAST_32BIT - #undef OS_STOP_SEC_VAR_FAST_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_FAST_16BIT - #undef OS_START_SEC_VAR_FAST_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_FAST_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_FAST_16BIT - #undef OS_STOP_SEC_VAR_FAST_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_FAST_8BIT - #undef OS_START_SEC_VAR_FAST_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_FAST_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_FAST_8BIT - #undef OS_STOP_SEC_VAR_FAST_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_FAST_BOOLEAN - #undef OS_START_SEC_VAR_FAST_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_FAST_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_FAST_BOOLEAN - #undef OS_STOP_SEC_VAR_FAST_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_FAST_UNSPECIFIED - #undef OS_START_SEC_VAR_FAST_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_FAST_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_FAST_UNSPECIFIED - #undef OS_STOP_SEC_VAR_FAST_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_NON_VOLATILE_32BIT - #undef OS_START_SEC_VAR_NON_VOLATILE_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_NON_VOLATILE_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_NON_VOLATILE_32BIT - #undef OS_STOP_SEC_VAR_NON_VOLATILE_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_NON_VOLATILE_16BIT - #undef OS_START_SEC_VAR_NON_VOLATILE_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_NON_VOLATILE_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_NON_VOLATILE_16BIT - #undef OS_STOP_SEC_VAR_NON_VOLATILE_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_NON_VOLATILE_8BIT - #undef OS_START_SEC_VAR_NON_VOLATILE_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_NON_VOLATILE_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_NON_VOLATILE_8BIT - #undef OS_STOP_SEC_VAR_NON_VOLATILE_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_NON_VOLATILE_BOOLEAN - #undef OS_START_SEC_VAR_NON_VOLATILE_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_NON_VOLATILE_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_NON_VOLATILE_BOOLEAN - #undef OS_STOP_SEC_VAR_NON_VOLATILE_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_NON_VOLATILE_UNSPECIFIED - #undef OS_START_SEC_VAR_NON_VOLATILE_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_NON_VOLATILE_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_NON_VOLATILE_UNSPECIFIED - #undef OS_STOP_SEC_VAR_NON_VOLATILE_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_32BIT - #undef OS_START_SEC_VAR_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_32BIT - #undef OS_STOP_SEC_VAR_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_16BIT - #undef OS_START_SEC_VAR_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_16BIT - #undef OS_STOP_SEC_VAR_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_8BIT - #undef OS_START_SEC_VAR_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_8BIT - #undef OS_STOP_SEC_VAR_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_BOOLEAN - #undef OS_START_SEC_VAR_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_BOOLEAN - #undef OS_STOP_SEC_VAR_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_VAR_UNSPECIFIED - #undef OS_START_SEC_VAR_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVar data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVar_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_VAR_UNSPECIFIED - #undef OS_STOP_SEC_VAR_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - - -/* - * OS Kernel stack - * The stack is separated from other data, as it should not - * be restored with a checkpoint - */ -#ifdef OS_START_SEC_KERN_STACK - #undef OS_START_SEC_KERN_STACK - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osVarKernStack data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osVarKernStack"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_KERN_STACK - #undef OS_STOP_SEC_KERN_STACK - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -/* - * Const, Calibration, Carto, Configuration data sections - */ - -#ifdef OS_START_SEC_CONST_32BIT - #undef OS_START_SEC_CONST_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CONST_32BIT - #undef OS_STOP_SEC_CONST_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CONST_16BIT - #undef OS_START_SEC_CONST_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CONST_16BIT - #undef OS_STOP_SEC_CONST_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CONST_8BIT - #undef OS_START_SEC_CONST_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CONST_8BIT - #undef OS_STOP_SEC_CONST_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CONST_BOOLEAN - #undef OS_START_SEC_CONST_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CONST_BOOLEAN - #undef OS_STOP_SEC_CONST_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CONST_UNSPECIFIED - #undef OS_START_SEC_CONST_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CONST_UNSPECIFIED - #undef OS_STOP_SEC_CONST_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CALIB_32BIT - #undef OS_START_SEC_CALIB_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CALIB_32BIT - #undef OS_STOP_SEC_CALIB_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CALIB_16BIT - #undef OS_START_SEC_CALIB_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CALIB_16BIT - #undef OS_STOP_SEC_CALIB_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CALIB_8BIT - #undef OS_START_SEC_CALIB_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CALIB_8BIT - #undef OS_STOP_SEC_CALIB_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CALIB_BOOLEAN - #undef OS_START_SEC_CALIB_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CALIB_BOOLEAN - #undef OS_STOP_SEC_CALIB_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CALIB_UNSPECIFIED - #undef OS_START_SEC_CALIB_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CALIB_UNSPECIFIED - #undef OS_STOP_SEC_CALIB_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CARTO_32BIT - #undef OS_START_SEC_CARTO_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CARTO_32BIT - #undef OS_STOP_SEC_CARTO_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CARTO_16BIT - #undef OS_START_SEC_CARTO_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CARTO_16BIT - #undef OS_STOP_SEC_CARTO_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CARTO_8BIT - #undef OS_START_SEC_CARTO_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CARTO_8BIT - #undef OS_STOP_SEC_CARTO_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CARTO_BOOLEAN - #undef OS_START_SEC_CARTO_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CARTO_BOOLEAN - #undef OS_STOP_SEC_CARTO_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CARTO_UNSPECIFIED - #undef OS_START_SEC_CARTO_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CARTO_UNSPECIFIED - #undef OS_STOP_SEC_CARTO_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CONFIG_DATA_32BIT - #undef OS_START_SEC_CONFIG_DATA_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CONFIG_DATA_32BIT - #undef OS_STOP_SEC_CONFIG_DATA_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CONFIG_DATA_16BIT - #undef OS_START_SEC_CONFIG_DATA_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CONFIG_DATA_16BIT - #undef OS_STOP_SEC_CONFIG_DATA_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CONFIG_DATA_8BIT - #undef OS_START_SEC_CONFIG_DATA_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CONFIG_DATA_8BIT - #undef OS_STOP_SEC_CONFIG_DATA_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CONFIG_DATA_BOOLEAN - #undef OS_START_SEC_CONFIG_DATA_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CONFIG_DATA_BOOLEAN - #undef OS_STOP_SEC_CONFIG_DATA_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef OS_START_SEC_CONFIG_DATA_UNSPECIFIED - #undef OS_START_SEC_CONFIG_DATA_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osConst data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef OS_STOP_SEC_CONFIG_DATA_UNSPECIFIED - #undef OS_STOP_SEC_CONFIG_DATA_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - - -/*============================================================================= - * API code and const memory mapping - */ -#ifdef API_START_SEC_CODE - #undef API_START_SEC_CODE - #ifdef CURRENT_LINKER_CODE_SECTION - #error "Starting a .osApiCode section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_CODE_SECTION_NAME - #define CURRENT_LINKER_CODE_SECTION_NAME __attribute__ ((section (".osApiCode"))) - #define CURRENT_LINKER_CODE_SECTION - #endif -#endif - -#ifdef API_STOP_SEC_CODE - #undef API_STOP_SEC_CODE - #ifdef CURRENT_LINKER_CODE_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_CODE_SECTION - #undef CURRENT_LINKER_CODE_SECTION_NAME - #define CURRENT_LINKER_CODE_SECTION_NAME - #else - #error "No section .osApiCode started" - #endif -#endif - -#ifdef API_START_SEC_CONST_UNSPECIFIED - #undef API_START_SEC_CONST_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a .osApiConst section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".osApiConst"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif - -#ifdef API_STOP_SEC_CONST_UNSPECIFIED - #undef API_STOP_SEC_CONST_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section .osApiConst started" - #endif -#endif - -/*============================================================================ - * Common library - */ -#ifdef APP_COMMON_START_SEC_CODE - #undef APP_COMMON_START_SEC_CODE - #ifdef CURRENT_LINKER_CODE_SECTION - #error "Starting a .appCommonCode section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_CODE_SECTION_NAME - #define CURRENT_LINKER_CODE_SECTION_NAME __attribute__ ((section (".appCommonCode"))) - #define CURRENT_LINKER_CODE_SECTION - #endif -#endif - -#ifdef APP_COMMON_STOP_SEC_CODE - #undef APP_COMMON_STOP_SEC_CODE - #ifdef CURRENT_LINKER_CODE_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_CODE_SECTION - #undef CURRENT_LINKER_CODE_SECTION_NAME - #define CURRENT_LINKER_CODE_SECTION_NAME - #else - #error "No section .appCommonCode started" - #endif -#endif - -/*============================================================================= - * Application objects (Tasks and ISRs) Memory mapping - */ - - - -/*----------------------------------------------------------------------------- - * Task fft memory mapping to sections - * - * Code section - */ -#ifdef APP_Task_fft_START_SEC_CODE - #undef APP_Task_fft_START_SEC_CODE - #ifdef CURRENT_LINKER_CODE_SECTION - #error "Starting a new fft Task code section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_CODE_SECTION_NAME - #define CURRENT_LINKER_CODE_SECTION_NAME __attribute__ ((section (".Task_fftCode"))) - #define CURRENT_LINKER_CODE_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CODE - #undef APP_Task_fft_STOP_SEC_CODE - #ifdef CURRENT_LINKER_CODE_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_CODE_SECTION - #undef CURRENT_LINKER_CODE_SECTION_NAME - #define CURRENT_LINKER_CODE_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -/* - * Stack section - */ -#ifdef APP_Task_fft_START_SEC_STACK - #undef APP_Task_fft_START_SEC_STACK - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new fft Task stack section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fftStack"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_STACK - #undef APP_Task_fft_STOP_SEC_STACK - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -/* - * Variables sections - */ - -#ifdef APP_Task_fft_START_SEC_VAR_NOINIT_32BIT - #undef APP_Task_fft_START_SEC_VAR_NOINIT_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_NOINIT_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_NOINIT_32BIT - #undef APP_Task_fft_STOP_SEC_VAR_NOINIT_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_NOINIT_16BIT - #undef APP_Task_fft_START_SEC_VAR_NOINIT_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_NOINIT_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_NOINIT_16BIT - #undef APP_Task_fft_STOP_SEC_VAR_NOINIT_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_NOINIT_8BIT - #undef APP_Task_fft_START_SEC_VAR_NOINIT_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_NOINIT_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_NOINIT_8BIT - #undef APP_Task_fft_STOP_SEC_VAR_NOINIT_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_NOINIT_BOOLEAN - #undef APP_Task_fft_START_SEC_VAR_NOINIT_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_NOINIT_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_NOINIT_BOOLEAN - #undef APP_Task_fft_STOP_SEC_VAR_NOINIT_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_NOINIT_UNSPECIFIED - #undef APP_Task_fft_START_SEC_VAR_NOINIT_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_NOINIT_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_NOINIT_UNSPECIFIED - #undef APP_Task_fft_STOP_SEC_VAR_NOINIT_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_POWER_ON_INIT_32BIT - #undef APP_Task_fft_START_SEC_VAR_POWER_ON_INIT_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_POWER_ON_INIT_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_POWER_ON_INIT_32BIT - #undef APP_Task_fft_STOP_SEC_VAR_POWER_ON_INIT_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_POWER_ON_INIT_16BIT - #undef APP_Task_fft_START_SEC_VAR_POWER_ON_INIT_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_POWER_ON_INIT_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_POWER_ON_INIT_16BIT - #undef APP_Task_fft_STOP_SEC_VAR_POWER_ON_INIT_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_POWER_ON_INIT_8BIT - #undef APP_Task_fft_START_SEC_VAR_POWER_ON_INIT_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_POWER_ON_INIT_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_POWER_ON_INIT_8BIT - #undef APP_Task_fft_STOP_SEC_VAR_POWER_ON_INIT_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_POWER_ON_INIT_BOOLEAN - #undef APP_Task_fft_START_SEC_VAR_POWER_ON_INIT_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_POWER_ON_INIT_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_POWER_ON_INIT_BOOLEAN - #undef APP_Task_fft_STOP_SEC_VAR_POWER_ON_INIT_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_POWER_ON_INIT_UNSPECIFIED - #undef APP_Task_fft_START_SEC_VAR_POWER_ON_INIT_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_POWER_ON_INIT_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_POWER_ON_INIT_UNSPECIFIED - #undef APP_Task_fft_STOP_SEC_VAR_POWER_ON_INIT_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_FAST_32BIT - #undef APP_Task_fft_START_SEC_VAR_FAST_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_FAST_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_FAST_32BIT - #undef APP_Task_fft_STOP_SEC_VAR_FAST_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_FAST_16BIT - #undef APP_Task_fft_START_SEC_VAR_FAST_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_FAST_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_FAST_16BIT - #undef APP_Task_fft_STOP_SEC_VAR_FAST_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_FAST_8BIT - #undef APP_Task_fft_START_SEC_VAR_FAST_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_FAST_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_FAST_8BIT - #undef APP_Task_fft_STOP_SEC_VAR_FAST_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_FAST_BOOLEAN - #undef APP_Task_fft_START_SEC_VAR_FAST_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_FAST_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_FAST_BOOLEAN - #undef APP_Task_fft_STOP_SEC_VAR_FAST_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_FAST_UNSPECIFIED - #undef APP_Task_fft_START_SEC_VAR_FAST_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_FAST_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_FAST_UNSPECIFIED - #undef APP_Task_fft_STOP_SEC_VAR_FAST_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_32BIT - #undef APP_Task_fft_START_SEC_VAR_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_32BIT - #undef APP_Task_fft_STOP_SEC_VAR_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_16BIT - #undef APP_Task_fft_START_SEC_VAR_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_16BIT - #undef APP_Task_fft_STOP_SEC_VAR_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_8BIT - #undef APP_Task_fft_START_SEC_VAR_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_8BIT - #undef APP_Task_fft_STOP_SEC_VAR_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_BOOLEAN - #undef APP_Task_fft_START_SEC_VAR_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_BOOLEAN - #undef APP_Task_fft_STOP_SEC_VAR_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_UNSPECIFIED - #undef APP_Task_fft_START_SEC_VAR_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_UNSPECIFIED - #undef APP_Task_fft_STOP_SEC_VAR_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - - -/* - * LEA Variables sections - */ - -#ifdef APP_Task_fft_START_SEC_LEA_VAR_LEA_32BIT - #undef APP_Task_fft_START_SEC_LEA_VAR_LEA_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft lea data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_LEA_VAR_LEA_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_LEA_VAR_LEA_32BIT - #undef APP_Task_fft_STOP_SEC_LEA_VAR_LEA_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_LEA_VAR_LEA_16BIT - #undef APP_Task_fft_START_SEC_LEA_VAR_LEA_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft lea data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_LEA_VAR_LEA_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_LEA_VAR_LEA_16BIT - #undef APP_Task_fft_STOP_SEC_LEA_VAR_LEA_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_LEA_VAR_LEA_8BIT - #undef APP_Task_fft_START_SEC_LEA_VAR_LEA_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft lea data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_LEA_VAR_LEA_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_LEA_VAR_LEA_8BIT - #undef APP_Task_fft_STOP_SEC_LEA_VAR_LEA_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_LEA_VAR_LEA_BOOLEAN - #undef APP_Task_fft_START_SEC_LEA_VAR_LEA_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft lea data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_LEA_VAR_LEA_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_LEA_VAR_LEA_BOOLEAN - #undef APP_Task_fft_STOP_SEC_LEA_VAR_LEA_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_LEA_VAR_LEA_UNSPECIFIED - #undef APP_Task_fft_START_SEC_LEA_VAR_LEA_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft lea data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_LEA_VAR_LEA_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_LEA_VAR_LEA_UNSPECIFIED - #undef APP_Task_fft_STOP_SEC_LEA_VAR_LEA_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -/* - * Non Volatile Variables sections - */ - -#ifdef APP_Task_fft_START_SEC_VAR_NON_VOLATILE_32BIT - #undef APP_Task_fft_START_SEC_VAR_NON_VOLATILE_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_NON_VOLATILE_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_NON_VOLATILE_32BIT - #undef APP_Task_fft_STOP_SEC_VAR_NON_VOLATILE_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_NON_VOLATILE_16BIT - #undef APP_Task_fft_START_SEC_VAR_NON_VOLATILE_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_NON_VOLATILE_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_NON_VOLATILE_16BIT - #undef APP_Task_fft_STOP_SEC_VAR_NON_VOLATILE_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_NON_VOLATILE_8BIT - #undef APP_Task_fft_START_SEC_VAR_NON_VOLATILE_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_NON_VOLATILE_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_NON_VOLATILE_8BIT - #undef APP_Task_fft_STOP_SEC_VAR_NON_VOLATILE_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_NON_VOLATILE_BOOLEAN - #undef APP_Task_fft_START_SEC_VAR_NON_VOLATILE_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_NON_VOLATILE_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_NON_VOLATILE_BOOLEAN - #undef APP_Task_fft_STOP_SEC_VAR_NON_VOLATILE_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_VAR_NON_VOLATILE_UNSPECIFIED - #undef APP_Task_fft_START_SEC_VAR_NON_VOLATILE_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_VAR_NON_VOLATILE_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_VAR_NON_VOLATILE_UNSPECIFIED - #undef APP_Task_fft_STOP_SEC_VAR_NON_VOLATILE_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - - -/* - * Const, Calibration, Carto, Configuration data sections - */ - -#ifdef APP_Task_fft_START_SEC_CONST_32BIT - #undef APP_Task_fft_START_SEC_CONST_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CONST_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CONST_32BIT - #undef APP_Task_fft_STOP_SEC_CONST_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CONST_16BIT - #undef APP_Task_fft_START_SEC_CONST_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CONST_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CONST_16BIT - #undef APP_Task_fft_STOP_SEC_CONST_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CONST_8BIT - #undef APP_Task_fft_START_SEC_CONST_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CONST_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CONST_8BIT - #undef APP_Task_fft_STOP_SEC_CONST_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CONST_BOOLEAN - #undef APP_Task_fft_START_SEC_CONST_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CONST_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CONST_BOOLEAN - #undef APP_Task_fft_STOP_SEC_CONST_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CONST_UNSPECIFIED - #undef APP_Task_fft_START_SEC_CONST_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CONST_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CONST_UNSPECIFIED - #undef APP_Task_fft_STOP_SEC_CONST_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CALIB_32BIT - #undef APP_Task_fft_START_SEC_CALIB_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CALIB_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CALIB_32BIT - #undef APP_Task_fft_STOP_SEC_CALIB_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CALIB_16BIT - #undef APP_Task_fft_START_SEC_CALIB_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CALIB_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CALIB_16BIT - #undef APP_Task_fft_STOP_SEC_CALIB_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CALIB_8BIT - #undef APP_Task_fft_START_SEC_CALIB_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CALIB_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CALIB_8BIT - #undef APP_Task_fft_STOP_SEC_CALIB_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CALIB_BOOLEAN - #undef APP_Task_fft_START_SEC_CALIB_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CALIB_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CALIB_BOOLEAN - #undef APP_Task_fft_STOP_SEC_CALIB_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CALIB_UNSPECIFIED - #undef APP_Task_fft_START_SEC_CALIB_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CALIB_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CALIB_UNSPECIFIED - #undef APP_Task_fft_STOP_SEC_CALIB_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CARTO_32BIT - #undef APP_Task_fft_START_SEC_CARTO_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CARTO_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CARTO_32BIT - #undef APP_Task_fft_STOP_SEC_CARTO_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CARTO_16BIT - #undef APP_Task_fft_START_SEC_CARTO_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CARTO_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CARTO_16BIT - #undef APP_Task_fft_STOP_SEC_CARTO_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CARTO_8BIT - #undef APP_Task_fft_START_SEC_CARTO_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CARTO_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CARTO_8BIT - #undef APP_Task_fft_STOP_SEC_CARTO_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CARTO_BOOLEAN - #undef APP_Task_fft_START_SEC_CARTO_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CARTO_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CARTO_BOOLEAN - #undef APP_Task_fft_STOP_SEC_CARTO_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CARTO_UNSPECIFIED - #undef APP_Task_fft_START_SEC_CARTO_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CARTO_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CARTO_UNSPECIFIED - #undef APP_Task_fft_STOP_SEC_CARTO_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CONFIG_DATA_32BIT - #undef APP_Task_fft_START_SEC_CONFIG_DATA_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CONFIG_DATA_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CONFIG_DATA_32BIT - #undef APP_Task_fft_STOP_SEC_CONFIG_DATA_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CONFIG_DATA_16BIT - #undef APP_Task_fft_START_SEC_CONFIG_DATA_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CONFIG_DATA_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CONFIG_DATA_16BIT - #undef APP_Task_fft_STOP_SEC_CONFIG_DATA_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CONFIG_DATA_8BIT - #undef APP_Task_fft_START_SEC_CONFIG_DATA_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CONFIG_DATA_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CONFIG_DATA_8BIT - #undef APP_Task_fft_STOP_SEC_CONFIG_DATA_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CONFIG_DATA_BOOLEAN - #undef APP_Task_fft_START_SEC_CONFIG_DATA_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CONFIG_DATA_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CONFIG_DATA_BOOLEAN - #undef APP_Task_fft_STOP_SEC_CONFIG_DATA_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_fft_START_SEC_CONFIG_DATA_UNSPECIFIED - #undef APP_Task_fft_START_SEC_CONFIG_DATA_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task fft data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_fft_SEC_CONFIG_DATA_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_fft_STOP_SEC_CONFIG_DATA_UNSPECIFIED - #undef APP_Task_fft_STOP_SEC_CONFIG_DATA_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - - - -/*----------------------------------------------------------------------------- - * Task IDLE_TASK memory mapping to sections - * - * Code section - */ -#ifdef APP_Task_IDLE_TASK_START_SEC_CODE - #undef APP_Task_IDLE_TASK_START_SEC_CODE - #ifdef CURRENT_LINKER_CODE_SECTION - #error "Starting a new IDLE_TASK Task code section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_CODE_SECTION_NAME - #define CURRENT_LINKER_CODE_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASKCode"))) - #define CURRENT_LINKER_CODE_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CODE - #undef APP_Task_IDLE_TASK_STOP_SEC_CODE - #ifdef CURRENT_LINKER_CODE_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_CODE_SECTION - #undef CURRENT_LINKER_CODE_SECTION_NAME - #define CURRENT_LINKER_CODE_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -/* - * Stack section - */ -#ifdef APP_Task_IDLE_TASK_START_SEC_STACK - #undef APP_Task_IDLE_TASK_START_SEC_STACK - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new IDLE_TASK Task stack section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASKStack"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_STACK - #undef APP_Task_IDLE_TASK_STOP_SEC_STACK - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -/* - * Variables sections - */ - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_NOINIT_32BIT - #undef APP_Task_IDLE_TASK_START_SEC_VAR_NOINIT_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_NOINIT_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_NOINIT_32BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_NOINIT_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_NOINIT_16BIT - #undef APP_Task_IDLE_TASK_START_SEC_VAR_NOINIT_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_NOINIT_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_NOINIT_16BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_NOINIT_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_NOINIT_8BIT - #undef APP_Task_IDLE_TASK_START_SEC_VAR_NOINIT_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_NOINIT_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_NOINIT_8BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_NOINIT_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_NOINIT_BOOLEAN - #undef APP_Task_IDLE_TASK_START_SEC_VAR_NOINIT_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_NOINIT_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_NOINIT_BOOLEAN - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_NOINIT_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_NOINIT_UNSPECIFIED - #undef APP_Task_IDLE_TASK_START_SEC_VAR_NOINIT_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_NOINIT_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_NOINIT_UNSPECIFIED - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_NOINIT_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_POWER_ON_INIT_32BIT - #undef APP_Task_IDLE_TASK_START_SEC_VAR_POWER_ON_INIT_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_POWER_ON_INIT_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_POWER_ON_INIT_32BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_POWER_ON_INIT_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_POWER_ON_INIT_16BIT - #undef APP_Task_IDLE_TASK_START_SEC_VAR_POWER_ON_INIT_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_POWER_ON_INIT_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_POWER_ON_INIT_16BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_POWER_ON_INIT_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_POWER_ON_INIT_8BIT - #undef APP_Task_IDLE_TASK_START_SEC_VAR_POWER_ON_INIT_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_POWER_ON_INIT_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_POWER_ON_INIT_8BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_POWER_ON_INIT_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_POWER_ON_INIT_BOOLEAN - #undef APP_Task_IDLE_TASK_START_SEC_VAR_POWER_ON_INIT_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_POWER_ON_INIT_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_POWER_ON_INIT_BOOLEAN - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_POWER_ON_INIT_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_POWER_ON_INIT_UNSPECIFIED - #undef APP_Task_IDLE_TASK_START_SEC_VAR_POWER_ON_INIT_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_POWER_ON_INIT_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_POWER_ON_INIT_UNSPECIFIED - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_POWER_ON_INIT_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_FAST_32BIT - #undef APP_Task_IDLE_TASK_START_SEC_VAR_FAST_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_FAST_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_FAST_32BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_FAST_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_FAST_16BIT - #undef APP_Task_IDLE_TASK_START_SEC_VAR_FAST_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_FAST_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_FAST_16BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_FAST_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_FAST_8BIT - #undef APP_Task_IDLE_TASK_START_SEC_VAR_FAST_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_FAST_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_FAST_8BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_FAST_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_FAST_BOOLEAN - #undef APP_Task_IDLE_TASK_START_SEC_VAR_FAST_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_FAST_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_FAST_BOOLEAN - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_FAST_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_FAST_UNSPECIFIED - #undef APP_Task_IDLE_TASK_START_SEC_VAR_FAST_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_FAST_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_FAST_UNSPECIFIED - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_FAST_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_32BIT - #undef APP_Task_IDLE_TASK_START_SEC_VAR_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_32BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_16BIT - #undef APP_Task_IDLE_TASK_START_SEC_VAR_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_16BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_8BIT - #undef APP_Task_IDLE_TASK_START_SEC_VAR_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_8BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_BOOLEAN - #undef APP_Task_IDLE_TASK_START_SEC_VAR_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_BOOLEAN - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_VAR_UNSPECIFIED - #undef APP_Task_IDLE_TASK_START_SEC_VAR_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_VAR_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_VAR_UNSPECIFIED - #undef APP_Task_IDLE_TASK_STOP_SEC_VAR_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - - -/* - * Const, Calibration, Carto, Configuration data sections - */ - -#ifdef APP_Task_IDLE_TASK_START_SEC_CONST_32BIT - #undef APP_Task_IDLE_TASK_START_SEC_CONST_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CONST_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CONST_32BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_CONST_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CONST_16BIT - #undef APP_Task_IDLE_TASK_START_SEC_CONST_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CONST_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CONST_16BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_CONST_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CONST_8BIT - #undef APP_Task_IDLE_TASK_START_SEC_CONST_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CONST_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CONST_8BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_CONST_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CONST_BOOLEAN - #undef APP_Task_IDLE_TASK_START_SEC_CONST_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CONST_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CONST_BOOLEAN - #undef APP_Task_IDLE_TASK_STOP_SEC_CONST_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CONST_UNSPECIFIED - #undef APP_Task_IDLE_TASK_START_SEC_CONST_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CONST_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CONST_UNSPECIFIED - #undef APP_Task_IDLE_TASK_STOP_SEC_CONST_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CALIB_32BIT - #undef APP_Task_IDLE_TASK_START_SEC_CALIB_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CALIB_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CALIB_32BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_CALIB_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CALIB_16BIT - #undef APP_Task_IDLE_TASK_START_SEC_CALIB_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CALIB_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CALIB_16BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_CALIB_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CALIB_8BIT - #undef APP_Task_IDLE_TASK_START_SEC_CALIB_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CALIB_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CALIB_8BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_CALIB_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CALIB_BOOLEAN - #undef APP_Task_IDLE_TASK_START_SEC_CALIB_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CALIB_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CALIB_BOOLEAN - #undef APP_Task_IDLE_TASK_STOP_SEC_CALIB_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CALIB_UNSPECIFIED - #undef APP_Task_IDLE_TASK_START_SEC_CALIB_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CALIB_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CALIB_UNSPECIFIED - #undef APP_Task_IDLE_TASK_STOP_SEC_CALIB_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CARTO_32BIT - #undef APP_Task_IDLE_TASK_START_SEC_CARTO_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CARTO_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CARTO_32BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_CARTO_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CARTO_16BIT - #undef APP_Task_IDLE_TASK_START_SEC_CARTO_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CARTO_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CARTO_16BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_CARTO_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CARTO_8BIT - #undef APP_Task_IDLE_TASK_START_SEC_CARTO_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CARTO_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CARTO_8BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_CARTO_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CARTO_BOOLEAN - #undef APP_Task_IDLE_TASK_START_SEC_CARTO_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CARTO_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CARTO_BOOLEAN - #undef APP_Task_IDLE_TASK_STOP_SEC_CARTO_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CARTO_UNSPECIFIED - #undef APP_Task_IDLE_TASK_START_SEC_CARTO_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CARTO_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CARTO_UNSPECIFIED - #undef APP_Task_IDLE_TASK_STOP_SEC_CARTO_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CONFIG_DATA_32BIT - #undef APP_Task_IDLE_TASK_START_SEC_CONFIG_DATA_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CONFIG_DATA_32BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CONFIG_DATA_32BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_CONFIG_DATA_32BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CONFIG_DATA_16BIT - #undef APP_Task_IDLE_TASK_START_SEC_CONFIG_DATA_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CONFIG_DATA_16BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CONFIG_DATA_16BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_CONFIG_DATA_16BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CONFIG_DATA_8BIT - #undef APP_Task_IDLE_TASK_START_SEC_CONFIG_DATA_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CONFIG_DATA_8BIT"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CONFIG_DATA_8BIT - #undef APP_Task_IDLE_TASK_STOP_SEC_CONFIG_DATA_8BIT - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CONFIG_DATA_BOOLEAN - #undef APP_Task_IDLE_TASK_START_SEC_CONFIG_DATA_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CONFIG_DATA_BOOLEAN"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CONFIG_DATA_BOOLEAN - #undef APP_Task_IDLE_TASK_STOP_SEC_CONFIG_DATA_BOOLEAN - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - -#ifdef APP_Task_IDLE_TASK_START_SEC_CONFIG_DATA_UNSPECIFIED - #undef APP_Task_IDLE_TASK_START_SEC_CONFIG_DATA_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #error "Starting a new Task IDLE_TASK data section while a section is already started" - #else - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME __attribute__ ((section (".Task_IDLE_TASK_SEC_CONFIG_DATA_UNSPECIFIED"))) - #define CURRENT_LINKER_DATA_SECTION - #endif -#endif -#ifdef APP_Task_IDLE_TASK_STOP_SEC_CONFIG_DATA_UNSPECIFIED - #undef APP_Task_IDLE_TASK_STOP_SEC_CONFIG_DATA_UNSPECIFIED - #ifdef CURRENT_LINKER_DATA_SECTION - #undef MEMMAP_ERROR - #undef CURRENT_LINKER_DATA_SECTION - #undef CURRENT_LINKER_DATA_SECTION_NAME - #define CURRENT_LINKER_DATA_SECTION_NAME - #else - #error "No section started" - #endif -#endif - - -#ifdef MEMMAP_ERROR - #error "MemMap.h, wrong section command" -#endif - -/*============================================================================= - * Published informations - */ -#define MEMMAP_VENDOR_ID 48 -#define MEMMAP_AR_MAJOR_VERSION 3 -#define MEMMAP_AR_MINOR_VERSION 0 -#define MEMMAP_AR_PATCH_VERSION 0 -#define MEMMAP_SW_MAJOR_VERSION 1 -#define MEMMAP_SW_MINOR_VERSION 0 -#define MEMMAP_SW_PATCH_VERSION 0 - diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/script.ld b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/script.ld deleted file mode 100644 index 5fe77a316..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/script.ld +++ /dev/null @@ -1,4150 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/* */ -/* Link script */ -/* */ -/* msp430fr5994 */ -/* */ -/* */ -/* - NO_INIT : used for variables that are never cleared and never */ -/* initialized. */ -/* - CLEARED : used for variables that are cleared to zero after */ -/* every reset. */ -/* - POWER_ON_CLEARED : used for variables that are cleared to zero only */ -/* after power on reset. */ -/* - INIT : used for variables that are initialized with values */ -/* after every reset. */ -/* - POWER_ON_INIT : used for variables that are initialized with values */ -/* only after power on reset. */ -/* */ -/*----------------------------------------------------------------------------*/ -/*----------------------------------------------------------------------------*/ -/* */ -/* Peripheral registers definition */ -/* */ -/*----------------------------------------------------------------------------*/ -/* ============================================================================ */ -/* Copyright (c) 2019, Texas Instruments Incorporated */ -/* All rights reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or without */ -/* modification, are permitted provided that the following conditions */ -/* are met: */ -/* */ -/* * Redistributions of source code must retain the above copyright */ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* * Redistributions in binary form must reproduce the above copyright */ -/* notice, this list of conditions and the following disclaimer in the */ -/* documentation and/or other materials provided with the distribution. */ -/* */ -/* * Neither the name of Texas Instruments Incorporated nor the names of */ -/* its contributors may be used to endorse or promote products derived */ -/* from this software without specific prior written permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" */ -/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, */ -/* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ -/* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, */ -/* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, */ -/* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; */ -/* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, */ -/* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* ============================================================================ */ - -/* This file supports MSP430FR5994 devices. */ - -/* 1.208 */ - -/************************************************************ -* PERIPHERAL FILE MAP -************************************************************/ - - -/***************************************************************************** - ADC12_B -*****************************************************************************/ -PROVIDE(ADC12CTL0 = 0x0800); -PROVIDE(ADC12CTL0_L = 0x0800); -PROVIDE(ADC12CTL0_H = 0x0801); -PROVIDE(ADC12CTL1 = 0x0802); -PROVIDE(ADC12CTL1_L = 0x0802); -PROVIDE(ADC12CTL1_H = 0x0803); -PROVIDE(ADC12CTL2 = 0x0804); -PROVIDE(ADC12CTL2_L = 0x0804); -PROVIDE(ADC12CTL2_H = 0x0805); -PROVIDE(ADC12CTL3 = 0x0806); -PROVIDE(ADC12CTL3_L = 0x0806); -PROVIDE(ADC12CTL3_H = 0x0807); -PROVIDE(ADC12LO = 0x0808); -PROVIDE(ADC12LO_L = 0x0808); -PROVIDE(ADC12LO_H = 0x0809); -PROVIDE(ADC12HI = 0x080A); -PROVIDE(ADC12HI_L = 0x080A); -PROVIDE(ADC12HI_H = 0x080B); -PROVIDE(ADC12IFGR0 = 0x080C); -PROVIDE(ADC12IFGR0_L = 0x080C); -PROVIDE(ADC12IFGR0_H = 0x080D); -PROVIDE(ADC12IFGR1 = 0x080E); -PROVIDE(ADC12IFGR1_L = 0x080E); -PROVIDE(ADC12IFGR1_H = 0x080F); -PROVIDE(ADC12IFGR2 = 0x0810); -PROVIDE(ADC12IFGR2_L = 0x0810); -PROVIDE(ADC12IFGR2_H = 0x0811); -PROVIDE(ADC12IER0 = 0x0812); -PROVIDE(ADC12IER0_L = 0x0812); -PROVIDE(ADC12IER0_H = 0x0813); -PROVIDE(ADC12IER1 = 0x0814); -PROVIDE(ADC12IER1_L = 0x0814); -PROVIDE(ADC12IER1_H = 0x0815); -PROVIDE(ADC12IER2 = 0x0816); -PROVIDE(ADC12IER2_L = 0x0816); -PROVIDE(ADC12IER2_H = 0x0817); -PROVIDE(ADC12IV = 0x0818); -PROVIDE(ADC12IV_L = 0x0818); -PROVIDE(ADC12IV_H = 0x0819); -PROVIDE(ADC12MCTL0 = 0x0820); -PROVIDE(ADC12MCTL0_L = 0x0820); -PROVIDE(ADC12MCTL0_H = 0x0821); -PROVIDE(ADC12MCTL1 = 0x0822); -PROVIDE(ADC12MCTL1_L = 0x0822); -PROVIDE(ADC12MCTL1_H = 0x0823); -PROVIDE(ADC12MCTL2 = 0x0824); -PROVIDE(ADC12MCTL2_L = 0x0824); -PROVIDE(ADC12MCTL2_H = 0x0825); -PROVIDE(ADC12MCTL3 = 0x0826); -PROVIDE(ADC12MCTL3_L = 0x0826); -PROVIDE(ADC12MCTL3_H = 0x0827); -PROVIDE(ADC12MCTL4 = 0x0828); -PROVIDE(ADC12MCTL4_L = 0x0828); -PROVIDE(ADC12MCTL4_H = 0x0829); -PROVIDE(ADC12MCTL5 = 0x082A); -PROVIDE(ADC12MCTL5_L = 0x082A); -PROVIDE(ADC12MCTL5_H = 0x082B); -PROVIDE(ADC12MCTL6 = 0x082C); -PROVIDE(ADC12MCTL6_L = 0x082C); -PROVIDE(ADC12MCTL6_H = 0x082D); -PROVIDE(ADC12MCTL7 = 0x082E); -PROVIDE(ADC12MCTL7_L = 0x082E); -PROVIDE(ADC12MCTL7_H = 0x082F); -PROVIDE(ADC12MCTL8 = 0x0830); -PROVIDE(ADC12MCTL8_L = 0x0830); -PROVIDE(ADC12MCTL8_H = 0x0831); -PROVIDE(ADC12MCTL9 = 0x0832); -PROVIDE(ADC12MCTL9_L = 0x0832); -PROVIDE(ADC12MCTL9_H = 0x0833); -PROVIDE(ADC12MCTL10 = 0x0834); -PROVIDE(ADC12MCTL10_L = 0x0834); -PROVIDE(ADC12MCTL10_H = 0x0835); -PROVIDE(ADC12MCTL11 = 0x0836); -PROVIDE(ADC12MCTL11_L = 0x0836); -PROVIDE(ADC12MCTL11_H = 0x0837); -PROVIDE(ADC12MCTL12 = 0x0838); -PROVIDE(ADC12MCTL12_L = 0x0838); -PROVIDE(ADC12MCTL12_H = 0x0839); -PROVIDE(ADC12MCTL13 = 0x083A); -PROVIDE(ADC12MCTL13_L = 0x083A); -PROVIDE(ADC12MCTL13_H = 0x083B); -PROVIDE(ADC12MCTL14 = 0x083C); -PROVIDE(ADC12MCTL14_L = 0x083C); -PROVIDE(ADC12MCTL14_H = 0x083D); -PROVIDE(ADC12MCTL15 = 0x083E); -PROVIDE(ADC12MCTL15_L = 0x083E); -PROVIDE(ADC12MCTL15_H = 0x083F); -PROVIDE(ADC12MCTL16 = 0x0840); -PROVIDE(ADC12MCTL16_L = 0x0840); -PROVIDE(ADC12MCTL16_H = 0x0841); -PROVIDE(ADC12MCTL17 = 0x0842); -PROVIDE(ADC12MCTL17_L = 0x0842); -PROVIDE(ADC12MCTL17_H = 0x0843); -PROVIDE(ADC12MCTL18 = 0x0844); -PROVIDE(ADC12MCTL18_L = 0x0844); -PROVIDE(ADC12MCTL18_H = 0x0845); -PROVIDE(ADC12MCTL19 = 0x0846); -PROVIDE(ADC12MCTL19_L = 0x0846); -PROVIDE(ADC12MCTL19_H = 0x0847); -PROVIDE(ADC12MCTL20 = 0x0848); -PROVIDE(ADC12MCTL20_L = 0x0848); -PROVIDE(ADC12MCTL20_H = 0x0849); -PROVIDE(ADC12MCTL21 = 0x084A); -PROVIDE(ADC12MCTL21_L = 0x084A); -PROVIDE(ADC12MCTL21_H = 0x084B); -PROVIDE(ADC12MCTL22 = 0x084C); -PROVIDE(ADC12MCTL22_L = 0x084C); -PROVIDE(ADC12MCTL22_H = 0x084D); -PROVIDE(ADC12MCTL23 = 0x084E); -PROVIDE(ADC12MCTL23_L = 0x084E); -PROVIDE(ADC12MCTL23_H = 0x084F); -PROVIDE(ADC12MCTL24 = 0x0850); -PROVIDE(ADC12MCTL24_L = 0x0850); -PROVIDE(ADC12MCTL24_H = 0x0851); -PROVIDE(ADC12MCTL25 = 0x0852); -PROVIDE(ADC12MCTL25_L = 0x0852); -PROVIDE(ADC12MCTL25_H = 0x0853); -PROVIDE(ADC12MCTL26 = 0x0854); -PROVIDE(ADC12MCTL26_L = 0x0854); -PROVIDE(ADC12MCTL26_H = 0x0855); -PROVIDE(ADC12MCTL27 = 0x0856); -PROVIDE(ADC12MCTL27_L = 0x0856); -PROVIDE(ADC12MCTL27_H = 0x0857); -PROVIDE(ADC12MCTL28 = 0x0858); -PROVIDE(ADC12MCTL28_L = 0x0858); -PROVIDE(ADC12MCTL28_H = 0x0859); -PROVIDE(ADC12MCTL29 = 0x085A); -PROVIDE(ADC12MCTL29_L = 0x085A); -PROVIDE(ADC12MCTL29_H = 0x085B); -PROVIDE(ADC12MCTL30 = 0x085C); -PROVIDE(ADC12MCTL30_L = 0x085C); -PROVIDE(ADC12MCTL30_H = 0x085D); -PROVIDE(ADC12MCTL31 = 0x085E); -PROVIDE(ADC12MCTL31_L = 0x085E); -PROVIDE(ADC12MCTL31_H = 0x085F); -PROVIDE(ADC12MEM0 = 0x0860); -PROVIDE(ADC12MEM0_L = 0x0860); -PROVIDE(ADC12MEM0_H = 0x0861); -PROVIDE(ADC12MEM1 = 0x0862); -PROVIDE(ADC12MEM1_L = 0x0862); -PROVIDE(ADC12MEM1_H = 0x0863); -PROVIDE(ADC12MEM2 = 0x0864); -PROVIDE(ADC12MEM2_L = 0x0864); -PROVIDE(ADC12MEM2_H = 0x0865); -PROVIDE(ADC12MEM3 = 0x0866); -PROVIDE(ADC12MEM3_L = 0x0866); -PROVIDE(ADC12MEM3_H = 0x0867); -PROVIDE(ADC12MEM4 = 0x0868); -PROVIDE(ADC12MEM4_L = 0x0868); -PROVIDE(ADC12MEM4_H = 0x0869); -PROVIDE(ADC12MEM5 = 0x086A); -PROVIDE(ADC12MEM5_L = 0x086A); -PROVIDE(ADC12MEM5_H = 0x086B); -PROVIDE(ADC12MEM6 = 0x086C); -PROVIDE(ADC12MEM6_L = 0x086C); -PROVIDE(ADC12MEM6_H = 0x086D); -PROVIDE(ADC12MEM7 = 0x086E); -PROVIDE(ADC12MEM7_L = 0x086E); -PROVIDE(ADC12MEM7_H = 0x086F); -PROVIDE(ADC12MEM8 = 0x0870); -PROVIDE(ADC12MEM8_L = 0x0870); -PROVIDE(ADC12MEM8_H = 0x0871); -PROVIDE(ADC12MEM9 = 0x0872); -PROVIDE(ADC12MEM9_L = 0x0872); -PROVIDE(ADC12MEM9_H = 0x0873); -PROVIDE(ADC12MEM10 = 0x0874); -PROVIDE(ADC12MEM10_L = 0x0874); -PROVIDE(ADC12MEM10_H = 0x0875); -PROVIDE(ADC12MEM11 = 0x0876); -PROVIDE(ADC12MEM11_L = 0x0876); -PROVIDE(ADC12MEM11_H = 0x0877); -PROVIDE(ADC12MEM12 = 0x0878); -PROVIDE(ADC12MEM12_L = 0x0878); -PROVIDE(ADC12MEM12_H = 0x0879); -PROVIDE(ADC12MEM13 = 0x087A); -PROVIDE(ADC12MEM13_L = 0x087A); -PROVIDE(ADC12MEM13_H = 0x087B); -PROVIDE(ADC12MEM14 = 0x087C); -PROVIDE(ADC12MEM14_L = 0x087C); -PROVIDE(ADC12MEM14_H = 0x087D); -PROVIDE(ADC12MEM15 = 0x087E); -PROVIDE(ADC12MEM15_L = 0x087E); -PROVIDE(ADC12MEM15_H = 0x087F); -PROVIDE(ADC12MEM16 = 0x0880); -PROVIDE(ADC12MEM16_L = 0x0880); -PROVIDE(ADC12MEM16_H = 0x0881); -PROVIDE(ADC12MEM17 = 0x0882); -PROVIDE(ADC12MEM17_L = 0x0882); -PROVIDE(ADC12MEM17_H = 0x0883); -PROVIDE(ADC12MEM18 = 0x0884); -PROVIDE(ADC12MEM18_L = 0x0884); -PROVIDE(ADC12MEM18_H = 0x0885); -PROVIDE(ADC12MEM19 = 0x0886); -PROVIDE(ADC12MEM19_L = 0x0886); -PROVIDE(ADC12MEM19_H = 0x0887); -PROVIDE(ADC12MEM20 = 0x0888); -PROVIDE(ADC12MEM20_L = 0x0888); -PROVIDE(ADC12MEM20_H = 0x0889); -PROVIDE(ADC12MEM21 = 0x088A); -PROVIDE(ADC12MEM21_L = 0x088A); -PROVIDE(ADC12MEM21_H = 0x088B); -PROVIDE(ADC12MEM22 = 0x088C); -PROVIDE(ADC12MEM22_L = 0x088C); -PROVIDE(ADC12MEM22_H = 0x088D); -PROVIDE(ADC12MEM23 = 0x088E); -PROVIDE(ADC12MEM23_L = 0x088E); -PROVIDE(ADC12MEM23_H = 0x088F); -PROVIDE(ADC12MEM24 = 0x0890); -PROVIDE(ADC12MEM24_L = 0x0890); -PROVIDE(ADC12MEM24_H = 0x0891); -PROVIDE(ADC12MEM25 = 0x0892); -PROVIDE(ADC12MEM25_L = 0x0892); -PROVIDE(ADC12MEM25_H = 0x0893); -PROVIDE(ADC12MEM26 = 0x0894); -PROVIDE(ADC12MEM26_L = 0x0894); -PROVIDE(ADC12MEM26_H = 0x0895); -PROVIDE(ADC12MEM27 = 0x0896); -PROVIDE(ADC12MEM27_L = 0x0896); -PROVIDE(ADC12MEM27_H = 0x0897); -PROVIDE(ADC12MEM28 = 0x0898); -PROVIDE(ADC12MEM28_L = 0x0898); -PROVIDE(ADC12MEM28_H = 0x0899); -PROVIDE(ADC12MEM29 = 0x089A); -PROVIDE(ADC12MEM29_L = 0x089A); -PROVIDE(ADC12MEM29_H = 0x089B); -PROVIDE(ADC12MEM30 = 0x089C); -PROVIDE(ADC12MEM30_L = 0x089C); -PROVIDE(ADC12MEM30_H = 0x089D); -PROVIDE(ADC12MEM31 = 0x089E); -PROVIDE(ADC12MEM31_L = 0x089E); -PROVIDE(ADC12MEM31_H = 0x089F); - - -/***************************************************************************** - AES256 -*****************************************************************************/ -PROVIDE(AESACTL0 = 0x09C0); -PROVIDE(AESACTL0_L = 0x09C0); -PROVIDE(AESACTL0_H = 0x09C1); -PROVIDE(AESACTL1 = 0x09C2); -PROVIDE(AESACTL1_L = 0x09C2); -PROVIDE(AESACTL1_H = 0x09C3); -PROVIDE(AESASTAT = 0x09C4); -PROVIDE(AESASTAT_L = 0x09C4); -PROVIDE(AESASTAT_H = 0x09C5); -PROVIDE(AESAKEY = 0x09C6); -PROVIDE(AESAKEY_L = 0x09C6); -PROVIDE(AESAKEY_H = 0x09C7); -PROVIDE(AESADIN = 0x09C8); -PROVIDE(AESADIN_L = 0x09C8); -PROVIDE(AESADIN_H = 0x09C9); -PROVIDE(AESADOUT = 0x09CA); -PROVIDE(AESADOUT_L = 0x09CA); -PROVIDE(AESADOUT_H = 0x09CB); -PROVIDE(AESAXDIN = 0x09CC); -PROVIDE(AESAXDIN_L = 0x09CC); -PROVIDE(AESAXDIN_H = 0x09CD); -PROVIDE(AESAXIN = 0x09CE); -PROVIDE(AESAXIN_L = 0x09CE); -PROVIDE(AESAXIN_H = 0x09CF); - - -/***************************************************************************** - CAPTIO0 -*****************************************************************************/ -PROVIDE(CAPTIO0CTL = 0x043E); -PROVIDE(CAPTIO0CTL_L = 0x043E); -PROVIDE(CAPTIO0CTL_H = 0x043F); - - -/***************************************************************************** - CAPTIO1 -*****************************************************************************/ -PROVIDE(CAPTIO1CTL = 0x047E); -PROVIDE(CAPTIO1CTL_L = 0x047E); -PROVIDE(CAPTIO1CTL_H = 0x047F); - - -/***************************************************************************** - COMP_E -*****************************************************************************/ -PROVIDE(CECTL0 = 0x08C0); -PROVIDE(CECTL0_L = 0x08C0); -PROVIDE(CECTL0_H = 0x08C1); -PROVIDE(CECTL1 = 0x08C2); -PROVIDE(CECTL1_L = 0x08C2); -PROVIDE(CECTL1_H = 0x08C3); -PROVIDE(CECTL2 = 0x08C4); -PROVIDE(CECTL2_L = 0x08C4); -PROVIDE(CECTL2_H = 0x08C5); -PROVIDE(CECTL3 = 0x08C6); -PROVIDE(CECTL3_L = 0x08C6); -PROVIDE(CECTL3_H = 0x08C7); -PROVIDE(CEINT = 0x08CC); -PROVIDE(CEINT_L = 0x08CC); -PROVIDE(CEINT_H = 0x08CD); -PROVIDE(CEIV = 0x08CE); -PROVIDE(CEIV_L = 0x08CE); -PROVIDE(CEIV_H = 0x08CF); - - -/***************************************************************************** - CRC -*****************************************************************************/ -PROVIDE(CRCDI = 0x0150); -PROVIDE(CRCDI_L = 0x0150); -PROVIDE(CRCDI_H = 0x0151); -PROVIDE(CRCDIRB = 0x0152); -PROVIDE(CRCDIRB_L = 0x0152); -PROVIDE(CRCDIRB_H = 0x0153); -PROVIDE(CRCINIRES = 0x0154); -PROVIDE(CRCINIRES_L = 0x0154); -PROVIDE(CRCINIRES_H = 0x0155); -PROVIDE(CRCRESR = 0x0156); -PROVIDE(CRCRESR_L = 0x0156); -PROVIDE(CRCRESR_H = 0x0157); - - -/***************************************************************************** - CRC32 -*****************************************************************************/ -PROVIDE(CRC32DIW0 = 0x0980); -PROVIDE(CRC32DIW0_L = 0x0980); -PROVIDE(CRC32DIW0_H = 0x0981); -PROVIDE(CRC32DIW1 = 0x0982); -PROVIDE(CRC32DIW1_L = 0x0982); -PROVIDE(CRC32DIW1_H = 0x0983); -PROVIDE(CRC32DIRBW1 = 0x0984); -PROVIDE(CRC32DIRBW1_L = 0x0984); -PROVIDE(CRC32DIRBW1_H = 0x0985); -PROVIDE(CRC32DIRBW0 = 0x0986); -PROVIDE(CRC32DIRBW0_L = 0x0986); -PROVIDE(CRC32DIRBW0_H = 0x0987); -PROVIDE(CRC32INIRESW0 = 0x0988); -PROVIDE(CRC32INIRESW0_L = 0x0988); -PROVIDE(CRC32INIRESW0_H = 0x0989); -PROVIDE(CRC32INIRESW1 = 0x098A); -PROVIDE(CRC32INIRESW1_L = 0x098A); -PROVIDE(CRC32INIRESW1_H = 0x098B); -PROVIDE(CRC32RESRW1 = 0x098C); -PROVIDE(CRC32RESRW1_L = 0x098C); -PROVIDE(CRC32RESRW1_H = 0x098D); -PROVIDE(CRC32RESRW0 = 0x098E); -PROVIDE(CRC32RESRW0_L = 0x098E); -PROVIDE(CRC32RESRW0_H = 0x098F); -PROVIDE(CRC16DIW0 = 0x0990); -PROVIDE(CRC16DIW0_L = 0x0990); -PROVIDE(CRC16DIW0_H = 0x0991); -PROVIDE(CRC16DIRBW0 = 0x0996); -PROVIDE(CRC16DIRBW0_L = 0x0996); -PROVIDE(CRC16DIRBW0_H = 0x0997); -PROVIDE(CRC16INIRESW0 = 0x0998); -PROVIDE(CRC16INIRESW0_L = 0x0998); -PROVIDE(CRC16INIRESW0_H = 0x0999); -PROVIDE(CRC16RESRW0 = 0x099E); -PROVIDE(CRC16RESRW0_L = 0x099E); -PROVIDE(CRC16RESRW0_H = 0x099F); - - -/***************************************************************************** - CS -*****************************************************************************/ -PROVIDE(CSCTL0 = 0x0160); -PROVIDE(CSCTL0_L = 0x0160); -PROVIDE(CSCTL0_H = 0x0161); -PROVIDE(CSCTL1 = 0x0162); -PROVIDE(CSCTL1_L = 0x0162); -PROVIDE(CSCTL1_H = 0x0163); -PROVIDE(CSCTL2 = 0x0164); -PROVIDE(CSCTL2_L = 0x0164); -PROVIDE(CSCTL2_H = 0x0165); -PROVIDE(CSCTL3 = 0x0166); -PROVIDE(CSCTL3_L = 0x0166); -PROVIDE(CSCTL3_H = 0x0167); -PROVIDE(CSCTL4 = 0x0168); -PROVIDE(CSCTL4_L = 0x0168); -PROVIDE(CSCTL4_H = 0x0169); -PROVIDE(CSCTL5 = 0x016A); -PROVIDE(CSCTL5_L = 0x016A); -PROVIDE(CSCTL5_H = 0x016B); -PROVIDE(CSCTL6 = 0x016C); -PROVIDE(CSCTL6_L = 0x016C); -PROVIDE(CSCTL6_H = 0x016D); - - -/***************************************************************************** - DIO -*****************************************************************************/ -PROVIDE(PAIN = 0x0200); -PROVIDE(PAIN_L = 0x0200); -PROVIDE(PAIN_H = 0x0201); -PROVIDE(PAOUT = 0x0202); -PROVIDE(PAOUT_L = 0x0202); -PROVIDE(PAOUT_H = 0x0203); -PROVIDE(PADIR = 0x0204); -PROVIDE(PADIR_L = 0x0204); -PROVIDE(PADIR_H = 0x0205); -PROVIDE(PAREN = 0x0206); -PROVIDE(PAREN_L = 0x0206); -PROVIDE(PAREN_H = 0x0207); -PROVIDE(PASEL0 = 0x020A); -PROVIDE(PASEL0_L = 0x020A); -PROVIDE(PASEL0_H = 0x020B); -PROVIDE(PASEL1 = 0x020C); -PROVIDE(PASEL1_L = 0x020C); -PROVIDE(PASEL1_H = 0x020D); -PROVIDE(P1IV = 0x020E); -PROVIDE(P1IV_L = 0x020E); -PROVIDE(P1IV_H = 0x020F); -PROVIDE(PASELC = 0x0216); -PROVIDE(PASELC_L = 0x0216); -PROVIDE(PASELC_H = 0x0217); -PROVIDE(PAIES = 0x0218); -PROVIDE(PAIES_L = 0x0218); -PROVIDE(PAIES_H = 0x0219); -PROVIDE(PAIE = 0x021A); -PROVIDE(PAIE_L = 0x021A); -PROVIDE(PAIE_H = 0x021B); -PROVIDE(PAIFG = 0x021C); -PROVIDE(PAIFG_L = 0x021C); -PROVIDE(PAIFG_H = 0x021D); -PROVIDE(P2IV = 0x021E); -PROVIDE(P2IV_L = 0x021E); -PROVIDE(P2IV_H = 0x021F); -PROVIDE(PBIN = 0x0220); -PROVIDE(PBIN_L = 0x0220); -PROVIDE(PBIN_H = 0x0221); -PROVIDE(PBOUT = 0x0222); -PROVIDE(PBOUT_L = 0x0222); -PROVIDE(PBOUT_H = 0x0223); -PROVIDE(PBDIR = 0x0224); -PROVIDE(PBDIR_L = 0x0224); -PROVIDE(PBDIR_H = 0x0225); -PROVIDE(PBREN = 0x0226); -PROVIDE(PBREN_L = 0x0226); -PROVIDE(PBREN_H = 0x0227); -PROVIDE(PBSEL0 = 0x022A); -PROVIDE(PBSEL0_L = 0x022A); -PROVIDE(PBSEL0_H = 0x022B); -PROVIDE(PBSEL1 = 0x022C); -PROVIDE(PBSEL1_L = 0x022C); -PROVIDE(PBSEL1_H = 0x022D); -PROVIDE(P3IV = 0x022E); -PROVIDE(P3IV_L = 0x022E); -PROVIDE(P3IV_H = 0x022F); -PROVIDE(PBSELC = 0x0236); -PROVIDE(PBSELC_L = 0x0236); -PROVIDE(PBSELC_H = 0x0237); -PROVIDE(PBIES = 0x0238); -PROVIDE(PBIES_L = 0x0238); -PROVIDE(PBIES_H = 0x0239); -PROVIDE(PBIE = 0x023A); -PROVIDE(PBIE_L = 0x023A); -PROVIDE(PBIE_H = 0x023B); -PROVIDE(PBIFG = 0x023C); -PROVIDE(PBIFG_L = 0x023C); -PROVIDE(PBIFG_H = 0x023D); -PROVIDE(P4IV = 0x023E); -PROVIDE(P4IV_L = 0x023E); -PROVIDE(P4IV_H = 0x023F); -PROVIDE(PCIN = 0x0240); -PROVIDE(PCIN_L = 0x0240); -PROVIDE(PCIN_H = 0x0241); -PROVIDE(PCOUT = 0x0242); -PROVIDE(PCOUT_L = 0x0242); -PROVIDE(PCOUT_H = 0x0243); -PROVIDE(PCDIR = 0x0244); -PROVIDE(PCDIR_L = 0x0244); -PROVIDE(PCDIR_H = 0x0245); -PROVIDE(PCREN = 0x0246); -PROVIDE(PCREN_L = 0x0246); -PROVIDE(PCREN_H = 0x0247); -PROVIDE(PCSEL0 = 0x024A); -PROVIDE(PCSEL0_L = 0x024A); -PROVIDE(PCSEL0_H = 0x024B); -PROVIDE(PCSEL1 = 0x024C); -PROVIDE(PCSEL1_L = 0x024C); -PROVIDE(PCSEL1_H = 0x024D); -PROVIDE(P5IV = 0x024E); -PROVIDE(P5IV_L = 0x024E); -PROVIDE(P5IV_H = 0x024F); -PROVIDE(PCSELC = 0x0256); -PROVIDE(PCSELC_L = 0x0256); -PROVIDE(PCSELC_H = 0x0257); -PROVIDE(PCIES = 0x0258); -PROVIDE(PCIES_L = 0x0258); -PROVIDE(PCIES_H = 0x0259); -PROVIDE(PCIE = 0x025A); -PROVIDE(PCIE_L = 0x025A); -PROVIDE(PCIE_H = 0x025B); -PROVIDE(PCIFG = 0x025C); -PROVIDE(PCIFG_L = 0x025C); -PROVIDE(PCIFG_H = 0x025D); -PROVIDE(P6IV = 0x025E); -PROVIDE(P6IV_L = 0x025E); -PROVIDE(P6IV_H = 0x025F); -PROVIDE(PDIN = 0x0260); -PROVIDE(PDIN_L = 0x0260); -PROVIDE(PDIN_H = 0x0261); -PROVIDE(PDOUT = 0x0262); -PROVIDE(PDOUT_L = 0x0262); -PROVIDE(PDOUT_H = 0x0263); -PROVIDE(PDDIR = 0x0264); -PROVIDE(PDDIR_L = 0x0264); -PROVIDE(PDDIR_H = 0x0265); -PROVIDE(PDREN = 0x0266); -PROVIDE(PDREN_L = 0x0266); -PROVIDE(PDREN_H = 0x0267); -PROVIDE(PDSEL0 = 0x026A); -PROVIDE(PDSEL0_L = 0x026A); -PROVIDE(PDSEL0_H = 0x026B); -PROVIDE(PDSEL1 = 0x026C); -PROVIDE(PDSEL1_L = 0x026C); -PROVIDE(PDSEL1_H = 0x026D); -PROVIDE(P7IV = 0x026E); -PROVIDE(P7IV_L = 0x026E); -PROVIDE(P7IV_H = 0x026F); -PROVIDE(PDSELC = 0x0276); -PROVIDE(PDSELC_L = 0x0276); -PROVIDE(PDSELC_H = 0x0277); -PROVIDE(PDIES = 0x0278); -PROVIDE(PDIES_L = 0x0278); -PROVIDE(PDIES_H = 0x0279); -PROVIDE(PDIE = 0x027A); -PROVIDE(PDIE_L = 0x027A); -PROVIDE(PDIE_H = 0x027B); -PROVIDE(PDIFG = 0x027C); -PROVIDE(PDIFG_L = 0x027C); -PROVIDE(PDIFG_H = 0x027D); -PROVIDE(P8IV = 0x027E); -PROVIDE(P8IV_L = 0x027E); -PROVIDE(P8IV_H = 0x027F); -PROVIDE(PJIN = 0x0320); -PROVIDE(PJIN_L = 0x0320); -PROVIDE(PJIN_H = 0x0321); -PROVIDE(PJOUT = 0x0322); -PROVIDE(PJOUT_L = 0x0322); -PROVIDE(PJOUT_H = 0x0323); -PROVIDE(PJDIR = 0x0324); -PROVIDE(PJDIR_L = 0x0324); -PROVIDE(PJDIR_H = 0x0325); -PROVIDE(PJREN = 0x0326); -PROVIDE(PJREN_L = 0x0326); -PROVIDE(PJREN_H = 0x0327); -PROVIDE(PJSEL0 = 0x032A); -PROVIDE(PJSEL0_L = 0x032A); -PROVIDE(PJSEL0_H = 0x032B); -PROVIDE(PJSEL1 = 0x032C); -PROVIDE(PJSEL1_L = 0x032C); -PROVIDE(PJSEL1_H = 0x032D); -PROVIDE(PJSELC = 0x0336); -PROVIDE(PJSELC_L = 0x0336); -PROVIDE(PJSELC_H = 0x0337); -PROVIDE(P1IN = 0x0200); - -PROVIDE(P2IN = 0x0201); - -PROVIDE(P2OUT = 0x0203); - -PROVIDE(P1OUT = 0x0202); - -PROVIDE(P1DIR = 0x0204); - -PROVIDE(P2DIR = 0x0205); - -PROVIDE(P1REN = 0x0206); - -PROVIDE(P2REN = 0x0207); - -PROVIDE(P1SEL0 = 0x020A); - -PROVIDE(P2SEL0 = 0x020B); - -PROVIDE(P1SEL1 = 0x020C); - -PROVIDE(P2SEL1 = 0x020D); - -PROVIDE(P1SELC = 0x0216); - -PROVIDE(P2SELC = 0x0217); - -PROVIDE(P1IES = 0x0218); - -PROVIDE(P2IES = 0x0219); - -PROVIDE(P1IE = 0x021A); - -PROVIDE(P2IE = 0x021B); - -PROVIDE(P1IFG = 0x021C); - -PROVIDE(P2IFG = 0x021D); - -PROVIDE(P3IN = 0x0220); - -PROVIDE(P4IN = 0x0221); - -PROVIDE(P3OUT = 0x0222); - -PROVIDE(P4OUT = 0x0223); - -PROVIDE(P3DIR = 0x0224); - -PROVIDE(P4DIR = 0x0225); - -PROVIDE(P3REN = 0x0226); - -PROVIDE(P4REN = 0x0227); - -PROVIDE(P4SEL0 = 0x022B); - -PROVIDE(P3SEL0 = 0x022A); - -PROVIDE(P3SEL1 = 0x022C); - -PROVIDE(P4SEL1 = 0x022D); - -PROVIDE(P3SELC = 0x0236); - -PROVIDE(P4SELC = 0x0237); - -PROVIDE(P3IES = 0x0238); - -PROVIDE(P4IES = 0x0239); - -PROVIDE(P3IE = 0x023A); - -PROVIDE(P4IE = 0x023B); - -PROVIDE(P3IFG = 0x023C); - -PROVIDE(P4IFG = 0x023D); - -PROVIDE(P5IN = 0x0240); - -PROVIDE(P6IN = 0x0241); - -PROVIDE(P5OUT = 0x0242); - -PROVIDE(P6OUT = 0x0243); - -PROVIDE(P5DIR = 0x0244); - -PROVIDE(P6DIR = 0x0245); - -PROVIDE(P5REN = 0x0246); - -PROVIDE(P6REN = 0x0247); - -PROVIDE(P5SEL0 = 0x024A); - -PROVIDE(P6SEL0 = 0x024B); - -PROVIDE(P5SEL1 = 0x024C); - -PROVIDE(P6SEL1 = 0x024D); - -PROVIDE(P5SELC = 0x0256); - -PROVIDE(P6SELC = 0x0257); - -PROVIDE(P5IES = 0x0258); - -PROVIDE(P6IES = 0x0259); - -PROVIDE(P5IE = 0x025A); - -PROVIDE(P6IE = 0x025B); - -PROVIDE(P5IFG = 0x025C); - -PROVIDE(P6IFG = 0x025D); - -PROVIDE(P7IN = 0x0260); - -PROVIDE(P8IN = 0x0261); - -PROVIDE(P7OUT = 0x0262); - -PROVIDE(P8OUT = 0x0263); - -PROVIDE(P7DIR = 0x0264); - -PROVIDE(P8DIR = 0x0265); - -PROVIDE(P7REN = 0x0266); - -PROVIDE(P8REN = 0x0267); - -PROVIDE(P7SEL0 = 0x026A); - -PROVIDE(P8SEL0 = 0x026B); - -PROVIDE(P7SEL1 = 0x026C); - -PROVIDE(P8SEL1 = 0x026D); - -PROVIDE(P7SELC = 0x0276); - -PROVIDE(P8SELC = 0x0277); - -PROVIDE(P7IES = 0x0278); - -PROVIDE(P8IES = 0x0279); - -PROVIDE(P7IE = 0x027A); - -PROVIDE(P8IE = 0x027B); - -PROVIDE(P7IFG = 0x027C); - -PROVIDE(P8IFG = 0x027D); - - - -/***************************************************************************** - DMA -*****************************************************************************/ -PROVIDE(DMACTL0 = 0x0500); -PROVIDE(DMACTL0_L = 0x0500); -PROVIDE(DMACTL0_H = 0x0501); -PROVIDE(DMACTL1 = 0x0502); -PROVIDE(DMACTL1_L = 0x0502); -PROVIDE(DMACTL1_H = 0x0503); -PROVIDE(DMACTL2 = 0x0504); -PROVIDE(DMACTL2_L = 0x0504); -PROVIDE(DMACTL2_H = 0x0505); -PROVIDE(DMACTL4 = 0x0508); -PROVIDE(DMACTL4_L = 0x0508); -PROVIDE(DMACTL4_H = 0x0509); -PROVIDE(DMAIV = 0x050E); -PROVIDE(DMAIV_L = 0x050E); -PROVIDE(DMAIV_H = 0x050F); -PROVIDE(DMA0CTL = 0x0510); -PROVIDE(DMA0CTL_L = 0x0510); -PROVIDE(DMA0CTL_H = 0x0511); -PROVIDE(DMA0SA = 0x0512); -PROVIDE(DMA0SAL = 0x0512); -PROVIDE(DMA0SAH = 0x0514); - -PROVIDE(DMA0DA = 0x0516); -PROVIDE(DMA0DAL = 0x0516); -PROVIDE(DMA0DAH = 0x0518); - -PROVIDE(DMA0SZ = 0x051A); -PROVIDE(DMA0SZ_L = 0x051A); -PROVIDE(DMA0SZ_H = 0x051B); -PROVIDE(DMA1CTL = 0x0520); -PROVIDE(DMA1CTL_L = 0x0520); -PROVIDE(DMA1CTL_H = 0x0521); -PROVIDE(DMA1SA = 0x0522); -PROVIDE(DMA1SAL = 0x0522); -PROVIDE(DMA1SAH = 0x0524); - -PROVIDE(DMA1DA = 0x0526); -PROVIDE(DMA1DAL = 0x0526); -PROVIDE(DMA1DAH = 0x0528); - -PROVIDE(DMA1SZ = 0x052A); -PROVIDE(DMA1SZ_L = 0x052A); -PROVIDE(DMA1SZ_H = 0x052B); -PROVIDE(DMA2CTL = 0x0530); -PROVIDE(DMA2CTL_L = 0x0530); -PROVIDE(DMA2CTL_H = 0x0531); -PROVIDE(DMA2SA = 0x0532); -PROVIDE(DMA2SAL = 0x0532); -PROVIDE(DMA2SAH = 0x0534); - -PROVIDE(DMA2DA = 0x0536); -PROVIDE(DMA2DAL = 0x0536); -PROVIDE(DMA2DAH = 0x0538); - -PROVIDE(DMA2SZ = 0x053A); -PROVIDE(DMA2SZ_L = 0x053A); -PROVIDE(DMA2SZ_H = 0x053B); -PROVIDE(DMA3CTL = 0x0540); -PROVIDE(DMA3CTL_L = 0x0540); -PROVIDE(DMA3CTL_H = 0x0541); -PROVIDE(DMA3SA = 0x0542); -PROVIDE(DMA3SAL = 0x0542); -PROVIDE(DMA3SAH = 0x0544); - -PROVIDE(DMA3DA = 0x0546); -PROVIDE(DMA3DAL = 0x0546); -PROVIDE(DMA3DAH = 0x0548); - -PROVIDE(DMA3SZ = 0x054A); -PROVIDE(DMA3SZ_L = 0x054A); -PROVIDE(DMA3SZ_H = 0x054B); -PROVIDE(DMA4CTL = 0x0550); -PROVIDE(DMA4CTL_L = 0x0550); -PROVIDE(DMA4CTL_H = 0x0551); -PROVIDE(DMA4SA = 0x0552); -PROVIDE(DMA4SAL = 0x0552); -PROVIDE(DMA4SAH = 0x0554); - -PROVIDE(DMA4DA = 0x0556); -PROVIDE(DMA4DAL = 0x0556); -PROVIDE(DMA4DAH = 0x0558); - -PROVIDE(DMA4SZ = 0x055A); -PROVIDE(DMA4SZ_L = 0x055A); -PROVIDE(DMA4SZ_H = 0x055B); -PROVIDE(DMA5CTL = 0x0560); -PROVIDE(DMA5CTL_L = 0x0560); -PROVIDE(DMA5CTL_H = 0x0561); -PROVIDE(DMA5SA = 0x0562); -PROVIDE(DMA5SAL = 0x0562); -PROVIDE(DMA5SAH = 0x0564); - -PROVIDE(DMA5DA = 0x0566); -PROVIDE(DMA5DAL = 0x0566); -PROVIDE(DMA5DAH = 0x0568); - -PROVIDE(DMA5SZ = 0x056A); -PROVIDE(DMA5SZ_L = 0x056A); -PROVIDE(DMA5SZ_H = 0x056B); - - -/***************************************************************************** - FRCTL_A -*****************************************************************************/ -PROVIDE(FRCTL0 = 0x0140); -PROVIDE(FRCTL0_L = 0x0140); -PROVIDE(FRCTL0_H = 0x0141); -PROVIDE(GCCTL0 = 0x0144); -PROVIDE(GCCTL0_L = 0x0144); -PROVIDE(GCCTL0_H = 0x0145); -PROVIDE(GCCTL1 = 0x0146); -PROVIDE(GCCTL1_L = 0x0146); -PROVIDE(GCCTL1_H = 0x0147); - - -/***************************************************************************** - LEA -*****************************************************************************/ -PROVIDE(LEACAP = 0x0A80); -PROVIDE(LEACAPL = 0x0A80); -PROVIDE(LEACAPH = 0x0A82); - -PROVIDE(LEACNF0 = 0x0A84); -PROVIDE(LEACNF0L = 0x0A84); -PROVIDE(LEACNF0H = 0x0A86); - -PROVIDE(LEACNF1 = 0x0A88); -PROVIDE(LEACNF1L = 0x0A88); -PROVIDE(LEACNF1H = 0x0A8A); - -PROVIDE(LEACNF2 = 0x0A8C); -PROVIDE(LEACNF2L = 0x0A8C); -PROVIDE(LEACNF2H = 0x0A8E); - -PROVIDE(LEAMB = 0x0A90); -PROVIDE(LEAMBL = 0x0A90); -PROVIDE(LEAMBH = 0x0A92); - -PROVIDE(LEAMT = 0x0A94); -PROVIDE(LEAMTL = 0x0A94); -PROVIDE(LEAMTH = 0x0A96); - -PROVIDE(LEACMA = 0x0A98); -PROVIDE(LEACMAL = 0x0A98); -PROVIDE(LEACMAH = 0x0A9A); - -PROVIDE(LEACMCTL = 0x0A9C); -PROVIDE(LEACMCTLL = 0x0A9C); -PROVIDE(LEACMCTLH = 0x0A9E); - -PROVIDE(LEACMDSTAT = 0x0AA8); -PROVIDE(LEACMDSTATL = 0x0AA8); -PROVIDE(LEACMDSTATH = 0x0AAA); - -PROVIDE(LEAS1STAT = 0x0AAC); -PROVIDE(LEAS1STATL = 0x0AAC); -PROVIDE(LEAS1STATH = 0x0AAE); - -PROVIDE(LEAS0STAT = 0x0AB0); -PROVIDE(LEAS0STATL = 0x0AB0); -PROVIDE(LEAS0STATH = 0x0AB2); - -PROVIDE(LEADSTSTAT = 0x0AB4); -PROVIDE(LEADSTSTATL = 0x0AB4); -PROVIDE(LEADSTSTATH = 0x0AB6); - -PROVIDE(LEAPMCTL = 0x0AC0); -PROVIDE(LEAPMCTLL = 0x0AC0); -PROVIDE(LEAPMCTLH = 0x0AC2); - -PROVIDE(LEAPMDST = 0x0AC4); -PROVIDE(LEAPMDSTL = 0x0AC4); -PROVIDE(LEAPMDSTH = 0x0AC6); - -PROVIDE(LEAPMS1 = 0x0AC8); -PROVIDE(LEAPMS1L = 0x0AC8); -PROVIDE(LEAPMS1H = 0x0ACA); - -PROVIDE(LEAPMS0 = 0x0ACC); -PROVIDE(LEAPMS0L = 0x0ACC); -PROVIDE(LEAPMS0H = 0x0ACE); - -PROVIDE(LEAPMCB = 0x0AD0); -PROVIDE(LEAPMCBL = 0x0AD0); -PROVIDE(LEAPMCBH = 0x0AD2); - -PROVIDE(LEAIFGSET = 0x0AF0); -PROVIDE(LEAIFGSETL = 0x0AF0); -PROVIDE(LEAIFGSETH = 0x0AF2); - -PROVIDE(LEAIE = 0x0AF4); -PROVIDE(LEAIEL = 0x0AF4); -PROVIDE(LEAIEH = 0x0AF6); - -PROVIDE(LEAIFG = 0x0AF8); -PROVIDE(LEAIFGL = 0x0AF8); -PROVIDE(LEAIFGH = 0x0AFA); - -PROVIDE(LEAIV = 0x0AFC); -PROVIDE(LEAIVL = 0x0AFC); -PROVIDE(LEAIVH = 0x0AFE); - - - -/***************************************************************************** - MPU -*****************************************************************************/ -PROVIDE(MPUCTL0 = 0x05A0); -PROVIDE(MPUCTL0_L = 0x05A0); -PROVIDE(MPUCTL0_H = 0x05A1); -PROVIDE(MPUCTL1 = 0x05A2); -PROVIDE(MPUCTL1_L = 0x05A2); -PROVIDE(MPUCTL1_H = 0x05A3); -PROVIDE(MPUSEGB2 = 0x05A4); -PROVIDE(MPUSEGB2_L = 0x05A4); -PROVIDE(MPUSEGB2_H = 0x05A5); -PROVIDE(MPUSEGB1 = 0x05A6); -PROVIDE(MPUSEGB1_L = 0x05A6); -PROVIDE(MPUSEGB1_H = 0x05A7); -PROVIDE(MPUSAM = 0x05A8); -PROVIDE(MPUSAM_L = 0x05A8); -PROVIDE(MPUSAM_H = 0x05A9); -PROVIDE(MPUIPC0 = 0x05AA); -PROVIDE(MPUIPC0_L = 0x05AA); -PROVIDE(MPUIPC0_H = 0x05AB); -PROVIDE(MPUIPSEGB2 = 0x05AC); -PROVIDE(MPUIPSEGB2_L = 0x05AC); -PROVIDE(MPUIPSEGB2_H = 0x05AD); -PROVIDE(MPUIPSEGB1 = 0x05AE); -PROVIDE(MPUIPSEGB1_L = 0x05AE); -PROVIDE(MPUIPSEGB1_H = 0x05AF); - - -/***************************************************************************** - MPY32 -*****************************************************************************/ -PROVIDE(MPY = 0x04C0); -PROVIDE(MPY_L = 0x04C0); -PROVIDE(MPY_H = 0x04C1); -PROVIDE(MPYS = 0x04C2); -PROVIDE(MPYS_L = 0x04C2); -PROVIDE(MPYS_H = 0x04C3); -PROVIDE(MAC = 0x04C4); -PROVIDE(MAC_L = 0x04C4); -PROVIDE(MAC_H = 0x04C5); -PROVIDE(MACS = 0x04C6); -PROVIDE(MACS_L = 0x04C6); -PROVIDE(MACS_H = 0x04C7); -PROVIDE(OP2 = 0x04C8); -PROVIDE(OP2_L = 0x04C8); -PROVIDE(OP2_H = 0x04C9); -PROVIDE(RESLO = 0x04CA); -PROVIDE(RESLO_L = 0x04CA); -PROVIDE(RESLO_H = 0x04CB); -PROVIDE(RESHI = 0x04CC); -PROVIDE(RESHI_L = 0x04CC); -PROVIDE(RESHI_H = 0x04CD); -PROVIDE(SUMEXT = 0x04CE); -PROVIDE(SUMEXT_L = 0x04CE); -PROVIDE(SUMEXT_H = 0x04CF); -PROVIDE(MPY32L = 0x04D0); -PROVIDE(MPY32L_L = 0x04D0); -PROVIDE(MPY32L_H = 0x04D1); -PROVIDE(MPY32H = 0x04D2); -PROVIDE(MPY32H_L = 0x04D2); -PROVIDE(MPY32H_H = 0x04D3); -PROVIDE(MPYS32L = 0x04D4); -PROVIDE(MPYS32L_L = 0x04D4); -PROVIDE(MPYS32L_H = 0x04D5); -PROVIDE(MPYS32H = 0x04D6); -PROVIDE(MPYS32H_L = 0x04D6); -PROVIDE(MPYS32H_H = 0x04D7); -PROVIDE(MAC32L = 0x04D8); -PROVIDE(MAC32L_L = 0x04D8); -PROVIDE(MAC32L_H = 0x04D9); -PROVIDE(MAC32H = 0x04DA); -PROVIDE(MAC32H_L = 0x04DA); -PROVIDE(MAC32H_H = 0x04DB); -PROVIDE(MACS32L = 0x04DC); -PROVIDE(MACS32L_L = 0x04DC); -PROVIDE(MACS32L_H = 0x04DD); -PROVIDE(MACS32H = 0x04DE); -PROVIDE(MACS32H_L = 0x04DE); -PROVIDE(MACS32H_H = 0x04DF); -PROVIDE(OP2L = 0x04E0); -PROVIDE(OP2L_L = 0x04E0); -PROVIDE(OP2L_H = 0x04E1); -PROVIDE(OP2H = 0x04E2); -PROVIDE(OP2H_L = 0x04E2); -PROVIDE(OP2H_H = 0x04E3); -PROVIDE(RES0 = 0x04E4); -PROVIDE(RES0_L = 0x04E4); -PROVIDE(RES0_H = 0x04E5); -PROVIDE(RES1 = 0x04E6); -PROVIDE(RES1_L = 0x04E6); -PROVIDE(RES1_H = 0x04E7); -PROVIDE(RES2 = 0x04E8); -PROVIDE(RES2_L = 0x04E8); -PROVIDE(RES2_H = 0x04E9); -PROVIDE(RES3 = 0x04EA); -PROVIDE(RES3_L = 0x04EA); -PROVIDE(RES3_H = 0x04EB); -PROVIDE(MPY32CTL0 = 0x04EC); -PROVIDE(MPY32CTL0_L = 0x04EC); -PROVIDE(MPY32CTL0_H = 0x04ED); - - -/***************************************************************************** - PMM -*****************************************************************************/ -PROVIDE(PMMCTL0 = 0x0120); -PROVIDE(PMMCTL0_L = 0x0120); -PROVIDE(PMMCTL0_H = 0x0121); -PROVIDE(PMMIFG = 0x012A); -PROVIDE(PMMIFG_L = 0x012A); -PROVIDE(PMMIFG_H = 0x012B); -PROVIDE(PM5CTL0 = 0x0130); -PROVIDE(PM5CTL0_L = 0x0130); -PROVIDE(PM5CTL0_H = 0x0131); - - -/***************************************************************************** - RAMCTL -*****************************************************************************/ -PROVIDE(RCCTL0 = 0x0158); -PROVIDE(RCCTL0_L = 0x0158); -PROVIDE(RCCTL0_H = 0x0159); - - -/***************************************************************************** - REF_A -*****************************************************************************/ -PROVIDE(REFCTL0 = 0x01B0); -PROVIDE(REFCTL0_L = 0x01B0); -PROVIDE(REFCTL0_H = 0x01B1); - - -/***************************************************************************** - RTC_C -*****************************************************************************/ -PROVIDE(RTCCTL0 = 0x04A0); -PROVIDE(RTCCTL0_L = 0x04A0); -PROVIDE(RTCCTL0_H = 0x04A1); -PROVIDE(RTCCTL13 = 0x04A2); -PROVIDE(RTCCTL13_L = 0x04A2); -PROVIDE(RTCCTL13_H = 0x04A3); -PROVIDE(RTCOCAL = 0x04A4); -PROVIDE(RTCOCAL_L = 0x04A4); -PROVIDE(RTCOCAL_H = 0x04A5); -PROVIDE(RTCTCMP = 0x04A6); -PROVIDE(RTCTCMP_L = 0x04A6); -PROVIDE(RTCTCMP_H = 0x04A7); -PROVIDE(RTCPS0CTL = 0x04A8); -PROVIDE(RTCPS0CTL_L = 0x04A8); -PROVIDE(RTCPS0CTL_H = 0x04A9); -PROVIDE(RTCPS1CTL = 0x04AA); -PROVIDE(RTCPS1CTL_L = 0x04AA); -PROVIDE(RTCPS1CTL_H = 0x04AB); -PROVIDE(RTCPS = 0x04AC); -PROVIDE(RTCPS_L = 0x04AC); -PROVIDE(RTCPS_H = 0x04AD); -PROVIDE(RTCIV = 0x04AE); -PROVIDE(RTCIV_L = 0x04AE); -PROVIDE(RTCIV_H = 0x04AF); -PROVIDE(RTCTIM0 = 0x04B0); -PROVIDE(RTCTIM0_L = 0x04B0); -PROVIDE(RTCTIM0_H = 0x04B1); -PROVIDE(RTCCNT12 = 0x04B0); -PROVIDE(RTCCNT12_L = 0x04B0); -PROVIDE(RTCCNT12_H = 0x04B1); -PROVIDE(RTCTIM1 = 0x04B2); -PROVIDE(RTCTIM1_L = 0x04B2); -PROVIDE(RTCTIM1_H = 0x04B3); -PROVIDE(RTCCNT34 = 0x04B2); -PROVIDE(RTCCNT34_L = 0x04B2); -PROVIDE(RTCCNT34_H = 0x04B3); -PROVIDE(RTCDATE = 0x04B4); -PROVIDE(RTCDATE_L = 0x04B4); -PROVIDE(RTCDATE_H = 0x04B5); -PROVIDE(RTCYEAR = 0x04B6); -PROVIDE(RTCYEAR_L = 0x04B6); -PROVIDE(RTCYEAR_H = 0x04B7); -PROVIDE(RTCAMINHR = 0x04B8); -PROVIDE(RTCAMINHR_L = 0x04B8); -PROVIDE(RTCAMINHR_H = 0x04B9); -PROVIDE(RTCADOWDAY = 0x04BA); -PROVIDE(RTCADOWDAY_L = 0x04BA); -PROVIDE(RTCADOWDAY_H = 0x04BB); -PROVIDE(BIN2BCD = 0x04BC); -PROVIDE(BIN2BCD_L = 0x04BC); -PROVIDE(BIN2BCD_H = 0x04BD); -PROVIDE(BCD2BIN = 0x04BE); -PROVIDE(BCD2BIN_L = 0x04BE); -PROVIDE(BCD2BIN_H = 0x04BF); -PROVIDE(RT0PS = 0x04AC); - -PROVIDE(RT1PS = 0x04AD); - -PROVIDE(RTCCNT1 = 0x04B0); - -PROVIDE(RTCCNT2 = 0x04B1); - -PROVIDE(RTCCNT3 = 0x04B2); - -PROVIDE(RTCCNT4 = 0x04B3); - - - -/***************************************************************************** - SFR -*****************************************************************************/ -PROVIDE(SFRIE1 = 0x0100); -PROVIDE(SFRIE1_L = 0x0100); -PROVIDE(SFRIE1_H = 0x0101); -PROVIDE(SFRIFG1 = 0x0102); -PROVIDE(SFRIFG1_L = 0x0102); -PROVIDE(SFRIFG1_H = 0x0103); -PROVIDE(SFRRPCR = 0x0104); -PROVIDE(SFRRPCR_L = 0x0104); -PROVIDE(SFRRPCR_H = 0x0105); - - -/***************************************************************************** - SYS -*****************************************************************************/ -PROVIDE(SYSCTL = 0x0180); -PROVIDE(SYSCTL_L = 0x0180); -PROVIDE(SYSCTL_H = 0x0181); -PROVIDE(SYSJMBC = 0x0186); -PROVIDE(SYSJMBC_L = 0x0186); -PROVIDE(SYSJMBC_H = 0x0187); -PROVIDE(SYSJMBI0 = 0x0188); -PROVIDE(SYSJMBI0_L = 0x0188); -PROVIDE(SYSJMBI0_H = 0x0189); -PROVIDE(SYSJMBI1 = 0x018A); -PROVIDE(SYSJMBI1_L = 0x018A); -PROVIDE(SYSJMBI1_H = 0x018B); -PROVIDE(SYSJMBO0 = 0x018C); -PROVIDE(SYSJMBO0_L = 0x018C); -PROVIDE(SYSJMBO0_H = 0x018D); -PROVIDE(SYSJMBO1 = 0x018E); -PROVIDE(SYSJMBO1_L = 0x018E); -PROVIDE(SYSJMBO1_H = 0x018F); -PROVIDE(SYSUNIV = 0x019A); -PROVIDE(SYSUNIV_L = 0x019A); -PROVIDE(SYSUNIV_H = 0x019B); -PROVIDE(SYSSNIV = 0x019C); -PROVIDE(SYSSNIV_L = 0x019C); -PROVIDE(SYSSNIV_H = 0x019D); -PROVIDE(SYSRSTIV = 0x019E); -PROVIDE(SYSRSTIV_L = 0x019E); -PROVIDE(SYSRSTIV_H = 0x019F); - - -/***************************************************************************** - TA0 -*****************************************************************************/ -PROVIDE(TA0CTL = 0x0340); -PROVIDE(TA0CTL_L = 0x0340); -PROVIDE(TA0CTL_H = 0x0341); -PROVIDE(TA0CCTL0 = 0x0342); -PROVIDE(TA0CCTL0_L = 0x0342); -PROVIDE(TA0CCTL0_H = 0x0343); -PROVIDE(TA0CCTL1 = 0x0344); -PROVIDE(TA0CCTL1_L = 0x0344); -PROVIDE(TA0CCTL1_H = 0x0345); -PROVIDE(TA0CCTL2 = 0x0346); -PROVIDE(TA0CCTL2_L = 0x0346); -PROVIDE(TA0CCTL2_H = 0x0347); -PROVIDE(TA0R = 0x0350); -PROVIDE(TA0R_L = 0x0350); -PROVIDE(TA0R_H = 0x0351); -PROVIDE(TA0CCR0 = 0x0352); -PROVIDE(TA0CCR0_L = 0x0352); -PROVIDE(TA0CCR0_H = 0x0353); -PROVIDE(TA0CCR1 = 0x0354); -PROVIDE(TA0CCR1_L = 0x0354); -PROVIDE(TA0CCR1_H = 0x0355); -PROVIDE(TA0CCR2 = 0x0356); -PROVIDE(TA0CCR2_L = 0x0356); -PROVIDE(TA0CCR2_H = 0x0357); -PROVIDE(TA0EX0 = 0x0360); -PROVIDE(TA0EX0_L = 0x0360); -PROVIDE(TA0EX0_H = 0x0361); -PROVIDE(TA0IV = 0x036E); -PROVIDE(TA0IV_L = 0x036E); -PROVIDE(TA0IV_H = 0x036F); - - -/***************************************************************************** - TA1 -*****************************************************************************/ -PROVIDE(TA1CTL = 0x0380); -PROVIDE(TA1CTL_L = 0x0380); -PROVIDE(TA1CTL_H = 0x0381); -PROVIDE(TA1CCTL0 = 0x0382); -PROVIDE(TA1CCTL0_L = 0x0382); -PROVIDE(TA1CCTL0_H = 0x0383); -PROVIDE(TA1CCTL1 = 0x0384); -PROVIDE(TA1CCTL1_L = 0x0384); -PROVIDE(TA1CCTL1_H = 0x0385); -PROVIDE(TA1CCTL2 = 0x0386); -PROVIDE(TA1CCTL2_L = 0x0386); -PROVIDE(TA1CCTL2_H = 0x0387); -PROVIDE(TA1R = 0x0390); -PROVIDE(TA1R_L = 0x0390); -PROVIDE(TA1R_H = 0x0391); -PROVIDE(TA1CCR0 = 0x0392); -PROVIDE(TA1CCR0_L = 0x0392); -PROVIDE(TA1CCR0_H = 0x0393); -PROVIDE(TA1CCR1 = 0x0394); -PROVIDE(TA1CCR1_L = 0x0394); -PROVIDE(TA1CCR1_H = 0x0395); -PROVIDE(TA1CCR2 = 0x0396); -PROVIDE(TA1CCR2_L = 0x0396); -PROVIDE(TA1CCR2_H = 0x0397); -PROVIDE(TA1EX0 = 0x03A0); -PROVIDE(TA1EX0_L = 0x03A0); -PROVIDE(TA1EX0_H = 0x03A1); -PROVIDE(TA1IV = 0x03AE); -PROVIDE(TA1IV_L = 0x03AE); -PROVIDE(TA1IV_H = 0x03AF); - - -/***************************************************************************** - TA2 -*****************************************************************************/ -PROVIDE(TA2CTL = 0x0400); -PROVIDE(TA2CTL_L = 0x0400); -PROVIDE(TA2CTL_H = 0x0401); -PROVIDE(TA2CCTL0 = 0x0402); -PROVIDE(TA2CCTL0_L = 0x0402); -PROVIDE(TA2CCTL0_H = 0x0403); -PROVIDE(TA2CCTL1 = 0x0404); -PROVIDE(TA2CCTL1_L = 0x0404); -PROVIDE(TA2CCTL1_H = 0x0405); -PROVIDE(TA2R = 0x0410); -PROVIDE(TA2R_L = 0x0410); -PROVIDE(TA2R_H = 0x0411); -PROVIDE(TA2CCR0 = 0x0412); -PROVIDE(TA2CCR0_L = 0x0412); -PROVIDE(TA2CCR0_H = 0x0413); -PROVIDE(TA2CCR1 = 0x0414); -PROVIDE(TA2CCR1_L = 0x0414); -PROVIDE(TA2CCR1_H = 0x0415); -PROVIDE(TA2EX0 = 0x0420); -PROVIDE(TA2EX0_L = 0x0420); -PROVIDE(TA2EX0_H = 0x0421); -PROVIDE(TA2IV = 0x042E); -PROVIDE(TA2IV_L = 0x042E); -PROVIDE(TA2IV_H = 0x042F); - - -/***************************************************************************** - TA3 -*****************************************************************************/ -PROVIDE(TA3CTL = 0x0440); -PROVIDE(TA3CTL_L = 0x0440); -PROVIDE(TA3CTL_H = 0x0441); -PROVIDE(TA3CCTL0 = 0x0442); -PROVIDE(TA3CCTL0_L = 0x0442); -PROVIDE(TA3CCTL0_H = 0x0443); -PROVIDE(TA3CCTL1 = 0x0444); -PROVIDE(TA3CCTL1_L = 0x0444); -PROVIDE(TA3CCTL1_H = 0x0445); -PROVIDE(TA3R = 0x0450); -PROVIDE(TA3R_L = 0x0450); -PROVIDE(TA3R_H = 0x0451); -PROVIDE(TA3CCR0 = 0x0452); -PROVIDE(TA3CCR0_L = 0x0452); -PROVIDE(TA3CCR0_H = 0x0453); -PROVIDE(TA3CCR1 = 0x0454); -PROVIDE(TA3CCR1_L = 0x0454); -PROVIDE(TA3CCR1_H = 0x0455); -PROVIDE(TA3EX0 = 0x0460); -PROVIDE(TA3EX0_L = 0x0460); -PROVIDE(TA3EX0_H = 0x0461); -PROVIDE(TA3IV = 0x046E); -PROVIDE(TA3IV_L = 0x046E); -PROVIDE(TA3IV_H = 0x046F); - - -/***************************************************************************** - TA4 -*****************************************************************************/ -PROVIDE(TA4CTL = 0x07C0); -PROVIDE(TA4CTL_L = 0x07C0); -PROVIDE(TA4CTL_H = 0x07C1); -PROVIDE(TA4CCTL0 = 0x07C2); -PROVIDE(TA4CCTL0_L = 0x07C2); -PROVIDE(TA4CCTL0_H = 0x07C3); -PROVIDE(TA4CCTL1 = 0x07C4); -PROVIDE(TA4CCTL1_L = 0x07C4); -PROVIDE(TA4CCTL1_H = 0x07C5); -PROVIDE(TA4CCTL2 = 0x07C6); -PROVIDE(TA4CCTL2_L = 0x07C6); -PROVIDE(TA4CCTL2_H = 0x07C7); -PROVIDE(TA4R = 0x07D0); -PROVIDE(TA4R_L = 0x07D0); -PROVIDE(TA4R_H = 0x07D1); -PROVIDE(TA4CCR0 = 0x07D2); -PROVIDE(TA4CCR0_L = 0x07D2); -PROVIDE(TA4CCR0_H = 0x07D3); -PROVIDE(TA4CCR1 = 0x07D4); -PROVIDE(TA4CCR1_L = 0x07D4); -PROVIDE(TA4CCR1_H = 0x07D5); -PROVIDE(TA4CCR2 = 0x07D6); -PROVIDE(TA4CCR2_L = 0x07D6); -PROVIDE(TA4CCR2_H = 0x07D7); -PROVIDE(TA4EX0 = 0x07E0); -PROVIDE(TA4EX0_L = 0x07E0); -PROVIDE(TA4EX0_H = 0x07E1); -PROVIDE(TA4IV = 0x07EE); -PROVIDE(TA4IV_L = 0x07EE); -PROVIDE(TA4IV_H = 0x07EF); - - -/***************************************************************************** - TB0 -*****************************************************************************/ -PROVIDE(TB0CTL = 0x03C0); -PROVIDE(TB0CTL_L = 0x03C0); -PROVIDE(TB0CTL_H = 0x03C1); -PROVIDE(TB0CCTL0 = 0x03C2); -PROVIDE(TB0CCTL0_L = 0x03C2); -PROVIDE(TB0CCTL0_H = 0x03C3); -PROVIDE(TB0CCTL1 = 0x03C4); -PROVIDE(TB0CCTL1_L = 0x03C4); -PROVIDE(TB0CCTL1_H = 0x03C5); -PROVIDE(TB0CCTL2 = 0x03C6); -PROVIDE(TB0CCTL2_L = 0x03C6); -PROVIDE(TB0CCTL2_H = 0x03C7); -PROVIDE(TB0CCTL3 = 0x03C8); -PROVIDE(TB0CCTL3_L = 0x03C8); -PROVIDE(TB0CCTL3_H = 0x03C9); -PROVIDE(TB0CCTL4 = 0x03CA); -PROVIDE(TB0CCTL4_L = 0x03CA); -PROVIDE(TB0CCTL4_H = 0x03CB); -PROVIDE(TB0CCTL5 = 0x03CC); -PROVIDE(TB0CCTL5_L = 0x03CC); -PROVIDE(TB0CCTL5_H = 0x03CD); -PROVIDE(TB0CCTL6 = 0x03CE); -PROVIDE(TB0CCTL6_L = 0x03CE); -PROVIDE(TB0CCTL6_H = 0x03CF); -PROVIDE(TB0R = 0x03D0); -PROVIDE(TB0R_L = 0x03D0); -PROVIDE(TB0R_H = 0x03D1); -PROVIDE(TB0CCR0 = 0x03D2); -PROVIDE(TB0CCR0_L = 0x03D2); -PROVIDE(TB0CCR0_H = 0x03D3); -PROVIDE(TB0CCR1 = 0x03D4); -PROVIDE(TB0CCR1_L = 0x03D4); -PROVIDE(TB0CCR1_H = 0x03D5); -PROVIDE(TB0CCR2 = 0x03D6); -PROVIDE(TB0CCR2_L = 0x03D6); -PROVIDE(TB0CCR2_H = 0x03D7); -PROVIDE(TB0CCR3 = 0x03D8); -PROVIDE(TB0CCR3_L = 0x03D8); -PROVIDE(TB0CCR3_H = 0x03D9); -PROVIDE(TB0CCR4 = 0x03DA); -PROVIDE(TB0CCR4_L = 0x03DA); -PROVIDE(TB0CCR4_H = 0x03DB); -PROVIDE(TB0CCR5 = 0x03DC); -PROVIDE(TB0CCR5_L = 0x03DC); -PROVIDE(TB0CCR5_H = 0x03DD); -PROVIDE(TB0CCR6 = 0x03DE); -PROVIDE(TB0CCR6_L = 0x03DE); -PROVIDE(TB0CCR6_H = 0x03DF); -PROVIDE(TB0EX0 = 0x03E0); -PROVIDE(TB0EX0_L = 0x03E0); -PROVIDE(TB0EX0_H = 0x03E1); -PROVIDE(TB0IV = 0x03EE); -PROVIDE(TB0IV_L = 0x03EE); -PROVIDE(TB0IV_H = 0x03EF); - - -/***************************************************************************** - WDT_A -*****************************************************************************/ -PROVIDE(WDTCTL = 0x015C); -PROVIDE(WDTCTL_L = 0x015C); -PROVIDE(WDTCTL_H = 0x015D); - - -/***************************************************************************** - eUSCI_A0 -*****************************************************************************/ -PROVIDE(UCA0CTLW0 = 0x05C0); -PROVIDE(UCA0CTLW0_L = 0x05C0); -PROVIDE(UCA0CTLW0_H = 0x05C1); -PROVIDE(UCA0CTLW1 = 0x05C2); -PROVIDE(UCA0CTLW1_L = 0x05C2); -PROVIDE(UCA0CTLW1_H = 0x05C3); -PROVIDE(UCA0BRW = 0x05C6); -PROVIDE(UCA0BRW_L = 0x05C6); -PROVIDE(UCA0BRW_H = 0x05C7); -PROVIDE(UCA0MCTLW = 0x05C8); -PROVIDE(UCA0MCTLW_L = 0x05C8); -PROVIDE(UCA0MCTLW_H = 0x05C9); -PROVIDE(UCA0STATW = 0x05CA); -PROVIDE(UCA0STATW_L = 0x05CA); -PROVIDE(UCA0STATW_H = 0x05CB); -PROVIDE(UCA0RXBUF = 0x05CC); -PROVIDE(UCA0RXBUF_L = 0x05CC); -PROVIDE(UCA0RXBUF_H = 0x05CD); -PROVIDE(UCA0TXBUF = 0x05CE); -PROVIDE(UCA0TXBUF_L = 0x05CE); -PROVIDE(UCA0TXBUF_H = 0x05CF); -PROVIDE(UCA0ABCTL = 0x05D0); -PROVIDE(UCA0ABCTL_L = 0x05D0); -PROVIDE(UCA0ABCTL_H = 0x05D1); -PROVIDE(UCA0IRCTL = 0x05D2); -PROVIDE(UCA0IRCTL_L = 0x05D2); -PROVIDE(UCA0IRCTL_H = 0x05D3); -PROVIDE(UCA0IE = 0x05DA); -PROVIDE(UCA0IE_L = 0x05DA); -PROVIDE(UCA0IE_H = 0x05DB); -PROVIDE(UCA0IFG = 0x05DC); -PROVIDE(UCA0IFG_L = 0x05DC); -PROVIDE(UCA0IFG_H = 0x05DD); -PROVIDE(UCA0IV = 0x05DE); -PROVIDE(UCA0IV_L = 0x05DE); -PROVIDE(UCA0IV_H = 0x05DF); - - -/***************************************************************************** - eUSCI_A1 -*****************************************************************************/ -PROVIDE(UCA1CTLW0 = 0x05E0); -PROVIDE(UCA1CTLW0_L = 0x05E0); -PROVIDE(UCA1CTLW0_H = 0x05E1); -PROVIDE(UCA1CTLW1 = 0x05E2); -PROVIDE(UCA1CTLW1_L = 0x05E2); -PROVIDE(UCA1CTLW1_H = 0x05E3); -PROVIDE(UCA1BRW = 0x05E6); -PROVIDE(UCA1BRW_L = 0x05E6); -PROVIDE(UCA1BRW_H = 0x05E7); -PROVIDE(UCA1MCTLW = 0x05E8); -PROVIDE(UCA1MCTLW_L = 0x05E8); -PROVIDE(UCA1MCTLW_H = 0x05E9); -PROVIDE(UCA1STATW = 0x05EA); -PROVIDE(UCA1STATW_L = 0x05EA); -PROVIDE(UCA1STATW_H = 0x05EB); -PROVIDE(UCA1RXBUF = 0x05EC); -PROVIDE(UCA1RXBUF_L = 0x05EC); -PROVIDE(UCA1RXBUF_H = 0x05ED); -PROVIDE(UCA1TXBUF = 0x05EE); -PROVIDE(UCA1TXBUF_L = 0x05EE); -PROVIDE(UCA1TXBUF_H = 0x05EF); -PROVIDE(UCA1ABCTL = 0x05F0); -PROVIDE(UCA1ABCTL_L = 0x05F0); -PROVIDE(UCA1ABCTL_H = 0x05F1); -PROVIDE(UCA1IRCTL = 0x05F2); -PROVIDE(UCA1IRCTL_L = 0x05F2); -PROVIDE(UCA1IRCTL_H = 0x05F3); -PROVIDE(UCA1IE = 0x05FA); -PROVIDE(UCA1IE_L = 0x05FA); -PROVIDE(UCA1IE_H = 0x05FB); -PROVIDE(UCA1IFG = 0x05FC); -PROVIDE(UCA1IFG_L = 0x05FC); -PROVIDE(UCA1IFG_H = 0x05FD); -PROVIDE(UCA1IV = 0x05FE); -PROVIDE(UCA1IV_L = 0x05FE); -PROVIDE(UCA1IV_H = 0x05FF); - - -/***************************************************************************** - eUSCI_A2 -*****************************************************************************/ -PROVIDE(UCA2CTLW0 = 0x0600); -PROVIDE(UCA2CTLW0_L = 0x0600); -PROVIDE(UCA2CTLW0_H = 0x0601); -PROVIDE(UCA2CTLW1 = 0x0602); -PROVIDE(UCA2CTLW1_L = 0x0602); -PROVIDE(UCA2CTLW1_H = 0x0603); -PROVIDE(UCA2BRW = 0x0606); -PROVIDE(UCA2BRW_L = 0x0606); -PROVIDE(UCA2BRW_H = 0x0607); -PROVIDE(UCA2MCTLW = 0x0608); -PROVIDE(UCA2MCTLW_L = 0x0608); -PROVIDE(UCA2MCTLW_H = 0x0609); -PROVIDE(UCA2STATW = 0x060A); -PROVIDE(UCA2STATW_L = 0x060A); -PROVIDE(UCA2STATW_H = 0x060B); -PROVIDE(UCA2RXBUF = 0x060C); -PROVIDE(UCA2RXBUF_L = 0x060C); -PROVIDE(UCA2RXBUF_H = 0x060D); -PROVIDE(UCA2TXBUF = 0x060E); -PROVIDE(UCA2TXBUF_L = 0x060E); -PROVIDE(UCA2TXBUF_H = 0x060F); -PROVIDE(UCA2ABCTL = 0x0610); -PROVIDE(UCA2ABCTL_L = 0x0610); -PROVIDE(UCA2ABCTL_H = 0x0611); -PROVIDE(UCA2IRCTL = 0x0612); -PROVIDE(UCA2IRCTL_L = 0x0612); -PROVIDE(UCA2IRCTL_H = 0x0613); -PROVIDE(UCA2IE = 0x061A); -PROVIDE(UCA2IE_L = 0x061A); -PROVIDE(UCA2IE_H = 0x061B); -PROVIDE(UCA2IFG = 0x061C); -PROVIDE(UCA2IFG_L = 0x061C); -PROVIDE(UCA2IFG_H = 0x061D); -PROVIDE(UCA2IV = 0x061E); -PROVIDE(UCA2IV_L = 0x061E); -PROVIDE(UCA2IV_H = 0x061F); - - -/***************************************************************************** - eUSCI_A3 -*****************************************************************************/ -PROVIDE(UCA3CTLW0 = 0x0620); -PROVIDE(UCA3CTLW0_L = 0x0620); -PROVIDE(UCA3CTLW0_H = 0x0621); -PROVIDE(UCA3CTLW1 = 0x0622); -PROVIDE(UCA3CTLW1_L = 0x0622); -PROVIDE(UCA3CTLW1_H = 0x0623); -PROVIDE(UCA3BRW = 0x0626); -PROVIDE(UCA3BRW_L = 0x0626); -PROVIDE(UCA3BRW_H = 0x0627); -PROVIDE(UCA3MCTLW = 0x0628); -PROVIDE(UCA3MCTLW_L = 0x0628); -PROVIDE(UCA3MCTLW_H = 0x0629); -PROVIDE(UCA3STATW = 0x062A); -PROVIDE(UCA3STATW_L = 0x062A); -PROVIDE(UCA3STATW_H = 0x062B); -PROVIDE(UCA3RXBUF = 0x062C); -PROVIDE(UCA3RXBUF_L = 0x062C); -PROVIDE(UCA3RXBUF_H = 0x062D); -PROVIDE(UCA3TXBUF = 0x062E); -PROVIDE(UCA3TXBUF_L = 0x062E); -PROVIDE(UCA3TXBUF_H = 0x062F); -PROVIDE(UCA3ABCTL = 0x0630); -PROVIDE(UCA3ABCTL_L = 0x0630); -PROVIDE(UCA3ABCTL_H = 0x0631); -PROVIDE(UCA3IRCTL = 0x0632); -PROVIDE(UCA3IRCTL_L = 0x0632); -PROVIDE(UCA3IRCTL_H = 0x0633); -PROVIDE(UCA3IE = 0x063A); -PROVIDE(UCA3IE_L = 0x063A); -PROVIDE(UCA3IE_H = 0x063B); -PROVIDE(UCA3IFG = 0x063C); -PROVIDE(UCA3IFG_L = 0x063C); -PROVIDE(UCA3IFG_H = 0x063D); -PROVIDE(UCA3IV = 0x063E); -PROVIDE(UCA3IV_L = 0x063E); -PROVIDE(UCA3IV_H = 0x063F); - - -/***************************************************************************** - eUSCI_B0 -*****************************************************************************/ -PROVIDE(UCB0CTLW0 = 0x0640); -PROVIDE(UCB0CTLW0_L = 0x0640); -PROVIDE(UCB0CTLW0_H = 0x0641); -PROVIDE(UCB0CTLW1 = 0x0642); -PROVIDE(UCB0CTLW1_L = 0x0642); -PROVIDE(UCB0CTLW1_H = 0x0643); -PROVIDE(UCB0BRW = 0x0646); -PROVIDE(UCB0BRW_L = 0x0646); -PROVIDE(UCB0BRW_H = 0x0647); -PROVIDE(UCB0STATW = 0x0648); -PROVIDE(UCB0STATW_L = 0x0648); -PROVIDE(UCB0STATW_H = 0x0649); -PROVIDE(UCB0TBCNT = 0x064A); -PROVIDE(UCB0TBCNT_L = 0x064A); -PROVIDE(UCB0TBCNT_H = 0x064B); -PROVIDE(UCB0RXBUF = 0x064C); -PROVIDE(UCB0RXBUF_L = 0x064C); -PROVIDE(UCB0RXBUF_H = 0x064D); -PROVIDE(UCB0TXBUF = 0x064E); -PROVIDE(UCB0TXBUF_L = 0x064E); -PROVIDE(UCB0TXBUF_H = 0x064F); -PROVIDE(UCB0I2COA0 = 0x0654); -PROVIDE(UCB0I2COA0_L = 0x0654); -PROVIDE(UCB0I2COA0_H = 0x0655); -PROVIDE(UCB0I2COA1 = 0x0656); -PROVIDE(UCB0I2COA1_L = 0x0656); -PROVIDE(UCB0I2COA1_H = 0x0657); -PROVIDE(UCB0I2COA2 = 0x0658); -PROVIDE(UCB0I2COA2_L = 0x0658); -PROVIDE(UCB0I2COA2_H = 0x0659); -PROVIDE(UCB0I2COA3 = 0x065A); -PROVIDE(UCB0I2COA3_L = 0x065A); -PROVIDE(UCB0I2COA3_H = 0x065B); -PROVIDE(UCB0ADDRX = 0x065C); -PROVIDE(UCB0ADDRX_L = 0x065C); -PROVIDE(UCB0ADDRX_H = 0x065D); -PROVIDE(UCB0ADDMASK = 0x065E); -PROVIDE(UCB0ADDMASK_L = 0x065E); -PROVIDE(UCB0ADDMASK_H = 0x065F); -PROVIDE(UCB0I2CSA = 0x0660); -PROVIDE(UCB0I2CSA_L = 0x0660); -PROVIDE(UCB0I2CSA_H = 0x0661); -PROVIDE(UCB0IE = 0x066A); -PROVIDE(UCB0IE_L = 0x066A); -PROVIDE(UCB0IE_H = 0x066B); -PROVIDE(UCB0IFG = 0x066C); -PROVIDE(UCB0IFG_L = 0x066C); -PROVIDE(UCB0IFG_H = 0x066D); -PROVIDE(UCB0IV = 0x066E); -PROVIDE(UCB0IV_L = 0x066E); -PROVIDE(UCB0IV_H = 0x066F); - - -/***************************************************************************** - eUSCI_B1 -*****************************************************************************/ -PROVIDE(UCB1CTLW0 = 0x0680); -PROVIDE(UCB1CTLW0_L = 0x0680); -PROVIDE(UCB1CTLW0_H = 0x0681); -PROVIDE(UCB1CTLW1 = 0x0682); -PROVIDE(UCB1CTLW1_L = 0x0682); -PROVIDE(UCB1CTLW1_H = 0x0683); -PROVIDE(UCB1BRW = 0x0686); -PROVIDE(UCB1BRW_L = 0x0686); -PROVIDE(UCB1BRW_H = 0x0687); -PROVIDE(UCB1STATW = 0x0688); -PROVIDE(UCB1STATW_L = 0x0688); -PROVIDE(UCB1STATW_H = 0x0689); -PROVIDE(UCB1TBCNT = 0x068A); -PROVIDE(UCB1TBCNT_L = 0x068A); -PROVIDE(UCB1TBCNT_H = 0x068B); -PROVIDE(UCB1RXBUF = 0x068C); -PROVIDE(UCB1RXBUF_L = 0x068C); -PROVIDE(UCB1RXBUF_H = 0x068D); -PROVIDE(UCB1TXBUF = 0x068E); -PROVIDE(UCB1TXBUF_L = 0x068E); -PROVIDE(UCB1TXBUF_H = 0x068F); -PROVIDE(UCB1I2COA0 = 0x0694); -PROVIDE(UCB1I2COA0_L = 0x0694); -PROVIDE(UCB1I2COA0_H = 0x0695); -PROVIDE(UCB1I2COA1 = 0x0696); -PROVIDE(UCB1I2COA1_L = 0x0696); -PROVIDE(UCB1I2COA1_H = 0x0697); -PROVIDE(UCB1I2COA2 = 0x0698); -PROVIDE(UCB1I2COA2_L = 0x0698); -PROVIDE(UCB1I2COA2_H = 0x0699); -PROVIDE(UCB1I2COA3 = 0x069A); -PROVIDE(UCB1I2COA3_L = 0x069A); -PROVIDE(UCB1I2COA3_H = 0x069B); -PROVIDE(UCB1ADDRX = 0x069C); -PROVIDE(UCB1ADDRX_L = 0x069C); -PROVIDE(UCB1ADDRX_H = 0x069D); -PROVIDE(UCB1ADDMASK = 0x069E); -PROVIDE(UCB1ADDMASK_L = 0x069E); -PROVIDE(UCB1ADDMASK_H = 0x069F); -PROVIDE(UCB1I2CSA = 0x06A0); -PROVIDE(UCB1I2CSA_L = 0x06A0); -PROVIDE(UCB1I2CSA_H = 0x06A1); -PROVIDE(UCB1IE = 0x06AA); -PROVIDE(UCB1IE_L = 0x06AA); -PROVIDE(UCB1IE_H = 0x06AB); -PROVIDE(UCB1IFG = 0x06AC); -PROVIDE(UCB1IFG_L = 0x06AC); -PROVIDE(UCB1IFG_H = 0x06AD); -PROVIDE(UCB1IV = 0x06AE); -PROVIDE(UCB1IV_L = 0x06AE); -PROVIDE(UCB1IV_H = 0x06AF); - - -/***************************************************************************** - eUSCI_B2 -*****************************************************************************/ -PROVIDE(UCB2CTLW0 = 0x06C0); -PROVIDE(UCB2CTLW0_L = 0x06C0); -PROVIDE(UCB2CTLW0_H = 0x06C1); -PROVIDE(UCB2CTLW1 = 0x06C2); -PROVIDE(UCB2CTLW1_L = 0x06C2); -PROVIDE(UCB2CTLW1_H = 0x06C3); -PROVIDE(UCB2BRW = 0x06C6); -PROVIDE(UCB2BRW_L = 0x06C6); -PROVIDE(UCB2BRW_H = 0x06C7); -PROVIDE(UCB2STATW = 0x06C8); -PROVIDE(UCB2STATW_L = 0x06C8); -PROVIDE(UCB2STATW_H = 0x06C9); -PROVIDE(UCB2TBCNT = 0x06CA); -PROVIDE(UCB2TBCNT_L = 0x06CA); -PROVIDE(UCB2TBCNT_H = 0x06CB); -PROVIDE(UCB2RXBUF = 0x06CC); -PROVIDE(UCB2RXBUF_L = 0x06CC); -PROVIDE(UCB2RXBUF_H = 0x06CD); -PROVIDE(UCB2TXBUF = 0x06CE); -PROVIDE(UCB2TXBUF_L = 0x06CE); -PROVIDE(UCB2TXBUF_H = 0x06CF); -PROVIDE(UCB2I2COA0 = 0x06D4); -PROVIDE(UCB2I2COA0_L = 0x06D4); -PROVIDE(UCB2I2COA0_H = 0x06D5); -PROVIDE(UCB2I2COA1 = 0x06D6); -PROVIDE(UCB2I2COA1_L = 0x06D6); -PROVIDE(UCB2I2COA1_H = 0x06D7); -PROVIDE(UCB2I2COA2 = 0x06D8); -PROVIDE(UCB2I2COA2_L = 0x06D8); -PROVIDE(UCB2I2COA2_H = 0x06D9); -PROVIDE(UCB2I2COA3 = 0x06DA); -PROVIDE(UCB2I2COA3_L = 0x06DA); -PROVIDE(UCB2I2COA3_H = 0x06DB); -PROVIDE(UCB2ADDRX = 0x06DC); -PROVIDE(UCB2ADDRX_L = 0x06DC); -PROVIDE(UCB2ADDRX_H = 0x06DD); -PROVIDE(UCB2ADDMASK = 0x06DE); -PROVIDE(UCB2ADDMASK_L = 0x06DE); -PROVIDE(UCB2ADDMASK_H = 0x06DF); -PROVIDE(UCB2I2CSA = 0x06E0); -PROVIDE(UCB2I2CSA_L = 0x06E0); -PROVIDE(UCB2I2CSA_H = 0x06E1); -PROVIDE(UCB2IE = 0x06EA); -PROVIDE(UCB2IE_L = 0x06EA); -PROVIDE(UCB2IE_H = 0x06EB); -PROVIDE(UCB2IFG = 0x06EC); -PROVIDE(UCB2IFG_L = 0x06EC); -PROVIDE(UCB2IFG_H = 0x06ED); -PROVIDE(UCB2IV = 0x06EE); -PROVIDE(UCB2IV_L = 0x06EE); -PROVIDE(UCB2IV_H = 0x06EF); - - -/***************************************************************************** - eUSCI_B3 -*****************************************************************************/ -PROVIDE(UCB3CTLW0 = 0x0700); -PROVIDE(UCB3CTLW0_L = 0x0700); -PROVIDE(UCB3CTLW0_H = 0x0701); -PROVIDE(UCB3CTLW1 = 0x0702); -PROVIDE(UCB3CTLW1_L = 0x0702); -PROVIDE(UCB3CTLW1_H = 0x0703); -PROVIDE(UCB3BRW = 0x0706); -PROVIDE(UCB3BRW_L = 0x0706); -PROVIDE(UCB3BRW_H = 0x0707); -PROVIDE(UCB3STATW = 0x0708); -PROVIDE(UCB3STATW_L = 0x0708); -PROVIDE(UCB3STATW_H = 0x0709); -PROVIDE(UCB3TBCNT = 0x070A); -PROVIDE(UCB3TBCNT_L = 0x070A); -PROVIDE(UCB3TBCNT_H = 0x070B); -PROVIDE(UCB3RXBUF = 0x070C); -PROVIDE(UCB3RXBUF_L = 0x070C); -PROVIDE(UCB3RXBUF_H = 0x070D); -PROVIDE(UCB3TXBUF = 0x070E); -PROVIDE(UCB3TXBUF_L = 0x070E); -PROVIDE(UCB3TXBUF_H = 0x070F); -PROVIDE(UCB3I2COA0 = 0x0714); -PROVIDE(UCB3I2COA0_L = 0x0714); -PROVIDE(UCB3I2COA0_H = 0x0715); -PROVIDE(UCB3I2COA1 = 0x0716); -PROVIDE(UCB3I2COA1_L = 0x0716); -PROVIDE(UCB3I2COA1_H = 0x0717); -PROVIDE(UCB3I2COA2 = 0x0718); -PROVIDE(UCB3I2COA2_L = 0x0718); -PROVIDE(UCB3I2COA2_H = 0x0719); -PROVIDE(UCB3I2COA3 = 0x071A); -PROVIDE(UCB3I2COA3_L = 0x071A); -PROVIDE(UCB3I2COA3_H = 0x071B); -PROVIDE(UCB3ADDRX = 0x071C); -PROVIDE(UCB3ADDRX_L = 0x071C); -PROVIDE(UCB3ADDRX_H = 0x071D); -PROVIDE(UCB3ADDMASK = 0x071E); -PROVIDE(UCB3ADDMASK_L = 0x071E); -PROVIDE(UCB3ADDMASK_H = 0x071F); -PROVIDE(UCB3I2CSA = 0x0720); -PROVIDE(UCB3I2CSA_L = 0x0720); -PROVIDE(UCB3I2CSA_H = 0x0721); -PROVIDE(UCB3IE = 0x072A); -PROVIDE(UCB3IE_L = 0x072A); -PROVIDE(UCB3IE_H = 0x072B); -PROVIDE(UCB3IFG = 0x072C); -PROVIDE(UCB3IFG_L = 0x072C); -PROVIDE(UCB3IFG_H = 0x072D); -PROVIDE(UCB3IV = 0x072E); -PROVIDE(UCB3IV_L = 0x072E); -PROVIDE(UCB3IV_H = 0x072F); - -/************************************************************ -* End of Modules -************************************************************/ - -/* ============================================================================ */ -/* Copyright (c) 2016, Texas Instruments Incorporated */ -/* All rights reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or without */ -/* modification, are permitted provided that the following conditions */ -/* are met: */ -/* */ -/* * Redistributions of source code must retain the above copyright */ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* * Redistributions in binary form must reproduce the above copyright */ -/* notice, this list of conditions and the following disclaimer in the */ -/* documentation and/or other materials provided with the distribution. */ -/* */ -/* * Neither the name of Texas Instruments Incorporated nor the names of */ -/* its contributors may be used to endorse or promote products derived */ -/* from this software without specific prior written permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" */ -/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, */ -/* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ -/* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, */ -/* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, */ -/* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; */ -/* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, */ -/* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* ============================================================================ */ - -/* This file supports MSP430FR5994 devices. */ - -/* Version: 1.192 (Beta-Build-Tag: #0049) */ - -/************************************************************ -* PERIPHERAL FILE MAP -************************************************************/ - - -/***************************************************************************** - ADC12_B -*****************************************************************************/ -__ADC12CTL0 = 0x0800; -__ADC12CTL0_L = 0x0800; -__ADC12CTL0_H = 0x0801; -__ADC12CTL1 = 0x0802; -__ADC12CTL1_L = 0x0802; -__ADC12CTL1_H = 0x0803; -__ADC12CTL2 = 0x0804; -__ADC12CTL2_L = 0x0804; -__ADC12CTL2_H = 0x0805; -__ADC12CTL3 = 0x0806; -__ADC12CTL3_L = 0x0806; -__ADC12CTL3_H = 0x0807; -__ADC12LO = 0x0808; -__ADC12LO_L = 0x0808; -__ADC12LO_H = 0x0809; -__ADC12HI = 0x080A; -__ADC12HI_L = 0x080A; -__ADC12HI_H = 0x080B; -__ADC12IFGR0 = 0x080C; -__ADC12IFGR0_L = 0x080C; -__ADC12IFGR0_H = 0x080D; -__ADC12IFGR1 = 0x080E; -__ADC12IFGR1_L = 0x080E; -__ADC12IFGR1_H = 0x080F; -__ADC12IFGR2 = 0x0810; -__ADC12IFGR2_L = 0x0810; -__ADC12IFGR2_H = 0x0811; -__ADC12IER0 = 0x0812; -__ADC12IER0_L = 0x0812; -__ADC12IER0_H = 0x0813; -__ADC12IER1 = 0x0814; -__ADC12IER1_L = 0x0814; -__ADC12IER1_H = 0x0815; -__ADC12IER2 = 0x0816; -__ADC12IER2_L = 0x0816; -__ADC12IER2_H = 0x0817; -__ADC12IV = 0x0818; -__ADC12IV_L = 0x0818; -__ADC12IV_H = 0x0819; -__ADC12MCTL0 = 0x0820; -__ADC12MCTL0_L = 0x0820; -__ADC12MCTL0_H = 0x0821; -__ADC12MCTL1 = 0x0822; -__ADC12MCTL1_L = 0x0822; -__ADC12MCTL1_H = 0x0823; -__ADC12MCTL2 = 0x0824; -__ADC12MCTL2_L = 0x0824; -__ADC12MCTL2_H = 0x0825; -__ADC12MCTL3 = 0x0826; -__ADC12MCTL3_L = 0x0826; -__ADC12MCTL3_H = 0x0827; -__ADC12MCTL4 = 0x0828; -__ADC12MCTL4_L = 0x0828; -__ADC12MCTL4_H = 0x0829; -__ADC12MCTL5 = 0x082A; -__ADC12MCTL5_L = 0x082A; -__ADC12MCTL5_H = 0x082B; -__ADC12MCTL6 = 0x082C; -__ADC12MCTL6_L = 0x082C; -__ADC12MCTL6_H = 0x082D; -__ADC12MCTL7 = 0x082E; -__ADC12MCTL7_L = 0x082E; -__ADC12MCTL7_H = 0x082F; -__ADC12MCTL8 = 0x0830; -__ADC12MCTL8_L = 0x0830; -__ADC12MCTL8_H = 0x0831; -__ADC12MCTL9 = 0x0832; -__ADC12MCTL9_L = 0x0832; -__ADC12MCTL9_H = 0x0833; -__ADC12MCTL10 = 0x0834; -__ADC12MCTL10_L = 0x0834; -__ADC12MCTL10_H = 0x0835; -__ADC12MCTL11 = 0x0836; -__ADC12MCTL11_L = 0x0836; -__ADC12MCTL11_H = 0x0837; -__ADC12MCTL12 = 0x0838; -__ADC12MCTL12_L = 0x0838; -__ADC12MCTL12_H = 0x0839; -__ADC12MCTL13 = 0x083A; -__ADC12MCTL13_L = 0x083A; -__ADC12MCTL13_H = 0x083B; -__ADC12MCTL14 = 0x083C; -__ADC12MCTL14_L = 0x083C; -__ADC12MCTL14_H = 0x083D; -__ADC12MCTL15 = 0x083E; -__ADC12MCTL15_L = 0x083E; -__ADC12MCTL15_H = 0x083F; -__ADC12MCTL16 = 0x0840; -__ADC12MCTL16_L = 0x0840; -__ADC12MCTL16_H = 0x0841; -__ADC12MCTL17 = 0x0842; -__ADC12MCTL17_L = 0x0842; -__ADC12MCTL17_H = 0x0843; -__ADC12MCTL18 = 0x0844; -__ADC12MCTL18_L = 0x0844; -__ADC12MCTL18_H = 0x0845; -__ADC12MCTL19 = 0x0846; -__ADC12MCTL19_L = 0x0846; -__ADC12MCTL19_H = 0x0847; -__ADC12MCTL20 = 0x0848; -__ADC12MCTL20_L = 0x0848; -__ADC12MCTL20_H = 0x0849; -__ADC12MCTL21 = 0x084A; -__ADC12MCTL21_L = 0x084A; -__ADC12MCTL21_H = 0x084B; -__ADC12MCTL22 = 0x084C; -__ADC12MCTL22_L = 0x084C; -__ADC12MCTL22_H = 0x084D; -__ADC12MCTL23 = 0x084E; -__ADC12MCTL23_L = 0x084E; -__ADC12MCTL23_H = 0x084F; -__ADC12MCTL24 = 0x0850; -__ADC12MCTL24_L = 0x0850; -__ADC12MCTL24_H = 0x0851; -__ADC12MCTL25 = 0x0852; -__ADC12MCTL25_L = 0x0852; -__ADC12MCTL25_H = 0x0853; -__ADC12MCTL26 = 0x0854; -__ADC12MCTL26_L = 0x0854; -__ADC12MCTL26_H = 0x0855; -__ADC12MCTL27 = 0x0856; -__ADC12MCTL27_L = 0x0856; -__ADC12MCTL27_H = 0x0857; -__ADC12MCTL28 = 0x0858; -__ADC12MCTL28_L = 0x0858; -__ADC12MCTL28_H = 0x0859; -__ADC12MCTL29 = 0x085A; -__ADC12MCTL29_L = 0x085A; -__ADC12MCTL29_H = 0x085B; -__ADC12MCTL30 = 0x085C; -__ADC12MCTL30_L = 0x085C; -__ADC12MCTL30_H = 0x085D; -__ADC12MCTL31 = 0x085E; -__ADC12MCTL31_L = 0x085E; -__ADC12MCTL31_H = 0x085F; -__ADC12MEM0 = 0x0860; -__ADC12MEM0_L = 0x0860; -__ADC12MEM0_H = 0x0861; -__ADC12MEM1 = 0x0862; -__ADC12MEM1_L = 0x0862; -__ADC12MEM1_H = 0x0863; -__ADC12MEM2 = 0x0864; -__ADC12MEM2_L = 0x0864; -__ADC12MEM2_H = 0x0865; -__ADC12MEM3 = 0x0866; -__ADC12MEM3_L = 0x0866; -__ADC12MEM3_H = 0x0867; -__ADC12MEM4 = 0x0868; -__ADC12MEM4_L = 0x0868; -__ADC12MEM4_H = 0x0869; -__ADC12MEM5 = 0x086A; -__ADC12MEM5_L = 0x086A; -__ADC12MEM5_H = 0x086B; -__ADC12MEM6 = 0x086C; -__ADC12MEM6_L = 0x086C; -__ADC12MEM6_H = 0x086D; -__ADC12MEM7 = 0x086E; -__ADC12MEM7_L = 0x086E; -__ADC12MEM7_H = 0x086F; -__ADC12MEM8 = 0x0870; -__ADC12MEM8_L = 0x0870; -__ADC12MEM8_H = 0x0871; -__ADC12MEM9 = 0x0872; -__ADC12MEM9_L = 0x0872; -__ADC12MEM9_H = 0x0873; -__ADC12MEM10 = 0x0874; -__ADC12MEM10_L = 0x0874; -__ADC12MEM10_H = 0x0875; -__ADC12MEM11 = 0x0876; -__ADC12MEM11_L = 0x0876; -__ADC12MEM11_H = 0x0877; -__ADC12MEM12 = 0x0878; -__ADC12MEM12_L = 0x0878; -__ADC12MEM12_H = 0x0879; -__ADC12MEM13 = 0x087A; -__ADC12MEM13_L = 0x087A; -__ADC12MEM13_H = 0x087B; -__ADC12MEM14 = 0x087C; -__ADC12MEM14_L = 0x087C; -__ADC12MEM14_H = 0x087D; -__ADC12MEM15 = 0x087E; -__ADC12MEM15_L = 0x087E; -__ADC12MEM15_H = 0x087F; -__ADC12MEM16 = 0x0880; -__ADC12MEM16_L = 0x0880; -__ADC12MEM16_H = 0x0881; -__ADC12MEM17 = 0x0882; -__ADC12MEM17_L = 0x0882; -__ADC12MEM17_H = 0x0883; -__ADC12MEM18 = 0x0884; -__ADC12MEM18_L = 0x0884; -__ADC12MEM18_H = 0x0885; -__ADC12MEM19 = 0x0886; -__ADC12MEM19_L = 0x0886; -__ADC12MEM19_H = 0x0887; -__ADC12MEM20 = 0x0888; -__ADC12MEM20_L = 0x0888; -__ADC12MEM20_H = 0x0889; -__ADC12MEM21 = 0x088A; -__ADC12MEM21_L = 0x088A; -__ADC12MEM21_H = 0x088B; -__ADC12MEM22 = 0x088C; -__ADC12MEM22_L = 0x088C; -__ADC12MEM22_H = 0x088D; -__ADC12MEM23 = 0x088E; -__ADC12MEM23_L = 0x088E; -__ADC12MEM23_H = 0x088F; -__ADC12MEM24 = 0x0890; -__ADC12MEM24_L = 0x0890; -__ADC12MEM24_H = 0x0891; -__ADC12MEM25 = 0x0892; -__ADC12MEM25_L = 0x0892; -__ADC12MEM25_H = 0x0893; -__ADC12MEM26 = 0x0894; -__ADC12MEM26_L = 0x0894; -__ADC12MEM26_H = 0x0895; -__ADC12MEM27 = 0x0896; -__ADC12MEM27_L = 0x0896; -__ADC12MEM27_H = 0x0897; -__ADC12MEM28 = 0x0898; -__ADC12MEM28_L = 0x0898; -__ADC12MEM28_H = 0x0899; -__ADC12MEM29 = 0x089A; -__ADC12MEM29_L = 0x089A; -__ADC12MEM29_H = 0x089B; -__ADC12MEM30 = 0x089C; -__ADC12MEM30_L = 0x089C; -__ADC12MEM30_H = 0x089D; -__ADC12MEM31 = 0x089E; -__ADC12MEM31_L = 0x089E; -__ADC12MEM31_H = 0x089F; - - -/***************************************************************************** - AES256 -*****************************************************************************/ -__AESACTL0 = 0x09C0; -__AESACTL0_L = 0x09C0; -__AESACTL0_H = 0x09C1; -__AESACTL1 = 0x09C2; -__AESACTL1_L = 0x09C2; -__AESACTL1_H = 0x09C3; -__AESASTAT = 0x09C4; -__AESASTAT_L = 0x09C4; -__AESASTAT_H = 0x09C5; -__AESAKEY = 0x09C6; -__AESAKEY_L = 0x09C6; -__AESAKEY_H = 0x09C7; -__AESADIN = 0x09C8; -__AESADIN_L = 0x09C8; -__AESADIN_H = 0x09C9; -__AESADOUT = 0x09CA; -__AESADOUT_L = 0x09CA; -__AESADOUT_H = 0x09CB; -__AESAXDIN = 0x09CC; -__AESAXDIN_L = 0x09CC; -__AESAXDIN_H = 0x09CD; -__AESAXIN = 0x09CE; -__AESAXIN_L = 0x09CE; -__AESAXIN_H = 0x09CF; - - -/***************************************************************************** - CAPTIO0 -*****************************************************************************/ -__CAPTIO0CTL = 0x043E; -__CAPTIO0CTL_L = 0x043E; -__CAPTIO0CTL_H = 0x043F; - - -/***************************************************************************** - CAPTIO1 -*****************************************************************************/ -__CAPTIO1CTL = 0x047E; -__CAPTIO1CTL_L = 0x047E; -__CAPTIO1CTL_H = 0x047F; - - -/***************************************************************************** - COMP_E -*****************************************************************************/ -__CECTL0 = 0x08C0; -__CECTL0_L = 0x08C0; -__CECTL0_H = 0x08C1; -__CECTL1 = 0x08C2; -__CECTL1_L = 0x08C2; -__CECTL1_H = 0x08C3; -__CECTL2 = 0x08C4; -__CECTL2_L = 0x08C4; -__CECTL2_H = 0x08C5; -__CECTL3 = 0x08C6; -__CECTL3_L = 0x08C6; -__CECTL3_H = 0x08C7; -__CEINT = 0x08CC; -__CEINT_L = 0x08CC; -__CEINT_H = 0x08CD; -__CEIV = 0x08CE; -__CEIV_L = 0x08CE; -__CEIV_H = 0x08CF; - - -/***************************************************************************** - CRC -*****************************************************************************/ -__CRCDI = 0x0150; -__CRCDI_L = 0x0150; -__CRCDI_H = 0x0151; -__CRCDIRB = 0x0152; -__CRCDIRB_L = 0x0152; -__CRCDIRB_H = 0x0153; -__CRCINIRES = 0x0154; -__CRCINIRES_L = 0x0154; -__CRCINIRES_H = 0x0155; -__CRCRESR = 0x0156; -__CRCRESR_L = 0x0156; -__CRCRESR_H = 0x0157; - - -/***************************************************************************** - CRC32 -*****************************************************************************/ -__CRC32DIW0 = 0x0980; -__CRC32DIW0_L = 0x0980; -__CRC32DIW0_H = 0x0981; -__CRC32DIW1 = 0x0982; -__CRC32DIW1_L = 0x0982; -__CRC32DIW1_H = 0x0983; -__CRC32DIRBW1 = 0x0984; -__CRC32DIRBW1_L = 0x0984; -__CRC32DIRBW1_H = 0x0985; -__CRC32DIRBW0 = 0x0986; -__CRC32DIRBW0_L = 0x0986; -__CRC32DIRBW0_H = 0x0987; -__CRC32INIRESW0 = 0x0988; -__CRC32INIRESW0_L = 0x0988; -__CRC32INIRESW0_H = 0x0989; -__CRC32INIRESW1 = 0x098A; -__CRC32INIRESW1_L = 0x098A; -__CRC32INIRESW1_H = 0x098B; -__CRC32RESRW1 = 0x098C; -__CRC32RESRW1_L = 0x098C; -__CRC32RESRW1_H = 0x098D; -__CRC32RESRW0 = 0x098E; -__CRC32RESRW0_L = 0x098E; -__CRC32RESRW0_H = 0x098F; -__CRC16DIW0 = 0x0990; -__CRC16DIW0_L = 0x0990; -__CRC16DIW0_H = 0x0991; -__CRC16DIRBW0 = 0x0996; -__CRC16DIRBW0_L = 0x0996; -__CRC16DIRBW0_H = 0x0997; -__CRC16INIRESW0 = 0x0998; -__CRC16INIRESW0_L = 0x0998; -__CRC16INIRESW0_H = 0x0999; -__CRC16RESRW0 = 0x099E; -__CRC16RESRW0_L = 0x099E; -__CRC16RESRW0_H = 0x099F; - - -/***************************************************************************** - CS -*****************************************************************************/ -__CSCTL0 = 0x0160; -__CSCTL0_L = 0x0160; -__CSCTL0_H = 0x0161; -__CSCTL1 = 0x0162; -__CSCTL1_L = 0x0162; -__CSCTL1_H = 0x0163; -__CSCTL2 = 0x0164; -__CSCTL2_L = 0x0164; -__CSCTL2_H = 0x0165; -__CSCTL3 = 0x0166; -__CSCTL3_L = 0x0166; -__CSCTL3_H = 0x0167; -__CSCTL4 = 0x0168; -__CSCTL4_L = 0x0168; -__CSCTL4_H = 0x0169; -__CSCTL5 = 0x016A; -__CSCTL5_L = 0x016A; -__CSCTL5_H = 0x016B; -__CSCTL6 = 0x016C; -__CSCTL6_L = 0x016C; -__CSCTL6_H = 0x016D; - - -/***************************************************************************** - DIO -*****************************************************************************/ -__PAIN = 0x0200; -__PAIN_L = 0x0200; -__PAIN_H = 0x0201; -__PAOUT = 0x0202; -__PAOUT_L = 0x0202; -__PAOUT_H = 0x0203; -__PADIR = 0x0204; -__PADIR_L = 0x0204; -__PADIR_H = 0x0205; -__PAREN = 0x0206; -__PAREN_L = 0x0206; -__PAREN_H = 0x0207; -__PASEL0 = 0x020A; -__PASEL0_L = 0x020A; -__PASEL0_H = 0x020B; -__PASEL1 = 0x020C; -__PASEL1_L = 0x020C; -__PASEL1_H = 0x020D; -__P1IV = 0x020E; -__P1IV_L = 0x020E; -__P1IV_H = 0x020F; -__PASELC = 0x0216; -__PASELC_L = 0x0216; -__PASELC_H = 0x0217; -__PAIES = 0x0218; -__PAIES_L = 0x0218; -__PAIES_H = 0x0219; -__PAIE = 0x021A; -__PAIE_L = 0x021A; -__PAIE_H = 0x021B; -__PAIFG = 0x021C; -__PAIFG_L = 0x021C; -__PAIFG_H = 0x021D; -__P2IV = 0x021E; -__P2IV_L = 0x021E; -__P2IV_H = 0x021F; -__PBIN = 0x0220; -__PBIN_L = 0x0220; -__PBIN_H = 0x0221; -__PBOUT = 0x0222; -__PBOUT_L = 0x0222; -__PBOUT_H = 0x0223; -__PBDIR = 0x0224; -__PBDIR_L = 0x0224; -__PBDIR_H = 0x0225; -__PBREN = 0x0226; -__PBREN_L = 0x0226; -__PBREN_H = 0x0227; -__PBSEL0 = 0x022A; -__PBSEL0_L = 0x022A; -__PBSEL0_H = 0x022B; -__PBSEL1 = 0x022C; -__PBSEL1_L = 0x022C; -__PBSEL1_H = 0x022D; -__P3IV = 0x022E; -__P3IV_L = 0x022E; -__P3IV_H = 0x022F; -__PBSELC = 0x0236; -__PBSELC_L = 0x0236; -__PBSELC_H = 0x0237; -__PBIES = 0x0238; -__PBIES_L = 0x0238; -__PBIES_H = 0x0239; -__PBIE = 0x023A; -__PBIE_L = 0x023A; -__PBIE_H = 0x023B; -__PBIFG = 0x023C; -__PBIFG_L = 0x023C; -__PBIFG_H = 0x023D; -__P4IV = 0x023E; -__P4IV_L = 0x023E; -__P4IV_H = 0x023F; -__PCIN = 0x0240; -__PCIN_L = 0x0240; -__PCIN_H = 0x0241; -__PCOUT = 0x0242; -__PCOUT_L = 0x0242; -__PCOUT_H = 0x0243; -__PCDIR = 0x0244; -__PCDIR_L = 0x0244; -__PCDIR_H = 0x0245; -__PCREN = 0x0246; -__PCREN_L = 0x0246; -__PCREN_H = 0x0247; -__PCSEL0 = 0x024A; -__PCSEL0_L = 0x024A; -__PCSEL0_H = 0x024B; -__PCSEL1 = 0x024C; -__PCSEL1_L = 0x024C; -__PCSEL1_H = 0x024D; -__P5IV = 0x024E; -__P5IV_L = 0x024E; -__P5IV_H = 0x024F; -__PCSELC = 0x0256; -__PCSELC_L = 0x0256; -__PCSELC_H = 0x0257; -__PCIES = 0x0258; -__PCIES_L = 0x0258; -__PCIES_H = 0x0259; -__PCIE = 0x025A; -__PCIE_L = 0x025A; -__PCIE_H = 0x025B; -__PCIFG = 0x025C; -__PCIFG_L = 0x025C; -__PCIFG_H = 0x025D; -__P6IV = 0x025E; -__P6IV_L = 0x025E; -__P6IV_H = 0x025F; -__PDIN = 0x0260; -__PDIN_L = 0x0260; -__PDIN_H = 0x0261; -__PDOUT = 0x0262; -__PDOUT_L = 0x0262; -__PDOUT_H = 0x0263; -__PDDIR = 0x0264; -__PDDIR_L = 0x0264; -__PDDIR_H = 0x0265; -__PDREN = 0x0266; -__PDREN_L = 0x0266; -__PDREN_H = 0x0267; -__PDSEL0 = 0x026A; -__PDSEL0_L = 0x026A; -__PDSEL0_H = 0x026B; -__PDSEL1 = 0x026C; -__PDSEL1_L = 0x026C; -__PDSEL1_H = 0x026D; -__P7IV = 0x026E; -__P7IV_L = 0x026E; -__P7IV_H = 0x026F; -__PDSELC = 0x0276; -__PDSELC_L = 0x0276; -__PDSELC_H = 0x0277; -__PDIES = 0x0278; -__PDIES_L = 0x0278; -__PDIES_H = 0x0279; -__PDIE = 0x027A; -__PDIE_L = 0x027A; -__PDIE_H = 0x027B; -__PDIFG = 0x027C; -__PDIFG_L = 0x027C; -__PDIFG_H = 0x027D; -__P8IV = 0x027E; -__P8IV_L = 0x027E; -__P8IV_H = 0x027F; -__PJIN = 0x0320; -__PJIN_L = 0x0320; -__PJIN_H = 0x0321; -__PJOUT = 0x0322; -__PJOUT_L = 0x0322; -__PJOUT_H = 0x0323; -__PJDIR = 0x0324; -__PJDIR_L = 0x0324; -__PJDIR_H = 0x0325; -__PJREN = 0x0326; -__PJREN_L = 0x0326; -__PJREN_H = 0x0327; -__PJSEL0 = 0x032A; -__PJSEL0_L = 0x032A; -__PJSEL0_H = 0x032B; -__PJSEL1 = 0x032C; -__PJSEL1_L = 0x032C; -__PJSEL1_H = 0x032D; -__PJSELC = 0x0336; -__PJSELC_L = 0x0336; -__PJSELC_H = 0x0337; -__P1IN = 0x0200; - -__P2IN = 0x0201; - -__P2OUT = 0x0203; - -__P1OUT = 0x0202; - -__P1DIR = 0x0204; - -__P2DIR = 0x0205; - -__P1REN = 0x0206; - -__P2REN = 0x0207; - -__P1SEL0 = 0x020A; - -__P2SEL0 = 0x020B; - -__P1SEL1 = 0x020C; - -__P2SEL1 = 0x020D; - -__P1SELC = 0x0216; - -__P2SELC = 0x0217; - -__P1IES = 0x0218; - -__P2IES = 0x0219; - -__P1IE = 0x021A; - -__P2IE = 0x021B; - -__P1IFG = 0x021C; - -__P2IFG = 0x021D; - -__P3IN = 0x0220; - -__P4IN = 0x0221; - -__P3OUT = 0x0222; - -__P4OUT = 0x0223; - -__P3DIR = 0x0224; - -__P4DIR = 0x0225; - -__P3REN = 0x0226; - -__P4REN = 0x0227; - -__P4SEL0 = 0x022B; - -__P3SEL0 = 0x022A; - -__P3SEL1 = 0x022C; - -__P4SEL1 = 0x022D; - -__P3SELC = 0x0236; - -__P4SELC = 0x0237; - -__P3IES = 0x0238; - -__P4IES = 0x0239; - -__P3IE = 0x023A; - -__P4IE = 0x023B; - -__P3IFG = 0x023C; - -__P4IFG = 0x023D; - -__P5IN = 0x0240; - -__P6IN = 0x0241; - -__P5OUT = 0x0242; - -__P6OUT = 0x0243; - -__P5DIR = 0x0244; - -__P6DIR = 0x0245; - -__P5REN = 0x0246; - -__P6REN = 0x0247; - -__P5SEL0 = 0x024A; - -__P6SEL0 = 0x024B; - -__P5SEL1 = 0x024C; - -__P6SEL1 = 0x024D; - -__P5SELC = 0x0256; - -__P6SELC = 0x0257; - -__P5IES = 0x0258; - -__P6IES = 0x0259; - -__P5IE = 0x025A; - -__P6IE = 0x025B; - -__P5IFG = 0x025C; - -__P6IFG = 0x025D; - -__P7IN = 0x0260; - -__P8IN = 0x0261; - -__P7OUT = 0x0262; - -__P8OUT = 0x0263; - -__P7DIR = 0x0264; - -__P8DIR = 0x0265; - -__P7REN = 0x0266; - -__P8REN = 0x0267; - -__P7SEL0 = 0x026A; - -__P8SEL0 = 0x026B; - -__P7SEL1 = 0x026C; - -__P8SEL1 = 0x026D; - -__P7SELC = 0x0276; - -__P8SELC = 0x0277; - -__P7IES = 0x0278; - -__P8IES = 0x0279; - -__P7IE = 0x027A; - -__P8IE = 0x027B; - -__P7IFG = 0x027C; - -__P8IFG = 0x027D; - - - -/***************************************************************************** - DMA -*****************************************************************************/ -__DMACTL0 = 0x0500; -__DMACTL0_L = 0x0500; -__DMACTL0_H = 0x0501; -__DMACTL1 = 0x0502; -__DMACTL1_L = 0x0502; -__DMACTL1_H = 0x0503; -__DMACTL2 = 0x0504; -__DMACTL2_L = 0x0504; -__DMACTL2_H = 0x0505; -__DMACTL4 = 0x0508; -__DMACTL4_L = 0x0508; -__DMACTL4_H = 0x0509; -__DMAIV = 0x050E; -__DMAIV_L = 0x050E; -__DMAIV_H = 0x050F; -__DMA0CTL = 0x0510; -__DMA0CTL_L = 0x0510; -__DMA0CTL_H = 0x0511; -__DMA0SA = 0x0512; -__DMA0SAL = 0x0512; -__DMA0SAH = 0x0514; - -__DMA0DA = 0x0516; -__DMA0DAL = 0x0516; -__DMA0DAH = 0x0518; - -__DMA0SZ = 0x051A; -__DMA0SZ_L = 0x051A; -__DMA0SZ_H = 0x051B; -__DMA1CTL = 0x0520; -__DMA1CTL_L = 0x0520; -__DMA1CTL_H = 0x0521; -__DMA1SA = 0x0522; -__DMA1SAL = 0x0522; -__DMA1SAH = 0x0524; - -__DMA1DA = 0x0526; -__DMA1DAL = 0x0526; -__DMA1DAH = 0x0528; - -__DMA1SZ = 0x052A; -__DMA1SZ_L = 0x052A; -__DMA1SZ_H = 0x052B; -__DMA2CTL = 0x0530; -__DMA2CTL_L = 0x0530; -__DMA2CTL_H = 0x0531; -__DMA2SA = 0x0532; -__DMA2SAL = 0x0532; -__DMA2SAH = 0x0534; - -__DMA2DA = 0x0536; -__DMA2DAL = 0x0536; -__DMA2DAH = 0x0538; - -__DMA2SZ = 0x053A; -__DMA2SZ_L = 0x053A; -__DMA2SZ_H = 0x053B; -__DMA3CTL = 0x0540; -__DMA3CTL_L = 0x0540; -__DMA3CTL_H = 0x0541; -__DMA3SA = 0x0542; -__DMA3SAL = 0x0542; -__DMA3SAH = 0x0544; - -__DMA3DA = 0x0546; -__DMA3DAL = 0x0546; -__DMA3DAH = 0x0548; - -__DMA3SZ = 0x054A; -__DMA3SZ_L = 0x054A; -__DMA3SZ_H = 0x054B; -__DMA4CTL = 0x0550; -__DMA4CTL_L = 0x0550; -__DMA4CTL_H = 0x0551; -__DMA4SA = 0x0552; -__DMA4SAL = 0x0552; -__DMA4SAH = 0x0554; - -__DMA4DA = 0x0556; -__DMA4DAL = 0x0556; -__DMA4DAH = 0x0558; - -__DMA4SZ = 0x055A; -__DMA4SZ_L = 0x055A; -__DMA4SZ_H = 0x055B; -__DMA5CTL = 0x0560; -__DMA5CTL_L = 0x0560; -__DMA5CTL_H = 0x0561; -__DMA5SA = 0x0562; -__DMA5SAL = 0x0562; -__DMA5SAH = 0x0564; - -__DMA5DA = 0x0566; -__DMA5DAL = 0x0566; -__DMA5DAH = 0x0568; - -__DMA5SZ = 0x056A; -__DMA5SZ_L = 0x056A; -__DMA5SZ_H = 0x056B; - - -/***************************************************************************** - FRCTL_A -*****************************************************************************/ -__FRCTL0 = 0x0140; -__FRCTL0_L = 0x0140; -__FRCTL0_H = 0x0141; -__GCCTL0 = 0x0144; -__GCCTL0_L = 0x0144; -__GCCTL0_H = 0x0145; -__GCCTL1 = 0x0146; -__GCCTL1_L = 0x0146; -__GCCTL1_H = 0x0147; - - -/***************************************************************************** - LEA -*****************************************************************************/ -__LEACAP = 0x0A80; -__LEACAPL = 0x0A80; -__LEACAPH = 0x0A82; - -__LEACNF0 = 0x0A84; -__LEACNF0L = 0x0A84; -__LEACNF0H = 0x0A86; - -__LEACNF1 = 0x0A88; -__LEACNF1L = 0x0A88; -__LEACNF1H = 0x0A8A; - -__LEACNF2 = 0x0A8C; -__LEACNF2L = 0x0A8C; -__LEACNF2H = 0x0A8E; - -__LEAMB = 0x0A90; -__LEAMBL = 0x0A90; -__LEAMBH = 0x0A92; - -__LEAMT = 0x0A94; -__LEAMTL = 0x0A94; -__LEAMTH = 0x0A96; - -__LEACMA = 0x0A98; -__LEACMAL = 0x0A98; -__LEACMAH = 0x0A9A; - -__LEACMCTL = 0x0A9C; -__LEACMCTLL = 0x0A9C; -__LEACMCTLH = 0x0A9E; - -__LEACMDSTAT = 0x0AA8; -__LEACMDSTATL = 0x0AA8; -__LEACMDSTATH = 0x0AAA; - -__LEAS1STAT = 0x0AAC; -__LEAS1STATL = 0x0AAC; -__LEAS1STATH = 0x0AAE; - -__LEAS0STAT = 0x0AB0; -__LEAS0STATL = 0x0AB0; -__LEAS0STATH = 0x0AB2; - -__LEADSTSTAT = 0x0AB4; -__LEADSTSTATL = 0x0AB4; -__LEADSTSTATH = 0x0AB6; - -__LEAPMCTL = 0x0AC0; -__LEAPMCTLL = 0x0AC0; -__LEAPMCTLH = 0x0AC2; - -__LEAPMDST = 0x0AC4; -__LEAPMDSTL = 0x0AC4; -__LEAPMDSTH = 0x0AC6; - -__LEAPMS1 = 0x0AC8; -__LEAPMS1L = 0x0AC8; -__LEAPMS1H = 0x0ACA; - -__LEAPMS0 = 0x0ACC; -__LEAPMS0L = 0x0ACC; -__LEAPMS0H = 0x0ACE; - -__LEAPMCB = 0x0AD0; -__LEAPMCBL = 0x0AD0; -__LEAPMCBH = 0x0AD2; - -__LEAIFGSET = 0x0AF0; -__LEAIFGSETL = 0x0AF0; -__LEAIFGSETH = 0x0AF2; - -__LEAIE = 0x0AF4; -__LEAIEL = 0x0AF4; -__LEAIEH = 0x0AF6; - -__LEAIFG = 0x0AF8; -__LEAIFGL = 0x0AF8; -__LEAIFGH = 0x0AFA; - -__LEAIV = 0x0AFC; -__LEAIVL = 0x0AFC; -__LEAIVH = 0x0AFE; - - - -/***************************************************************************** - MPU -*****************************************************************************/ -__MPUCTL0 = 0x05A0; -__MPUCTL0_L = 0x05A0; -__MPUCTL0_H = 0x05A1; -__MPUCTL1 = 0x05A2; -__MPUCTL1_L = 0x05A2; -__MPUCTL1_H = 0x05A3; -__MPUSEGB2 = 0x05A4; -__MPUSEGB2_L = 0x05A4; -__MPUSEGB2_H = 0x05A5; -__MPUSEGB1 = 0x05A6; -__MPUSEGB1_L = 0x05A6; -__MPUSEGB1_H = 0x05A7; -__MPUSAM = 0x05A8; -__MPUSAM_L = 0x05A8; -__MPUSAM_H = 0x05A9; -__MPUIPC0 = 0x05AA; -__MPUIPC0_L = 0x05AA; -__MPUIPC0_H = 0x05AB; -__MPUIPSEGB2 = 0x05AC; -__MPUIPSEGB2_L = 0x05AC; -__MPUIPSEGB2_H = 0x05AD; -__MPUIPSEGB1 = 0x05AE; -__MPUIPSEGB1_L = 0x05AE; -__MPUIPSEGB1_H = 0x05AF; - - -/***************************************************************************** - MPY32 -*****************************************************************************/ -__MPY = 0x04C0; -__MPY_L = 0x04C0; -__MPY_H = 0x04C1; -__MPYS = 0x04C2; -__MPYS_L = 0x04C2; -__MPYS_H = 0x04C3; -__MAC = 0x04C4; -__MAC_L = 0x04C4; -__MAC_H = 0x04C5; -__MACS = 0x04C6; -__MACS_L = 0x04C6; -__MACS_H = 0x04C7; -__OP2 = 0x04C8; -__OP2_L = 0x04C8; -__OP2_H = 0x04C9; -__RESLO = 0x04CA; -__RESLO_L = 0x04CA; -__RESLO_H = 0x04CB; -__RESHI = 0x04CC; -__RESHI_L = 0x04CC; -__RESHI_H = 0x04CD; -__SUMEXT = 0x04CE; -__SUMEXT_L = 0x04CE; -__SUMEXT_H = 0x04CF; -__MPY32L = 0x04D0; -__MPY32L_L = 0x04D0; -__MPY32L_H = 0x04D1; -__MPY32H = 0x04D2; -__MPY32H_L = 0x04D2; -__MPY32H_H = 0x04D3; -__MPYS32L = 0x04D4; -__MPYS32L_L = 0x04D4; -__MPYS32L_H = 0x04D5; -__MPYS32H = 0x04D6; -__MPYS32H_L = 0x04D6; -__MPYS32H_H = 0x04D7; -__MAC32L = 0x04D8; -__MAC32L_L = 0x04D8; -__MAC32L_H = 0x04D9; -__MAC32H = 0x04DA; -__MAC32H_L = 0x04DA; -__MAC32H_H = 0x04DB; -__MACS32L = 0x04DC; -__MACS32L_L = 0x04DC; -__MACS32L_H = 0x04DD; -__MACS32H = 0x04DE; -__MACS32H_L = 0x04DE; -__MACS32H_H = 0x04DF; -__OP2L = 0x04E0; -__OP2L_L = 0x04E0; -__OP2L_H = 0x04E1; -__OP2H = 0x04E2; -__OP2H_L = 0x04E2; -__OP2H_H = 0x04E3; -__RES0 = 0x04E4; -__RES0_L = 0x04E4; -__RES0_H = 0x04E5; -__RES1 = 0x04E6; -__RES1_L = 0x04E6; -__RES1_H = 0x04E7; -__RES2 = 0x04E8; -__RES2_L = 0x04E8; -__RES2_H = 0x04E9; -__RES3 = 0x04EA; -__RES3_L = 0x04EA; -__RES3_H = 0x04EB; -__MPY32CTL0 = 0x04EC; -__MPY32CTL0_L = 0x04EC; -__MPY32CTL0_H = 0x04ED; - - -/***************************************************************************** - PMM -*****************************************************************************/ -__PMMCTL0 = 0x0120; -__PMMCTL0_L = 0x0120; -__PMMCTL0_H = 0x0121; -__PMMIFG = 0x012A; -__PMMIFG_L = 0x012A; -__PMMIFG_H = 0x012B; -__PM5CTL0 = 0x0130; -__PM5CTL0_L = 0x0130; -__PM5CTL0_H = 0x0131; - - -/***************************************************************************** - RAMCTL -*****************************************************************************/ -__RCCTL0 = 0x0158; -__RCCTL0_L = 0x0158; -__RCCTL0_H = 0x0159; - - -/***************************************************************************** - REF_A -*****************************************************************************/ -__REFCTL0 = 0x01B0; -__REFCTL0_L = 0x01B0; -__REFCTL0_H = 0x01B1; - - -/***************************************************************************** - RTC_C -*****************************************************************************/ -__RTCCTL0 = 0x04A0; -__RTCCTL0_L = 0x04A0; -__RTCCTL0_H = 0x04A1; -__RTCCTL13 = 0x04A2; -__RTCCTL13_L = 0x04A2; -__RTCCTL13_H = 0x04A3; -__RTCOCAL = 0x04A4; -__RTCOCAL_L = 0x04A4; -__RTCOCAL_H = 0x04A5; -__RTCTCMP = 0x04A6; -__RTCTCMP_L = 0x04A6; -__RTCTCMP_H = 0x04A7; -__RTCPS0CTL = 0x04A8; -__RTCPS0CTL_L = 0x04A8; -__RTCPS0CTL_H = 0x04A9; -__RTCPS1CTL = 0x04AA; -__RTCPS1CTL_L = 0x04AA; -__RTCPS1CTL_H = 0x04AB; -__RTCPS = 0x04AC; -__RTCPS_L = 0x04AC; -__RTCPS_H = 0x04AD; -__RTCIV = 0x04AE; -__RTCIV_L = 0x04AE; -__RTCIV_H = 0x04AF; -__RTCTIM0 = 0x04B0; -__RTCTIM0_L = 0x04B0; -__RTCTIM0_H = 0x04B1; -__RTCCNT12 = 0x04B0; -__RTCCNT12_L = 0x04B0; -__RTCCNT12_H = 0x04B1; -__RTCTIM1 = 0x04B2; -__RTCTIM1_L = 0x04B2; -__RTCTIM1_H = 0x04B3; -__RTCCNT34 = 0x04B2; -__RTCCNT34_L = 0x04B2; -__RTCCNT34_H = 0x04B3; -__RTCDATE = 0x04B4; -__RTCDATE_L = 0x04B4; -__RTCDATE_H = 0x04B5; -__RTCYEAR = 0x04B6; -__RTCYEAR_L = 0x04B6; -__RTCYEAR_H = 0x04B7; -__RTCAMINHR = 0x04B8; -__RTCAMINHR_L = 0x04B8; -__RTCAMINHR_H = 0x04B9; -__RTCADOWDAY = 0x04BA; -__RTCADOWDAY_L = 0x04BA; -__RTCADOWDAY_H = 0x04BB; -__BIN2BCD = 0x04BC; -__BIN2BCD_L = 0x04BC; -__BIN2BCD_H = 0x04BD; -__BCD2BIN = 0x04BE; -__BCD2BIN_L = 0x04BE; -__BCD2BIN_H = 0x04BF; -__RT0PS = 0x04AC; - -__RT1PS = 0x04AD; - -__RTCCNT1 = 0x04B0; - -__RTCCNT2 = 0x04B1; - -__RTCCNT3 = 0x04B2; - -__RTCCNT4 = 0x04B3; - - - -/***************************************************************************** - SFR -*****************************************************************************/ -__SFRIE1 = 0x0100; -__SFRIE1_L = 0x0100; -__SFRIE1_H = 0x0101; -__SFRIFG1 = 0x0102; -__SFRIFG1_L = 0x0102; -__SFRIFG1_H = 0x0103; -__SFRRPCR = 0x0104; -__SFRRPCR_L = 0x0104; -__SFRRPCR_H = 0x0105; - - -/***************************************************************************** - SYS -*****************************************************************************/ -__SYSCTL = 0x0180; -__SYSCTL_L = 0x0180; -__SYSCTL_H = 0x0181; -__SYSJMBC = 0x0186; -__SYSJMBC_L = 0x0186; -__SYSJMBC_H = 0x0187; -__SYSJMBI0 = 0x0188; -__SYSJMBI0_L = 0x0188; -__SYSJMBI0_H = 0x0189; -__SYSJMBI1 = 0x018A; -__SYSJMBI1_L = 0x018A; -__SYSJMBI1_H = 0x018B; -__SYSJMBO0 = 0x018C; -__SYSJMBO0_L = 0x018C; -__SYSJMBO0_H = 0x018D; -__SYSJMBO1 = 0x018E; -__SYSJMBO1_L = 0x018E; -__SYSJMBO1_H = 0x018F; -__SYSUNIV = 0x019A; -__SYSUNIV_L = 0x019A; -__SYSUNIV_H = 0x019B; -__SYSSNIV = 0x019C; -__SYSSNIV_L = 0x019C; -__SYSSNIV_H = 0x019D; -__SYSRSTIV = 0x019E; -__SYSRSTIV_L = 0x019E; -__SYSRSTIV_H = 0x019F; - - -/***************************************************************************** - TA0 -*****************************************************************************/ -__TA0CTL = 0x0340; -__TA0CTL_L = 0x0340; -__TA0CTL_H = 0x0341; -__TA0CCTL0 = 0x0342; -__TA0CCTL0_L = 0x0342; -__TA0CCTL0_H = 0x0343; -__TA0CCTL1 = 0x0344; -__TA0CCTL1_L = 0x0344; -__TA0CCTL1_H = 0x0345; -__TA0CCTL2 = 0x0346; -__TA0CCTL2_L = 0x0346; -__TA0CCTL2_H = 0x0347; -__TA0R = 0x0350; -__TA0R_L = 0x0350; -__TA0R_H = 0x0351; -__TA0CCR0 = 0x0352; -__TA0CCR0_L = 0x0352; -__TA0CCR0_H = 0x0353; -__TA0CCR1 = 0x0354; -__TA0CCR1_L = 0x0354; -__TA0CCR1_H = 0x0355; -__TA0CCR2 = 0x0356; -__TA0CCR2_L = 0x0356; -__TA0CCR2_H = 0x0357; -__TA0EX0 = 0x0360; -__TA0EX0_L = 0x0360; -__TA0EX0_H = 0x0361; -__TA0IV = 0x036E; -__TA0IV_L = 0x036E; -__TA0IV_H = 0x036F; - - -/***************************************************************************** - TA1 -*****************************************************************************/ -__TA1CTL = 0x0380; -__TA1CTL_L = 0x0380; -__TA1CTL_H = 0x0381; -__TA1CCTL0 = 0x0382; -__TA1CCTL0_L = 0x0382; -__TA1CCTL0_H = 0x0383; -__TA1CCTL1 = 0x0384; -__TA1CCTL1_L = 0x0384; -__TA1CCTL1_H = 0x0385; -__TA1CCTL2 = 0x0386; -__TA1CCTL2_L = 0x0386; -__TA1CCTL2_H = 0x0387; -__TA1R = 0x0390; -__TA1R_L = 0x0390; -__TA1R_H = 0x0391; -__TA1CCR0 = 0x0392; -__TA1CCR0_L = 0x0392; -__TA1CCR0_H = 0x0393; -__TA1CCR1 = 0x0394; -__TA1CCR1_L = 0x0394; -__TA1CCR1_H = 0x0395; -__TA1CCR2 = 0x0396; -__TA1CCR2_L = 0x0396; -__TA1CCR2_H = 0x0397; -__TA1EX0 = 0x03A0; -__TA1EX0_L = 0x03A0; -__TA1EX0_H = 0x03A1; -__TA1IV = 0x03AE; -__TA1IV_L = 0x03AE; -__TA1IV_H = 0x03AF; - - -/***************************************************************************** - TA2 -*****************************************************************************/ -__TA2CTL = 0x0400; -__TA2CTL_L = 0x0400; -__TA2CTL_H = 0x0401; -__TA2CCTL0 = 0x0402; -__TA2CCTL0_L = 0x0402; -__TA2CCTL0_H = 0x0403; -__TA2CCTL1 = 0x0404; -__TA2CCTL1_L = 0x0404; -__TA2CCTL1_H = 0x0405; -__TA2R = 0x0410; -__TA2R_L = 0x0410; -__TA2R_H = 0x0411; -__TA2CCR0 = 0x0412; -__TA2CCR0_L = 0x0412; -__TA2CCR0_H = 0x0413; -__TA2CCR1 = 0x0414; -__TA2CCR1_L = 0x0414; -__TA2CCR1_H = 0x0415; -__TA2EX0 = 0x0420; -__TA2EX0_L = 0x0420; -__TA2EX0_H = 0x0421; -__TA2IV = 0x042E; -__TA2IV_L = 0x042E; -__TA2IV_H = 0x042F; - - -/***************************************************************************** - TA3 -*****************************************************************************/ -__TA3CTL = 0x0440; -__TA3CTL_L = 0x0440; -__TA3CTL_H = 0x0441; -__TA3CCTL0 = 0x0442; -__TA3CCTL0_L = 0x0442; -__TA3CCTL0_H = 0x0443; -__TA3CCTL1 = 0x0444; -__TA3CCTL1_L = 0x0444; -__TA3CCTL1_H = 0x0445; -__TA3R = 0x0450; -__TA3R_L = 0x0450; -__TA3R_H = 0x0451; -__TA3CCR0 = 0x0452; -__TA3CCR0_L = 0x0452; -__TA3CCR0_H = 0x0453; -__TA3CCR1 = 0x0454; -__TA3CCR1_L = 0x0454; -__TA3CCR1_H = 0x0455; -__TA3EX0 = 0x0460; -__TA3EX0_L = 0x0460; -__TA3EX0_H = 0x0461; -__TA3IV = 0x046E; -__TA3IV_L = 0x046E; -__TA3IV_H = 0x046F; - - -/***************************************************************************** - TA4 -*****************************************************************************/ -__TA4CTL = 0x07C0; -__TA4CTL_L = 0x07C0; -__TA4CTL_H = 0x07C1; -__TA4CCTL0 = 0x07C2; -__TA4CCTL0_L = 0x07C2; -__TA4CCTL0_H = 0x07C3; -__TA4CCTL1 = 0x07C4; -__TA4CCTL1_L = 0x07C4; -__TA4CCTL1_H = 0x07C5; -__TA4CCTL2 = 0x07C6; -__TA4CCTL2_L = 0x07C6; -__TA4CCTL2_H = 0x07C7; -__TA4R = 0x07D0; -__TA4R_L = 0x07D0; -__TA4R_H = 0x07D1; -__TA4CCR0 = 0x07D2; -__TA4CCR0_L = 0x07D2; -__TA4CCR0_H = 0x07D3; -__TA4CCR1 = 0x07D4; -__TA4CCR1_L = 0x07D4; -__TA4CCR1_H = 0x07D5; -__TA4CCR2 = 0x07D6; -__TA4CCR2_L = 0x07D6; -__TA4CCR2_H = 0x07D7; -__TA4EX0 = 0x07E0; -__TA4EX0_L = 0x07E0; -__TA4EX0_H = 0x07E1; -__TA4IV = 0x07EE; -__TA4IV_L = 0x07EE; -__TA4IV_H = 0x07EF; - - -/***************************************************************************** - TB0 -*****************************************************************************/ -__TB0CTL = 0x03C0; -__TB0CTL_L = 0x03C0; -__TB0CTL_H = 0x03C1; -__TB0CCTL0 = 0x03C2; -__TB0CCTL0_L = 0x03C2; -__TB0CCTL0_H = 0x03C3; -__TB0CCTL1 = 0x03C4; -__TB0CCTL1_L = 0x03C4; -__TB0CCTL1_H = 0x03C5; -__TB0CCTL2 = 0x03C6; -__TB0CCTL2_L = 0x03C6; -__TB0CCTL2_H = 0x03C7; -__TB0CCTL3 = 0x03C8; -__TB0CCTL3_L = 0x03C8; -__TB0CCTL3_H = 0x03C9; -__TB0CCTL4 = 0x03CA; -__TB0CCTL4_L = 0x03CA; -__TB0CCTL4_H = 0x03CB; -__TB0CCTL5 = 0x03CC; -__TB0CCTL5_L = 0x03CC; -__TB0CCTL5_H = 0x03CD; -__TB0CCTL6 = 0x03CE; -__TB0CCTL6_L = 0x03CE; -__TB0CCTL6_H = 0x03CF; -__TB0R = 0x03D0; -__TB0R_L = 0x03D0; -__TB0R_H = 0x03D1; -__TB0CCR0 = 0x03D2; -__TB0CCR0_L = 0x03D2; -__TB0CCR0_H = 0x03D3; -__TB0CCR1 = 0x03D4; -__TB0CCR1_L = 0x03D4; -__TB0CCR1_H = 0x03D5; -__TB0CCR2 = 0x03D6; -__TB0CCR2_L = 0x03D6; -__TB0CCR2_H = 0x03D7; -__TB0CCR3 = 0x03D8; -__TB0CCR3_L = 0x03D8; -__TB0CCR3_H = 0x03D9; -__TB0CCR4 = 0x03DA; -__TB0CCR4_L = 0x03DA; -__TB0CCR4_H = 0x03DB; -__TB0CCR5 = 0x03DC; -__TB0CCR5_L = 0x03DC; -__TB0CCR5_H = 0x03DD; -__TB0CCR6 = 0x03DE; -__TB0CCR6_L = 0x03DE; -__TB0CCR6_H = 0x03DF; -__TB0EX0 = 0x03E0; -__TB0EX0_L = 0x03E0; -__TB0EX0_H = 0x03E1; -__TB0IV = 0x03EE; -__TB0IV_L = 0x03EE; -__TB0IV_H = 0x03EF; - - -/***************************************************************************** - WDT_A -*****************************************************************************/ -__WDTCTL = 0x015C; -__WDTCTL_L = 0x015C; -__WDTCTL_H = 0x015D; - - -/***************************************************************************** - eUSCI_A0 -*****************************************************************************/ -__UCA0CTLW0 = 0x05C0; -__UCA0CTLW0_L = 0x05C0; -__UCA0CTLW0_H = 0x05C1; -__UCA0CTLW1 = 0x05C2; -__UCA0CTLW1_L = 0x05C2; -__UCA0CTLW1_H = 0x05C3; -__UCA0BRW = 0x05C6; -__UCA0BRW_L = 0x05C6; -__UCA0BRW_H = 0x05C7; -__UCA0MCTLW = 0x05C8; -__UCA0MCTLW_L = 0x05C8; -__UCA0MCTLW_H = 0x05C9; -__UCA0STATW = 0x05CA; -__UCA0STATW_L = 0x05CA; -__UCA0STATW_H = 0x05CB; -__UCA0RXBUF = 0x05CC; -__UCA0RXBUF_L = 0x05CC; -__UCA0RXBUF_H = 0x05CD; -__UCA0TXBUF = 0x05CE; -__UCA0TXBUF_L = 0x05CE; -__UCA0TXBUF_H = 0x05CF; -__UCA0ABCTL = 0x05D0; -__UCA0ABCTL_L = 0x05D0; -__UCA0ABCTL_H = 0x05D1; -__UCA0IRCTL = 0x05D2; -__UCA0IRCTL_L = 0x05D2; -__UCA0IRCTL_H = 0x05D3; -__UCA0IE = 0x05DA; -__UCA0IE_L = 0x05DA; -__UCA0IE_H = 0x05DB; -__UCA0IFG = 0x05DC; -__UCA0IFG_L = 0x05DC; -__UCA0IFG_H = 0x05DD; -__UCA0IV = 0x05DE; -__UCA0IV_L = 0x05DE; -__UCA0IV_H = 0x05DF; - - -/***************************************************************************** - eUSCI_A1 -*****************************************************************************/ -__UCA1CTLW0 = 0x05E0; -__UCA1CTLW0_L = 0x05E0; -__UCA1CTLW0_H = 0x05E1; -__UCA1CTLW1 = 0x05E2; -__UCA1CTLW1_L = 0x05E2; -__UCA1CTLW1_H = 0x05E3; -__UCA1BRW = 0x05E6; -__UCA1BRW_L = 0x05E6; -__UCA1BRW_H = 0x05E7; -__UCA1MCTLW = 0x05E8; -__UCA1MCTLW_L = 0x05E8; -__UCA1MCTLW_H = 0x05E9; -__UCA1STATW = 0x05EA; -__UCA1STATW_L = 0x05EA; -__UCA1STATW_H = 0x05EB; -__UCA1RXBUF = 0x05EC; -__UCA1RXBUF_L = 0x05EC; -__UCA1RXBUF_H = 0x05ED; -__UCA1TXBUF = 0x05EE; -__UCA1TXBUF_L = 0x05EE; -__UCA1TXBUF_H = 0x05EF; -__UCA1ABCTL = 0x05F0; -__UCA1ABCTL_L = 0x05F0; -__UCA1ABCTL_H = 0x05F1; -__UCA1IRCTL = 0x05F2; -__UCA1IRCTL_L = 0x05F2; -__UCA1IRCTL_H = 0x05F3; -__UCA1IE = 0x05FA; -__UCA1IE_L = 0x05FA; -__UCA1IE_H = 0x05FB; -__UCA1IFG = 0x05FC; -__UCA1IFG_L = 0x05FC; -__UCA1IFG_H = 0x05FD; -__UCA1IV = 0x05FE; -__UCA1IV_L = 0x05FE; -__UCA1IV_H = 0x05FF; - - -/***************************************************************************** - eUSCI_A2 -*****************************************************************************/ -__UCA2CTLW0 = 0x0600; -__UCA2CTLW0_L = 0x0600; -__UCA2CTLW0_H = 0x0601; -__UCA2CTLW1 = 0x0602; -__UCA2CTLW1_L = 0x0602; -__UCA2CTLW1_H = 0x0603; -__UCA2BRW = 0x0606; -__UCA2BRW_L = 0x0606; -__UCA2BRW_H = 0x0607; -__UCA2MCTLW = 0x0608; -__UCA2MCTLW_L = 0x0608; -__UCA2MCTLW_H = 0x0609; -__UCA2STATW = 0x060A; -__UCA2STATW_L = 0x060A; -__UCA2STATW_H = 0x060B; -__UCA2RXBUF = 0x060C; -__UCA2RXBUF_L = 0x060C; -__UCA2RXBUF_H = 0x060D; -__UCA2TXBUF = 0x060E; -__UCA2TXBUF_L = 0x060E; -__UCA2TXBUF_H = 0x060F; -__UCA2ABCTL = 0x0610; -__UCA2ABCTL_L = 0x0610; -__UCA2ABCTL_H = 0x0611; -__UCA2IRCTL = 0x0612; -__UCA2IRCTL_L = 0x0612; -__UCA2IRCTL_H = 0x0613; -__UCA2IE = 0x061A; -__UCA2IE_L = 0x061A; -__UCA2IE_H = 0x061B; -__UCA2IFG = 0x061C; -__UCA2IFG_L = 0x061C; -__UCA2IFG_H = 0x061D; -__UCA2IV = 0x061E; -__UCA2IV_L = 0x061E; -__UCA2IV_H = 0x061F; - - -/***************************************************************************** - eUSCI_A3 -*****************************************************************************/ -__UCA3CTLW0 = 0x0620; -__UCA3CTLW0_L = 0x0620; -__UCA3CTLW0_H = 0x0621; -__UCA3CTLW1 = 0x0622; -__UCA3CTLW1_L = 0x0622; -__UCA3CTLW1_H = 0x0623; -__UCA3BRW = 0x0626; -__UCA3BRW_L = 0x0626; -__UCA3BRW_H = 0x0627; -__UCA3MCTLW = 0x0628; -__UCA3MCTLW_L = 0x0628; -__UCA3MCTLW_H = 0x0629; -__UCA3STATW = 0x062A; -__UCA3STATW_L = 0x062A; -__UCA3STATW_H = 0x062B; -__UCA3RXBUF = 0x062C; -__UCA3RXBUF_L = 0x062C; -__UCA3RXBUF_H = 0x062D; -__UCA3TXBUF = 0x062E; -__UCA3TXBUF_L = 0x062E; -__UCA3TXBUF_H = 0x062F; -__UCA3ABCTL = 0x0630; -__UCA3ABCTL_L = 0x0630; -__UCA3ABCTL_H = 0x0631; -__UCA3IRCTL = 0x0632; -__UCA3IRCTL_L = 0x0632; -__UCA3IRCTL_H = 0x0633; -__UCA3IE = 0x063A; -__UCA3IE_L = 0x063A; -__UCA3IE_H = 0x063B; -__UCA3IFG = 0x063C; -__UCA3IFG_L = 0x063C; -__UCA3IFG_H = 0x063D; -__UCA3IV = 0x063E; -__UCA3IV_L = 0x063E; -__UCA3IV_H = 0x063F; - - -/***************************************************************************** - eUSCI_B0 -*****************************************************************************/ -__UCB0CTLW0 = 0x0640; -__UCB0CTLW0_L = 0x0640; -__UCB0CTLW0_H = 0x0641; -__UCB0CTLW1 = 0x0642; -__UCB0CTLW1_L = 0x0642; -__UCB0CTLW1_H = 0x0643; -__UCB0BRW = 0x0646; -__UCB0BRW_L = 0x0646; -__UCB0BRW_H = 0x0647; -__UCB0STATW = 0x0648; -__UCB0STATW_L = 0x0648; -__UCB0STATW_H = 0x0649; -__UCB0TBCNT = 0x064A; -__UCB0TBCNT_L = 0x064A; -__UCB0TBCNT_H = 0x064B; -__UCB0RXBUF = 0x064C; -__UCB0RXBUF_L = 0x064C; -__UCB0RXBUF_H = 0x064D; -__UCB0TXBUF = 0x064E; -__UCB0TXBUF_L = 0x064E; -__UCB0TXBUF_H = 0x064F; -__UCB0I2COA0 = 0x0654; -__UCB0I2COA0_L = 0x0654; -__UCB0I2COA0_H = 0x0655; -__UCB0I2COA1 = 0x0656; -__UCB0I2COA1_L = 0x0656; -__UCB0I2COA1_H = 0x0657; -__UCB0I2COA2 = 0x0658; -__UCB0I2COA2_L = 0x0658; -__UCB0I2COA2_H = 0x0659; -__UCB0I2COA3 = 0x065A; -__UCB0I2COA3_L = 0x065A; -__UCB0I2COA3_H = 0x065B; -__UCB0ADDRX = 0x065C; -__UCB0ADDRX_L = 0x065C; -__UCB0ADDRX_H = 0x065D; -__UCB0ADDMASK = 0x065E; -__UCB0ADDMASK_L = 0x065E; -__UCB0ADDMASK_H = 0x065F; -__UCB0I2CSA = 0x0660; -__UCB0I2CSA_L = 0x0660; -__UCB0I2CSA_H = 0x0661; -__UCB0IE = 0x066A; -__UCB0IE_L = 0x066A; -__UCB0IE_H = 0x066B; -__UCB0IFG = 0x066C; -__UCB0IFG_L = 0x066C; -__UCB0IFG_H = 0x066D; -__UCB0IV = 0x066E; -__UCB0IV_L = 0x066E; -__UCB0IV_H = 0x066F; - - -/***************************************************************************** - eUSCI_B1 -*****************************************************************************/ -__UCB1CTLW0 = 0x0680; -__UCB1CTLW0_L = 0x0680; -__UCB1CTLW0_H = 0x0681; -__UCB1CTLW1 = 0x0682; -__UCB1CTLW1_L = 0x0682; -__UCB1CTLW1_H = 0x0683; -__UCB1BRW = 0x0686; -__UCB1BRW_L = 0x0686; -__UCB1BRW_H = 0x0687; -__UCB1STATW = 0x0688; -__UCB1STATW_L = 0x0688; -__UCB1STATW_H = 0x0689; -__UCB1TBCNT = 0x068A; -__UCB1TBCNT_L = 0x068A; -__UCB1TBCNT_H = 0x068B; -__UCB1RXBUF = 0x068C; -__UCB1RXBUF_L = 0x068C; -__UCB1RXBUF_H = 0x068D; -__UCB1TXBUF = 0x068E; -__UCB1TXBUF_L = 0x068E; -__UCB1TXBUF_H = 0x068F; -__UCB1I2COA0 = 0x0694; -__UCB1I2COA0_L = 0x0694; -__UCB1I2COA0_H = 0x0695; -__UCB1I2COA1 = 0x0696; -__UCB1I2COA1_L = 0x0696; -__UCB1I2COA1_H = 0x0697; -__UCB1I2COA2 = 0x0698; -__UCB1I2COA2_L = 0x0698; -__UCB1I2COA2_H = 0x0699; -__UCB1I2COA3 = 0x069A; -__UCB1I2COA3_L = 0x069A; -__UCB1I2COA3_H = 0x069B; -__UCB1ADDRX = 0x069C; -__UCB1ADDRX_L = 0x069C; -__UCB1ADDRX_H = 0x069D; -__UCB1ADDMASK = 0x069E; -__UCB1ADDMASK_L = 0x069E; -__UCB1ADDMASK_H = 0x069F; -__UCB1I2CSA = 0x06A0; -__UCB1I2CSA_L = 0x06A0; -__UCB1I2CSA_H = 0x06A1; -__UCB1IE = 0x06AA; -__UCB1IE_L = 0x06AA; -__UCB1IE_H = 0x06AB; -__UCB1IFG = 0x06AC; -__UCB1IFG_L = 0x06AC; -__UCB1IFG_H = 0x06AD; -__UCB1IV = 0x06AE; -__UCB1IV_L = 0x06AE; -__UCB1IV_H = 0x06AF; - - -/***************************************************************************** - eUSCI_B2 -*****************************************************************************/ -__UCB2CTLW0 = 0x06C0; -__UCB2CTLW0_L = 0x06C0; -__UCB2CTLW0_H = 0x06C1; -__UCB2CTLW1 = 0x06C2; -__UCB2CTLW1_L = 0x06C2; -__UCB2CTLW1_H = 0x06C3; -__UCB2BRW = 0x06C6; -__UCB2BRW_L = 0x06C6; -__UCB2BRW_H = 0x06C7; -__UCB2STATW = 0x06C8; -__UCB2STATW_L = 0x06C8; -__UCB2STATW_H = 0x06C9; -__UCB2TBCNT = 0x06CA; -__UCB2TBCNT_L = 0x06CA; -__UCB2TBCNT_H = 0x06CB; -__UCB2RXBUF = 0x06CC; -__UCB2RXBUF_L = 0x06CC; -__UCB2RXBUF_H = 0x06CD; -__UCB2TXBUF = 0x06CE; -__UCB2TXBUF_L = 0x06CE; -__UCB2TXBUF_H = 0x06CF; -__UCB2I2COA0 = 0x06D4; -__UCB2I2COA0_L = 0x06D4; -__UCB2I2COA0_H = 0x06D5; -__UCB2I2COA1 = 0x06D6; -__UCB2I2COA1_L = 0x06D6; -__UCB2I2COA1_H = 0x06D7; -__UCB2I2COA2 = 0x06D8; -__UCB2I2COA2_L = 0x06D8; -__UCB2I2COA2_H = 0x06D9; -__UCB2I2COA3 = 0x06DA; -__UCB2I2COA3_L = 0x06DA; -__UCB2I2COA3_H = 0x06DB; -__UCB2ADDRX = 0x06DC; -__UCB2ADDRX_L = 0x06DC; -__UCB2ADDRX_H = 0x06DD; -__UCB2ADDMASK = 0x06DE; -__UCB2ADDMASK_L = 0x06DE; -__UCB2ADDMASK_H = 0x06DF; -__UCB2I2CSA = 0x06E0; -__UCB2I2CSA_L = 0x06E0; -__UCB2I2CSA_H = 0x06E1; -__UCB2IE = 0x06EA; -__UCB2IE_L = 0x06EA; -__UCB2IE_H = 0x06EB; -__UCB2IFG = 0x06EC; -__UCB2IFG_L = 0x06EC; -__UCB2IFG_H = 0x06ED; -__UCB2IV = 0x06EE; -__UCB2IV_L = 0x06EE; -__UCB2IV_H = 0x06EF; - - -/***************************************************************************** - eUSCI_B3 -*****************************************************************************/ -__UCB3CTLW0 = 0x0700; -__UCB3CTLW0_L = 0x0700; -__UCB3CTLW0_H = 0x0701; -__UCB3CTLW1 = 0x0702; -__UCB3CTLW1_L = 0x0702; -__UCB3CTLW1_H = 0x0703; -__UCB3BRW = 0x0706; -__UCB3BRW_L = 0x0706; -__UCB3BRW_H = 0x0707; -__UCB3STATW = 0x0708; -__UCB3STATW_L = 0x0708; -__UCB3STATW_H = 0x0709; -__UCB3TBCNT = 0x070A; -__UCB3TBCNT_L = 0x070A; -__UCB3TBCNT_H = 0x070B; -__UCB3RXBUF = 0x070C; -__UCB3RXBUF_L = 0x070C; -__UCB3RXBUF_H = 0x070D; -__UCB3TXBUF = 0x070E; -__UCB3TXBUF_L = 0x070E; -__UCB3TXBUF_H = 0x070F; -__UCB3I2COA0 = 0x0714; -__UCB3I2COA0_L = 0x0714; -__UCB3I2COA0_H = 0x0715; -__UCB3I2COA1 = 0x0716; -__UCB3I2COA1_L = 0x0716; -__UCB3I2COA1_H = 0x0717; -__UCB3I2COA2 = 0x0718; -__UCB3I2COA2_L = 0x0718; -__UCB3I2COA2_H = 0x0719; -__UCB3I2COA3 = 0x071A; -__UCB3I2COA3_L = 0x071A; -__UCB3I2COA3_H = 0x071B; -__UCB3ADDRX = 0x071C; -__UCB3ADDRX_L = 0x071C; -__UCB3ADDRX_H = 0x071D; -__UCB3ADDMASK = 0x071E; -__UCB3ADDMASK_L = 0x071E; -__UCB3ADDMASK_H = 0x071F; -__UCB3I2CSA = 0x0720; -__UCB3I2CSA_L = 0x0720; -__UCB3I2CSA_H = 0x0721; -__UCB3IE = 0x072A; -__UCB3IE_L = 0x072A; -__UCB3IE_H = 0x072B; -__UCB3IFG = 0x072C; -__UCB3IFG_L = 0x072C; -__UCB3IFG_H = 0x072D; -__UCB3IV = 0x072E; -__UCB3IV_L = 0x072E; -__UCB3IV_H = 0x072F; - -/************************************************************ -* End of Modules -************************************************************/ - - -/*----------------------------------------------------------------------------*/ -/* */ -/* Configuration */ -/* */ -/*----------------------------------------------------------------------------*/ - -ENTRY(tpl_reset_handler) - -/* Highest address of the user mode stack */ -_estack = 0x3C00; /* end of 8K RAM */ - -/* Generate a link error if heap and stack don't fit into RAM */ -_Min_Heap_Size = 0; /* required amount of heap */ -_Min_Stack_Size = 0x100; /* required amount of stack */ - -/*----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------*/ -/* */ -/* Memory */ -/* */ -/*----------------------------------------------------------------------------*/ - -/* Specify the memory areas for msp430fr5994 - * basic first version: - * - upper FRAM bank 0x10000 (208kb) not configured - */ - -MEMORY -{ - VECTOR (rx) : ORIGIN = 0x0FFB4, LENGTH = 0x4C /* ends at 0x10000, 76 bytes - 38 vectors */ - FRAM (rx) : ORIGIN = 0x04000, LENGTH = 0xBF80 /* ends at 0xff80. size is 47,875k */ - - RAM (xrw) : ORIGIN = 0x01C00, LENGTH = 4096 /* size is [4k - 8k] */ - LEA_RAM (xrw) : ORIGIN = 11263, LENGTH = 4096 /* size is [0k - 4k] */ - -} - -/*----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------*/ -/* */ -/* ISR Vectors */ -/* */ -/*----------------------------------------------------------------------------*/ - -SECTIONS { - .isr_vector : { - . = ALIGN(4); - KEEP(*(.isr_vector)) /* vector table */ - . = ALIGN(4); - } >VECTOR -} - -/*----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------*/ -/* */ -/* Code */ -/* */ -/*----------------------------------------------------------------------------*/ - -/* - * Sections for Non Volatile variables. They should be inserted - * at the beginning of the FRAM, so that the MPU is easier to configure. - */ -SECTIONS { - .NVdata ORIGIN(FRAM) : AT ( __nvdata_load_start) { - . = ALIGN(4); - __nvdata_start = .; /* create a global symbol at non volatile data start */ - *(.osVar_NON_VOLATILE_32BIT) - *(.osVar_NON_VOLATILE_16BIT) - *(.osVar_NON_VOLATILE_8BIT) - *(.osVar_NON_VOLATILE_BOOLEAN) - *(.osVar_NON_VOLATILE_UNSPECIFIED) - - /* --- Non volatile variables section of Task fft */ - *(.Task_fft_SEC_VAR_NON_VOLATILE_32BIT ) - *(.Task_fft_SEC_VAR_NON_VOLATILE_16BIT ) - *(.Task_fft_SEC_VAR_NON_VOLATILE_8BIT ) - *(.Task_fft_SEC_VAR_NON_VOLATILE_BOOLEAN ) - *(.Task_fft_SEC_VAR_NON_VOLATILE_UNSPECIFIED ) - - - . = ALIGN(2); - __nvdata_end = .; /* define a global symbol at non volatile data end */ - __nvdata_size = SIZEOF(.NVdata); /* define a global symbol at non volatile data end */ - } >FRAM - - .NVdataInit : { - . = ALIGN(1024); /* MSP430 MPU minimal segment size */ - TPL_MPU_B1_BOUNDARY = .; /* useful for MPU initialization - start of code */ - __nvdata_load_start = .; - . += SIZEOF(.NVdata); /* reserve space for NVdata init values*/ - __nvdata_load_end = .; - } >FRAM -} - -/* init section for msp430. - * execution starts at the beginning of the fram. */ -SECTIONS { - /* we make sure that both - * - VMA (virtual memory address) and - * - LMA (load memory address) - * are the same */ - .textInit __nvdata_load_end : AT(__nvdata_load_end) { - KEEP(*(.init)) /* start here after reset */ - } > FRAM -} - -/* - * code and const of the operating system (Trampoline). - * this section is not accessible from an untrusted process - */ -SECTIONS { - . = ALIGN(4); - /* --- code of OS --- */ - ostext : { - *(.SC_handler) - *(.EI_handler) - *(.osCode) - *(.osApiCode) /* API functions */ - *(.appCommonCode) - } >FRAM - . = ALIGN(4); - /* --- const of OS --- */ - osconst : { - *(.osConst) - *(.osApiConst) /* API constants */ - } >FRAM -} - -/* - * code and const of the processes of the applications ] - */ -SECTIONS { - . = ALIGN(4); - apptext : { - __PROGCONST_SECTION_START = .; - __SEG_START_APP_CODE_CONST_RGN = .; - . = ALIGN(4); - /* --- Sections for application code --- */ - - /* --- Sections for code of tasks and ISR --- */ - *(.Task_fftCode) - - } >FRAM - . = ALIGN(4); - appconst : { - /* --- Sections for application const --- */ - *(.rodata) /* litteral strings (constants, strings, etc.) */ - *(.rodata*) /* litteral strings (constants, strings, etc.) */ - - } >FRAM -} - -/* - * Sections for const of tasks and ISR - */ -SECTIONS { - . = ALIGN(4); - procconst : { - *(.Task_fft_SEC_CONST_32BIT) - *(.Task_fft_SEC_CALIB_32BIT) - *(.Task_fft_SEC_CARTO_32BIT) - *(.Task_fft_SEC_CONFIG_DATA_32BIT) - *(.Task_fft_SEC_CONST_16BIT) - *(.Task_fft_SEC_CALIB_16BIT) - *(.Task_fft_SEC_CARTO_16BIT) - *(.Task_fft_SEC_CONFIG_DATA_16BIT) - *(.Task_fft_SEC_CONST_8BIT) - *(.Task_fft_SEC_CALIB_8BIT) - *(.Task_fft_SEC_CARTO_8BIT) - *(.Task_fft_SEC_CONFIG_DATA_8BIT) - *(.Task_fft_SEC_CONST_BOOLEAN) - *(.Task_fft_SEC_CALIB_BOOLEAN) - *(.Task_fft_SEC_CARTO_BOOLEAN) - *(.Task_fft_SEC_CONFIG_DATA_BOOLEAN) - *(.Task_fft_SEC_CONST_UNSPECIFIED) - *(.Task_fft_SEC_CALIB_UNSPECIFIED) - *(.Task_fft_SEC_CARTO_UNSPECIFIED) - *(.Task_fft_SEC_CONFIG_DATA_UNSPECIFIED) - - . = ALIGN(4); - __SEG_STOP_APP_CODE_CONST_RGN = . - 1; - __PROGCONST_SECTION_STOP = . - 1; - } >FRAM -} - - /* remaining .text (ie no section given) */ -SECTIONS { - .text : - { - . = ALIGN(4); - *(.text) /* .text sections (code) */ - *(.text*) /* .text* sections (code) */ - *(.eh_frame) - - /* Constructors sections (list of pointers) - * from https://gcc.gnu.org/onlinedocs/gccint/Initialization.html - * set in .text section to be effectively loaded in flash - **/ - PROVIDE_HIDDEN (__ctors_start = .); - KEEP (*(.ctors*)) - KEEP (*(SORT(.ctors.*))) - PROVIDE_HIDDEN (__ctors_end = .); - - /* Destructors sections (list of pointers) - * from https://gcc.gnu.org/onlinedocs/gccint/Initialization.html - * set in .text section to be effectively loaded in flash - **/ - PROVIDE_HIDDEN (__dtors_start = .); - KEEP (*(.dtors*)) - KEEP (*(SORT(.dtors.*))) - PROVIDE_HIDDEN (__dtors_end = .); - - . = ALIGN(4); - _etext = .; /* define a global symbols at end of code */ - _exit = .; - } >FRAM -} - -/* used by the startup to initialize data */ -SECTIONS { - _sramStartAddress = .; - /* Initialized data sections goes into RAM, load LMA copy after code */ - .data : AT ( __data_load_start ) - { - . = ALIGN(4); - __data_start = .; /* create a global symbol at data start */ - *(.data) /* .data sections */ - *(.data*) /* .data* sections */ - - *(.osVar) - *(.osVar_POWER_ON_INIT_32BIT) - *(.osVar_FAST_32BIT) - *(.osVar_32BIT) - *(.osVar_POWER_ON_INIT_16BIT) - *(.osVar_FAST_16BIT) - *(.osVar_16BIT) - *(.osVar_POWER_ON_INIT_8BIT) - *(.osVar_FAST_8BIT) - *(.osVar_8BIT) - *(.osVar_POWER_ON_INIT_BOOLEAN) - *(.osVar_FAST_BOOLEAN) - *(.osVar_BOOLEAN) - *(.osVar_POWER_ON_INIT_UNSPECIFIED) - *(.osVar_FAST_UNSPECIFIED) - *(.osVar_UNSPECIFIED) - -/* Initialized variables section of Task fft */ - *(.Task_fft_SEC_VAR_POWER_ON_INIT_32BIT) - *(.Task_fft_SEC_VAR_POWER_ON_INIT_16BIT) - *(.Task_fft_SEC_VAR_POWER_ON_INIT_8BIT) - *(.Task_fft_SEC_VAR_POWER_ON_INIT_BOOLEAN) - *(.Task_fft_SEC_VAR_POWER_ON_INIT_UNSPECIFIED) - - . = ALIGN(4); - __data_end = .; /* define a global symbol at data end */ - __data_size = SIZEOF(.data); - } >RAM - - .dataInit : { - . = ALIGN(16); - __data_load_start = .; - /* reserve space for data init value */ - . += SIZEOF(.data); - } >FRAM -} - -SECTIONS { -.data_lea : { - -/* Initialized LEA variables section of Task fft */ - *(.Task_fft_SEC_LEA_VAR_LEA_32BIT) - *(.Task_fft_SEC_LEA_VAR_LEA_16BIT) - *(.Task_fft_SEC_LEA_VAR_LEA_8BIT) - *(.Task_fft_SEC_LEA_VAR_LEA_BOOLEAN) - *(.Task_fft_SEC_LEA_VAR_LEA_UNSPECIFIED) - - . = ALIGN(4); - } > LEA_RAM -} - - /* - * private data of processes - */ -SECTIONS { - .Task_fft_SEC_VAR : { - /* . = ALIGN(__SEG_ALIGN_Task_fft_VAR_RGN); TODO check alignment*/ - __SEG_START_Task_fft_VAR_RGN = .; - /* --- Initialized variables section of Task fft */ - *(.Task_fft_SEC_VAR_NOINIT_32BIT) - *(.Task_fft_SEC_VAR_FAST_32BIT) - *(.Task_fft_SEC_VAR_32BIT) - *(.Task_fft_SEC_VAR_NOINIT_16BIT) - *(.Task_fft_SEC_VAR_FAST_16BIT) - *(.Task_fft_SEC_VAR_16BIT) - *(.Task_fft_SEC_VAR_NOINIT_8BIT) - *(.Task_fft_SEC_VAR_FAST_8BIT) - *(.Task_fft_SEC_VAR_8BIT) - *(.Task_fft_SEC_VAR_NOINIT_BOOLEAN) - *(.Task_fft_SEC_VAR_FAST_BOOLEAN) - *(.Task_fft_SEC_VAR_BOOLEAN) - *(.Task_fft_SEC_VAR_NOINIT_UNSPECIFIED) - *(.Task_fft_SEC_VAR_FAST_UNSPECIFIED) - *(.Task_fft_SEC_VAR_UNSPECIFIED) - __SEG_END_Task_fft_VAR_RGN = .; - __SEG_SIZE_Task_fft_VAR_RGN = (__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 4K ? 4K : __SEG_SIZE_Task_fft_VAR_RGN; - __SEG_SIZE_Task_fft_VAR_RGN = (__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 1K ? 1K : __SEG_SIZE_Task_fft_VAR_RGN; - __SEG_SIZE_Task_fft_VAR_RGN = (__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 512 ? 512 : __SEG_SIZE_Task_fft_VAR_RGN; - __SEG_SIZE_Task_fft_VAR_RGN = (__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 256 ? 256 : __SEG_SIZE_Task_fft_VAR_RGN; - __SEG_SIZE_Task_fft_VAR_RGN = (__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 128 ? 128 : __SEG_SIZE_Task_fft_VAR_RGN; - __SEG_SIZE_Task_fft_VAR_RGN = (__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 64 ? 64 : __SEG_SIZE_Task_fft_VAR_RGN; - __SEG_SIZE_Task_fft_VAR_RGN = (__SEG_END_Task_fft_VAR_RGN - __SEG_START_Task_fft_VAR_RGN) < 32 ? 32 : __SEG_SIZE_Task_fft_VAR_RGN; - __SEG_ALIGN_Task_fft_VAR_RGN = __SEG_SIZE_Task_fft_VAR_RGN; - } >RAM -} - -/*----------------------------------------------------------------------------*/ -/* */ -/* Stack of processes */ -/* */ -/*----------------------------------------------------------------------------*/ - -SECTIONS { - /* --- Section of stack of Task fft */ - .Task_fft_SEC_STACK : { - /* . = ALIGN(__SEG_ALIGN_Task_fft_STACK_RGN); TODO: check alignment */ - __SEG_START_Task_fft_STACK_RGN = .; - *(.Task_fftStack) - . = ALIGN(4); - __SEG_END_Task_fft_STACK_RGN = .; - __SEG_SIZE_Task_fft_STACK_RGN = (__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 4K ? 4K : __SEG_SIZE_Task_fft_STACK_RGN; - __SEG_SIZE_Task_fft_STACK_RGN = (__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 1K ? 1K : __SEG_SIZE_Task_fft_STACK_RGN; - __SEG_SIZE_Task_fft_STACK_RGN = (__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 512 ? 512 : __SEG_SIZE_Task_fft_STACK_RGN; - __SEG_SIZE_Task_fft_STACK_RGN = (__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 256 ? 256 : __SEG_SIZE_Task_fft_STACK_RGN; - __SEG_SIZE_Task_fft_STACK_RGN = (__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 128 ? 128 : __SEG_SIZE_Task_fft_STACK_RGN; - __SEG_SIZE_Task_fft_STACK_RGN = (__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 64 ? 64 : __SEG_SIZE_Task_fft_STACK_RGN; - __SEG_SIZE_Task_fft_STACK_RGN = (__SEG_END_Task_fft_STACK_RGN - __SEG_START_Task_fft_STACK_RGN) < 32 ? 32 : __SEG_SIZE_Task_fft_STACK_RGN; - __SEG_ALIGN_Task_fft_STACK_RGN = __SEG_SIZE_Task_fft_STACK_RGN; - } >RAM - -} - -/*----------------------------------------------------------------------------*/ -/* */ -/* OS application data */ -/* */ -/*----------------------------------------------------------------------------*/ - -SECTIONS { - /* - * os application data - */ - appvars : { - - } >RAM -} -/*----------------------------------------------------------------------------*/ -/* */ -/* OS unitialized data (useful?) */ -/* */ -/*----------------------------------------------------------------------------*/ -SECTIONS { - . = ALIGN(4); - .osVarNoInit : - { - *(.osVar_NOINIT_32BIT) - *(.osVar_NOINIT_16BIT) - *(.osVar_NOINIT_8BIT) - *(.osVar_NOINIT_BOOLEAN) - *(.osVar_NOINIT_UNSPECIFIED) - } >RAM -} - -/*----------------------------------------------------------------------------*/ -/* */ -/* Data (initialized data) */ -/* */ -/*----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------*/ -/* */ -/* BSS (uninitialized data) */ -/* */ -/*----------------------------------------------------------------------------*/ - -SECTIONS { - . = ALIGN(4); - .bss : - { - /* This is used by the startup in order to initialize the .bss secion */ - _sbss = .; /* define a global symbol at bss start */ - __bss_start__ = _sbss; - *(.bss) - *(.bss*) - *(COMMON) - . = ALIGN(4); - _ebss = .; /* define a global symbol at bss end */ - __bss_end__ = _ebss; - } >RAM -} - -/*----------------------------------------------------------------------------*/ -/* */ -/* Heap */ -/* */ -/*----------------------------------------------------------------------------*/ - - /* _user_heap_stack section, used to check that there is enough RAM left */ -SECTIONS { - ._user_heap_stack : - { - . = ALIGN(4); - __heap_start__ = . ; - PROVIDE ( end = . ); - PROVIDE ( _end = . ); - . = . + _Min_Heap_Size; - . = . + _Min_Stack_Size; - . = ALIGN(4); - } >RAM -} - - - - /* Remove information from the standard libraries */ -SECTIONS { - /DISCARD/ : - { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - } -} - -SECTIONS { - __tpl_end_of_checkpointing_zone = .; - .osVarKernStack : - { - . = ALIGN(2); - __os_kern_stack_start = .; /* OS kernel stack symbol start */ - *(.osVarKernStack) /* OS Kernel stack */ - __os_kern_stack_end = .; /* OS kernel stack symbol start */ - } >RAM -} - -/* vim:ft=ld - */ diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/stm_structure.c b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/stm_structure.c deleted file mode 100644 index dbb6fa180..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/stm_structure.c +++ /dev/null @@ -1,21 +0,0 @@ -#include "tpl_os_stm_internal_types.h" - - -/* - * Transaction descriptors' table (indexed by core IDs) - */ -VAR(tpl_stm_tx_descriptor, OS_APPL_DATA) trans_table[NUMBER_OF_CORES] = { - { - 0, /* core id */ - 0, /* status */ - { - { - 0 /* access_vector */ - } -}; - -/* - * Writers' table (indexed by object IDs) - */ -P2VAR(tpl_stm_tx_descriptor, AUTOMATIC, OS_APPL_DATA) writer_table[NUMBER_OF_OBJECTS] = { - \ No newline at end of file diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_config.c b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_config.c deleted file mode 100644 index 6281257fc..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_config.c +++ /dev/null @@ -1,449 +0,0 @@ -/** - * @file tpl_app_config.c - * - * @section desc File description - * - * OS data structure generated from application checkpoint - * Automatically generated by goil on Wed May 12 23:14:32 2021 - * from root OIL file fft_lea.oil - * - * @section copyright Copyright - * - * Trampoline OS - * - * Trampoline is copyright (c) IRCCyN 2005-2007 - * Trampoline is protected by the French intellectual property law. - * - * This software is distributed under the Lesser GNU Public Licence - * - * @section infos File informations - * - * $Date$ - * $Rev$ - * $Author$ - * $URL$ - */ - -#include -#include - -#include "tpl_app_config.h" - -#include "tpl_os_internal_types.h" -#include "tpl_machine.h" -#include "tpl_os_interrupt.h" -#include "tpl_os_interrupt_kernel.h" -#include "tpl_os_alarm_kernel.h" -#include "tpl_os_alarm.h" -#include "tpl_os_resource_kernel.h" -#include "tpl_os_resource.h" -#include "tpl_os_event_kernel.h" -#include "tpl_os_event.h" -#include "tpl_os_action.h" -#include "tpl_os_kernel.h" -#include "tpl_os_definitions.h" - - -/*============================================================================= - * Application Modes tables for tasks, alarms and schedule tables - * Application Modes masks are as follow: - * std = 1 - */ - -CONST(tpl_application_mode, OS_CONST) std = 0; /* mask = 1 */ -CONST(tpl_application_mode, OS_CONST) OSDEFAULTAPPMODE = 0; -CONST(tpl_appmode_mask, OS_CONST) tpl_task_app_mode[TASK_COUNT] = { - 1 /* task fft : std */ -}; - -#define API_START_SEC_CONST_UNSPECIFIED -#include "tpl_memmap.h" - -/*============================================================================= - * Declaration of processes IDs - */ - -/* Task fft identifier */ -#define fft_id 0 -CONST(TaskType, AUTOMATIC) fft = fft_id; - -#define API_STOP_SEC_CONST_UNSPECIFIED -#include "tpl_memmap.h" - -/** - * The scheduler resource descriptor. - * One scheduler resource is defined per core. - * - * @see #RES_SCHEDULER - */ - -#define OS_START_SEC_VAR_UNSPECIFIED -#include "tpl_memmap.h" -VAR(tpl_resource, OS_VAR) res_sched_rez_desc = { - RES_SCHEDULER_PRIORITY, /* ceiling priority */ - 0, /* owner_prev_priority */ - INVALID_PROC_ID, /* owner */ -#if WITH_OSAPPLICATION == YES - INVALID_OSAPPLICATION_ID, /* OS Application id */ -#endif - - NULL /* next_res */ -}; -#define OS_STOP_SEC_VAR_UNSPECIFIED -#include "tpl_memmap.h" - -#define OS_START_SEC_CONST_UNSPECIFIED -#include "tpl_memmap.h" -CONSTP2VAR(tpl_resource, AUTOMATIC, OS_APPL_DATA) -tpl_resource_table[RESOURCE_COUNT] = { - &res_sched_rez_desc -}; - -#define OS_STOP_SEC_CONST_UNSPECIFIED -#include "tpl_memmap.h" - -/*============================================================================= - * Definition and initialization of Counters related defines and structures - */ -/*----------------------------------------------------------------------------- - * Counter SystemCounter descriptor - */ - -#define API_START_SEC_CONST_UNSPECIFIED -#include "tpl_memmap.h" - -CONST(tpl_tick, OS_CONST) OSTICKSPERBASE = 1; -CONST(tpl_tick, OS_CONST) OSMAXALLOWEDVALUE = 65535; -CONST(tpl_tick, OS_CONST) OSMINCYCLE = 1; - -#define API_STOP_SEC_CONST_UNSPECIFIED -#include "tpl_memmap.h" - -#define OS_START_SEC_VAR_UNSPECIFIED -#include "tpl_memmap.h" - -VAR(tpl_counter, OS_VAR) SystemCounter_counter_desc = { - /* ticks per base */ 1, - /* max allowed value */ 65535, - /* minimum cycle */ 1, - /* current tick */ 0, - /* current date */ 0, -#if WITH_OSAPPLICATION == YES - /* OS Application id */ -#endif - /* first alarm */ NULL_PTR, - /* next alarm to raise */ NULL_PTR -}; - -#define OS_STOP_SEC_VAR_UNSPECIFIED -#include "tpl_memmap.h" - -#include "tpl_os_kernel.h" /* tpl_schedule */ -#include "tpl_os_timeobj_kernel.h" /* tpl_counter_tick */ -#include "tpl_machine_interface.h" /* tpl_switch_context_from_it */ - -#define OS_START_SEC_VAR_32BIT -#include "tpl_memmap.h" -volatile VAR(uint32, OS_VAR) tpl_time_counter = 0; -#define OS_STOP_SEC_VAR_32BIT -#include "tpl_memmap.h" - -#define OS_START_SEC_CODE -#include "tpl_memmap.h" - -FUNC(tpl_bool, OS_CODE) tpl_tick_TIMER3_A0_VECTOR(void) -{ - tpl_counter_tick(&SystemCounter_counter_desc); - tpl_time_counter++; - - if (tpl_kern.need_schedule == TRUE) - { - tpl_schedule_from_running(); - LOCAL_SWITCH_CONTEXT() - } - - return TRUE; -} - -#define OS_STOP_SEC_CODE -#include "tpl_memmap.h" - -/*============================================================================= - * Descriptor(s) of the idle task(s) - */ -/*----------------------------------------------------------------------------- - * Task IDLE_TASK descriptor - */ -#define OS_START_SEC_CODE -#include "tpl_memmap.h" -/* - * Task IDLE_TASK function prototype - */ - -FUNC(void, OS_APPL_CODE) idle_function(void); -#define OS_STOP_SEC_CODE -#include "tpl_memmap.h" - -/*----------------------------------------------------------------------------- - * Target specific structures - */ -/* - * Task IDLE_TASK stack - */ -#define APP_Task_IDLE_TASK_START_SEC_STACK -#include "tpl_memmap.h" -VAR(tpl_stack_word, OS_APPL_DATA) IDLE_TASK_stack_zone[IDLE_STACK_SIZE/sizeof(tpl_stack_word)]; -#define APP_Task_IDLE_TASK_STOP_SEC_STACK -#include "tpl_memmap.h" - -#define IDLE_TASK_STACK {IDLE_TASK_stack_zone, IDLE_STACK_SIZE} - -/* - * Task IDLE_TASK context - */ -#define OS_START_SEC_VAR_NOINIT_32BIT -#include "tpl_memmap.h" -VAR(msp430x_small_context, OS_VAR) IDLE_TASK_int_context; - -#define IDLE_TASK_CONTEXT &IDLE_TASK_int_context - -#define OS_STOP_SEC_VAR_NOINIT_32BIT -#include "tpl_memmap.h" - - - - -/* - No timing protection - */ - -#define OS_START_SEC_CONST_UNSPECIFIED -#include "tpl_memmap.h" - - -/* - * Static descriptor of task IDLE_TASK - */ -CONST(tpl_proc_static, OS_CONST) IDLE_TASK_task_stat_desc = { - /* context */ IDLE_TASK_CONTEXT, - /* stack */ IDLE_TASK_STACK, - /* entry point (function) */ idle_function, - /* internal ressource */ NULL, - /* task id */ IDLE_TASK_ID, -#if WITH_OSAPPLICATION == YES - /* OS application id */ -#endif - /* task base priority */ 0, - /* max activation count */ 1, - /* task type */ TASK_BASIC, -#if WITH_AUTOSAR_TIMING_PROTECTION == YES - - /* execution budget */ 0, - /* timeframe */ 0, - /* pointer to the timing - protection descriptor */ NULL - -#endif -}; - -#define OS_STOP_SEC_CONST_UNSPECIFIED -#include "tpl_memmap.h" - - -#define OS_START_SEC_VAR_UNSPECIFIED -#include "tpl_memmap.h" -/* - * Dynamic descriptor of task IDLE_TASK - */ -VAR(tpl_proc, OS_VAR) IDLE_TASK_task_desc = { - /* resources */ NULL, -#if WITH_OSAPPLICATION == YES - /* if > 0 the process is trusted */ 0, -#endif /* WITH_OSAPPLICATION */ - /* activate count */ 0, - /* task priority */ 0, - /* task state */ SUSPENDED -}; - -#define OS_STOP_SEC_VAR_UNSPECIFIED -#include "tpl_memmap.h" - - -/*============================================================================= - * Definition and initialization of Task related defines and structures - */ -/*----------------------------------------------------------------------------- - * Task fft descriptor - */ -#define APP_Task_fft_START_SEC_CODE - -#include "tpl_memmap.h" -/* - * Task fft function prototype - */ - -FUNC(void, OS_APPL_CODE) fft_function(void); -#define APP_Task_fft_STOP_SEC_CODE - -#include "tpl_memmap.h" - -/*----------------------------------------------------------------------------- - * Target specific structures - */ -/* - * Task fft stack - */ -#define APP_Task_fft_START_SEC_STACK -#include "tpl_memmap.h" -VAR(tpl_stack_word, OS_APPL_DATA) fft_stack_zone[100/sizeof(tpl_stack_word)]; -#define APP_Task_fft_STOP_SEC_STACK -#include "tpl_memmap.h" - -#define fft_STACK {fft_stack_zone, 100} - -/* - * Task fft context - */ -#define OS_START_SEC_VAR_NOINIT_32BIT -#include "tpl_memmap.h" -VAR(msp430x_small_context, OS_VAR) fft_int_context; - -#define fft_CONTEXT &fft_int_context - -#define OS_STOP_SEC_VAR_NOINIT_32BIT -#include "tpl_memmap.h" - - - - -/* - No timing protection - */ - -#define OS_START_SEC_CONST_UNSPECIFIED -#include "tpl_memmap.h" - - -/* - * Static descriptor of task fft - */ -CONST(tpl_proc_static, OS_CONST) fft_task_stat_desc = { - /* context */ fft_CONTEXT, - /* stack */ fft_STACK, - /* entry point (function) */ fft_function, - /* internal ressource */ NULL, - /* task id */ fft_id, -#if WITH_OSAPPLICATION == YES - /* OS application id */ -#endif - /* task base priority */ 1, - /* max activation count */ 1, - /* task type */ TASK_BASIC, -#if WITH_AUTOSAR_TIMING_PROTECTION == YES - - /* execution budget */ 0, - /* timeframe */ 0, - /* pointer to the timing - protection descriptor */ NULL - -#endif -}; - -#define OS_STOP_SEC_CONST_UNSPECIFIED -#include "tpl_memmap.h" - - -#define OS_START_SEC_VAR_UNSPECIFIED -#include "tpl_memmap.h" -/* - * Dynamic descriptor of task fft - */ -VAR(tpl_proc, OS_VAR) fft_task_desc = { - /* resources */ NULL, -#if WITH_OSAPPLICATION == YES - /* if > 0 the process is trusted */ 0, -#endif /* WITH_OSAPPLICATION */ - /* activate count */ 0, - /* task priority */ 1, - /* task state */ AUTOSTART -}; - -#define OS_STOP_SEC_VAR_UNSPECIFIED -#include "tpl_memmap.h" - - -#define OS_START_SEC_CONST_UNSPECIFIED -#include "tpl_memmap.h" -/*============================================================================= - * Definition and initialization of process tables (tasks and isrs) - */ -CONSTP2CONST(tpl_proc_static, AUTOMATIC, OS_APPL_DATA) -tpl_stat_proc_table[TASK_COUNT+ISR_COUNT+1] = { - &fft_task_stat_desc, - &IDLE_TASK_task_stat_desc -}; - -CONSTP2VAR(tpl_proc, AUTOMATIC, OS_APPL_DATA) -tpl_dyn_proc_table[TASK_COUNT+ISR_COUNT+1] = { - &fft_task_desc, - &IDLE_TASK_task_desc -}; - -#define OS_STOP_SEC_CONST_UNSPECIFIED -#include "tpl_memmap.h" - - -/*============================================================================= - * Declaration of flags functions - */ -/* $FLAGSFUNCTIONS$ */ - -/*============================================================================= - * Definition and initialization of Ready List structures - */ -#define OS_START_SEC_VAR_UNSPECIFIED -#include "tpl_memmap.h" - -VAR(tpl_heap_entry, OS_VAR) tpl_ready_list[3]; -VAR(tpl_rank_count, OS_VAR) tpl_tail_for_prio[3] = { - 0, - 0 -}; - -#define OS_STOP_SEC_VAR_UNSPECIFIED -#include "tpl_memmap.h" - -/** - * @internal - * - * tpl_kern gather informations on the current executing object and - * the previous one - */ -VAR(tpl_kern_state, OS_VAR) tpl_kern = -{ - NULL, /* no running task static descriptor */ - &IDLE_TASK_task_stat_desc, /* elected task to run is idle task */ - NULL, /* no running task dynamic descriptor */ - &IDLE_TASK_task_desc, /* elected task to run is idle task */ - INVALID_PROC_ID, /* no running task so no ID */ - INVALID_PROC_ID, /* idle task has no ID */ - NO_NEED_SWITCH, /* no context switch needed at start */ - FALSE, /* no schedule needed at start */ -#if WITH_MEMORY_PROTECTION == YES - 1, /* at early system startup, we run in */ - /* kernel mode, so in trusted mode */ -#endif /* WITH_MEMORY_PROTECTION */ -}; - -#define API_START_SEC_CONST_UNSPECIFIED -#include "tpl_memmap.h" -CONSTP2CONST(char, AUTOMATIC, OS_APPL_DATA) proc_name_table[TASK_COUNT + ISR_COUNT + 1] = { - - "fft", - "*idle*" -}; -#define API_STOP_SEC_CONST_UNSPECIFIED -#include "tpl_memmap.h" - - -/* End of file tpl_app_config.c */ diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_config.h b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_config.h deleted file mode 100644 index 0266a7d85..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_config.h +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @file tpl_app_config.h - * - * @section desc File description - * - * Header of the automatic generated constants usable - * by the application checkpoint - * Automatically generated by goil on Wed May 12 23:14:32 2021 - * from root OIL file fft_lea.oil - * - * @section copyright Copyright - * - * Trampoline OS - * - * Trampoline is copyright (c) IRCCyN 2005-2007 - * Trampoline is protected by the French intellectual property law. - * - * This software is distributed under the Lesser GNU Public Licence - * - * @section infos File informations - * - * $Date$ - * $Rev$ - * $Author$ - * $URL$ - */ - -#ifndef TPL_APP_CONFIG_H -#define TPL_APP_CONFIG_H - -#include "tpl_app_define.h" -#include "tpl_compiler.h" -#include "tpl_os_internal_types.h" -/*============================================================================= - * proc_name_table is an array of strings containing the name of the - * processes. It may be used by the application for debugging purpose - */ -#if !defined(NO_TASK) || !defined(NO_ISR) -#define API_START_SEC_CONST_UNSPECIFIED -#include "tpl_memmap.h" -extern CONSTP2CONST(char, AUTOMATIC, OS_APPL_DATA) - proc_name_table[TASK_COUNT + ISR_COUNT + 1]; -#define API_STOP_SEC_CONST_UNSPECIFIED -#include "tpl_memmap.h" -#endif - -/*============================================================================= - * Declaration of Counters constants - */ -/*----------------------------------------------------------------------------- - * Constants of the SystemCounter - */ -extern CONST(tpl_tick, OS_CONST) OSTICKSPERBASE; -extern CONST(tpl_tick, OS_CONST) OSMAXALLOWEDVALUE; -extern CONST(tpl_tick, OS_CONST) OSMINCYCLE; - - -/*============================================================================= - * Declaration of flags macros - */ - -#endif - -/* End of file TPL_APP_CONFIG_H */ - diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_custom_types.h b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_custom_types.h deleted file mode 100644 index b2745ca49..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_custom_types.h +++ /dev/null @@ -1,157 +0,0 @@ -/** - * @file tpl_app_custom_types.h - * - * @section File description - * - * This file gathers all data types which are generated from the application. - * Please refer to comment of each type for more details. - * Generated from application checkpoint - * Automatically generated by goil on Wed May 12 23:14:32 2021 - * from root OIL file fft_lea.oil - * - * @section File informations - * - * $Date$ - * $Rev$ - * $Author$ - * $URL$ - */ - -#ifndef TPL_APP_CUSTOM_TYPES_H -#define TPL_APP_CUSTOM_TYPES_H - -#include "tpl_compiler.h" -#include "tpl_os_std_types.h" - -/** - * tpl_heap_key is the datatype used to store the key of a heap entry. - */ -typedef uint8 tpl_heap_key; - -/** - * tpl_rank_count is the datatype used to store the rank of an activation - * It is the lower part of a tpl_heap_key - */ -typedef uint8 tpl_rank_count; - -/** - * tpl_proc_id is used for task and isrs identifiers. - * - * @warning This data type must be signed - * because -1 is used for INVALID_TASK and INVALID_ISR - */ -typedef sint8 tpl_proc_id; - -/** - * tpl_appmode_mask is used for AUTOSTART objects. - * - * Each bit in the mask corresponds to an application mode. The size of the mask - * is computed according to the number of application modes. - */ -typedef uint8 tpl_appmode_mask; - -/** - * tpl_priority represents a task's or a resource's priority. - * - * @warning This type must be signed. - */ -typedef sint8 tpl_priority; - -/** - * tpl_activate_counter is used to count - * how many time a task has been activated while - * it was not suspended. - */ -typedef uint8 tpl_activate_counter; - -/** - * tpl_event_mask is used for event. - * An event is a bit vector. According to the maximum number of events - * defined in the application, it can be uint8 (8 events), uint16 (16 events) or - * uint32 (32 events). - */ -typedef uint8 tpl_event_mask; - -/** - * tpl_alarm_type is used for alarm identifiers. - */ -typedef uint8 tpl_alarm_id; - -/** - * tpl_resource_id is used for resource identifiers. - * - * @warning RES_SCHEDULER is set to the higher resource id + 1 - */ -typedef uint8 tpl_resource_id; - -#if (WITH_TRACE == YES) -/** - * @internal - * - * Type used to store the id of an alarm or a schedule table - * This is used only for tracing - */ -typedef uint8 tpl_timeobj_id; - -/** - * @internal - * - * one id for each counter. - */ -typedef uint8 tpl_trace_counter_id; -#endif - -#ifdef WITH_AUTOSAR -/** - * @internal - * - * @todo: document this - */ -typedef uint8 tpl_counter_id; - -/** - * @internal - * - * @todo: document this - */ -typedef uint8 tpl_schedtable_id; - -/** - * @internal - * - * Type used to store the id of an OS Application - * Its size is computed according to the number of OS Applications - */ -typedef uint8 tpl_app_id; - -/** - * @internal - * - * Generic type used in OS Application API - * Its size is computed by doing the max of all object kind - */ -typedef uint8 tpl_generic_id; - - - -#endif /* WITH_AUTOSAR */ - -/* target specific types */ - -/** - * tpl_tick is used for relative and absolute dates. - * tpl_tick should be an unsigned datatype. - * - * On MSP430, tpl_ticks should be limited to 16 bits - * (on 32 bits, arguments for system call SetRelAlarm - * would be passed through the stack, which is not - * possible) - */ -typedef uint16 tpl_tick; - - - -#endif /* TPL_APP_CUSTOM_TYPES_H */ - -/* End of file tpl_app_custom_types.h */ - diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_define.h b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_define.h deleted file mode 100644 index 33832fe3a..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_app_define.h +++ /dev/null @@ -1,266 +0,0 @@ -/** - * @file tpl_app_define.h - * - * @section desc File description - * - * Header of the automatic generated defines usable - * by the application checkpoint - * Automatically generated by goil on Wed May 12 23:14:32 2021 - * from root OIL file fft_lea.oil - * - * @section copyright Copyright - * - * Trampoline OS - * - * Trampoline is copyright (c) IRCCyN 2005-2010 - * Trampoline is protected by the French intellectual property law. - * - * This software is distributed under the Lesser GNU Public Licence - * - * @section infos File informations - * - * $Date$ - * $Rev$ - * $Author$ - * $URL$ - */ - -#ifndef TPL_APP_DEFINE_H -#define TPL_APP_DEFINE_H - - - -#include "tpl_config_def.h" - -/*============================================================================= - * Configuration flags - */ -#define TARGET_ARCH "msp430x" -#define TARGET_CHIP "small" -#define TARGET_BOARD "msp430fr5994/launchpad" -#define NUMBER_OF_CORES 1 -#define WITH_OS_EXTENDED YES -#define WITH_ORTI NO -#define WITH_PAINT_STACK YES -#define WITH_PAINT_REGISTERS YES -#define WITH_STARTUP_HOOK NO -#define WITH_SHUTDOWN_HOOK NO -#define WITH_ERROR_HOOK NO -#define WITH_PRE_TASK_HOOK NO -#define WITH_POST_TASK_HOOK NO -#define WITH_ANY_HOOK NO -#define WITH_PANIC_HOOK NO -#define WITH_USEGETSERVICEID NO -#define WITH_USEPARAMETERACCESS NO -#define WITH_USERESSCHEDULER YES -#define WITH_SYSTEM_CALL YES -#define WITH_MEMORY_PROTECTION NO -#define WITH_MEMMAP YES -#define WITH_COMPILER_SETTINGS YES -#define WITH_AUTOSAR NO -#define WITH_PROTECTION_HOOK NO -#define WITH_STACK_MONITORING NO -#define WITH_AUTOSAR_TIMING_PROTECTION NO -#define AUTOSAR_SC 0 -#define WITH_OSAPPLICATION NO -#define WITH_OSAPPLICATION_STARTUP_HOOK NO -#define WITH_OSAPPLICATION_SHUTDOWN_HOOK NO -#define WITH_TRACE NO -#define WITH_ID NO -#define WITH_IT_TABLE NO -#define WITH_COM NO -#define WITH_IOC NO -#define WITH_MODULES_INIT NO -#define WITH_INIT_BOARD NO -#define WITH_ISR2_PRIORITY_MASKING NO - -/*============================================================================= - * Defines related to the key part of a ready list entry. - * The key part has in the most significant bits the priority of the job and - * in the least significant bits the rank of the job. So: - * - PRIORITY_SHIFT is the number of bit the key has to be shifted to the - * right) to get the priority only aligned to the right; - * - PRIORITY_MASK is the mask to get the priority only (not aligned to the - * right with the rank set to 0; - * - RANK_MASK is the mask to get only the rank. - */ -#define PRIORITY_SHIFT 1 -#define PRIORITY_MASK 6 -#define RANK_MASK 1 - -/*============================================================================= - * Number of objects used by the application - * These informations are used by Trampoline to avoid to - * alloc structures when some os objects are not present. - */ - -/*----------------------------------------------------------------------------- - * Number of priority levels - */ -#define PRIO_LEVEL_COUNT 2 - -/*----------------------------------------------------------------------------- - * Number of tasks - */ -#define TASK_COUNT 1 - -/*----------------------------------------------------------------------------- - * Number of spinlocks - */ -#define SPINLOCK_COUNT 0 - -/*----------------------------------------------------------------------------- - * Number of extended tasks - */ -#define EXTENDED_TASK_COUNT 0 - -/*----------------------------------------------------------------------------- - * Number of ISR2 - */ -#define ISR_COUNT 0 - -/*----------------------------------------------------------------------------- - * Number of alarms - */ -#define ALARM_COUNT 0 - -/*----------------------------------------------------------------------------- - * Number of regular resources (standard and linked) plus RES_SCHEDULER if used - */ -#define RESOURCE_COUNT 1 - -/*----------------------------------------------------------------------------- - * Number of events - */ -#define EVENT_COUNT 0 - -/*----------------------------------------------------------------------------- - * Number of messages - */ -#define MESSAGE_COUNT 0 - -/*----------------------------------------------------------------------------- - * Number of send messages - */ -#define SEND_MESSAGE_COUNT 0 - -/*----------------------------------------------------------------------------- - * Number of receive messages - */ -#define RECEIVE_MESSAGE_COUNT 0 - -/*----------------------------------------------------------------------------- - * Number of counters - */ -#define COUNTER_COUNT 1 - -/*----------------------------------------------------------------------------- - * Number of schedule tables - */ -#define SCHEDTABLE_COUNT 0 - -/*----------------------------------------------------------------------------- - * Number of OS Applications - */ -#define APP_COUNT 0 - -/*----------------------------------------------------------------------------- - * Number of trusted functions - */ -#define TRUSTED_FCT_COUNT 0 - -/*----------------------------------------------------------------------------- - * Number of IOC - */ -#define IOC_COUNT 0 -#define IOC_QUEUED_COUNT 0 -#define IOC_UNQUEUED_COUNT 0 - - -/*----------------------------------------------------------------------------- - * Priority of RES_SCHEDULER - */ -#define RES_SCHEDULER_PRIORITY 2 - -#define IDLE_TASK_ID TASK_COUNT + ISR_COUNT - -/*----------------------------------------------------------------------------- - * To fasten the SPINLOCK_IS_SUCCESSOR macro - */ -#define SPINLOCK_SUCCESSOR_BITFIELD_SHIFT 4 -#define SPINLOCK_SUCCESSOR_BITFIELD_MASK 7 - -/*----------------------------------------------------------------------------- - * Spinlocks max possessed spinlocks per core. - * This definition is used to maximize the size of possessed spinlocks. - * In OSExtended mode, as we're checking nesting spinlocks, we can set the max - * size of the LIFOS to the longest chain in the spinlocks graph. - * In OSStandard mode, we set the maximum to the number of spinlocks (a - * spinlock can only be taken once). - */ -#define MAX_POSSESSED_SPINLOCKS 0 - -/*----------------------------------------------------------------------------- - * Debugging - */ -#define WITH_DEBUG NO - -#include "tpl_config_check.h" - -#endif - -/*----------------------------------------------------------------------------- - * Configuration STM Flags - */ -#define NUMBER_OF_OBJECTS 0 -#define NUMBER_OF_TRANSACTIONS 0 - -/*----------------------------------------------------------------------------- - * Tick optimization - */ -#define TPL_OPTIMIZE_TICKS NO -/** - * set the CPU default frequency at startup in MHz. - * Value defined with .oil key CPU->OS->CPU_FREQ_MHZ; - * - * This frequency may be overriden using at runtime with - * void tpl_set_mcu_clock(uint16_t freqInMHz); - * (defined in tpl_clocks.h) - */ -#define CPU_FREQ_MHZ 8 - -/* - * Power mode to be used in the idle task - */ -#define ACTIVE_POWER_MODE -1 -#define LPM0_POWER_MODE 0 -#define LPM1_POWER_MODE 1 -#define LPM2_POWER_MODE 2 -#define LPM3_POWER_MODE 3 - -#define IDLE_POWER_MODE LPM3_POWER_MODE -#define IDLE_LPM LPM3 - -/* - * If YES, init the .data section using the DMA - */ -#define WITH_INIT_WITH_DMA NO - -/* - * If YES, use checkpointing with the msp430 - */ -#define WITH_CHECKPOINTING NO -/*============================================================================= - * libraries related defines - */ -/*----------------------------------------------------------------------------- - * Parameters of the serial interface library - * if the (RX or TX) buffer is set to 0, the associated - * interrupt is not implemented. - */ -#define SERIAL_TX_BUFFER_SIZE 32 -#define SERIAL_RX_BUFFER_SIZE 32 - - -/* End of file TPL_APP_DEFINE_H */ - diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_dispatch_table.c b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_dispatch_table.c deleted file mode 100644 index 5a5c07b0b..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_dispatch_table.c +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @file tpl_dispatch_table.c - * - * @section desc File description - * - * Dispatch table for application checkpoint - * Automatically generated by goil on Wed May 12 23:14:32 2021 - * from root OIL file fft_lea.oil - * - * @section copyright Copyright - * - * Trampoline OS - * - * Trampoline is copyright (c) IRCCyN 2005-2010 - * Trampoline is protected by the French intellectual property law. - * - * This software is distributed under the Lesser GNU Public Licence - * - * @section infos File informations - * - * $Date$ - * $Rev$ - * $Author$ - * $URL$ - */ - -#include "tpl_dispatch_table.h" - -#include "tpl_os_os_kernel.h" -#include "tpl_os_os.h" -#include "tpl_os_interrupt_kernel.h" -#include "tpl_os_task_kernel.h" -#include "tpl_os_resource_kernel.h" - -#define OS_START_SEC_CONST_UNSPECIFIED -#include "tpl_memmap.h" -CONST(tpl_system_call, OS_CONST) tpl_dispatch_table[SYSCALL_COUNT] = { -/* os services */ - (tpl_system_call) tpl_call_terminate_isr2_service, - (tpl_system_call) tpl_suspend_all_interrupts_service, - (tpl_system_call) tpl_resume_os_interrupts_service, - (tpl_system_call) tpl_enable_all_interrupts_service, - (tpl_system_call) tpl_suspend_os_interrupts_service, - (tpl_system_call) tpl_resume_all_interrupts_service, - (tpl_system_call) tpl_call_terminate_task_service, - (tpl_system_call) tpl_disable_all_interrupts_service, - (tpl_system_call) tpl_release_resource_service, - (tpl_system_call) tpl_schedule_service, - (tpl_system_call) tpl_get_task_id_service, - (tpl_system_call) tpl_get_active_application_mode_service, - (tpl_system_call) tpl_get_task_state_service, - (tpl_system_call) tpl_terminate_task_service, - (tpl_system_call) tpl_start_os_service, - (tpl_system_call) tpl_shutdown_os_service, - (tpl_system_call) tpl_get_resource_service, - (tpl_system_call) tpl_chain_task_service, - (tpl_system_call) tpl_activate_task_service -}; - - -#define OS_STOP_SEC_CONST_UNSPECIFIED -#include "tpl_memmap.h" - -/* End of file tpl_dispatch_table.c */ - diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_interrupt_vectors.c b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_interrupt_vectors.c deleted file mode 100644 index 9fe0ecd17..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_interrupt_vectors.c +++ /dev/null @@ -1,59 +0,0 @@ -/* Interrupt table vector */ -#include "tpl_compiler.h" -#include "tpl_os.h" -#include "tpl_os_interrupt_kernel.h" -#include "tpl_machine.h" - -/* External handlers */ - -extern FUNC(void, OS_CODE) tpl_reset_handler (P2CONST(void, OS_APPL_DATA, AUTOMATIC)); -extern FUNC(void, OS_CODE) tpl_MPU_violation (P2CONST(void, OS_APPL_DATA, AUTOMATIC)); -extern FUNC(void, OS_CODE) tpl_direct_irq_handler_LEA_VECTOR(P2CONST(void, OS_APPL_DATA, AUTOMATIC)); -extern FUNC(void, OS_CODE) tpl_primary_irq_handler_TIMER3_A0_VECTOR(P2CONST(void, OS_APPL_DATA, AUTOMATIC)); -extern FUNC(void, OS_CODE) tpl_direct_irq_handler_USCI_A0_VECTOR(P2CONST(void, OS_APPL_DATA, AUTOMATIC)); - -/* Interrupt table vector */ - -__attribute__ ((section(".isr_vector"))) CONST(tpl_it_handler, AUTOMATIC) tpl_it_vectors[38] = { - - /* 0xFFB4, LEA_VECTOR */ (tpl_it_handler)tpl_direct_irq_handler_LEA_VECTOR, - /* 0xFFB6, PORT8_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFB8, PORT7_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFBA, EUSCI_B3_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFBC, EUSCI_B2_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFBE, EUSCI_B1_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFC0, EUSCI_A3_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFC2, EUSCI_A2_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFC4, PORT6_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFC6, PORT5_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFC8, TIMER4_A1_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFCA, TIMER4_A0_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFCC, AES256_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFCE, RTC_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFD0, PORT4_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFD2, PORT3_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFD4, TIMER3_A1_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFD6, TIMER3_A0_VECTOR */ (tpl_it_handler)tpl_primary_irq_handler_TIMER3_A0_VECTOR, - /* 0xFFD8, PORT2_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFDA, TIMER2_A1_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFDC, TIMER2_A0_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFDE, PORT1_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFE0, TIMER1_A1_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFE2, TIMER1_A0_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFE4, DMA_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFE6, USCI_A1_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFE8, TIMER0_A1_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFEA, TIMER0_A0_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFEC, ADC12_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFEE, USCI_B0_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFF0, USCI_A0_VECTOR */ (tpl_it_handler)tpl_direct_irq_handler_USCI_A0_VECTOR, - /* 0xFFF2, WDT_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFF4, TIMER0_B1_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFF6, TIMER0_B0_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFF8, COMP_E_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFFA, UNMI_VECTOR */ (tpl_it_handler)tpl_null_it, - /* 0xFFFC, SYSNMI_VECTOR */ (tpl_it_handler)tpl_MPU_violation, - /* 0xFFFE, RESET_VECTOR */ (tpl_it_handler)tpl_reset_handler -}; - -/* End of file tpl_interrupt_vectors.c */ diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_invoque.S b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_invoque.S deleted file mode 100644 index 00c96f3cd..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_invoque.S +++ /dev/null @@ -1,337 +0,0 @@ -/** - * @file tpl_invoque.S - * - * @section descr File description - * - * System call user level invoque API. - * - * @warning this file is generated by gen_invoque.sh based on the - * tpl_os_service_ids.h header file. - * - * @section copyright Copyright - * - * Trampoline OS - * - * Trampoline is copyright (c) IRCCyN 2005+ - * Copyright ESEO for function and data structures documentation and ARM port - * Trampoline is protected by the French intellectual property law. - * - * This software is distributed under the Lesser GNU Public Licence - * - * @section infos File informations - * - * $$Date$$ - * $$Rev$$ - * $$Author$$ - * $$URL$$ - */ -#include "tpl_os_application_def.h" -#include "tpl_service_ids.h" - -#if WITH_SYSTEM_CALL == NO -#error "This file should not be part of your project since WITH_SYSTEM_CALL is not defined" -#endif - - -#include "tpl_assembler.h" - -#if WITH_MEMMAP == NO - -#endif /* WITH_MEMMAP == NO */ - -#define API_START_SEC_CODE -#include "tpl_as_memmap.h" - - -/*============================================================================ - * Service GetActiveApplicationMode - */ -.global GetActiveApplicationMode -.type GetActiveApplicationMode, %function -GetActiveApplicationMode: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_GetActiveApplicationMode, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - -/*============================================================================ - * Service StartOS - */ -.global tpl_start_os -.type tpl_start_os, %function -tpl_start_os: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_StartOS, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - -/*============================================================================ - * Service ShutdownOS - */ -.global ShutdownOS -.type ShutdownOS, %function -ShutdownOS: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_ShutdownOS, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - -/*============================================================================ - * Service EnableAllInterrupts - */ -.global EnableAllInterrupts -.type EnableAllInterrupts, %function -EnableAllInterrupts: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_EnableAllInterrupts, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - -/*============================================================================ - * Service DisableAllInterrupts - */ -.global DisableAllInterrupts -.type DisableAllInterrupts, %function -DisableAllInterrupts: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_DisableAllInterrupts, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - -/*============================================================================ - * Service ResumeAllInterrupts - */ -.global ResumeAllInterrupts -.type ResumeAllInterrupts, %function -ResumeAllInterrupts: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_ResumeAllInterrupts, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - -/*============================================================================ - * Service SuspendAllInterrupts - */ -.global SuspendAllInterrupts -.type SuspendAllInterrupts, %function -SuspendAllInterrupts: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_SuspendAllInterrupts, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - -/*============================================================================ - * Service ResumeOSInterrupts - */ -.global ResumeOSInterrupts -.type ResumeOSInterrupts, %function -ResumeOSInterrupts: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_ResumeOSInterrupts, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - -/*============================================================================ - * Service SuspendOSInterrupts - */ -.global SuspendOSInterrupts -.type SuspendOSInterrupts, %function -SuspendOSInterrupts: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_SuspendOSInterrupts, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - -/*============================================================================ - * Service CallTerminateISR2 - */ -.global CallTerminateISR2 -.type CallTerminateISR2, %function -CallTerminateISR2: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_CallTerminateISR2, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - -/*============================================================================ - * Service ActivateTask - */ -.global ActivateTask -.type ActivateTask, %function -ActivateTask: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_ActivateTask, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - -/*============================================================================ - * Service TerminateTask - */ -.global TerminateTask -.type TerminateTask, %function -TerminateTask: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_TerminateTask, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - -/*============================================================================ - * Service ChainTask - */ -.global ChainTask -.type ChainTask, %function -ChainTask: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_ChainTask, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - -/*============================================================================ - * Service Schedule - */ -.global Schedule -.type Schedule, %function -Schedule: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_Schedule, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - -/*============================================================================ - * Service GetTaskID - */ -.global GetTaskID -.type GetTaskID, %function -GetTaskID: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_GetTaskID, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - -/*============================================================================ - * Service GetTaskState - */ -.global GetTaskState -.type GetTaskState, %function -GetTaskState: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_GetTaskState, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - -/*============================================================================ - * Service CallTerminateTask - */ -.global CallTerminateTask -.type CallTerminateTask, %function -CallTerminateTask: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_CallTerminateTask, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - -/*============================================================================ - * Service GetResource - */ -.global GetResource -.type GetResource, %function -GetResource: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_GetResource, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - -/*============================================================================ - * Service ReleaseResource - */ -.global ReleaseResource -.type ReleaseResource, %function -ReleaseResource: - /*------------------------------------------------------------------------- - * Load the service id in REG_SID (R12 or R15, depending on the ABI) - */ - mov #OSServiceId_ReleaseResource, REG_SID - /*------------------------------------------------------------------------- - * Does the system call - */ - br #tpl_sc_handler - - -#define API_STOP_SEC_CODE -#include "tpl_as_memmap.h" - - -/* End of file tpl_invoque.S */ - diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_irq_handlers.S b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_irq_handlers.S deleted file mode 100644 index 829f045e3..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_irq_handlers.S +++ /dev/null @@ -1,128 +0,0 @@ -/** - * @file tpl_irq_handlers.S - * - * @section descr File description - * - * Generated from application checkpoint - * Automatically generated by goil on Wed May 12 23:14:32 2021 - * from root OIL file fft_lea.oil - * - * @section infos File informations - * - */ - -#include "tpl_assembler.h" -#include "tpl_asm_definitions.h" -#include "tpl_kern_stack.h" - -.extern tpl_kern -.extern tpl_kern_stack - -#define OS_START_SEC_CODE -#include "tpl_as_memmap.h" - -/*============================================================================= - * After en interrupt on a CPUX, the process stack is as follow - * - * +----+--------------+ - * 0 | PC | SR | + 0 - * +----+--------------+ - * 1 | PC | + 2 - * +-------------------+ - * - */ - - -/*============================================================================= - * IRQ Handler for COUNTER with source vector TIMER3_A0_VECTOR - ******************************************************************************/ - -.global tpl_primary_irq_handler_TIMER3_A0_VECTOR -.type tpl_primary_irq_handler_TIMER3_A0_VECTOR, %function - -/*----------------------------------------------------------------------------- - */ -tpl_primary_irq_handler_TIMER3_A0_VECTOR: - -/*----------------------------------------------------------------------------- - * -1- Before doing anything we have to save the volatile registers, which - * are r11 (r11 is not volatile in the MSPGCC ABI but is volatile in GCC - * compiler for MSP ABI. Anyway, in order to limit variabilility, r11 is - * saved for both ABIs) to r15, because they will not be saved when we will - * call the underlying C function. - */ - pushm.w #5, r15 /* Push r11, r12, r13, r14 and r15 */ -/*----------------------------------------------------------------------------- - * -2- Switch to the kernel stack. - */ - mov r1, r11 /* Copy the PSP in r11 */ - mov #tpl_kern_stack + TPL_KERNEL_STACK_SIZE, r1 /* On kernel stack */ - push r11 /* Save PSP to kernel stack */ -/*----------------------------------------------------------------------------- - * -3- Init the NEED_SWITCH/SAVE in tpl_kern. - */ - mov #tpl_kern, r11 - mov.b #NO_NEED_SWITCH_NOR_SCHEDULE, TPL_KERN_OFFSET_NEED_SWITCH(r11) - mov.b #NO_NEED_SWITCH_NOR_SCHEDULE, TPL_KERN_OFFSET_NEED_SCHEDULE(r11) -/*----------------------------------------------------------------------------- - * -4- Call the underlying C function. - */ - call #tpl_tick_TIMER3_A0_VECTOR -/*----------------------------------------------------------------------------- - * -5- Switch back to the process stack - */ -tpl_direct_irq_handler_exit_TIMER3_A0_VECTOR: - mov r1, r13 /* get a copy of the KSP to restore it later */ - add #2, r13 /* and forget the pushed PSP (not useful anymore). */ - pop r1 /* get the saved process stack pointer back */ -/*----------------------------------------------------------------------------- - * -6- Check the context switch condition in tpl_kern. - */ - mov #tpl_kern, r11 - tst.b TPL_KERN_OFFSET_NEED_SWITCH(r11) - jz tpl_TIMER3_A0_VECTOR_no_context_switch -/*----------------------------------------------------------------------------- - * -7- Save the rest of the context. - */ - pushm.w #7, r10 /* Push r4 to r10 */ -/*----------------------------------------------------------------------------- - * -8- Now the stack pointer is saved in the dedicated location. - */ - mov &tpl_kern, r11 /* Get the s_running slot of tpl_kern in r11 */ - mov @r11, r11 /* Get the pointer to the context (SP alone) */ - mov r1, @r11 /* Save the stack pointer */ -/*----------------------------------------------------------------------------- - * -9- Call tpl_run_elected with argument 1 (aka save) after switching back - * to the kernel stack. - */ - mov r13, r1 /* Switch back to the kernel stack */ - mov #1, REG_RETARG - call #tpl_run_elected -/*----------------------------------------------------------------------------- - * -10- tpl_run_elected has copied the elected process slot of tpl_kern to the - * running slot. We load the stack pointer of the new running process. - */ - mov &tpl_kern, r11 /* Get the s_running slot of tpl_kern in r11 */ - mov @r11, r11 /* Get the pointer to the context (SP alone) */ - mov @r11, r1 /* Get the stack pointer */ -/*----------------------------------------------------------------------------- - * -11- Now, the context of the new running process is loaded. All registers - * are popped. - */ - popm.w #12,r15 /* Pop r4 to r15 */ - reti -/*----------------------------------------------------------------------------- - * -12- We get here from stage 6. Restore the volatile registers and return - * from the interrupt handler. - */ -tpl_TIMER3_A0_VECTOR_no_context_switch: - popm.w #5, r15 - reti -/*----------------------------------------------------------------------------- -*/ - - -#define OS_STOP_SEC_CODE -#include "tpl_as_memmap.h" - -/* End of file tpl_irq_handlers.S */ diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_os.h b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_os.h deleted file mode 100644 index 404dcb9da..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_os.h +++ /dev/null @@ -1,269 +0,0 @@ -/** - * @file tpl_os.h - * - * @section File description - * - * This file gathers system call declarations. - * - * Generated from application checkpoint - * Automatically generated by goil on Wed May 12 23:14:32 2021 - * from root OIL file fft_lea.oil - * - * @section File informations - * - */ - -#ifndef TPL_OS_H -#define TPL_OS_H - - -#ifdef __cplusplus -extern "C" { -#endif - -#include "tpl_os_definitions.h" -#include "tpl_os_application_def.h" -#include "tpl_os_error.h" -#include "include/DSPLib.h" -#include "serial.h" - -/*--------------------------------------------------------------------------* - * os system calls. - * corresponding kernel implementation is in files - * tpl_os_os_kernel.h and tpl_os_os_kernel.c - * tpl_os_os.h and tpl_os_os.c - *--------------------------------------------------------------------------*/ -#include "tpl_os_os.h" - -/* - * GetActiveApplicationMode - * - * This service returns the current application mode. It may be used to - * write mode dependent code. - * - * Return value: - * The active application mode - */ -FUNC(AppModeType, OS_CODE) GetActiveApplicationMode(void); - -/* - * ShutdownOS - * - * The user can call this system service to abort the overall system - * (e.g. emergency off). The operating system also calls this function - * internally, if it has reached an undefined internal state and is no - * longer ready to run. - * - * error: The error that occured - */ -FUNC(void, OS_CODE) ShutdownOS( - CONST(StatusType, AUTOMATIC) error); - - -/*--------------------------------------------------------------------------* - * interrupt system calls. - * corresponding kernel implementation is in files - * tpl_os_interrupt_kernel.h and tpl_os_interrupt_kernel.c - *--------------------------------------------------------------------------*/ -#include "tpl_os_interrupt.h" - -/* - * EnableAllInterrupts - * - * This service restores the state saved by DisableAllInterrupts. - */ -FUNC(void, OS_CODE) EnableAllInterrupts(void); - -/* - * DisableAllInterrupts - * - * This service disables all interrupts for which the hardware supports - * disabling. The state before is saved for the EnableAllInterrupts call. - */ -FUNC(void, OS_CODE) DisableAllInterrupts(void); - -/* - * ResumeAllInterrupts - * - * This service restores the recognition status of all interrupts saved - * by the SuspendAllInterrupts service. - */ -FUNC(void, OS_CODE) ResumeAllInterrupts(void); - -/* - * SuspendAllInterrupts - * - * This service saves the recognition status of all interrupts and - * disables all interrupts for which the hardware supports disabling. - */ -FUNC(void, OS_CODE) SuspendAllInterrupts(void); - -/* - * ResumeOSInterrupts - * - * This service restores the recognition status of interrupts saved by - * the SuspendOSInterrupts service. - */ -FUNC(void, OS_CODE) ResumeOSInterrupts(void); - -/* - * SuspendOSInterrupts - * - * This service saves the recognition status of interrupts of category 2 - * and disables the recognition of these interrupts. - */ -FUNC(void, OS_CODE) SuspendOSInterrupts(void); - - -/*--------------------------------------------------------------------------* - * task system calls. - * corresponding kernel implementation is in files - * tpl_os_task_kernel.h and tpl_os_task_kernel.c - *--------------------------------------------------------------------------*/ -#include "tpl_os_task.h" - -/* - * ActivateTask - * - * Activate a task - * - * task_id: The identifier of the task to activate - * - * Return value: - * E_OK: No error (Standard & Extended) - * E_OS_LIMIT: Too many activations of (Standard & Extended) - * E_OS_ID: is invalid (Extended) - */ -FUNC(StatusType, OS_CODE) ActivateTask( - CONST(TaskType, AUTOMATIC) task_id); - -/* - * TerminateTask - * - * Terminate the calling task - * - * Return value: - * E_OS_RESOURCE: The calling task still occupies a resource (Extended) - * E_OS_CALLEVEL: Call at interrupt level (Extended) - */ -FUNC(StatusType, OS_CODE) TerminateTask(void); - -/* - * ChainTask - * - * Terminate the calling task and activate task task_id - * - * task_id: The identifier of the task to chain to - * - * Return value: - * E_OS_LIMIT: Too many activations of (Standard & Extended) - * E_OS_ID: is invalid (Extended) - * E_OS_RESOURCE: The calling task still occupies a resource (Extended) - * E_OS_CALLEVEL: Call at interrupt level (Extended) - */ -FUNC(StatusType, OS_CODE) ChainTask( - CONST(TaskType, AUTOMATIC) task_id); - -/* - * Schedule - * - * Call the scheduler - * - * Return value: - * E_OK: No error (Standard & Extended) - * E_OS_RESOURCE: The calling task still occupies a resource (Extended) - * E_OS_CALLEVEL: Call at interrupt level (Extended) - */ -FUNC(StatusType, OS_CODE) Schedule(void); - -/* - * GetTaskID - * - * Get the id of the calling task - * - * task_id: A pointer to the var where the identifier of the task will be - * stored - * - * Return value: - * E_OK: No error (Standard & Extended) - */ -FUNC(StatusType, OS_CODE) GetTaskID( - VAR(TaskRefType, AUTOMATIC) task_id); - -/* - * GetTaskState - * - * Get the task state of a task - * - * task_id: The identifier of the task - * - * state: A pointer to the var where the state of the task will be stored - * - * Return value: - * E_OK: No error (Standard & Extended) - * E_OS_ID: is invalid (Extended) - */ -FUNC(StatusType, OS_CODE) GetTaskState( - CONST(TaskType, AUTOMATIC) task_id, - VAR(TaskStateRefType, AUTOMATIC) state); - - -/*--------------------------------------------------------------------------* - * resource system calls. - * corresponding kernel implementation is in files - * tpl_os_resource_kernel.h and tpl_os_resource_kernel.c - *--------------------------------------------------------------------------*/ -#include "tpl_os_resource.h" - -/* - * GetResource - * - * Get resource res_id. As a result, the priority of the caller may be - * raised to the priority of the resource if the latter is higher - * - * res_id: The id of the resource to get. - * - * Return value: - * E_OK: No error (Standard & Extended) - * E_OS_ID: is invalid (Extended) - */ -FUNC(StatusType, OS_CODE) GetResource( - CONST(ResourceType, AUTOMATIC) res_id); - -/* - * ReleaseResource - * - * Release resource res_id. The priority of the caller returns to the - * priority it had before getting the resource - * - * res_id: The id of the resource to release. - * - * Return value: - * E_OK: No error (Standard & Extended) - * E_OS_ID: is invalid (Extended) - * E_OS_ACCESS: Attempt to get a resource which is already occupied by - * any task or ISR, or the statically assigned priority of the - * calling task or interrupt routine is higher than the calculated - * ceiling priority (Extended) - */ -FUNC(StatusType, OS_CODE) ReleaseResource( - CONST(ResourceType, AUTOMATIC) res_id); - - -/* - * Objects declared in the OIL/ARXML file - */ -DeclareApplicationMode(std); -DeclareTask(fft); - -#ifdef __cplusplus -} -#endif - - - - -/* TPL_OS_H */ -#endif - -/* End of file tpl_os.h */ diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_service_ids.h b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_service_ids.h deleted file mode 100644 index dd7ee84db..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_service_ids.h +++ /dev/null @@ -1,199 +0,0 @@ -/** - * @file tpl_service_ids.h - * - * @section desc File description - * - * Header of the service ids for application checkpoint - * Automatically generated by goil on Wed May 12 23:14:32 2021 - * from root OIL file fft_lea.oil - * - * @section copyright Copyright - * - * Trampoline OS - * - * Trampoline is copyright (c) IRCCyN 2005-2010 - * Trampoline is protected by the French intellectual property law. - * - * This software is distributed under the Lesser GNU Public Licence - * - * @section infos File informations - * - * $Date$ - * $Rev$ - * $Author$ - * $URL$ - */ - -#ifndef TPL_SERVICES_IDS_H -#define TPL_SERVICES_IDS_H - -#include "tpl_config_def.h" - -/*============================================================================= - * service ids - */ - -/** - * @def OSServiceId_CallTerminateISR2 - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #CallTerminateISR2 - */ -#define OSServiceId_CallTerminateISR2 0 - -/** - * @def OSServiceId_SuspendAllInterrupts - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #SuspendAllInterrupts - */ -#define OSServiceId_SuspendAllInterrupts 1 - -/** - * @def OSServiceId_ResumeOSInterrupts - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #ResumeOSInterrupts - */ -#define OSServiceId_ResumeOSInterrupts 2 - -/** - * @def OSServiceId_EnableAllInterrupts - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #EnableAllInterrupts - */ -#define OSServiceId_EnableAllInterrupts 3 - -/** - * @def OSServiceId_SuspendOSInterrupts - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #SuspendOSInterrupts - */ -#define OSServiceId_SuspendOSInterrupts 4 - -/** - * @def OSServiceId_ResumeAllInterrupts - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #ResumeAllInterrupts - */ -#define OSServiceId_ResumeAllInterrupts 5 - -/** - * @def OSServiceId_CallTerminateTask - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #CallTerminateTask - */ -#define OSServiceId_CallTerminateTask 6 - -/** - * @def OSServiceId_DisableAllInterrupts - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #DisableAllInterrupts - */ -#define OSServiceId_DisableAllInterrupts 7 - -/** - * @def OSServiceId_ReleaseResource - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #ReleaseResource - */ -#define OSServiceId_ReleaseResource 8 - -/** - * @def OSServiceId_Schedule - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #Schedule - */ -#define OSServiceId_Schedule 9 - -/** - * @def OSServiceId_GetTaskID - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #GetTaskID - */ -#define OSServiceId_GetTaskID 10 - -/** - * @def OSServiceId_GetActiveApplicationMode - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #GetActiveApplicationMode - */ -#define OSServiceId_GetActiveApplicationMode 11 - -/** - * @def OSServiceId_GetTaskState - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #GetTaskState - */ -#define OSServiceId_GetTaskState 12 - -/** - * @def OSServiceId_TerminateTask - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #TerminateTask - */ -#define OSServiceId_TerminateTask 13 - -/** - * @def OSServiceId_StartOS - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #StartOS - */ -#define OSServiceId_StartOS 14 - -/** - * @def OSServiceId_ShutdownOS - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #ShutdownOS - */ -#define OSServiceId_ShutdownOS 15 - -/** - * @def OSServiceId_GetResource - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #GetResource - */ -#define OSServiceId_GetResource 16 - -/** - * @def OSServiceId_ChainTask - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #ChainTask - */ -#define OSServiceId_ChainTask 17 - -/** - * @def OSServiceId_ActivateTask - * - * @see #SERVICE_CALL_DESCRIPTOR - * @see #ActivateTask - */ -#define OSServiceId_ActivateTask 18 - -/** - * @def SYSCALL_COUNT - * - * Number of system calls - */ -#define SYSCALL_COUNT 19 -#define SYSCALL_COUNT_ISR1 8 - -#endif - -/* End of file TPL_SERVICES_IDS_H */ - diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_static_info.json b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_static_info.json deleted file mode 100644 index 414085653..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea/tpl_static_info.json +++ /dev/null @@ -1,32 +0,0 @@ - -{ - "alarm" : [], - "event" : [], - "isr" : [], - "resource" : [], - "task" : - [ - - { - "ACTIVATION" : 1, - "AUTOSTART" : "true", - "AUTOSTART_S" : - { - "APPMODE" : - [ - - { - "VALUE" : "std" - } - ] - }, - "KIND" : "Task", - "NAME" : "fft", - "NONPREEMPTABLE" : "false", - "PRIORITY" : 1, - "SCHEDULE" : "FULL", - "STACKSIZE" : 100, - "USEINTERNALRESOURCE" : "false" - } - ] -} \ No newline at end of file diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea_exe b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/fft_lea_exe deleted file mode 100755 index ec03a2b8c247b2707e19d8c3e6417d3acb60b965..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1073404 zcmeFa3w%`7xi`G_T=z`&Op=j=TqemtB18x`8zI1unaP9@!sG%`L<~1U>IJX0UJ)`W z0>+@kQEMeywU^V^dfH%nTEEs>0c)-0Sio9uh_`Aj^(cy`rAo>B|F5<8WD-H`d3(4+n1o9cIazy|6_kZyWJQNk* zy4PtvI~R9or|z`Jr$mp<>-oHf^`+alDaWLf1))Rqgr%??(5bZB@`7XZwBesvz_1 zal$fU{ejxKOHqDvuF(?i7oEQAXT8yts0?;B11|D=axLgxiP0H3kE6e?L}@Tshunli ztljDqIU&`eKhRS*wCzQ)ExEg!?P6zqf{Dkdt{n+Y>_})3NwA_NRd@f*ainvJeR1+X83bSU`FuvRVg!I({qS}-}r z(xaH!p->Oje}KG<8Io9Lj^#e!NEpP2`Tc?F_&zl%Kppj!B-lw+Y(LgVi2Zd_f|&Uj z=iQcL#bTJ}rrxb5(pvqB?ke`z(xOcXKtUp&DcB zINX!l+|s;%M>AJp5L<|Vbow)}?Q{uJ-V%&xOKwNJKk(qT9T@$NxJ@wi!`VBq!bz+_ zL6|*++j2YBBs$)=3(lyKa#t{ytEg%+1V%RmR`UV12NlJ9 zI&KAN+&WSLiQ8_@&k%Sez-9@s%7oe|sMJJzN&^iwNKufaf0u&)bsK>g~z8KG_6rG0z2f4nT29 zcm`sAKynBJPnYmx-}LqZg78%K_6Cr4gnD}o^rlrN;vCbIwh_WR5?rd&z>EMQW+d5S z!>CC^Y9vYQi)6D`Obl1WI&8uD4)I#TCH7*cx-ok?_!7B~ufr;R2Qc=7`nW4t$`<>< zn~;lj(L^tD1)g5)w!p639IwdDK@Zq>?hv23p^kV}uU6^9F1OlGh%K>|08W3PsliD7 zw4D3cz&(%US~){%#VV|l%()`W6VH{^h2{ zF-Iilf_mh-dgTZLVoP~%Zw^LatK1w>+-`&@NUtwslax5k3B|p)670GDGTc1dQ(5DimA2o=9Pk5ltDYQ^Z{>+ zx6cvsxBBnaLRpZoqk~G9P}%}{%ENW`IO%g=ya?I}rKytQRS8Sl_a?lsQ79FXDVHb$ zr?80!u{P@0K<_;$!`y+o5eIiz6Yd2yLc74T7hC|X(b5CH>JlZO^{QA9Pvh=)CRN4y zkjI(t168RW9J1bnNGBmvoJcv)pN$$qM$bX;Fv4OUq51j>tBAv3j&XNZWoC|H)+68J z2nOg&p?CC(1Z)LCJe{P%>i^ zVkOW|dJvcfhe@dthb*z7M8W0AQ5GWX67{e4^=^|+;dvJR<$^ng)A3$S6u$^Dq#5>PNuGc`uSQ)@`L;IGa8 z4)S$1L&09)Dp!bYv0htziCNG-xaNlFLyn5|2V7007DMa?{=J|dh3`)!SM!6bP3gqm zmf9*ugSCre)>2+^HgNVzoY4+5qeHH_#a@J7KvN?i{t6!TA#41)cxNnUv6m|cd>nGj z)OHL>!^Dr{CjTW(+mI$ij*PTJ-pHA@0h_%kw@eW?;>8xK%n&X~vs@LfIs55>b`pdX zo6?p;y-V6igIa~XLTMCx>x!Y3uZi{KN=vFsS|E_wJ5qMx3H1j;QKh@Ez8g9z^Rq&< zo{FXA(;s*p8sf3J_=WvMN<&YOQ2l`y7b;yurKxxH2PT{P$*8Y%)ak*FR8B={ogbVj zCup=7uaJ66>%2%CX4+msJJ1%UMnnk2ac5i)cE!C227(_U2Yf96t8WBs9tZ3km*iL{ z8ZqrFTZq;tW7sdIKE@GJi?aGrc8eMVu{BbT3ib^x7bBY-8;Yp`%ri&gz}!8!a3AWk z?zp@HjH{62YBXLjQlp{2Ie@V%=uOOMhsLwAs|lFTb73T2}tVCTa92T z>X)IunkO5e6N^f4=;?Xv$%5xfH&NYhbzPaS_OI@VI{GS%m2jc_={s`{gkgH7g4aNoMo(;$8x$o)`|_%AUn zO6u=wj=XuFwtI$Se4?GiSt{Qy?Ey>w{93W%hF7vA9BV_ki!&g&M;p7z6Nvzhk$w4mskHAxb6E39M(# z8@vsDS(w!z{0~{clM?%)<}JvzRqw^TvCX_8v(EMsThQAC*oxFk=wk{6Dc3MMNrywM zdgLh2U5CbXV;kBQ&3&cSR$Tc-tkj7uenPkG{7 zyg#0+8g2`US<#0UvyDm@h)3!e_d>rVZmd%zVbUt4{zlI<<*hw_>OK{tY-Ellwfh5a zErhpG=AqV}L(q>^3)cBS=6A&xI39}TXi-P7uFetOlOwtkb;t>c1r8JXo;_&yabzGe zXuo47T4-H6ps8^`DvP6PKJ{MMSiqXJujb&sc3s@pj(WW=)O#O$*0QTdb#0GUlwj_q zRl~i1U%O3g-+C$X{#-sQx+oZqilDE@-#iPy;b`a^{ejXm*Vgq1j-07{^ojTqXk_F1 zx)R@XqHeS!yDRZ+=R?tU`*-lng)e_+{66P)v=qV#t+6W66S%KkpbzH!rMy3obM`<) z2y!Xv!uMfBguGk})~(XQhmH(%C042U9y?}+@zrMjY7MjWt*Ev(S|F-=*TBvqFKJv< zl@N&$XI;B!owS^ywy2LrMr{FVP z3HHPMdNW_8W+9a@YgJ{`nu2@-`Ks2qj9M0~9Kb3?ext0#)JUY7(y1J?jT)T?sX=(# z>*$;Ats8?C;yS}(!#X>p1!GHV`!?}`xyt0tt$A6oDbbp;tia4@F!<|uj`(#v7ZT^5 zGkmcL?NeehHK6*yjR``Rl?vX^~5aB%Uyub@qA3wFHKZ+?Xl|I-h0gtx*U z)0&6i(DF$ffEPwRGd5*`I7vYqv;vf7104+f=jnyyIQ@a;i}h+aIok4YdvyL4Z4X6x2G&vMu&o9C(>mIj zaM(KPY_^VFDuozQYtpG;-DEAet1B^C>ko8a(NUMvK@ZE+#R>4GDV<(usc7+x)wVxy z+lpjd=jj)?1^17rs!B9tZa7&t>! ze;{x%IS+j+@YepF5GDSZ7-7Yxw0S|fUd)sWk|9@&7Wp^}FTz>)XmK85n-POM1Aoa- zGPFY9p1b41-jMdA+>^KGj`~q=X!{wtCxeLjm;I}V$etS&zrG`icvQ51jCg)b{Kupi z@?&DkIWf_GT};gAj-gIWbbJG4-;arPkD&ZlF>&v+sPlSE?0gsXK8}eG>~&&>w@!Q| zrw(xH#E6nQ(NSI}zI93+VAhGLQ|rXKaGm&NT^-=p-47K0itrVLixI%KMLj|u!YK$x z5ym2bNW@-*|3u*F|H}xEA-sfe4#MpSUqc8ZfKiLB2pr)tg!u?75x$FX0O6+yzd%@l z@MDAu1ok}x0YXhc$O&v#@hSp6wsR3CA{<2UAP|pR5n!xK_$B!LlbPO*U*i2Q2(<`r zBXl90hCtj2hy8Pm8xa18z?HfbVGP0#5tbpWLm>Xs5qc4RXT~{C5D+r|L;SKW;jqn3 z2tPyMd{!dNL?}Zzg78&@0R)bpw;k?8$VPY%VG=?v0^2V}09}cT5ZIQ#QxS;IZxFZ^ zzeeCZaPC?W8W17~s}b%&Scbs4ntgxPj4c;k8mBrECe?K$N3k8ZiEF0 zoL|DY5aDA4!sOf%r!5Fe5a>Z)h+s#Uj6gh&A`mXyeHY;n0`YzXA%t)j0_Tlm;=27W zgf|d4$E1g)2yY=2BM|<%2&AhU5QxJFgnJRrLx>^}mjQ(55jqi?5x#`LF;78onIR9q z#PulzmVXD~R|v}yUPmC#k0JCR5OQier)J`iRlwo7W$B{?_KWuP>`Q5qBgKac3eNeQdym=X()%Vtjab+m?7F z+WB+UvNL6*yyD438ufa@nC(dz4c>$?Co5qz`sVV)u0K$B7tg~6ak}@)|N3}T+rM`__g?vr z9uK_Orc~~{j3;1}?3Bt%s;+{6!_u~c&?9;O<^I^1lHxG6N?OWeN|bk8#|et^m|L19 zH7|8u@Ig7XPM(O+BM)mcec~RhJ4c&cXym|xJ4}m>X{L+~Mkb->fSSKa@xa4_n) z0))o1TG~`y@o^=v6rS*s!3IEIflp}-_FV1HL?R-a={)t=Tl^Bb{dC(uw zg>iJmNyFHcR=xyngt*Rrg z;pR@q;TBmQHg6DRC)UFol!Wk7XV_dP&b%+~>oHyqztMsfq7Ili#-|_qO!WYbE~5vg z2773gmWI`XBXI?Ka5kT|%c%FwHeUV&Bx zawV=rPwwVvyNm|oxliv0Bm6`^D(^)7fSZ|f##;e6Z@`TJqse&b`285ixL?-7TG$ls z58QfQ5UWkj+lkcHRUC208+>x**3^9&UeCusmpi?BV$oqw^YmTH^G*9?=NH$){=g~4 zsw7TWcmrUGojwWWf#7^CajP`;PTdHE*WKX_?8?gV=BTH& zaOj@`7=F`*kLwh^TKX+lZUT~(?b4WJa4g8oo`9CKGY=D4c(9MYRdho z_Tzmio%9pkj8j{CczbjMez|9{x6UK9rRVbuJacd2HqEfTiPQ06d((^dub)p}ApMm* zz5A!kog8aA4&9L#;yenpXryrW6><2`A+wBF)q)A|)E>lY^6ru@a90+*czc+BW%}O? z@L%3NUE!$CjK?bi5W` zFi`7-g!8)#=~v36S^X0BQubcFvk4^r&PCoE&TBXW!7thOddMy!jG!d*PqEWO8iAadrvrQGp(C z>jb<=oiQld=X^rHz^dR0+Q%6T&Qx$q88najlICyuoHRctgO3*h2JS1wpJ;DiwWcC z#s5`m@4UpK_Gwak`tP-8Ms;QGrLM$IM^&sV@g&Zkb~^@dZkfBy)Ls3FrH5%n4BiIW z`9*6l;nZ1bu>zK+Dc~{Ho#VYTxZNb{!3i<>#;N}x!-0AN^ z=k}V|o_g6Dtlz1ZS#px63H^b`R?@1xHU5|r8oV>Sr&Dw#9&@S_ra%YZym-P)ohnmL z%6jy>Kjx(7$U6kQnbc92DB&(Knp+BtT;Dssp6d^l3H}<*TnR^*wk^;1I_jEBcy9Zb zv23#+XBSl^oMqDU&P1XlSofln=S(jWzP$NF40W8Tsa=SBRSD4Y<-Eykq&}4AKg2`b zGQ)cvxU0J(o{gYxbGdPTo-GpbU=piM{+hCh({SeO$0>VrLfz8X(d-vEBU)fAIU1$^ zu~PET>!Z{xuHD8tLR*_IIVr5_D@@cJ4MG^K zwkzes45}dG@p=e6h$F!3v1)MJy3I+T$@=~8~Af8yBl$OG1n%#!LPev1@ZRy?C`8;e$;pS zL#Ue{b%bU`-}trfw(nND>Zcw$G|&<+g(mE*;jPxwLq=*r#kA;0x70>Evm?=8Md*dy z6kzXDx9-Wdhfdr2tH@ZhM!Y@}J#Ct*L7M3Xuj__4QRUP|Rr#hsH@JH@d}p-Eqy(0d zhT3DL^hUrlEg`9XYNPr$BGDTrZVDU^rYd_jGA;Vxr{XvYII_m4;YjMUY7Anz9awIM zR{UV(^Wvr8D9m1pU|r(A+viWmy2QC>I4#SQ*ZVaYMh7cXpPzT+LJ4S~`sS@F6jRvKtfy@eLfle>1o?q|sNWPQ`BNZm&OGw1K$YpdlfE6TFwWkbN3(3_{D7t)qBk{bgY$Iu-A?Ci!HWo?Td z2Vtl(Yj)X=#(cBoO#!QR2(?EGV~(%!21)y!sFh4qAa{(YiEg}={CIP~ zfV5o?t#x~JUkAKS;M4xOz9!m%K~UP#b%SrpV88HvE>MQ8rc*?({t2kUCirxT4{H65 z*>kNOWAP!2mM2Fayo$XAVF z)Qy->oKPKZn-{cPj_Qn)Y2W;!7a~4qI3S0m~;nDlbq?# zSKx-rlp6xXuscv2UHd^Kn!-EDpiMJJ^F^Y2rVZ9ukrj#lXhvp@?>-QTj+TJ zEQzTwlGGyk&qud7LFwV>*J_PBifX2A{aURfR2%);*CzI!R5^o`HamNcC8xXP>L%i| zqMecM0HriN$KhyW#JJ;Rv~7&oL-6vY%0j2aJni0w8Oy~$4Png9Zc?o_2OJ4kGt(B# z%>nj+C-+RfuVHiGnaJGujOfJp?!9)F(>>6&V}As2X08-z0St>?e77_*EnFaHK3Em6K1Lw~rXOu|fi)>X4-EC&u(E;uh<7@7k z!rqX0wLBOr#R&FK+5ir|0UW$yL2oL(bJg zSF&LY{1o{(ndrp`$6=g!_14W641`3c{)1GW}h~n5dF>|GS#}fPw zZwWze`GqSswJj`?4OK#KC;?rRv5?xHKbKPW7BWH={O8y2l|CFIc z=r1UG=NE~IqIX45Ohzf*zXOF*W~us=q?;3u9oyWz^B7mB7Uw+vn`%L`+3O>3C|OK6 z257DT-X0h9J42*G$yAZpTG88%F|CB{2kzGxrxsk+J5IcYF^m(&*X^NF(ASH2FO@!0 z-5i-QO6d>!$G|fNXSo+AJhMo8b9&OZ@#HM0xt8lBKqdFPKoWW}> zZ30O#8*jze2Tq0uj#+(}Sy&cAEUjwzG$BuPl{cj52XX1TQq&QY3s^*noFOP}2 zo_D22hTw~SS%+;k6?a4C#L2gA!hXF8`?UjHptL=E<$VjVgFw%?w^Vy2PQO$wLb7Ta zjT2%Av7@=J){cJU(0Z(EPkiUG`#@8x%Sm4=%coKT)R$pS6+ho7_fh3uJ$1%d|7?}V zeQ50@RX!&I|CMWfG%T{``YTvmkEi?N5Ru!p@1EiU^3^j`;dtP8W$5dVIpw;dF-GKhQUM+f*` zYsr4xf=_)o)>_HYl6P?>D}X2X<)UQbRJ0EX--XHMYQ&(aVW)HF1+mwIy%loA70?lL zLM6SUg|8~v4D1r)#N_CL&R}c?>?l%cQ2Zh?0$R)IuA?`w`4&)qMS8+Sf8 zslye)p3I(aEbD1lKF~AgoPq7QiA$=qWZ|>5UyP6J?a{Jp$ccNjec;4B+Ku3v6Y(|> zzK+ngR-Utf1n<7!V7w?s({xehzo9`yjz)hfmoA9-Rn_6AsCYhB9(L_SFGU<43nFf@UOpms$(oN+-7dJM*hDp$y{U z0QI=U6i}z)6r8cgB~D8A_|MM7iMr7q(6m}{_gwd)k@NFKHT3(5bIUMSRdY(fXK8gp z4+dr`O}te3hJdv*H_aAe6KvY)*d-$(Q`@Jl^fY-E6$08!LX*3zYHkT&Qct)Enzd6w zlz9@Oti#$jK{6;$%#FCS z0$Gq};5#XBw~*{j!mW);i>da80B?$wVU0H`TLidl0H5$Q6Gxsfaz`o+fqRN4t;u=d zEU@V4pYe+s+$)M%_*pL(?;wV>MhoD=th8spP(v(we+of{8ho?tO$=kf+l5_>5ezdpJi zyNEg|Zud4jj~eyH-<9`?!eY8_d#7WNU+wh%?i+qhGJD|JI zHGZi#dlFAX!tgy9U)8JNpJ=kM|*f{Z$hh zmjbVks;X`^LKALvg}!ztzb#;^m>vx-H|9=RKzt_Ldaz;w@UBYzxqMv|-*>=H?GO0B zQHcFtcm%#={Cb++j#Q<7SCKat=YX)tdgr6 z%Uc4VL2#}-^i>hQ9?*QZt*&vTN-L=I55nV}%t46$2LJBtIm6*m8oKsV9+qMxrI>+L z_(}rtGB*0I!q?{{%&KI`Ww@!As;%k9nP&HF_^h$lyZOzCCioVc@cvCA(hdq-IXyZM z@!aFCtlc^gsSedfj}7?0KDp{A@D7M{T~CuQ)jExwC$K9!$Df1ydIuytc#`gd4it+R zx4UYb3EEys^!HGN8s_&ScbR>2zw%o}-S9qjqs`BtA%p&xW?y3E`~*-Qige@FD{-9^ z%U;+G9$ko0dA`_j6I{e94S-xwi23nHb+WZ(z>N`8&610`E?Ec_&1y!oN9 z49a^Texyp_4Otj>-IEOuHoVcVL9b3z5B=iw69z<4xFi-7XU5%kAHN=2Nq?d%Jn>d< zD2yF3A@y9j8t-Juex8$navbob=&8rci=f38%@2uj?a8Kb_-;|9zoAj~O( z&OJ9?0~*)w9$QI`*wx{_h`TNu(D5$uGe)DkMQ?R4)i0rxo6&w&{OyP*an@l^%2T1Y zcv=IyJUMy}y^)bUqEmgjstC1qN31@0i+8=4u{A1kLyUI{Z^{VyU-1J1c3E4L-*Z_B z&)%WV0bffpQ3dLl2w$*Wz_!7fjS*Fnvf+6qpZFY<%{wprCJeo4?y5`*-+j*%(7d{J zKBe>XLk#1sTAr(Tt4jVq4fFGid>nQm-yR_c^EbB?`g3@jUfr1Ygy?N&eR6N%!Z~Nta{EkTw-)~7mIwZl54n$}T9+D@De#n=H zp;b_q;(LqOiQSYAyQLRc{N~qkb-@eF)s^=GfWb$1Q-|d)x+I=`Pf3;BxA0I8tmk)x z@+xTUi_YAzvizIl{!~^CZz#zg?(tMZQlPFk^`~;)T;rP4hehAvdfKFm zLt`!e%Xe7*7~%ZD+sylg(0xfg@=hA~<41QFf&&$RA2r42#o14P;8BchC{>oy%BOve zp85j^?wZn;FXxfmZ#n$L;LzBIazD-kttXVnG1&quyR{nJ@WuPs=TwvS6*sJxsfm&s zPK7VWkle5a+^}H?H>{EMrb=#D&w7#@ezG1~VQ19~iyMwHx#1OGpVGEGgBy-nuDD@Y ztU;8$2Iz6)7ULDlZF(*z;{0R+tV;5~25`fISQz}T7H_@v#-d_0o^=BLgIE*3*w!0M zNMCLXe7U``Hh6=#N28(uo|W0)a!NANH-mG|IA$Ln4@ye;eX%$w2WPYeKiF6yZxhYO z8yYx+T8bTM!<)}7IMaciGT#uVW8XWFQy=$tEP-EGt89)tUZ$QNobMNlQHn48R5ryO zD0RqE@5{WcP&Oa7&9Yu_d{b)HqetifBjp(D(A-Y=8q6($Mbqe0LHwy=ZucH z=XMQNcGmuUSZ*D#wDVDd^ui_atUK7Z0q8+73I2j*@gjIxM^q;7!du;;5%9tIE0ec@ zD&c)KgkG7v2VZ@{Hv;h`LcnN^yO*62cYj^0oE>+bwGgKWT4h7rb@sBjYa2_mJNO<+ z5vX~wZ3!TI(FWc<(B@KG2Tu5jVIuBZx-9OyhxLtD${+`p*_Oh4O&nX|#z-ZiBL?9OyA2^g-`g1?CZNI``2-8G?o|8hfHbY;VU&bE-fb8$ALZu@Undar%&~ zUkExX5~oYA-$2=f-t#JXvyu5lv4tu(dqVG5Dm`<~!Yp~dDpzE72WG**y0yf89he_b z0d%idvKy9RJlR;aMBKk@QQVKYX^b1sPl_$Gx##kYHe;FG=eTjKRgZjzniruKN(yX_ z)4EjiOZo%sWgT%JU;x_wGSDBPmr3dy3ZK-6xre4Izm^L9kNxPlW!Vw`dSv7e@^HEU zy&TZV*?69y=Et(6d0t7m%QH)T4&SpIA5%5l@;yA#$q2x@I3nk!X`#4kYv;h2(6oM` zmBWLCH(8*62lrx!?4>uUup)a-q^(mdiBCg4t*SZh1D*RMof``=bC{u)xVv>4ZVzBq z63M0DeRCE;dtVGMV+Xz#u~bTy1(LrkfEV+f+j(=9{B$Un1doG8itmKoXYub(a(V9% zE^kO#KrTNLls}ZqyCs*;7re1q0Nz^&9!#pGFDo1k<1PZJ%ANX;A-w)Ae7|E*?oeN* zCz6_6KzfVujZVb#!MBJhc_Y6vlATzKFAtoJ^>tQ-+i}OD!k2Qx0?tagL;jRjVYE)h zS2NGHy%)*8+g6#q#dzs#`x5&hNVz7QI6JCgJN6hYi=l_f_!eJF(HkwG`oK0XY;?>x zZXzlTWoZ3u+*r)c^}V+=?!)bo;k9SA8y&vX(elZ$TE;H&r#?nJdtO$;4@=Z&%t~pY z$uU`SarPxM+dq;ueYr-Cs;M-$|BfdyQgHn#_BtFVWi#>Htux#Iit=%JK4=o_>RRL1 z;(Wr3x6@kUp76S8fiQFKwpXr;;!HG7EgO2s&7Sp?E{5iBq z=cOuuvwGw50qBpMe}(76+mxkT8%+)nWBP{Jdv;50yR@wD{%}%vE39wmjkLaBk3_Z( zh+-3(J@h~w-gA%C^utD|xQm*pxq1(8qqRUA8~(FbUXOI6?EOdtelkK+eOegET6;wF zH`syx#H0kYqOTiOT4dzs&SgpCJEwrKg3N{haWP+p93eg$Yj-+G)fDBd60NA6!89dK748gOUTpY5-R zU2!NIK1!UJ6l5=RyaaFLYy-YCG!Nur6AI6S@m)hW8&vsj-1LP`g*}&q9aBx0h?;)8jMZGvii`N4L3m8*`lh z?t0qaFgE7?4NpB5gEwlSrnoEax?x$|iFj+=)8Oe|9CtzcX^LmRh?1L6$I57-`nb2j zdkeIoyC}UKuVlruHf3$l_j{i89>{ubZ8U=Yy`Ya?eSNe zCbE{Ej&Tj(t}OLVwFZN-w+?r`2JHUZ8fqwa4JmiahR9eCdUb~>b=liA^!AtW$CtU5 zyhU$iRlV-Y>b3#9CG&Shtk`hrU)?4g??me1Z?g34Be*R$;QmWwah|)mGEoScA~!n& z)Rr~-I?#s;w!FWI-`HA`josz$NVu`njhs!W=}XNCkqi1>^u5IUZU2IOM-ItxKf2A6 z__4Gqr$)7-S#!^}Eskf&wevKe1^veZ{*{P(&sq}qBA42+uVsmCk-_q2lQzLSxCvk0-UQ8j6KH-@t08toW^EmCj{>K|cQs!$ zUZREiFW?#f7CG&qlPbOn>~Q0*)!U-*@%N>qtfR;6&fcD1TsB``1yvhUH`re%-NpSb0mm`Z|-zkzK?u&7)nCAD z&pF~>6Us+`UR1fG+olFq;P4_7^kPFDzpY!d;4Pga#KXu_)%=c!WVyl_QJhUd_e{fc z-Dum4PY|(Ak)xClT_(iM+KuTk*3QLk7u2y}S~MC$9{+ZtJdEE#9BYswRsue(Ptrc; z@+c5LhITsQ#GPqZ6TbSD#?9*p5h3JT<>PST+=sfVAD1I@?b!Yal#gM1IiQ?Rw0|do z?>4c$EDtz-i#XvQ4@dTSuN^QU!?+*Ju{lPYZLIQlP+p%dcR8ZN$|vLOnDDLk9J@6p z!jGbSL`FI5ei}~Iz;?Uy`%hEH~Q(@yqguQBDS8 zl^0~}U6%jubRnKZU8{Vj+5SX*2HmjBRtT}2ZRBtr4$iSfV=T`(TYZ@@fqbTKL;Zck zLDtVvG_}dO(RG7+gRVL*ay&`Ia#R)D2JHrs>sp`dUYDz1pX*th>*W{UI3~j5S1-91 zs;S|yWXPv{`5=s6#8D)y9Pt0o!Y@mH;JIJ4M()`IldzL>4!Gs^V zrIIiZbMqlso&9rIM*^`+0jG51KUPNWaiqtwU(k2x<>=J;>1-E80D z=yBfU>UNvxDwgk8Dd-nBiCklSu5Vqg|N7kQwa3GWv~V6^TYnBlFz@mQ!?en8Mc4QjL!M!Hw*cv~F?9X>xz>TMytMWODo?qBee!Ubog~+L{Rw#( zj(J7kVj(U^9|}w$ts9((maEZb1KOO3c3A!t%0KVivHnripGX|!+Gg;m$@w=Xzme9B&S)0JA0=kIO#) z7+L>R)c?F=Wc}r+A3`?@EtiA)){-qO??kzSW0G4S$8pRoKOW9(`wrUB4<^@5&9kE} z118I#Liuv!S$%d4D}@2sT@MyI2FQr;ynDr z%cwd0&(_n5+GT~cD6mh!!=dRFGmy163y(2{^JSI`|2&AW9f3A$n^4GcIBf3zIDecY zUC3-^@yx=npv0-RlpFtqp|JfNs;RB6@D8?cIG3TlLw8r9M~Ch#`vS^F06%+qHaoW6 z54`Q;vu6{?kC|~U1e*N|ve5Y?GwSCcV}`2n0yBuVJ*H|LWJW8nw$D`=A2Z{-<;b`r zXA$B~1B>E1A7tWKF%sVq##hzdzbHc;#}{)NQKa{ugrf63tZPFvTO8OsF0hYBnJrb1 z_@xq#?FS%z7Ef|sO3KhQ@E%?av3{~kQOul=af;JJww)xYL zvDs6ExHE!BmfhX!*@TEbjwLDQn`(mey%8kuaLSb^*Yuw(KysT?VpNW!pzl^7eYd?0 zE!|^Bfk@ro)(h+a(~Eg_e@70O({uqQ#QlKt9*(5krjIX0@u)&YEpjO|+N6Zhf5 zYQ(bw?jxS14%E^sk@?Xi#))BG9g-iLNt^!H(~vwm>3mu0(AQzxxc_D*UHVhl-tJ?Q zy5%hC`d%R69x#)J?+4&EZnriGa|h5lJ{PFZZD^C!vgQJ-Nx;O(o;|jw8D%&A*C8F; z`I`MjeW| zQmeQE2~Er0GZ)FIHl9nTX#rMw3*jV@dndkD?tWCOcu7_ad>8l%upyK@L!d8f75}M9 zR^g`%B_k^E(1bG^Kj2^aXQ8*}z%ShIX?B(a{3WQ`lu>mC;<@2TsPlnlX92dOJ%N#j z3g72?{|%Jkouu~ByLpID^=v{d=aqPPY+LZm)4qmhJ|D>WI)2k?5Sp(MOo$Y+U>}Q(~P3JhfR6oLf1DKxQ+o`i$Uj?S`?Q#~#ZiGIi z9mx%5(xzWPBsQ8!hh7Oj@7*kUD{*>Ff&5hsV~>oExVg=b92um&dk~IW?eR?>B?2?@BB~{DD!wMI7t#H*}%TE8$)VMveh^ZFbo%ERE*0?}Te_Q3MWtyqENeS9)Z~Mw4EScdRqCX6=}toNbO&>GL2MR zi+q-2-w5q(z$yM2#D(@FEw~Ojw%%)te~x9)eykN;F4I>QcQ+vYh&Gz7ZM|2Bpmy1K zjU5|}uIoWqmyFY|>HsG~%j&ghV zp@#N{G+uTKuPYT^4hyf#iyy2lUx6WW_|Egt!O7ZN;QHDqN3lk}z>|e01a4IAag>)VI~lRj zj+3R}>bA8G3yW4Nt>ml|u* zn)z!nG2ejJq_u&1dEiCxBPe^e5%jl7aq~43udCD+Ju^+M#ovYG(azFBFG%257k{7W z#oFjMW%?QbznYu)Y5?bH8#{;+_}gjV*9-&RIShDLCa~o(v^@`#&;wuuxQ4(^HY`lf zcciC()ioCj?Lx;CMGtGSq!$pADfT>#=Y#~nC9TxHLX__{nG}y0S&a9Tgcj6hKsV5` z&>xQ`S@t;dZ)bm!z_T0?lfV`I`7`@-W0ACV=|>qIlvvnp&cH1!B(L-7RT>q$KM7%ucI;>5TBs-2kvzP+4m#sb%aL3IG-@68fm%q!U=+XUoTG4 z-V7l}*h;j~KsbcT_aj`v2E|khHM^~xC9EvU!T#`CI+CVYcFGE6mc1$l|L{*dijN`C z{vl?W!!g7Py8+$&T~?Sa)82Xrt%ulKyO@z_UU5gAz`V-A8lA|zI!rj9WnL{O0Moo; zoVt=}URBB@&8r||rg>G(xM^OkL)>E{4whxb_@HI=ZD8QMl?^g1t4u@6W7~mJ*iF>; z+!^|wd#dMElt{D8V|xqHEbRk44L;E45&S59&%H`tj-{9Sp8MQsd01yl-*c~?#_E>7 z=RVI&Dt*s=!8FOLOnuLNp_x?ro_o!-U9zpE@40bVjr~yHbI*3#&3>rwx#yU66JE}e z`kuQ}XSvk(++EIBxe%CF>U-`DW>V>U?u}+r>3iGIf$nL~Zg{mmfjOMTD%z^Dnx$D+|*)lGYK z4y)2$)i-;7ipI`G$ne?qUeCRVDC;ZbeAFBm?N$8_r=(=lUe&ibzoF({*{k~9_VdwF z*{k}u^(hWCp}neq$9cJ|sO(k!0q1JfPTH&bgU(e%#k5!T?>ncVA?#H@3?BU<)3#Oi zs{S(*A!V=XKX?8{;-~CYeTTDMLZZFOK{$zmv{&_KLk}_|j0|P3;%h2jC4#h9^;evC z%RZI8s=w*nCBZ6tRsVxIY-O+Ne{_CdqVEvdv{yBcjew-BsUI%HMKj?G=tn$XfGCx= zrvA|+#z`KuHT93pq_Q>jqmyc7sj@ZoznMv8YwE`)T_aIZwx&K{CXF02RDICa%%QER z!`4(wLR+&Dm^j(9$My|I*-b8OO&zx8_mLB@>993Bk$nMzryjN@cef3; zW-e__9k%8|R31SyQ-_&37YR)pK{Hc_naLT~v^>K55kkHgK{Hc_nfYB=G4C!w+oMWo zX6i6Af1ygI zlh7VDlWU7zX!;03!9wQmJWW-*yr7)PU1svyf-BkM<7V>G0@|C}FHTdM)0G8BV1{W= zNDOVgU*-~VhX%C(fz&|7;iV8Fx|{9RxgpIZlGC+G3d>7NWq&iZDXRaqrH9#Jt!CnR zWhvQ~Hd~t_-Cn(ymr4v8v?&UOYfBHZ{#+}4b@3wfb^xK2cC>btR;&PD0SAEgd!oBF zPvcbAk{Kvw!Bic zob6GgySm_q#IDg}4z7U4yf)8FUMoV{Qo=noPos%Q*i=BoDZt1kZbKKQn(!uS(R)jo zW&Qme1T+%{%|F$Ipp%W}HDjJWg9 zcu1#fEu^32bj=iEaJps+F*scn#~gIJy3sQ2bo~v%m`>MBAqJ;wrVxYE)rOju5QEe8 zS(&t)uF651cDgEr(oWY*AqJ3SNrqUCg*i8#fK z>2%!%lBZ^5I$hPU(@xjNICbTC{nr#?1Y|i(|AZc-!*nm9n+{XPEg=SnsY<3Dru$`S z+F`1aX@_a15QD>1B@O>DhpFFkn5reA5PORQW>+2?{t>dE9H!9+DU|WI>HDMuzaQXVg^en#4c7P zmalZBDtQi&wji2!E7QVxJ$_6f7O;G!EC-O+QI*z|RrNcF2P|JH3+S7JzN}~H%lcH$ zA5r3b9uJT0Jv{TZkMSJI2XZvtMv1ckovNI?zB>hHBbfly1sfEt6TcAex8|B z`m#P$U)G1}%levWbk^C*Eqxg;cihf?$n^EuPQ&bnf=8d@{JrYO)R*;6o#j$r)`#lL z`cQpYAF40wL-l2SsJ^V<>6|RPRr<1imzku#Ox&ctte;)M`S92RtV(@ZzovxK<*`*T zhx)Sq%^>SbeOZ5C)Kug{k+_xaj2Yv|ew_AVDiYeiV-~d?aOU6`h_@5lFidR=su%r| zB|GJT6phwGZRt74_}4s*mnm6&Evr79uKK-E?vg3vx-)q9A-1>>Fv z3UIj;NN3ljrBVY$C&k)SwroCGBaYN+2;sMET_AlqZIvv5wXa&vPq!5Rfl4;PBS=$N zij_)O(otspoefF-=x9{@M;vwj_uJGbFrf!9oD-SQucPcUP3Trki6t8u=XNqp=#er> z6FQ4A(}XT(+%%ytLfm5`4webc_%IVX$p$Adp>3IGk?N?^w5dm7$?#!C<~eua;hMmV z=tTN;hM9Y>vx7`??=Uj5XztClVQ@U2)IZDIyOl7k<4Kr%JVsBOd%Fq7H1}4>ifME2 z4Assu_xN^QPQ^I>tQWB75?!Ap3vS{w{IL|Wo7$}zT%N`o=8F*oIJq`ba?bIil>GxI;xp1ZI2%us z;cYrsF}y}lk@a^OTi2-du+tPVu_3ovP7P7 zE4@6EC1#ilLp_WK(0G_(@G7z_!+^3=D%H|3m=3zN37W4>_Nl9+Zf-Mb<>7{LMUw*yvijmPv6FP zM^+}g;~<c+jWr={jV4Fjn#WEchnWEloj z$E9IFzl3ENFmACs7zQetHVmj1!_Kg7QmACwFzA*e9DbAHgoc4y60*D3IAC_=v4!z; z5^mZs;JJe`3<|*_(uTn<*_p5m15z2iTWQ1KJv2)j2Gr3r3bL z=QDVCYzOho*Zz#>NIsBr6hCRhU=>)SWf&Af_v5;mh5@T*7zQetHVnv1D70xj!7xxs zNbw7B^k6KxNW}Unm zSurasfUF`dvuC*$bHc31c-x zY02tKE@4q4Uf-sffwyUHCg9%}YjiO1eJr-oIc>M2ewj32{#eRFT1g?z$#JjF)A%YE ztFy;Z+N;E)y-?#k(#&FMHGwDq3ri&@;Mw4-QmmijNsIM90Ho9JUNp7-%3zarj0f<4 zgjgRY#cx0-f7jWd^V?`KM3hTTlzAcZN!G{|cb$*plKbI)qhnk;q$ud){Q%)UU ztncEeF$nXLrOD^5OP1duGM`7RD>ldnapG&NNL)J};b%jt`tSkBZ4;Sl_Xa>c) z8g^Q&%N_SWCD#8=f1g^C|EgG515Jx{xx4;hVx9iJ{}HjyyODaRkbKQ!<6@ZtoqNZ5 z076N61U(rZLC;i=3w+qgyP6)GfoQ%~fagd)kW-2uCHOt7AUpw{HzqyjPMhgc`-6ht zvw9kQiysHr68@Pl) zpQ9E=`=IRb1GB&D;68kf)xWB$^MzhEIm+tSqPn`7bmu4&ebu_J%)+)eEzpsxxeII;*RWYKC@Hn{Fw1$I~XpW~F6(?iZDer)g*X zeUvTm?~0(}|DR-h1Ou_3A#Xt|GR_qG2Qjo02>me__=$wR2W6ir^sgiUQ|L3EA@ply zl0yGf#!UOYiE&ft--fuyMjR~ro$+BpUo!R2CG_7wW3Q%e|GQ7oC&AQG7W#PS5K%tS zyzZ~*y#4R~f>NX)@$RocGU8-I9%*@O@?4O&o89wD7|&XXqWK8MLOj4T@ue)w2J_fX zL&CWP4|&PieTJPiF`CTlGFKwY@}J6+M&7EI*Jb1pq3J)(L>Jd(GBpoem-&ByNm}!O z|CCn))Be-tc8uEepKg{F)Be-7s-5LO<(n57{?pZHICxz~>c!=0|EWSKeO)F~^T2hP zE(wVa1rEYV6fFPgOU$?s8EOCN6G&M8Q#I3R|7oV?f$K7vng_1S?3L&{(mvC*03@%- zECd_0e5Q<(22G!-N~V3LD`aWfXR4B);WN!1c10%Jx+0^Nf!fAZz{JU}JT{KbNw_)I z6&afCxzcC)4P*zbD>A0G5g6t(&9Sb?T!YFdSyyD%AOW-9x+23_*0e0bqX-xwPO`4Z zJS{6`QQJ7IN-Ur0+p44kKLN-iNx<-#+7Lgt!(+P$&phoKJoEWL&U*Z$m54teVJQ)PkP=)lQ;A^p3?)J((@F$6S%wm! zl4&J^Z-)#~B2EHqONr<<`!SV>b5uWrN(9R-B|^QulvW~CGOa|YWLk-^aH97BN`!?I zZ~s7v_@3-mc@LmOs3esL;$|rkoDcXDm}4ptoGy>;e&(1;1nXN$#19d-l!z~wO2o() zaD_#iCGR=IJ%EW4Bey^*X!Yf9B5r0CXqPf?PqFq3>?VGef}d>YbR(}7kHYg=y7y$Z zz`bpy7d%_ay0Ef~FF*H7LVIp9SsX63L(Mp{8r82=!1xUe0(_9b`qIFz8#@G8awxD3 zX<$LEm3^O{r&0GIu;&S=P~P`GW7I0Gf@-bTR_bw zo;K35zIU`k+Ve*+80+uX0U_p9qatO!{gba?+G|l$zK3ZaQ@9Xuhc@^g=Kp5vOu%fc z|M!2EnR%ZxGt4k!7)iElSqhOBvLp#v3&|c)Ns^>R2}yQB)>5KUA(YBm2_Zz;*AVTg zEEWIzKJ$L=e&6f*f3NGS^E&tae4gc;^PJ~A=Q;C=R?h9syZ+~QnEs(Y`WTb{@9!=7 z8_T4tGMaE?zHKM@+ctj{nH>BoG9~e=$mCv``%p9fDl)lu99IeQr4mZ~Dl)lGl$U=b z?`nYOMaAOm`5UKIC^U^te%)uw5;Ka0vC{EK5&Vl!#jC!Kz(SwCVpj^ z{M~za#~v5vTXr~{ycHMT$H#|nNsOMnjx-^l)g_~$_{5+&;9X>sf~*8-azKaIqWMzL zyoB$S;!~87rUrEEO-wf}Xs+Le?ByW)h%`N*NJr3&pxJ6SXl9VTmj#*?(C~+`?z4mD zi+Co*=LA`I(klVoQxb3buLjN7yBK9|kbVCS=(T{}#2JnF>p}CLn=#$IAX{Q+z7f#b zR>-VU&5+w9#So7WBW zUO?w@_A0(8XioYA+2SC3p0p&O&v1Mbe?MqGJq}B@G{`RF_FNXw{_ddVLG%5aG2Mqj z)`zqrpg$kNC?5sQcHbcTB*<Edd=Uis`ln%~eCO ze%pd<4rzNpTiar~9YOPXoXv{w46>%AT>+I?kLkV%ntkRY+Z|+0NqYkNbU(Jl-k|wx zA1urMAgkRF*@1vQu8-_s(45g3qZ|&hJ4i*IA(r}&Alr&77vg^g^clW?iT@QeA9w}RoeQ#Nr1JrN@D=Dn(7feZjPg&A zrI7v&=#OJqzl+{XJJA?($L=w2x0p5`?~n1Ya1{>ia2-`p9$o~KCMoT6FECkn1eXxR zQ&j#4pLXKdTl>hBDx!>`9sA`&nyT`*Ymufa-AK$Qyn`D$zsj520yCA)A{G$-iZ_FJ zL6w{S2+UUc#0iuO34bYo#mG^)P7dZ!eW#Z?)w;6|h3cOkAWMVyGs3#u%`YI>mqfxwp(v1Uw4TWz_1>T}^KEt$)ly-j_%Y3Ww%2cF{ zRlee7;B88?h)sl}@$1z1?JDm)3v8-%1F@Mf7su@J<|^;M3PatYbi@l-j26O2?gqA0 z`KRxJt&~@pek*5ZenI;%^(o zJE&Z2E=Imv=?(ad67MJ+z8!dv%7bxUAl^yo5?nqL?<}k{73D4}|5_YN)m7;+VmINL zQCN)bDz{pJw1?8F#CwI!-o|`;s{HG1n6{VF)x`URty3{=ZSXVAF8w_@j2ngStt)vxpz6>aHaRAW4p1^!xRN96(TG-$ftil+T7vGPe#wtBN7DJ5_Zu|%7 zc$N3JLpnj}wCY&MiNgAgF!CgoZ~qnL$x0WM0lp;syBVfkX~7%)$Pq zn^RC;qw;C|JRrVS=^^4e;riFG%%7^rjH~td%wbDAoox)X}u~a?c!FC=w92@7}c(9$HAodj2&&G^?P`M8ei+@zwmiUu! z-EK^KQRQv;ZZ>{N={rPxVD_W0b^U?3Mj`K`aoPeN_C%ECivpv<8~A|+f2P>W{bnLf zR$88zBAmuITvIu<3RXX+G)%-{pD#vrz7eFVJnJsZC{5{DV!CknGnh7?%2Sx;SGtj( zO*4dp_+sCa7A*5j9=hyJ3+CIOxKFq*18P#8nuZ$S8_Ta2@x@o;*u zf)782M?a#pIWa1n`X!b*N#(U6%ol%D#fO?jOcC~6hH3FPdi>%3;UUZj*VTHt=qQwN zr0zHrKU9sUs$8ic(ln*ZhG5!sVWmG&&ZlzIPq9?_m5#j@X@;=e8yG56g@o;=V!k;l@9TrKu+rX#krokN_bW!uRr!y7C>K>) zj&DGh2}cdY`W9395-y92U#@ibSS)jK;hqJU_6n8PFT}_tl-|zcoRY#PHUV3!oU{hm zM(Ntsz_!8A{l*loh5JVt7w@=2WKjNh)b?sZtmro!8v0X9>4 zT`x@AT0dRetSd zV1K1!e#c@wB3wEUI6&puCsBS>Y2EW!jDf zmLQH5_IwMAF;3;i*WmFTue306g0MHAq7zka#RKL^O6w9Q3%l({`6ZPzRw13D^w*WZ zslrWf0;j3`D*jw|{AHzccmij-u;rD&87jAV0yCPa^bEe!iq8^$`ykeLw#s2{t2s*d zO#;3myq{l=ysGkZJaU`+UrKyUI11nX#$Q)?&D%)lDgBW6hVc2h7=(8 zQ&?yQ%5SOM9AB8n-&T4naiOq6Ih5Z~c@xxY@pqM;y%pQ)Jz>$WfQwYF+yv#tO0$Sd zgpcuq=ld!@Tmmy%s`Rbyz-7WLe(SSb<$w7u`GL{{KOp^3IF?77D^!kFz*2prwA|B3 zKNfz=#rQN|iqxDLo#4m&`@dps%8&rOM7N*^(bmog#=1sy4JyHHr<=WMOo0X2} z4%{Lf-WRx4<%WZSUn#wbxJ~$4Rm^C+%13z=v_omVtC4;!JUa#JyHn*FjWEjhB&VCHj?o;{~u7-;57Z#g}868mhHom7ERQg~( z;2~kP*}%gpZ+i)NMCoMWQQ=;GIzFcI9KNS~r!^78;@<3p%2#q*om6_18}@tQ z_>EYFQz}p3N#oN>yAgj7&f%HQA64$g=j2aHn-PB&*5H}3UsR5BA%9i6CkgnQaKn?> z?7ypAZ8`9a(o%yk@*l!q?!}YgPnGX@ALYN4W)jZ|+x(5iIHz(Wp6NZW^eW;7;Y1#| z{;hKUB}o5K`qN_Izrt-iVRcdEPJB=~G zkMIOej&K9hBErE;iwZkeMp{hxGt=V2)Q6Fl5Z=r)pQVHwzr*^L5q24bw5+f_ewh$2 zFFf=S(u%^FT)|4hd---;MR@y3l&=XBuOqJ) zz8J<(Hwx$RY+fDVLgLNBi7eL_)_xsnLt)hj(niA9M*$lP3*)NlcoSh8u5VLe2G_T_ zaLH(33*o_aLa5=J6Kq(1JWmj$t#dPE&O5w@EPHsW3UQCh26Px8z!8} zFHlAZ%ijtdDJ;?$TXK|eQGE{NO{Z;A~;Xdok@R!v5D_+PT8DO_9DXe4rE3H-t-@V&nzFc06(P zmhjc*kuDT2AigX7mG2shgioBq$V-HebG}Q3{VpI~F5JftVhaieyWC^Mw}cO6VKEj8 zt9_32U192jSp7x9yQ^vrIqAvWVx{KeOTrXRsN(k@FU@%_fh^t zn-b1?)lZ5;62NmMUDxW!wX;YM5DhtG)O84`zFSfz7`11zU z64$(?J@OQ$#q|xIwk4(tSJ%h1ALRs(?^`?(`mv@>`xh(tiE!0#NLQ-dt`UY>rL+)t z$g71HTL9On{0qMgU#oQN6To%C$_;>@s@&{T%;+`<(|)D$yiLGuN-NAk zdAl&H7DnEoa>;wJzF#Z7_5{j1g(sR}s9h>wm$;%zY1h3-zZEvR0VD5Lxg_5u_b7d4 zDbl^d9^4h|Q~6VVz~8TQeJVyiAe_D)<%23m&!c=u>C&H(9u{`%i}Z-f`}m%6RO$0P z5qj)DaLxSK)i5S;K&*gp1B%F;1(ztN_vY^sCC_`y>5LX?dPE`(0Rz@4shMe)bTS>JOz4 z4*>otJpDb&f2sUIMJ&cyr5|W@3gI9M^;z(h>r!k`!R36R? zy+$d0g7~7a)>uqCTIKXBF{3d`Q@Gj33MUsvI!@)ce#7dISK49%aDuSagIJ7-Dv!Gz z(@s))IX`Jm7G^EOj9yZC^&^;eiqaXxslp%DVn)+cUJ}Jn)0I9-oFOd3uUBTO9O0J& zvy~ow7&s@u^kyyEg@p2 zo7HQ8w_}xG=XYN31Zi5@8<^3%!t5Cs>OGaMABI|_bPvDMT^wNg9WAQiy<6q6n=tMB zL7H}$AC{L2NASCtWh&?3Z_31%E3L&VLq8C9;F0-<0HXDVN{ z8tLasTXP?~Uf7Y(x-V3Y@p8KjO6%3fLT(g(&o6B^sho8T_@&ZHd|7Q4?wf{@x2XKl zF08^B>GjiryM$kr$5MTx z@}MI~zg61eFcxyRurjZ~*rRf3ei6A>>9o;Us(r%kt1<0V@5|+p2HX2F{Ohd82LNlgZw__xXKqE$FwJueoZ_nthNNxey?(! zHP{-bl!l3?g^%T;j9-KL0o4VbCY^R!uq*hOUkJV|yyYxrG+pI+F9K&M9Y&lf{Jj;1 znx*oU9|LDAy^J_VIPf44e^1^QBYhc$!e1!&F-R8+&+zQW5|t+pK>EJYfyAZ4 z7jME+EmL_wCer0fzrG6ifpB{q_@T;GcoeikX;)sM@sV&YpQ0bD+?Cf}exme>M}aGa z&zD4bmC7gQVQZ{bdgwKbyhivWpOb4SECD6D!Ai?K=NdOSV*rP3F9T6nYYC0_inMdf)s)wxw^bK+M* zS`g#gRDKqJw<*3|Y4yvH?hszh&HlB@rP^b@JC(k20O>Aa)*=k`jmmXCLHe!IKl#aP zxA0MZS-eN(<$P}JRa%!1**;;rD=_VTl`GA}vlC<%K050e+$K?mC#!2Bp)88-<%M zqP$7v*La5cOQrwt=N6lVwOe5Yx2U|E2UJ^?ZXtdp{D*H|+f=ST5x8AxAO3h^hcK%a zru|ywZL@$ol`i6MBz6hQ4ng{j%5`gF7@v_tusQo(bhB@fk}EfqXBiW7$l zzxW4>@tn$o`9Go5=$--W| zO6nz*KjGoW6s2zyrwS*P#n^E$_FpVjs7z3PgBTY6z^gkVWrC4E=aWCGv^~E; zND@AhjA@fq?$jRBrYNmMG~tgIvCJ`*cisoYFH-z?zE{T^Ee}qRQd?D34b9S3ckvVU;&f9;!3G-^CwjyrlGM;uPWewis%v$~W-`8q<{K5MLJFz$@9N ztNeRC;0&c7^Sx}Qumn%C%~E;o%h-~$l^TE5J4aY!B!=3c@?$Gd-l%jqUq_pS*YlJ0 zmnu)>)xw*Vb|!8SKFJRzTUFjQ0r-{D`NVC)aZ${7yUGhI0CA0>?_|ajzZO=gjA?hO z{N;^EcPSl9{6<)Xhic!deC&PTZl%lr!BBgI=U>F8+pF@|JVM^5bR%)U@C09y2UITB z0V5w&n#SML9TMKdBlE*54_O5~qO>RRsPN<>%;=cPExTey-zlw1JT83vIA)Z6Ww7V3 z&B=Om3AjyAzbzq$|Y33A{kgx>G%AsQA&7x8L+gC7d@J`VwUt&UUN7u4 z7}MUM@>4twexuTxh&KrzRU>ElM9EHWD72jcIRHx!^CDZ)2tSO&i{wg{@ZtyOs@JDYra|X}gsTUMYX` z5ny$9ut=Q8Z-J% z!jinsyj+FgiS)=oVEGEc6Y0WFC|3}k<9l~Sl`9OxLSChG?{mOP!hCx$ZDo}g{)K6) zDE)yeSXH=|ABe72dHzUjt80|bAXXDz;16)BtNa{CuA%fX;Dy)>Sp8OvTvz3n`7OZBO54-{ z))QXCL&W+j|MN6fp@Gs7JCQaN8qaOs@?ZH;%(s!!gTz~fy?EZNvC40r!F+F1+UZ7M z6JZA5t%j)l_FkmVD7}?e4m>OT>L&ujTvEM5S|ylZ5%M#e65Ld`orA_a&u^c{YBEu;?#Hr>flILku-d>7`>x zUlz9Gm#5QJevsGL%uxEyH7L&%R^?`&rE+o#<~v(ygy#w82-j>w`4yGBj7R#a(z?XC z!fx#_)VC^s^)S-iO1p5kxkniN8@N~HQv5maKBeiz{lbTjV+9YWyozgdQ0c&zFw`O8 zO+2tUta82^kRDOGnimir753YN@-dZ9^ZERp(u2g~!iRIPMkiFZT^Q=5(m#0-!uP@= zPa!>}@9mH4x8JdZ|xQTg0y;IB&Gngq?*Sl{zX|Kbtj z1!3(UQLb7s7`b3K;MEm__mmrWkZ_G~6b~S)soZ`Ku)5M4h&6;uxP!V@<)?Yht)|lH zJSS62SiA_<_d1nx$6_ICD_z2$Gh8pck;hjzsQf%nI^C%B3F1w{HE(0SbyQxSj5iQ~A_Om~VZhpAs7g=VzeYQ00p!fVU_;Kx`zOkp;X}<>mYdRb!<+h_?x^ z=jXB}D)-OED%`Gg%`}vo3K!P|HdFbo*HCV*vDRF;SnD5 zw^n)a=UA#XO84=MTwCFd6R>gaRCz-m;9W{TA+{6#$v5lvD%ZaqX$Pen`(VCz3u8O6 zR2@~W!&5Z(D6JmBP@RO``0>B9%G)+#+Ad005W5OvqcGotm4YXKgFlfTsuVo=$MBr$ zVPVl_aRl(J(u2fv!UCTF&#Qbtzh}Ro^sdXXzJCk1 z)I|D^%Flm*^k1cC_($L_3QO{fn@cKxy8+XND(m4UhK0+xCxk4=ceyM0 zAdfbaRX)tKOeso_-;KpE;ppFx##DZrk3RkclAm;%OH36u<9k_}%GIi2sC1=;c|s$f zF!dgk^Q*j`Pn8U%D~XxH0Y9MJM&%p0k8P`T;%^xFPT_jKmEWcEyPseo+bJDIY%grt z7}!DOx>JF7D_zg?gdK&oxktK3 zeunL?@~6LGzCD!AC*CVu_&&-#RepqzZ!e{V_)X1y!jpA@y;VNSUqkm%I+J+6uwzp! z|^=l{i><)i})P36*p1z*0S_^n7#RQ^IQV zG4j(Ycbg0xqO`|BjQotSH?IqNR^?0{Z4Ons|2yDw!dLQPF@~x9)NR1wO1lw92=|Z1 zw3}3}$*=prR9b-_@iq&Gk3hOb<=y;by;bRE;#a~>yry@X%GbXO+^+P&x+w1u7EK3! zt@1H`dfKV<>_$wxOZdZsD1W1Jt6PwMtMqc>ZecwhZtYRI4iC5XDvcBO34h=T$^9z7 zToDi10i{3jSIGy3WB6t9A(i_z#f%Osy@_~4xVa5RKC1GW14xhkmlD4d&R7RLuJY)< znC}Uty@@A<4f*S{?^V8qKPNn;^g7~c;oy5Q?GGydG#BZQO2@v1`Tit)asbkwRbI?% z0)J6Dj`*vv-@n)zzp1>3zc2e;>1)I@!fH=pMt`XM6F-RksdVj4*j9fDM;*qIo<_twHVxO6MRpM{&M&dj1 z7j5h1;&W&yUnIGA-vOb>2~^W^v$ouYYN%@@lvXr*4{k@3+To5g^wUaYAIBZBLcHVr zf}~J--vZ}&M_JsF-y&Cq@#nFpion6tw48q|=r$^AK z9g4MKXW(jd4n_+z@XpAfQ#TYF#Lk#H@Lryb7G~g`g+V7X6r0J;)b8l~8ZFGgJKKUz z@lb3HJEL(xpYMFMFaz)W5p=Ey#lB-__KjGcNK#=2-YL?-*Q-h>7Q^kdev>dxT2f&K z-nlX8Tpo&5VyD_EjFX*In1Oe?1f7bZSPORk`W;*N@}$BHyfZB56bi)#uv6(M#wnXr zn1Oc|1f9a6*fe%x<4lGdTRxRl_eP&OyeUn3k%#?%GhEf&Rd+rpWz1Y>2y{~K#7-uE-o!l`@_ zajb7}Vl<;bz)4xjGr)xdP6=gmxQrs?Ql5#kpVqI1#x3V9`@`xAXG3M4wp?#oD@s? z9KQ#N4DFN@%CdaFalg=^I#w<-Kh7wJA}KAyq3m*r+u2_{6AcyW6fVpcX`!U-CeiL4 z@oH`HPc)R>G`$9IzlpCEvYTb`{!nHe{PPHIC0^7~NRYE{jn4qv4D3X+Z?nX_N{8&o zHcZq!xgMf~x8d8_;5(w6H1hEf+-`kYCTyfyD@yNc(69vIB}VConyoX;QH*G z+Kx%q4Tt+V*E^SXA+>$AowWFb=oJV47kl2GQG2ws$yv@0Mk_~(` zmStW7l7r1yHr(_l2 z7JVul^XFt%#s}ab;rQTgoIW*cIgTrGo(;xN&szHsrhhKr{8_*DMt@j1b8(`dS+w(m z*fJx+1<&>1^aZo<_rpRtBg3)Od&${ZJ8-2#&ZuDeoUHmoF#VW-i)8ihgnVo;|Dstd zp9GH&XJsa)FP7Ee5c(6snK=nAp7k8|895V!eu=DBFJlY76izRn$V+AM*_88gI4kcN zR3L`s*vO|MLu4_CL>%<^TH(`QU$_As_zl zGi1g8K0`kG-)G3m;2B~MPr%ZyjqxRgjc?eT%RWe8j-}#U zXU>MS{Ru2$jT&OwjdnJHMRPkp+AWl`+2>mfh{tt{uTKdep7L9LF-qC|L736@0{sUDI9B@jK_$# z;}JeMd6V%e`+p`&pilOEqB=2AEsrs|js8!ScNO#M%0!94E%#puvpR}967Njh5Q*JS zB#$o-7{-{tagAWk<>8{=WBCh?z_E5pPRVerHyT-qonPs20Rr|*S=BFKOO**;E0L_; zI3~blGX7e}$AJi+#qkJ-FF0l&!knAJvClZv`kA0Q;erGXl`ei%vxIs zlXv)UN&m(^E9dSYPs*zH4Y*@Cn-jw#gJtI1X~Dgy-I&uQ9Q&Swj=3I#b`M@^p{z-D zF;S1OKNlidA27c+;8@l%9315I3^;$*KM!G@d*uzrUC*ny8YJhwV4;d-)x+=ca(V~- z;#sk4FSR%fsAJ1<$1_xQ*Y%B>t^{X4?JSo4*z=#rGT>UtYtV`Rl?W z+?UT2_UMfC-$-G;5>S4+IHtWADSj-0IQH6vW3Qy7q=5sHLdDM&OM-ET&)UMhBPs7= zj#mtx7!3`{xb7>wUE+fozI-g)KT>)U5*#V>P;v)uCf4jysKk*kqM=B3&N`;JF1J!B zR5CpNtw<<>KN8*vhkp6-0!fM?tkg3UDs`4mx+aGQ>WK-j<}f`qOpSbb!}Kjx{wFNMwMBUd9GTD)7a4!C z1-DA)CUyy#xR(n;_w1Fo;XNo^I-DJ@fiXGm0FGIfi-o(Z<_-8{DAYfW32@SryNuFJ z@X_oHj*xo`^qV~ZN#KY6;DNRoY85EM(k zqB{R$mF~bnkbgLiSPniFCAr$J21ZYQ1pg#$PeZkAZe`v+$2Y0Ux%GLwSu$?lklTXA znY?3lYur&k_cq?n#?nShXCwxo)h2pX#xUN0Zz^tAPu!n^AHs!_8s3UKu1|z1M|p=k zYB^=f8Q$Uky2Ma#mqvR^=6HsgcwQLII7wX#<8KGxSrJQ^agusv;v6M@N0o)Bcbr}9 zU_wa^TH~KS(W=OjCN;!A{SxCOy^n*dq=yr?W2bB4cG93s?3{2$ct%nv>G2%i#sG2m z)%HjrPBTRCcN0QMuCD9H+pey|W#UM=47Ll~KDlCX-VTS8mQ}-IS19y3mmYh{P?D?b z600`u3fwy&Z;MgSld>#tqnu5QmLCszS~&eG{D+Tyz6ZF%*aoB;8zx*z z?xjOXEo|S^>CF(X^aVoqQ>=KQ(=<#Zs$ii{V%^lv+KR z&ls-xTx_t^x<1<^EH4)(X>fInb0+si+|FMxelEU@AZ_uxGJ9y_z;ju=N<*nXy$8>BE zE?d%t8&SHu47W#WNYaj1>ksgcU~H>ElLvBo!p+eTTzlst!&eobx?)-$CSW1d4wuT%Ds zL|laDkiyrNi}GoPgA4pGm*=3uHG{i&h9><0?*9Z61hb^ zWRZ8&wc*vgqpm34c#1xOBdy}NBV3{Yc6^~|N&J%(xeos(hg0x=62g&B$Z%YR(~i;W z@t;`UfmJ+>6P2mJ7^f}$FzZoJY7e&ju+5LQMken1Pbi3kt{J>5?{F@bcW@W;!#O|j z`ht6XG(8aR>p@fB~U1;6(h`R_b|6+Cukv&r;@F|&(YVb=hled5B~GI;N!a5XUZ7 zU6hz>ES-lqcF8e4q4hN!;`B(wnF*~g3=UQE9@YX_sxz1%$~h-R@F_JEuWf~!MVvit*_w_C+|5DqSn`Nh?BR*IN!`e9K#{bEhs0nzJ@~_Ty=q`bVBQE zH;1p{qXw-j$D4=$yVlomh=aW_6MmRlotN+s$8d&i-jFiqO$ujquk*hN5@HY3Ek?Rw;lM_!L?lU9x62;`TY}CaoC(<@?M?$S0?OGTw zLae$a_Mg#SnQ?5xgjzk?JB~vvK7B)p{b#gK6sJV<_Mg#ynTd@1&*;O6+m_gWMh9iK z=K$P)MjyvnuEYQ_?mwf03zbYDzvU~$Tiky}pTMPFxXt}%Quz{(;dVU2Wk{&ilPVVH zZQp+;S19y4mLT~>PQd+Va?8AJ!2M_PfV|t>e+XhP$qkV~gT_2lrV=gC7-hzJu zeJpSJwsK-9SJwIK-9SOJdfT)kPSA!x`dIrW zXi^_*yMv7SSlbg2^|7`$Xi^_*`-6=7SiGP3nAFGG!JtWftQ`(A>SOIlK-9+xtl@G6N9toO5)R7L$6At7>SHZgNPVoOs7!sV#gtMX zYjGj(f-?27RzXO8tW{K*`dF)^l=@g)SshGE zeXLbcnfh3}S}FChc8!qwSgWQo^|4k%DfO{-t&sXygFet*U=4fSOIjm8p-lo0L)?YjuRw#~Sppz8FjK0S5=W!BEu4T0J54 zu~uJY>SGQ1Sf4NTvDQ#XeXQN0GWD_6NGbKPhHr*^TIyr1vC7oP+HFdykF_R3>SGQ1 zSYPIyXMs(XQXgy0gw)4cbCs!&HRxk~z9U}1VzdxaA8RdDrasnMDWyKvppW%w59deP zMrG<_t*uh(V-5OPFH;|D(8u~RQy**Xlu{pS?S<6G8uYPVraso7kM*IbkF}0M>SOI5 zm8p-lPD-hdHRxk~TIyr1i^|l;T34mi$67Zb^|1zhtS<)jvDQN=^|5xZkos8bsWSDk z)=Me%v38%3`dI6&GWD_6M=ABO27RnAGxf3dfXdXz+Jj1|kF~x+>SGQ1SYKx9W38W3 z>SOI;A@#A=UuEiJ4fd|K*bZJ5f`$J%hE)W_NgA@#BLyvo$a+DN6;$Jz@*>SJw`%GAdi^szo)>SJxR zkos5~qcZieHdg8Ju^0;aSf6&|KS;-`Onodq!vrbyvG@=ZAoa2M6ccP`>SOUSCP){R z0lp-pKGvX*^#_IeSc5*+=lcQ?`dCNmV-5OPFH;|D(8qd8eXKzr>$v_kEHm`6UZy_Q zppW%5sR~AhKGu=?Sc5*+%hbmj^s$~&A8XLZI#M5N(8qe2`dEWL)>GSGQ1 zST9o_YtYAfN`0(BAL~ectU({^W$I%M`dCk?k2UCH9jT8s=wpLr#t+*J`dCk?k2UCH z9jTAC9`T?|eXQLZ4^rx5t*4OsSo=X`>SGQ1SRab|Sc5*+aouiAdr@WTW9^bs>SGNb zn1gbEU^q2c4C-SI`dCk?kF}_f`dEWLHrRACkwPEqW$I%M`dCNmV+{v(UZy_QppW%5 zOoTqxk@{GJKGw_B#~Sppo>Cuc(8oGbA8XLZdYSrIgFe<%>SGQ1SV!t(4ft*U=4fnZiI27Rm} z^|1zhte2^eHRxkKr9Rf6k9DLz)}W8|GWD?reXOU{#~Sppj?~8*^s!!U&=qCqV?DjN z7KopeI#M5N(8qe2`dEWL)>G|raso7kM)%LSnDLDKGvX*^^vKM zwJu7jkF~Bs>SGQ1ST9o_Yu%MnA8XLZ`i!WLHRxl#Ont2NR7!oU^%7DaYjyGmW$I(C zZvJ2>>SOI@;V~Zb*HfALSgWs;`dDiqq(0Ufs!V;X-J+EGSZgG#|0*`@ttwL=YmJqj z;7PIDgw)4c6P2ltwcC|aA8Sp8)W=#gm8p-l=1QrLwL65=$65=OsgJdmN~w>vRzm7y zt+mSd({6ayDWyKv+6t+UwL4X&KGyD1N`0)g6H*^*?Nz2e);cJqKGyCQQXgv_Ri-}H z?omp8taTDnA8Vae9`-zD)I}-vvDQ@>c@Wr5W$I(CyHe_7t%s2MSi4tc>SL{^QtD%^ zmyr5cyH926W39JR>SL{skos7=UuEiJ?E$6K$J&EJ>SL|1%GAf&LrSTSwSGeCW9?y; zsgJe(N~w>vM}*YJ+5nZQkF`gYQXgvrh1AE|V=7Z0YlD@wWpQx+5#IQq(0W3QJMN!dsZp+u{KmleXKpFGWD@GOeyuTHe5)3 ztc_5a`dE8jDfO{7Qb>KQy`VDnu{KI6^|AJ%u+us$)o7KekF_yMsgJd>Lh55}oXXV4 z+IXeZ$Jzv8Z$3pQs!V;XO;SpItW6eDA8RkEOnt0PQA&NRO%+lfYtvMIwIk;HvQp|} zZMu;9Sev0T^|3ZnDfO{7OGtgJ%~qNESev7i`dE8KNPVomsxtMlHut}j_?nRVSbJS% z>SJx5QtD&v4I%ZhHeY4xV{L&_>SOIqA@#BLmdez}+S^L0kF|wD>SOI4m8p-lca>5f zYwrn*eg#~lGWD^xSSj_fwnRvMti7)?^|7{8DfO|oOh|pKEmxWPSo=UJ^|AJ$kos6# zp>nhWmg*y=)W_P#Lh57f6P2ltwUtV#kF`}o>SJxS%EOLg+BHh4kF~Wz>SJx4%GAf& zr%I`hwawGAp$A8Q+xQXgxZgw)5{mnu^qYnzo)A8T8L z!}|ias@!le@GGU%$J#a_^|7{HW$I&Xhf?Ze?Q0?Rv9?oX>SJw}QtD&v8zJ?v_N~g) z$J%bC)W_N$A@#AgS7qvBZJ$!=V{N~X`dB-lGWD@`P$~7Xc1TEltQ}UF`dB-nl=@gZ zDx^Nvj;Tz2tbM1H`dB+Iq(0V8s7!sVom5JFtbH#WzY(i&N@eO}?X*(rW9vKZMlB+Mg;@A8UUp zr9Rfq3aO8^b1FCDncnkCuOeO$QXgx7t4w{Y{iBrnSo>E)W=#yA@#9VNq8^cj;jc%kF~3X)W=#iA@#9VLr8tB)f7@6Yu5>>kG1QC z)W_P5!g)NKS4X&zc(aiDSgS9rjSD-hp^*AmYb1Pq6tJ<7`dDisq(0V~3aO8^=0fUY zt%Z>KSZgIb#LxR}gw)5{okHqkt(}niSnD99KGr%4sgJczLh56!i;((Q>n5Z=)_Mr3 zkF}mc>SOIbA@#A=M@W6FJs_k$*7^#mkF|b6>SL|Hkos5~Af!Il1`4TpW3UQCh1AE|Fd_A^HbO{!tc?^>A8Vt8)W_OrA@#8~R!DuU zjTcfMYZHak$J%5e^|3ZZNPVnL`wy#PzSD)&$J$IG^|3ZvNPVomBBVan<_g#10%dz$ zNPVomA*4Rm76_@2wYP-S$J#<6^|AJ@kos6#B&0spmI$ejwWUJpV{N&R`dEWL)_1wo z#~Sppj?~8*^s$cA#~Sppj?~8*^s$cA#~Sppj?~8*^szXB62ir})W;h1v5wTo8uYPV zraso7k9DLz)}W8|GWD?reXJw(v9?BK>SGQ1Sf7^qSc5*+%hbmj^s$cA#~SppUS9Yn z5c*h0>SGQ1ST9o_YtY9!e)F)W;h1 zv5wTo8uYPVraso7k9DLz)()#oeXK=tf@!IbwP;T8wn%-fK_BbylGMi<^szo8>SGQ1 zSWl^sHC(~qNPVn9AM0i6V+}uo@s#>lgFe=g`dEWL))$icSc5*+r=>pDppSK=KGvX* z^)mIb27Roj)W;h1v5wTo8uYPVraso7kM)%LSX(EgKGr@}nfh3RKGw_B#~Sppj?~8* z^szoN^|AJaQtD$3`dBa5Is$|~*2~n#8uYQAQXgy3$2!jC;TH6F^ELsYkM)%LSc5*+k@{GJKGw_B#~Sppo>Cuc(8oHSXojJnkM%P3vG$G9 zu6vO}AM0i6V-5P)U}U~aLLciX^|1zhtRwZY27RoTsgE`2V?Cul)}W7dq(0W5kM%P3 zu?Bstr_{$9^s$cA#~SppUZy_Qjw+=-){gy$Jb?p!te2^eHRxk~DC%Pk`dCNmW9_8M z)W;h1v7S;NYtY9!QXgy3$NI?B#~Sppo>Cuc(8oGbA8XLZdYSrIgFe<%>SGQ1SV!t( z4fnZiI27Rm}^|1zhte2^eHRxkK zr9Rf6k9DLz)}W8|GWD?reXOU{#~Sppj?~8*^s!#1KGvX*^_2QpgFe=g`dEWL*2~n# z8uYQAQXgy3$2$J77BhlA*2~n#8h&5nDfO`ieXL^{e!T*Hte2^eHRxkKr9Rf6kIln` zKGvX*_41{vn09{ApiF(NK_BbWQXgy3$9kFiSc5*+Q|e<4`q*IPdJXV)tTOen27RoT zsgE`2V;!lFHRxk~Wa?uL`dCk?k2UCHePrrm4fCuc(8oGbA8XLZdYSrIgFe<%>SGQ1SV!t(4fqvd9K_Ba7>SGQ1SWl^s zHRxjnZiIc2Y=v ztU({^W$I%M`dBYhA8XLZI#M5N(8mTN^E4^+v7S;NYtY9!QXgy3$9kFiSc5*+(_uvD zV;!lFHRxl#Ont0DAL}Xgu?BstBlWQsE*6xjkF`j#Af-Om;3@Mm^|1zhtdC56tU({^ zDfO`ieXJw(u?Bstm#L36=wm&lKGvX*b)-JlppW%3^|1zhtf$n+8uYP_)W;h1v0kP= z)}W8|l=@g(Dx^NvppW%3^|1zhte2^eHRxjF)W;h1v7S;NYtY9!QXgy3$9kFiSc5*+Q|e<4 z`dCNmV-5OPFH;|D(8qd8eXKzr>qvd9K_Ba7>SGQ1SWl^sHRxjt*U=4fSGQ1ST9o_YtY9!QXgy3$2w9U zYtY9!QXgy3$2w9UYb8nqi$Q&?l`IjY)W;h1v0kP=)}W8|Wu`vXppW&G`dGVCNPVn9 zAM0i6V-5OPFH;|D(8oGbA8XLZdYSrIgFe<%>SGQ1SV!t(4fqvd9K_458%mXUuV?EtMgg!QymTz9r$9kFiSc5*+Q|e<4`dCNmV-5OPFH;|D(8qeZ z=oOTqk9DLz)}W8|GWD?reXOU{#~Sppj?~8*^s!#1KGvX*^_2QpgFe=g`dEWL*2~n# z8uYQAQXgy3$2w9UYtYAfnfh2etd#m#J0he$)}W8|GWD_cY^h)<>SGQ1SRa}CSc5*+ z%Y*qvGxV{Z9;=Cwp^tT>KGvX*^)mIb27Roj)W;h1v5wTo8uYPVraso7kM)%LSc5*+ zk@{GJKGw_B#~Sppo>Cuc(8oGbA8XLZdYSrIgFe<%>SGQ1SV!t(4fl=@hMKGu=?Sc5*+%hbmj{<4#&)W=#_NPVn9 zAM0i6V-5OPFH;|D(8oGbA8XLZdYSrIgFe<%>SGPRIdP;u)?zACA8XLZdP;q)K_458 zdO*0O}u z$6B_^)W;h1u|6{Ov4+1L=SY35K_BajL4B+hQA&NRK_BbouMcAt8mmlwtU({^DfO`i zeXJw(u?BstkBq}Ie37A)`dEWL*2~n#8uYPVraso7kM%T(A6i=osgJdmDpMb8t&~z9 zYpsR%bEn!yW$I%M`dA;C`dGVDNPVn9AM1-jeXO-pN`0(BAM4XnA8XLZdYSrIgFe<% z>SGQ1SV!t(4fSGQ1SV!t(4fFgHRxkKr9Rf6k9DLz)}W8|k*SY0=wm&lKGvX*b)-Jl zppW%3^|1zhtf$n++BPBev9?`h>SGPp7O7p)#i3sWSDk27PQ$CVnHNKGvX* z^~In*)^;nUKGvX*^=YY(HRxl#Ont0DAL}Xgu?Bst;|abbp^x=4^|1zhtf$n+8uYP_ z)W_Okm4~bX9#KkttU({^W$I%M`dA;iWmn7y`dCk^5}}WEq(0W5kM%P3u?Bstr_{$9 z{w}5?^|1zhte2^eHRxkKr9Rf6k9DLz)}W8|GWD?reXOU{#~Sppj?~8*^s!zZ_5enP zKGxIjMCfB3sgE`2W4%m$td&$seXKzr>t*U=4fSGQ1ST9o_YtYAfnfh3RKGsv}V-5OPN9tn@`dBYhA8XLZdfI>peXJw(u?Bst zm#L36=wm&lKGvX*b)-JlppW%3^|1zhtf$n+8uYP_)W;h1v0kP=)}W8|l=@hMKGu=? zSc5*+%hbmj^s$~&A8XLZI#M5N(8qe2`dEWL)>GSGQ1ST9o_YtYAfN`0(B zAL~ectkqMQ`dEWL*3-U2u^7F)W;h1v7S;NYkv!=kF|0Yf-?27R=z?| zzVH*u(8v0;)W=#yl`9OxLP8(w>E7pn(8oGbA8XLZ`eINYYgLp|A8XLZdYSrIgFe>F z)W;h1v7S;NYtY9!QXgy3$9kFiSgWCw`dEWLHkg*5+Mtj1GWD@mODXlS27RoTsgE`2 zW4%m$tU({^DfO`ieXJw(u?Bstm#L36=wm&lKGy08sgJd~DpMb8H!Gz+*6InVkG1+L zQy*&$lu{pS4TaRl+AaT;AH{qdDWyKvZWU4=YmHT=KGvX*^<}0$)|v>ZkF_BxQy**3 zD5XBuo)uCbYeQA0KGvR7N`0&i6H*^*!&Rm})F)W;h1v5wTo+E|sTk2UCHJ?(V_LqQ+wNPVn9AL}DiA8XLZ zdP;q)K_BZ#eXLDZnfh3RKGsv}V-5OPN9tp3s>;;I8uYQAQXgy3$2w9UYtYB~Vo)Dz z(8qd8eXKzr>qvd9K_Ba7>SJxTQtD%Ej*$9TdqrjHW9?O?)W_OfA@#BLt;*EL8uYO~ zU+QBG`dCNmV-5OPUkvJF4fYll^)KGu#X zr9Re<3aO8^V=7Z0Yu_oQKGu#4sgJc2DpMb8CzVnkYu^j0k2UCHeVM6`wbM$ek2UCH zeFdqHHRxl#Ont0DAL}XgvG%i&`dEWL*2~n#8uYPVraso7k9DLz)}W8|GWD?reXOU{ z$J!r4>SGO`)V)l7tU({^W$I(?tdROxgFe>F)W;h1v0kP=)}W7dq(0W5kM%P3u?Bst zr_{$9^s$cA#~SppUZy_QppOm8MCfB3sgE`2W4%m$tU({^>2#ixfj-ue`dEWL*2}qL zv5?Tm21D`Z4A93qQXgy3$9kFiSc5*+Q|e<4`dCNmV-5OPFH;|D(8qc@jd-(=`dF){ zGWD@mUn%vm27RngOMR?CAL}DiA8XLZdU}8eeXJw(u?Br?uo(Oa74)&5_8>wZ>qvd9 zK_Ba7>SGQ1SWl^sHRxjGSGQ1ST9o_Yh9F5A8TEO)W;h1v0kP=)(%w) zhN3>!4hyM|wIeE1A8SXIQXgx_g!rv5_E#!XA8XLZ`a)74YbS)%$J$AisgE`2W4%m$ ztU({^*zpuLJM^)>%+$vk^s$~&A8XLZI#M5N(8qe2`dEWL)>GSGQ1ST9o_ zYtYAfN`0(BAL~ectU({^W$I(?52e({8uYPVraso7kM;7!5kTl;gZUDnk992Y3Glqi z)W;h1v7S;NYtY9!QXgy3$NI?B$J)P2sgE`2W4&CGU))?$nfh1@RSwcI#ITV1Sc_B+ zMqa@$U+^~teJJWSGQ1SYKx9V=bSHZaNPVoeQJMN!gFe=WqCVE3k9DLz z*6vc7`dEWL)>GSGQ1SYHh4V-5P)U?`p^>?ou@)}W8|GWD?reXN(Mk2UCH z9jTACE-F(WYhC{zac>@GX)y3~58t`YIe#Coi?-HY z>wWiI)z!PIc2(VXwdi9<`&C3AJKDd-=wn9*REs`#bYMmFv7>`(j6QZGeXQ>nee6j3 zSV#1+qeE(pK6WI1tXuT4Bk5xu_u5GpDSfP8LG-aB>0{lZj~z)L>xe#fbYzW}Z>VFB zs`fFStCv33WAw2j>0^Cn^syu9W8I>U9UW5&M=wnCH$9jxDb|ihQTlBG`<13<% z9i32P^s%E8t3@9>I;kT1*wM)~MjtymrP}?7r&j#&nL1YbSYHPE*pc+Hz6|uSBk5xu z(Z`OYkM$UR>`3}px9DR>U$2NhcJz%J|HJi)(#Lv?K6WI1tRwo^k@T@XGy2%kcdA7n zJCZ)uWAw2j>0>=cA3OSfwdi9<(#Lv?K6WI1tjC-4>6Y}dZi6U&Y(FzkNdCCS=wnCH z$GSxyJCZ)u5q<1P`dFVCeeCG&YSG7zR#rqGJG!UF=wnAed!i-YTM>Qi=)M}Gj~(4# zE&AAz^s&B-ZTRgo>0^Bv=wn9@R*OD%Bz>&M=wnCH$9nw8Woo65b&EcBBz>$S`q+{5 zu^yw39sROe^s%E~RYV^{#j--!ui#~QFeXJw; z*wG(qJUm|aD}Ah6^syu9V;#}Qj--$EWuT88NgwMLeeCEjJx-Oev(KL5f~U&Z*)7-7 zmvyC#MH3rquXg+%gTaD}^~Y2b8_QQaQ!lq0^vB#y`UB09k$ zMcZ;JVVbyrSz?i=v!0zR-X`kYf9hhh`u$Y zZ}k{`Yf9fbAE$TshJJUe4%+^Dd8%(s>02p=!|CPⅇ4rdj}izttovgg*X4vH!mEt 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 #B1$cuNTB? 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 diff --git a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/make.py b/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/make.py deleted file mode 100755 index bfd60c9be..000000000 --- a/examples/msp430x/small/msp430fr5994/launchpad/fft_lea/make.py +++ /dev/null @@ -1,119 +0,0 @@ -#! /usr/bin/env python -# -*- coding: UTF-8 -*- -#---------------------------------------------------------------------- -#--- Python Make file for application checkpoint -#--- automatically generated by goil on Wed May 12 23:14:32 2021 -#--- from root OIL file fft_lea.oil -#--- -#--- Compiling a Trampoline application is done in 2 stages -#--- 1 - From the OIL file, a set of files is generated as long as -#--- build options. Among these files are the build.py and make.py -#--- files. make.py contains compilation rules when the OIL file -#--- and the included OIL files are modified. make.py is only -#--- written once when the goil command is typed. -#--- 2 - From all the C/assembly files (OS, Application, librairies, -#--- configuration, ...), the objects and the executable are -#--- produced. This is done by the build.py file. -#--- build.py is generated each time goil is called by make.py -#---------------------------------------------------------------------- -from __future__ import print_function -import sys, os, subprocess, atexit, string - -#--- Add the location of makefile.py to the import path -sys.path.append("../../../../../../make") - -#--- Import the makefile system in python -try: - import makefile, projfile -except ImportError: - #it defines inline the red color, as other are defined in the makefile.py - print("\033[91mThe OS->BUILD->TRAMPOLINE_BASE_PATH key is not set correctly in the oil file fft_lea.oil.") - print("Set the correct Trampoline installation path in the oil file and run goil again:\033[0m") - print("goil -t=msp430x/small/msp430fr5994/launchpad --templates=../../../../../../goil/templates/ fft_lea.oil") - sys.exit(1) - -#--- To work with relative paths -scriptDir = os.path.dirname (os.path.abspath (sys.argv[0])) -os.chdir (scriptDir) - -#--- Get goal as first argument -askedGoal = "all" -if len (sys.argv) > 1 : - askedGoal = sys.argv [1] - -if askedGoal == "all" or askedGoal == "clean" : - goal = askedGoal -else : - goal = "all" - -#--- Get max parallel jobs as second argument -maxParallelJobs = 0 # 0 means use host processor count -if len (sys.argv) > 2 : - maxParallelJobs = int (sys.argv [2]) - -#--- Instanciate a new makefile object -make = makefile.Make(goal) - -#---------------------------------------------------------------------- -#--- Various variables used after -#---------------------------------------------------------------------- -oilFile = "fft_lea.oil" -oilFileDep = "build/" + oilFile + ".dep" -oilCompiler = "goil" -oilFlags = ["-t=msp430x/small/msp430fr5994/launchpad", "--templates=../../../../../../goil/templates/"] -trampoline_base_path = "../../../../../../" - -#---------------------------------------------------------------------- -#--- Build the source files list -#---------------------------------------------------------------------- -oilSourceList = [] -sourceList = [] - -#--- Add generated files -sourceList.append("fft_lea/tpl_app_config.c") - -sourceList.append("fft_lea/tpl_dispatch_table.c") -sourceList.append("fft_lea/tpl_invoque.S") -sourceList.append("fft_lea/tpl_interrupt_vectors.c") -sourceList.append("fft_lea/tpl_irq_handlers.S") - -rule = makefile.Rule (sourceList, "Compiling OIL file " + oilFile) -rule.deleteTargetFileOnClean() -rule.mDeleteTargetOnError = True -rule.mDependences.append(oilFile) -rule.enterSecondaryDependanceFile(oilFileDep, make) -rule.mCommand.append("goil") -rule.mCommand += oilFlags -rule.mCommand.append(oilFile) - -make.addRule (rule) -make.addGoal("all", sourceList, "Building all") - -if goal == "all" or goal == "clean" : - make.runGoal(maxParallelJobs, maxParallelJobs == 1) - -#---------------------------------------------------------------------- -#--- Call the seconde stage of make -#---------------------------------------------------------------------- - -def cleanup(): - if childProcess.poll () == None : - childProcess.kill () - -#--- Register a function for killing subprocess -atexit.register (cleanup) - -#--- Get script absolute path -scriptDir = os.path.dirname (os.path.abspath (sys.argv [0])) -os.chdir (scriptDir) - -#--- Launch build.py -childProcess = subprocess.Popen (["python", "build.py", askedGoal, str(maxParallelJobs)]) - -#--- Wait for subprocess termination -if childProcess.poll () == None : - childProcess.wait () -if childProcess.returncode != 0 : - sys.exit (childProcess.returncode) - -#----------------------------------------------------------------------