From 566bc155acac0ef8f2826920244713f10044f951 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Tue, 16 Feb 2016 09:53:03 +0000 Subject: Start of tree reorganization. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@8897 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/common/ports/ARM/compilers/GCC/crt0.s | 155 -- os/common/ports/ARM/compilers/GCC/crt1.c | 75 - os/common/ports/ARM/compilers/GCC/ld/LPC2148.ld | 46 - .../ports/ARM/compilers/GCC/mk/startup_lpc214x.mk | 9 - os/common/ports/ARM/compilers/GCC/rules.ld | 224 -- os/common/ports/ARM/compilers/GCC/rules.mk | 307 --- os/common/ports/ARM/compilers/GCC/vectors.s | 101 - os/common/ports/ARM/devices/LPC214x/armparams.h | 65 - os/common/ports/ARM/devices/LPC214x/lpc214x.h | 526 ---- os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s | 259 -- os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s | 322 --- os/common/ports/ARMCMx/compilers/GCC/crt1.c | 221 -- .../ports/ARMCMx/compilers/GCC/ld/KL25Z128.ld | 392 --- .../ports/ARMCMx/compilers/GCC/ld/MK20DX128.ld | 392 --- .../ports/ARMCMx/compilers/GCC/ld/STM32F030x4.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F030x6.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F030x8.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F031x6.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F042x6.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F051x8.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F072xB.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F091xC.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F100xB.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F103x8.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F103xB.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F103xD.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F103xE.ld | 53 - .../GCC/ld/STM32F103xE_maplemini_bootloader.ld | 56 - .../ports/ARMCMx/compilers/GCC/ld/STM32F103xG.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F107xC.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F207xG.ld | 54 - .../ports/ARMCMx/compilers/GCC/ld/STM32F302x8.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F303x8.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F303xC.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F334x8.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F373xC.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F401xC.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F401xE.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F405xG.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F407xG.ld | 54 - .../ports/ARMCMx/compilers/GCC/ld/STM32F411xC.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F411xE.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32F429xI.ld | 54 - .../ports/ARMCMx/compilers/GCC/ld/STM32F746xG.ld | 66 - .../ARMCMx/compilers/GCC/ld/STM32F746xG_ETH.ld | 66 - .../ARMCMx/compilers/GCC/ld/STM32F746xG_MAX.ld | 68 - .../ports/ARMCMx/compilers/GCC/ld/STM32L052x6.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32L052x8.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32L053x8.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32L151x6.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32L152xB.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32L152xE.ld | 53 - .../ports/ARMCMx/compilers/GCC/ld/STM32L476xG.ld | 53 - .../ARMCMx/compilers/GCC/ld/rules_STM32F7xx.ld | 394 --- .../ports/ARMCMx/compilers/GCC/mk/startup_k20x.mk | 12 - .../ports/ARMCMx/compilers/GCC/mk/startup_kl2x.mk | 12 - .../ARMCMx/compilers/GCC/mk/startup_stm32f0xx.mk | 12 - .../ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk | 12 - .../ARMCMx/compilers/GCC/mk/startup_stm32f2xx.mk | 12 - .../ARMCMx/compilers/GCC/mk/startup_stm32f3xx.mk | 12 - .../ARMCMx/compilers/GCC/mk/startup_stm32f4xx.mk | 12 - .../ARMCMx/compilers/GCC/mk/startup_stm32f7xx.mk | 12 - .../ARMCMx/compilers/GCC/mk/startup_stm32l0xx.mk | 12 - .../ARMCMx/compilers/GCC/mk/startup_stm32l1xx.mk | 12 - .../ARMCMx/compilers/GCC/mk/startup_stm32l4xx.mk | 12 - os/common/ports/ARMCMx/compilers/GCC/rules.ld | 362 --- os/common/ports/ARMCMx/compilers/GCC/rules.mk | 307 --- os/common/ports/ARMCMx/compilers/GCC/vectors.c | 632 ----- os/common/ports/ARMCMx/compilers/GCC/vectors.h | 105 - os/common/ports/ARMCMx/compilers/IAR/cstartup.s | 82 - os/common/ports/ARMCMx/compilers/IAR/vectors.s | 1009 -------- os/common/ports/ARMCMx/compilers/RVCT/cstartup.s | 134 - os/common/ports/ARMCMx/compilers/RVCT/vectors.s | 1005 -------- os/common/ports/ARMCMx/devices/K20x/cmparams.h | 82 - os/common/ports/ARMCMx/devices/KL2x/cmparams.h | 82 - .../ports/ARMCMx/devices/STM32F0xx/cmparams.h | 89 - .../ports/ARMCMx/devices/STM32F1xx/cmparams.h | 90 - .../ports/ARMCMx/devices/STM32F2xx/cmparams.h | 84 - .../ports/ARMCMx/devices/STM32F3xx/cmparams.h | 93 - .../ports/ARMCMx/devices/STM32F4xx/cmparams.h | 93 - .../ports/ARMCMx/devices/STM32F7xx/cmparams.h | 88 - .../ports/ARMCMx/devices/STM32L0xx/cmparams.h | 86 - .../ports/ARMCMx/devices/STM32L1xx/cmparams.h | 97 - .../ports/ARMCMx/devices/STM32L4xx/cmparams.h | 90 - os/common/ports/e200/compilers/CW/crt0.s | 261 -- os/common/ports/e200/compilers/CW/unhandled.s | 1861 -------------- os/common/ports/e200/compilers/CW/vectors.h | 81 - os/common/ports/e200/compilers/CW/vectors.s | 1580 ------------ os/common/ports/e200/compilers/GCC/crt0.s | 245 -- os/common/ports/e200/compilers/GCC/ld/SPC560B50.ld | 30 - os/common/ports/e200/compilers/GCC/ld/SPC560B60.ld | 30 - os/common/ports/e200/compilers/GCC/ld/SPC560B64.ld | 30 - os/common/ports/e200/compilers/GCC/ld/SPC560D40.ld | 30 - os/common/ports/e200/compilers/GCC/ld/SPC560P50.ld | 30 - os/common/ports/e200/compilers/GCC/ld/SPC563M64.ld | 29 - os/common/ports/e200/compilers/GCC/ld/SPC564A70.ld | 29 - os/common/ports/e200/compilers/GCC/ld/SPC564A80.ld | 29 - os/common/ports/e200/compilers/GCC/ld/SPC56EC74.ld | 30 - .../ports/e200/compilers/GCC/ld/SPC56EL54_LSM.ld | 29 - .../ports/e200/compilers/GCC/ld/SPC56EL60_LSM.ld | 29 - .../ports/e200/compilers/GCC/ld/SPC56EL70_LSM.ld | 29 - .../ports/e200/compilers/GCC/ld/SPC57EM80_HSM.ld | 31 - .../e200/compilers/GCC/mk/startup_spc560bcxx.mk | 11 - .../e200/compilers/GCC/mk/startup_spc560bxx.mk | 11 - .../e200/compilers/GCC/mk/startup_spc560dxx.mk | 11 - .../e200/compilers/GCC/mk/startup_spc560pxx.mk | 11 - .../e200/compilers/GCC/mk/startup_spc563mxx.mk | 11 - .../e200/compilers/GCC/mk/startup_spc564axx.mk | 11 - .../e200/compilers/GCC/mk/startup_spc56ecxx.mk | 11 - .../e200/compilers/GCC/mk/startup_spc56elxx.mk | 11 - os/common/ports/e200/compilers/GCC/rules.mk | 242 -- os/common/ports/e200/compilers/GCC/rules_z0.ld | 162 -- os/common/ports/e200/compilers/GCC/rules_z3.ld | 159 -- os/common/ports/e200/compilers/GCC/rules_z4.ld | 159 -- os/common/ports/e200/compilers/GCC/vectors.h | 81 - os/common/ports/e200/compilers/GCC/vectors.s | 2615 -------------------- os/common/ports/e200/devices/SPC560BCxx/boot.h | 117 - os/common/ports/e200/devices/SPC560BCxx/boot.s | 217 -- os/common/ports/e200/devices/SPC560BCxx/intc.h | 96 - .../ports/e200/devices/SPC560BCxx/ppcparams.h | 86 - os/common/ports/e200/devices/SPC560Bxx/boot.h | 117 - os/common/ports/e200/devices/SPC560Bxx/boot.s | 217 -- os/common/ports/e200/devices/SPC560Bxx/intc.h | 96 - os/common/ports/e200/devices/SPC560Bxx/ppcparams.h | 86 - os/common/ports/e200/devices/SPC560Dxx/boot.h | 117 - os/common/ports/e200/devices/SPC560Dxx/boot.s | 217 -- os/common/ports/e200/devices/SPC560Dxx/boot_cw.s | 203 -- os/common/ports/e200/devices/SPC560Dxx/intc.h | 96 - os/common/ports/e200/devices/SPC560Dxx/ppcparams.h | 86 - os/common/ports/e200/devices/SPC560Pxx/boot.h | 117 - os/common/ports/e200/devices/SPC560Pxx/boot.s | 217 -- os/common/ports/e200/devices/SPC560Pxx/intc.h | 96 - os/common/ports/e200/devices/SPC560Pxx/ppcparams.h | 86 - os/common/ports/e200/devices/SPC563Mxx/boot.h | 122 - os/common/ports/e200/devices/SPC563Mxx/boot.s | 191 -- os/common/ports/e200/devices/SPC563Mxx/intc.h | 96 - os/common/ports/e200/devices/SPC563Mxx/ppcparams.h | 86 - os/common/ports/e200/devices/SPC564Axx/boot.h | 245 -- os/common/ports/e200/devices/SPC564Axx/boot.s | 356 --- os/common/ports/e200/devices/SPC564Axx/intc.h | 96 - os/common/ports/e200/devices/SPC564Axx/ppcparams.h | 86 - os/common/ports/e200/devices/SPC56ECxx/boot.h | 251 -- os/common/ports/e200/devices/SPC56ECxx/boot.s | 406 --- os/common/ports/e200/devices/SPC56ECxx/boot_cw.s | 403 --- os/common/ports/e200/devices/SPC56ECxx/intc.h | 98 - os/common/ports/e200/devices/SPC56ECxx/ppcparams.h | 86 - os/common/ports/e200/devices/SPC56ELxx/boot.h | 251 -- os/common/ports/e200/devices/SPC56ELxx/boot.s | 408 --- os/common/ports/e200/devices/SPC56ELxx/intc.h | 96 - os/common/ports/e200/devices/SPC56ELxx/ppcparams.h | 86 - os/common/ports/e200/devices/SPC57EMxx_HSM/boot.h | 96 - os/common/ports/e200/devices/SPC57EMxx_HSM/boot.s | 211 -- os/common/ports/e200/devices/SPC57EMxx_HSM/intc.h | 97 - .../ports/e200/devices/SPC57EMxx_HSM/ppcparams.h | 91 - os/common/startup/ARM/compilers/GCC/crt0.s | 155 ++ os/common/startup/ARM/compilers/GCC/crt1.c | 75 + os/common/startup/ARM/compilers/GCC/ld/LPC2148.ld | 46 + .../ARM/compilers/GCC/mk/startup_lpc214x.mk | 9 + os/common/startup/ARM/compilers/GCC/rules.ld | 224 ++ os/common/startup/ARM/compilers/GCC/rules.mk | 307 +++ os/common/startup/ARM/compilers/GCC/vectors.s | 101 + os/common/startup/ARM/devices/LPC214x/armparams.h | 65 + os/common/startup/ARM/devices/LPC214x/lpc214x.h | 526 ++++ os/common/startup/ARMCMx/compilers/GCC/crt0_v6m.s | 259 ++ os/common/startup/ARMCMx/compilers/GCC/crt0_v7m.s | 322 +++ os/common/startup/ARMCMx/compilers/GCC/crt1.c | 221 ++ .../startup/ARMCMx/compilers/GCC/ld/KL25Z128.ld | 392 +++ .../startup/ARMCMx/compilers/GCC/ld/MK20DX128.ld | 392 +++ .../startup/ARMCMx/compilers/GCC/ld/STM32F030x4.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F030x6.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F030x8.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F031x6.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F042x6.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F051x8.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F072xB.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F091xC.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F100xB.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F103x8.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F103xB.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F103xD.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F103xE.ld | 53 + .../GCC/ld/STM32F103xE_maplemini_bootloader.ld | 56 + .../startup/ARMCMx/compilers/GCC/ld/STM32F103xG.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F107xC.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F207xG.ld | 54 + .../startup/ARMCMx/compilers/GCC/ld/STM32F302x8.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F303x8.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F303xC.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F334x8.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F373xC.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F401xC.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F401xE.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F405xG.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F407xG.ld | 54 + .../startup/ARMCMx/compilers/GCC/ld/STM32F411xC.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F411xE.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32F429xI.ld | 54 + .../startup/ARMCMx/compilers/GCC/ld/STM32F746xG.ld | 66 + .../ARMCMx/compilers/GCC/ld/STM32F746xG_ETH.ld | 66 + .../ARMCMx/compilers/GCC/ld/STM32F746xG_MAX.ld | 68 + .../startup/ARMCMx/compilers/GCC/ld/STM32L052x6.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32L052x8.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32L053x8.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32L151x6.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32L152xB.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32L152xE.ld | 53 + .../startup/ARMCMx/compilers/GCC/ld/STM32L476xG.ld | 53 + .../ARMCMx/compilers/GCC/ld/rules_STM32F7xx.ld | 394 +++ .../ARMCMx/compilers/GCC/mk/startup_k20x.mk | 12 + .../ARMCMx/compilers/GCC/mk/startup_kl2x.mk | 12 + .../ARMCMx/compilers/GCC/mk/startup_stm32f0xx.mk | 12 + .../ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk | 12 + .../ARMCMx/compilers/GCC/mk/startup_stm32f2xx.mk | 12 + .../ARMCMx/compilers/GCC/mk/startup_stm32f3xx.mk | 12 + .../ARMCMx/compilers/GCC/mk/startup_stm32f4xx.mk | 12 + .../ARMCMx/compilers/GCC/mk/startup_stm32f7xx.mk | 12 + .../ARMCMx/compilers/GCC/mk/startup_stm32l0xx.mk | 12 + .../ARMCMx/compilers/GCC/mk/startup_stm32l1xx.mk | 12 + .../ARMCMx/compilers/GCC/mk/startup_stm32l4xx.mk | 12 + os/common/startup/ARMCMx/compilers/GCC/rules.ld | 362 +++ os/common/startup/ARMCMx/compilers/GCC/rules.mk | 307 +++ os/common/startup/ARMCMx/compilers/GCC/vectors.c | 632 +++++ os/common/startup/ARMCMx/compilers/GCC/vectors.h | 105 + os/common/startup/ARMCMx/compilers/IAR/cstartup.s | 82 + os/common/startup/ARMCMx/compilers/IAR/vectors.s | 1009 ++++++++ os/common/startup/ARMCMx/compilers/RVCT/cstartup.s | 134 + os/common/startup/ARMCMx/compilers/RVCT/vectors.s | 1005 ++++++++ os/common/startup/ARMCMx/devices/K20x/cmparams.h | 82 + os/common/startup/ARMCMx/devices/KL2x/cmparams.h | 82 + .../startup/ARMCMx/devices/STM32F0xx/cmparams.h | 89 + .../startup/ARMCMx/devices/STM32F1xx/cmparams.h | 90 + .../startup/ARMCMx/devices/STM32F2xx/cmparams.h | 84 + .../startup/ARMCMx/devices/STM32F3xx/cmparams.h | 93 + .../startup/ARMCMx/devices/STM32F4xx/cmparams.h | 93 + .../startup/ARMCMx/devices/STM32F7xx/cmparams.h | 88 + .../startup/ARMCMx/devices/STM32L0xx/cmparams.h | 86 + .../startup/ARMCMx/devices/STM32L1xx/cmparams.h | 97 + .../startup/ARMCMx/devices/STM32L4xx/cmparams.h | 90 + os/common/startup/e200/compilers/CW/crt0.s | 261 ++ os/common/startup/e200/compilers/CW/unhandled.s | 1861 ++++++++++++++ os/common/startup/e200/compilers/CW/vectors.h | 81 + os/common/startup/e200/compilers/CW/vectors.s | 1580 ++++++++++++ os/common/startup/e200/compilers/GCC/crt0.s | 245 ++ .../startup/e200/compilers/GCC/ld/SPC560B50.ld | 30 + .../startup/e200/compilers/GCC/ld/SPC560B60.ld | 30 + .../startup/e200/compilers/GCC/ld/SPC560B64.ld | 30 + .../startup/e200/compilers/GCC/ld/SPC560D40.ld | 30 + .../startup/e200/compilers/GCC/ld/SPC560P50.ld | 30 + .../startup/e200/compilers/GCC/ld/SPC563M64.ld | 29 + .../startup/e200/compilers/GCC/ld/SPC564A70.ld | 29 + .../startup/e200/compilers/GCC/ld/SPC564A80.ld | 29 + .../startup/e200/compilers/GCC/ld/SPC56EC74.ld | 30 + .../startup/e200/compilers/GCC/ld/SPC56EL54_LSM.ld | 29 + .../startup/e200/compilers/GCC/ld/SPC56EL60_LSM.ld | 29 + .../startup/e200/compilers/GCC/ld/SPC56EL70_LSM.ld | 29 + .../startup/e200/compilers/GCC/ld/SPC57EM80_HSM.ld | 31 + .../e200/compilers/GCC/mk/startup_spc560bcxx.mk | 11 + .../e200/compilers/GCC/mk/startup_spc560bxx.mk | 11 + .../e200/compilers/GCC/mk/startup_spc560dxx.mk | 11 + .../e200/compilers/GCC/mk/startup_spc560pxx.mk | 11 + .../e200/compilers/GCC/mk/startup_spc563mxx.mk | 11 + .../e200/compilers/GCC/mk/startup_spc564axx.mk | 11 + .../e200/compilers/GCC/mk/startup_spc56ecxx.mk | 11 + .../e200/compilers/GCC/mk/startup_spc56elxx.mk | 11 + os/common/startup/e200/compilers/GCC/rules.mk | 242 ++ os/common/startup/e200/compilers/GCC/rules_z0.ld | 162 ++ os/common/startup/e200/compilers/GCC/rules_z3.ld | 159 ++ os/common/startup/e200/compilers/GCC/rules_z4.ld | 159 ++ os/common/startup/e200/compilers/GCC/vectors.h | 81 + os/common/startup/e200/compilers/GCC/vectors.s | 2615 ++++++++++++++++++++ os/common/startup/e200/devices/SPC560BCxx/boot.h | 117 + os/common/startup/e200/devices/SPC560BCxx/boot.s | 217 ++ os/common/startup/e200/devices/SPC560BCxx/intc.h | 96 + .../startup/e200/devices/SPC560BCxx/ppcparams.h | 86 + os/common/startup/e200/devices/SPC560Bxx/boot.h | 117 + os/common/startup/e200/devices/SPC560Bxx/boot.s | 217 ++ os/common/startup/e200/devices/SPC560Bxx/intc.h | 96 + .../startup/e200/devices/SPC560Bxx/ppcparams.h | 86 + os/common/startup/e200/devices/SPC560Dxx/boot.h | 117 + os/common/startup/e200/devices/SPC560Dxx/boot.s | 217 ++ os/common/startup/e200/devices/SPC560Dxx/boot_cw.s | 203 ++ os/common/startup/e200/devices/SPC560Dxx/intc.h | 96 + .../startup/e200/devices/SPC560Dxx/ppcparams.h | 86 + os/common/startup/e200/devices/SPC560Pxx/boot.h | 117 + os/common/startup/e200/devices/SPC560Pxx/boot.s | 217 ++ os/common/startup/e200/devices/SPC560Pxx/intc.h | 96 + .../startup/e200/devices/SPC560Pxx/ppcparams.h | 86 + os/common/startup/e200/devices/SPC563Mxx/boot.h | 122 + os/common/startup/e200/devices/SPC563Mxx/boot.s | 191 ++ os/common/startup/e200/devices/SPC563Mxx/intc.h | 96 + .../startup/e200/devices/SPC563Mxx/ppcparams.h | 86 + os/common/startup/e200/devices/SPC564Axx/boot.h | 245 ++ os/common/startup/e200/devices/SPC564Axx/boot.s | 356 +++ os/common/startup/e200/devices/SPC564Axx/intc.h | 96 + .../startup/e200/devices/SPC564Axx/ppcparams.h | 86 + os/common/startup/e200/devices/SPC56ECxx/boot.h | 251 ++ os/common/startup/e200/devices/SPC56ECxx/boot.s | 406 +++ os/common/startup/e200/devices/SPC56ECxx/boot_cw.s | 403 +++ os/common/startup/e200/devices/SPC56ECxx/intc.h | 98 + .../startup/e200/devices/SPC56ECxx/ppcparams.h | 86 + os/common/startup/e200/devices/SPC56ELxx/boot.h | 251 ++ os/common/startup/e200/devices/SPC56ELxx/boot.s | 408 +++ os/common/startup/e200/devices/SPC56ELxx/intc.h | 96 + .../startup/e200/devices/SPC56ELxx/ppcparams.h | 86 + .../startup/e200/devices/SPC57EMxx_HSM/boot.h | 96 + .../startup/e200/devices/SPC57EMxx_HSM/boot.s | 211 ++ .../startup/e200/devices/SPC57EMxx_HSM/intc.h | 97 + .../startup/e200/devices/SPC57EMxx_HSM/ppcparams.h | 91 + 308 files changed, 24388 insertions(+), 24388 deletions(-) delete mode 100644 os/common/ports/ARM/compilers/GCC/crt0.s delete mode 100644 os/common/ports/ARM/compilers/GCC/crt1.c delete mode 100644 os/common/ports/ARM/compilers/GCC/ld/LPC2148.ld delete mode 100644 os/common/ports/ARM/compilers/GCC/mk/startup_lpc214x.mk delete mode 100644 os/common/ports/ARM/compilers/GCC/rules.ld delete mode 100644 os/common/ports/ARM/compilers/GCC/rules.mk delete mode 100644 os/common/ports/ARM/compilers/GCC/vectors.s delete mode 100644 os/common/ports/ARM/devices/LPC214x/armparams.h delete mode 100644 os/common/ports/ARM/devices/LPC214x/lpc214x.h delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/crt1.c delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/KL25Z128.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/MK20DX128.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F030x4.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F030x6.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F030x8.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F031x6.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F042x6.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F051x8.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F072xB.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F091xC.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F100xB.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103x8.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xB.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xD.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xE.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xE_maplemini_bootloader.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xG.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F107xC.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F207xG.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F302x8.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F303x8.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F303xC.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F334x8.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F373xC.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F401xC.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F401xE.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F405xG.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F407xG.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F411xC.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F411xE.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F429xI.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F746xG.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F746xG_ETH.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32F746xG_MAX.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32L052x6.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32L052x8.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32L053x8.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32L151x6.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32L152xB.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32L152xE.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/STM32L476xG.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/ld/rules_STM32F7xx.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/mk/startup_k20x.mk delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/mk/startup_kl2x.mk delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f0xx.mk delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f2xx.mk delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f3xx.mk delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f4xx.mk delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f7xx.mk delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l0xx.mk delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l1xx.mk delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l4xx.mk delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/rules.ld delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/rules.mk delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/vectors.c delete mode 100644 os/common/ports/ARMCMx/compilers/GCC/vectors.h delete mode 100644 os/common/ports/ARMCMx/compilers/IAR/cstartup.s delete mode 100644 os/common/ports/ARMCMx/compilers/IAR/vectors.s delete mode 100644 os/common/ports/ARMCMx/compilers/RVCT/cstartup.s delete mode 100644 os/common/ports/ARMCMx/compilers/RVCT/vectors.s delete mode 100644 os/common/ports/ARMCMx/devices/K20x/cmparams.h delete mode 100644 os/common/ports/ARMCMx/devices/KL2x/cmparams.h delete mode 100644 os/common/ports/ARMCMx/devices/STM32F0xx/cmparams.h delete mode 100644 os/common/ports/ARMCMx/devices/STM32F1xx/cmparams.h delete mode 100644 os/common/ports/ARMCMx/devices/STM32F2xx/cmparams.h delete mode 100644 os/common/ports/ARMCMx/devices/STM32F3xx/cmparams.h delete mode 100644 os/common/ports/ARMCMx/devices/STM32F4xx/cmparams.h delete mode 100644 os/common/ports/ARMCMx/devices/STM32F7xx/cmparams.h delete mode 100644 os/common/ports/ARMCMx/devices/STM32L0xx/cmparams.h delete mode 100644 os/common/ports/ARMCMx/devices/STM32L1xx/cmparams.h delete mode 100644 os/common/ports/ARMCMx/devices/STM32L4xx/cmparams.h delete mode 100644 os/common/ports/e200/compilers/CW/crt0.s delete mode 100644 os/common/ports/e200/compilers/CW/unhandled.s delete mode 100644 os/common/ports/e200/compilers/CW/vectors.h delete mode 100644 os/common/ports/e200/compilers/CW/vectors.s delete mode 100644 os/common/ports/e200/compilers/GCC/crt0.s delete mode 100644 os/common/ports/e200/compilers/GCC/ld/SPC560B50.ld delete mode 100644 os/common/ports/e200/compilers/GCC/ld/SPC560B60.ld delete mode 100644 os/common/ports/e200/compilers/GCC/ld/SPC560B64.ld delete mode 100644 os/common/ports/e200/compilers/GCC/ld/SPC560D40.ld delete mode 100644 os/common/ports/e200/compilers/GCC/ld/SPC560P50.ld delete mode 100644 os/common/ports/e200/compilers/GCC/ld/SPC563M64.ld delete mode 100644 os/common/ports/e200/compilers/GCC/ld/SPC564A70.ld delete mode 100644 os/common/ports/e200/compilers/GCC/ld/SPC564A80.ld delete mode 100644 os/common/ports/e200/compilers/GCC/ld/SPC56EC74.ld delete mode 100644 os/common/ports/e200/compilers/GCC/ld/SPC56EL54_LSM.ld delete mode 100644 os/common/ports/e200/compilers/GCC/ld/SPC56EL60_LSM.ld delete mode 100644 os/common/ports/e200/compilers/GCC/ld/SPC56EL70_LSM.ld delete mode 100644 os/common/ports/e200/compilers/GCC/ld/SPC57EM80_HSM.ld delete mode 100644 os/common/ports/e200/compilers/GCC/mk/startup_spc560bcxx.mk delete mode 100644 os/common/ports/e200/compilers/GCC/mk/startup_spc560bxx.mk delete mode 100644 os/common/ports/e200/compilers/GCC/mk/startup_spc560dxx.mk delete mode 100644 os/common/ports/e200/compilers/GCC/mk/startup_spc560pxx.mk delete mode 100644 os/common/ports/e200/compilers/GCC/mk/startup_spc563mxx.mk delete mode 100644 os/common/ports/e200/compilers/GCC/mk/startup_spc564axx.mk delete mode 100644 os/common/ports/e200/compilers/GCC/mk/startup_spc56ecxx.mk delete mode 100644 os/common/ports/e200/compilers/GCC/mk/startup_spc56elxx.mk delete mode 100644 os/common/ports/e200/compilers/GCC/rules.mk delete mode 100644 os/common/ports/e200/compilers/GCC/rules_z0.ld delete mode 100644 os/common/ports/e200/compilers/GCC/rules_z3.ld delete mode 100644 os/common/ports/e200/compilers/GCC/rules_z4.ld delete mode 100644 os/common/ports/e200/compilers/GCC/vectors.h delete mode 100644 os/common/ports/e200/compilers/GCC/vectors.s delete mode 100644 os/common/ports/e200/devices/SPC560BCxx/boot.h delete mode 100644 os/common/ports/e200/devices/SPC560BCxx/boot.s delete mode 100644 os/common/ports/e200/devices/SPC560BCxx/intc.h delete mode 100644 os/common/ports/e200/devices/SPC560BCxx/ppcparams.h delete mode 100644 os/common/ports/e200/devices/SPC560Bxx/boot.h delete mode 100644 os/common/ports/e200/devices/SPC560Bxx/boot.s delete mode 100644 os/common/ports/e200/devices/SPC560Bxx/intc.h delete mode 100644 os/common/ports/e200/devices/SPC560Bxx/ppcparams.h delete mode 100644 os/common/ports/e200/devices/SPC560Dxx/boot.h delete mode 100644 os/common/ports/e200/devices/SPC560Dxx/boot.s delete mode 100644 os/common/ports/e200/devices/SPC560Dxx/boot_cw.s delete mode 100644 os/common/ports/e200/devices/SPC560Dxx/intc.h delete mode 100644 os/common/ports/e200/devices/SPC560Dxx/ppcparams.h delete mode 100644 os/common/ports/e200/devices/SPC560Pxx/boot.h delete mode 100644 os/common/ports/e200/devices/SPC560Pxx/boot.s delete mode 100644 os/common/ports/e200/devices/SPC560Pxx/intc.h delete mode 100644 os/common/ports/e200/devices/SPC560Pxx/ppcparams.h delete mode 100644 os/common/ports/e200/devices/SPC563Mxx/boot.h delete mode 100644 os/common/ports/e200/devices/SPC563Mxx/boot.s delete mode 100644 os/common/ports/e200/devices/SPC563Mxx/intc.h delete mode 100644 os/common/ports/e200/devices/SPC563Mxx/ppcparams.h delete mode 100644 os/common/ports/e200/devices/SPC564Axx/boot.h delete mode 100644 os/common/ports/e200/devices/SPC564Axx/boot.s delete mode 100644 os/common/ports/e200/devices/SPC564Axx/intc.h delete mode 100644 os/common/ports/e200/devices/SPC564Axx/ppcparams.h delete mode 100644 os/common/ports/e200/devices/SPC56ECxx/boot.h delete mode 100644 os/common/ports/e200/devices/SPC56ECxx/boot.s delete mode 100644 os/common/ports/e200/devices/SPC56ECxx/boot_cw.s delete mode 100644 os/common/ports/e200/devices/SPC56ECxx/intc.h delete mode 100644 os/common/ports/e200/devices/SPC56ECxx/ppcparams.h delete mode 100644 os/common/ports/e200/devices/SPC56ELxx/boot.h delete mode 100644 os/common/ports/e200/devices/SPC56ELxx/boot.s delete mode 100644 os/common/ports/e200/devices/SPC56ELxx/intc.h delete mode 100644 os/common/ports/e200/devices/SPC56ELxx/ppcparams.h delete mode 100644 os/common/ports/e200/devices/SPC57EMxx_HSM/boot.h delete mode 100644 os/common/ports/e200/devices/SPC57EMxx_HSM/boot.s delete mode 100644 os/common/ports/e200/devices/SPC57EMxx_HSM/intc.h delete mode 100644 os/common/ports/e200/devices/SPC57EMxx_HSM/ppcparams.h create mode 100644 os/common/startup/ARM/compilers/GCC/crt0.s create mode 100644 os/common/startup/ARM/compilers/GCC/crt1.c create mode 100644 os/common/startup/ARM/compilers/GCC/ld/LPC2148.ld create mode 100644 os/common/startup/ARM/compilers/GCC/mk/startup_lpc214x.mk create mode 100644 os/common/startup/ARM/compilers/GCC/rules.ld create mode 100644 os/common/startup/ARM/compilers/GCC/rules.mk create mode 100644 os/common/startup/ARM/compilers/GCC/vectors.s create mode 100644 os/common/startup/ARM/devices/LPC214x/armparams.h create mode 100644 os/common/startup/ARM/devices/LPC214x/lpc214x.h create mode 100644 os/common/startup/ARMCMx/compilers/GCC/crt0_v6m.s create mode 100644 os/common/startup/ARMCMx/compilers/GCC/crt0_v7m.s create mode 100644 os/common/startup/ARMCMx/compilers/GCC/crt1.c create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/KL25Z128.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/MK20DX128.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F030x4.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F030x6.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F030x8.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F031x6.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F042x6.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F051x8.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F072xB.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F091xC.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F100xB.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103x8.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xB.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xD.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xE.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xE_maplemini_bootloader.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xG.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F107xC.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F207xG.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F302x8.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F303x8.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F303xC.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F334x8.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F373xC.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F401xC.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F401xE.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F405xG.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F407xG.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F411xC.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F411xE.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F429xI.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F746xG.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F746xG_ETH.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32F746xG_MAX.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32L052x6.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32L052x8.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32L053x8.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32L151x6.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32L152xB.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32L152xE.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/STM32L476xG.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/ld/rules_STM32F7xx.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/mk/startup_k20x.mk create mode 100644 os/common/startup/ARMCMx/compilers/GCC/mk/startup_kl2x.mk create mode 100644 os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f0xx.mk create mode 100644 os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk create mode 100644 os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f2xx.mk create mode 100644 os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f3xx.mk create mode 100644 os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f4xx.mk create mode 100644 os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f7xx.mk create mode 100644 os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32l0xx.mk create mode 100644 os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32l1xx.mk create mode 100644 os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32l4xx.mk create mode 100644 os/common/startup/ARMCMx/compilers/GCC/rules.ld create mode 100644 os/common/startup/ARMCMx/compilers/GCC/rules.mk create mode 100644 os/common/startup/ARMCMx/compilers/GCC/vectors.c create mode 100644 os/common/startup/ARMCMx/compilers/GCC/vectors.h create mode 100644 os/common/startup/ARMCMx/compilers/IAR/cstartup.s create mode 100644 os/common/startup/ARMCMx/compilers/IAR/vectors.s create mode 100644 os/common/startup/ARMCMx/compilers/RVCT/cstartup.s create mode 100644 os/common/startup/ARMCMx/compilers/RVCT/vectors.s create mode 100644 os/common/startup/ARMCMx/devices/K20x/cmparams.h create mode 100644 os/common/startup/ARMCMx/devices/KL2x/cmparams.h create mode 100644 os/common/startup/ARMCMx/devices/STM32F0xx/cmparams.h create mode 100644 os/common/startup/ARMCMx/devices/STM32F1xx/cmparams.h create mode 100644 os/common/startup/ARMCMx/devices/STM32F2xx/cmparams.h create mode 100644 os/common/startup/ARMCMx/devices/STM32F3xx/cmparams.h create mode 100644 os/common/startup/ARMCMx/devices/STM32F4xx/cmparams.h create mode 100644 os/common/startup/ARMCMx/devices/STM32F7xx/cmparams.h create mode 100644 os/common/startup/ARMCMx/devices/STM32L0xx/cmparams.h create mode 100644 os/common/startup/ARMCMx/devices/STM32L1xx/cmparams.h create mode 100644 os/common/startup/ARMCMx/devices/STM32L4xx/cmparams.h create mode 100644 os/common/startup/e200/compilers/CW/crt0.s create mode 100644 os/common/startup/e200/compilers/CW/unhandled.s create mode 100644 os/common/startup/e200/compilers/CW/vectors.h create mode 100644 os/common/startup/e200/compilers/CW/vectors.s create mode 100644 os/common/startup/e200/compilers/GCC/crt0.s create mode 100644 os/common/startup/e200/compilers/GCC/ld/SPC560B50.ld create mode 100644 os/common/startup/e200/compilers/GCC/ld/SPC560B60.ld create mode 100644 os/common/startup/e200/compilers/GCC/ld/SPC560B64.ld create mode 100644 os/common/startup/e200/compilers/GCC/ld/SPC560D40.ld create mode 100644 os/common/startup/e200/compilers/GCC/ld/SPC560P50.ld create mode 100644 os/common/startup/e200/compilers/GCC/ld/SPC563M64.ld create mode 100644 os/common/startup/e200/compilers/GCC/ld/SPC564A70.ld create mode 100644 os/common/startup/e200/compilers/GCC/ld/SPC564A80.ld create mode 100644 os/common/startup/e200/compilers/GCC/ld/SPC56EC74.ld create mode 100644 os/common/startup/e200/compilers/GCC/ld/SPC56EL54_LSM.ld create mode 100644 os/common/startup/e200/compilers/GCC/ld/SPC56EL60_LSM.ld create mode 100644 os/common/startup/e200/compilers/GCC/ld/SPC56EL70_LSM.ld create mode 100644 os/common/startup/e200/compilers/GCC/ld/SPC57EM80_HSM.ld create mode 100644 os/common/startup/e200/compilers/GCC/mk/startup_spc560bcxx.mk create mode 100644 os/common/startup/e200/compilers/GCC/mk/startup_spc560bxx.mk create mode 100644 os/common/startup/e200/compilers/GCC/mk/startup_spc560dxx.mk create mode 100644 os/common/startup/e200/compilers/GCC/mk/startup_spc560pxx.mk create mode 100644 os/common/startup/e200/compilers/GCC/mk/startup_spc563mxx.mk create mode 100644 os/common/startup/e200/compilers/GCC/mk/startup_spc564axx.mk create mode 100644 os/common/startup/e200/compilers/GCC/mk/startup_spc56ecxx.mk create mode 100644 os/common/startup/e200/compilers/GCC/mk/startup_spc56elxx.mk create mode 100644 os/common/startup/e200/compilers/GCC/rules.mk create mode 100644 os/common/startup/e200/compilers/GCC/rules_z0.ld create mode 100644 os/common/startup/e200/compilers/GCC/rules_z3.ld create mode 100644 os/common/startup/e200/compilers/GCC/rules_z4.ld create mode 100644 os/common/startup/e200/compilers/GCC/vectors.h create mode 100644 os/common/startup/e200/compilers/GCC/vectors.s create mode 100644 os/common/startup/e200/devices/SPC560BCxx/boot.h create mode 100644 os/common/startup/e200/devices/SPC560BCxx/boot.s create mode 100644 os/common/startup/e200/devices/SPC560BCxx/intc.h create mode 100644 os/common/startup/e200/devices/SPC560BCxx/ppcparams.h create mode 100644 os/common/startup/e200/devices/SPC560Bxx/boot.h create mode 100644 os/common/startup/e200/devices/SPC560Bxx/boot.s create mode 100644 os/common/startup/e200/devices/SPC560Bxx/intc.h create mode 100644 os/common/startup/e200/devices/SPC560Bxx/ppcparams.h create mode 100644 os/common/startup/e200/devices/SPC560Dxx/boot.h create mode 100644 os/common/startup/e200/devices/SPC560Dxx/boot.s create mode 100644 os/common/startup/e200/devices/SPC560Dxx/boot_cw.s create mode 100644 os/common/startup/e200/devices/SPC560Dxx/intc.h create mode 100644 os/common/startup/e200/devices/SPC560Dxx/ppcparams.h create mode 100644 os/common/startup/e200/devices/SPC560Pxx/boot.h create mode 100644 os/common/startup/e200/devices/SPC560Pxx/boot.s create mode 100644 os/common/startup/e200/devices/SPC560Pxx/intc.h create mode 100644 os/common/startup/e200/devices/SPC560Pxx/ppcparams.h create mode 100644 os/common/startup/e200/devices/SPC563Mxx/boot.h create mode 100644 os/common/startup/e200/devices/SPC563Mxx/boot.s create mode 100644 os/common/startup/e200/devices/SPC563Mxx/intc.h create mode 100644 os/common/startup/e200/devices/SPC563Mxx/ppcparams.h create mode 100644 os/common/startup/e200/devices/SPC564Axx/boot.h create mode 100644 os/common/startup/e200/devices/SPC564Axx/boot.s create mode 100644 os/common/startup/e200/devices/SPC564Axx/intc.h create mode 100644 os/common/startup/e200/devices/SPC564Axx/ppcparams.h create mode 100644 os/common/startup/e200/devices/SPC56ECxx/boot.h create mode 100644 os/common/startup/e200/devices/SPC56ECxx/boot.s create mode 100644 os/common/startup/e200/devices/SPC56ECxx/boot_cw.s create mode 100644 os/common/startup/e200/devices/SPC56ECxx/intc.h create mode 100644 os/common/startup/e200/devices/SPC56ECxx/ppcparams.h create mode 100644 os/common/startup/e200/devices/SPC56ELxx/boot.h create mode 100644 os/common/startup/e200/devices/SPC56ELxx/boot.s create mode 100644 os/common/startup/e200/devices/SPC56ELxx/intc.h create mode 100644 os/common/startup/e200/devices/SPC56ELxx/ppcparams.h create mode 100644 os/common/startup/e200/devices/SPC57EMxx_HSM/boot.h create mode 100644 os/common/startup/e200/devices/SPC57EMxx_HSM/boot.s create mode 100644 os/common/startup/e200/devices/SPC57EMxx_HSM/intc.h create mode 100644 os/common/startup/e200/devices/SPC57EMxx_HSM/ppcparams.h (limited to 'os') diff --git a/os/common/ports/ARM/compilers/GCC/crt0.s b/os/common/ports/ARM/compilers/GCC/crt0.s deleted file mode 100644 index dea01fb83..000000000 --- a/os/common/ports/ARM/compilers/GCC/crt0.s +++ /dev/null @@ -1,155 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file crt0.s - * @brief Generic ARM startup file. - * - * @addtogroup ARM_GCC_STARTUP - * @{ - */ - -#if !defined(__DOXYGEN__) - - .set MODE_USR, 0x10 - .set MODE_FIQ, 0x11 - .set MODE_IRQ, 0x12 - .set MODE_SVC, 0x13 - .set MODE_ABT, 0x17 - .set MODE_UND, 0x1B - .set MODE_SYS, 0x1F - - .set I_BIT, 0x80 - .set F_BIT, 0x40 - - .text - .code 32 - .balign 4 - -/* - * Reset handler. - */ - .global Reset_Handler -Reset_Handler: - /* - * Stack pointers initialization. - */ - ldr r0, =__stacks_end__ - /* Undefined */ - msr CPSR_c, #MODE_UND | I_BIT | F_BIT - mov sp, r0 - ldr r1, =__und_stack_size__ - sub r0, r0, r1 - /* Abort */ - msr CPSR_c, #MODE_ABT | I_BIT | F_BIT - mov sp, r0 - ldr r1, =__abt_stack_size__ - sub r0, r0, r1 - /* FIQ */ - msr CPSR_c, #MODE_FIQ | I_BIT | F_BIT - mov sp, r0 - ldr r1, =__fiq_stack_size__ - sub r0, r0, r1 - /* IRQ */ - msr CPSR_c, #MODE_IRQ | I_BIT | F_BIT - mov sp, r0 - ldr r1, =__irq_stack_size__ - sub r0, r0, r1 - /* Supervisor */ - msr CPSR_c, #MODE_SVC | I_BIT | F_BIT - mov sp, r0 - ldr r1, =__svc_stack_size__ - sub r0, r0, r1 - /* System */ - msr CPSR_c, #MODE_SYS | I_BIT | F_BIT - mov sp, r0 -// ldr r1, =__sys_stack_size__ -// sub r0, r0, r1 - /* - * Early initialization. - */ -#if !defined(THUMB_NO_INTERWORKING) - bl __early_init -#else /* defined(THUMB_NO_INTERWORKING) */ - add r0, pc, #1 - bx r0 - .code 16 - bl __early_init - mov r0, pc - bx r0 - .code 32 -#endif /* defined(THUMB_NO_INTERWORKING) */ - - /* - * Data initialization. - * NOTE: It assumes that the DATA size is a multiple of 4. - */ - ldr r1, =_textdata - ldr r2, =_data - ldr r3, =_edata -dataloop: - cmp r2, r3 - ldrlo r0, [r1], #4 - strlo r0, [r2], #4 - blo dataloop - /* - * BSS initialization. - * NOTE: It assumes that the BSS size is a multiple of 4. - */ - mov r0, #0 - ldr r1, =_bss_start - ldr r2, =_bss_end -bssloop: - cmp r1, r2 - strlo r0, [r1], #4 - blo bssloop - /* - * Late initialization. - */ -#if !defined(THUMB_NO_INTERWORKING) - bl __late_init -#else /* defined(THUMB_NO_INTERWORKING) */ - add r0, pc, #1 - bx r0 - .code 16 - bl __late_init - mov r0, pc - bx r0 - .code 32 -#endif /* defined(THUMB_NO_INTERWORKING) */ - - /* - * Main program invocation. - */ -#if defined(THUMB_NO_INTERWORKING) - add r0, pc, #1 - bx r0 - .code 16 - bl main - ldr r1, =__default_exit - bx r1 - .code 32 -#else /* !defined(THUMB_NO_INTERWORKING) */ - bl main - b __default_exit -#endif /* !defined(THUMB_NO_INTERWORKING) */ - -#endif /* !defined(__DOXYGEN__) */ - -/** @} */ diff --git a/os/common/ports/ARM/compilers/GCC/crt1.c b/os/common/ports/ARM/compilers/GCC/crt1.c deleted file mode 100644 index 68e22b95a..000000000 --- a/os/common/ports/ARM/compilers/GCC/crt1.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file ARMCMx/compilers/GCC/crt1.c - * @brief Startup stub functions. - * - * @addtogroup ARMCMx_GCC_STARTUP - * @{ - */ - -#include - -/** - * @brief Early initialization. - * @details This hook is invoked immediately after the stack initialization - * and before the DATA and BSS segments initialization. The - * default behavior is to do nothing. - * @note This function is a weak symbol. - */ -#if !defined(__DOXYGEN__) -__attribute__((weak)) -#endif -/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ -void __early_init(void) {} -/*lint -restore*/ - -/** - * @brief Late initialization. - * @details This hook is invoked after the DATA and BSS segments - * initialization and before any static constructor. The - * default behavior is to do nothing. - * @note This function is a weak symbol. - */ -#if !defined(__DOXYGEN__) -__attribute__((weak)) -#endif -/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ -void __late_init(void) {} -/*lint -restore*/ - -/** - * @brief Default @p main() function exit handler. - * @details This handler is invoked or the @p main() function exit. The - * default behavior is to enter an infinite loop. - * @note This function is a weak symbol. - */ -#if !defined(__DOXYGEN__) -__attribute__((noreturn, weak)) -#endif -/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ -void __default_exit(void) { -/*lint -restore*/ - - while (true) { - } -} - -/** @} */ diff --git a/os/common/ports/ARM/compilers/GCC/ld/LPC2148.ld b/os/common/ports/ARM/compilers/GCC/ld/LPC2148.ld deleted file mode 100644 index 1dbab64b5..000000000 --- a/os/common/ports/ARM/compilers/GCC/ld/LPC2148.ld +++ /dev/null @@ -1,46 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * LPC2148 memory setup. - */ -MEMORY -{ - flash : org = 0x00000000, len = 512k - 12k - ram0 : org = 0x40000200, len = 32k - 0x200 - 288 - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for stacks. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("STACKS_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARM/compilers/GCC/mk/startup_lpc214x.mk b/os/common/ports/ARM/compilers/GCC/mk/startup_lpc214x.mk deleted file mode 100644 index 4f1af1875..000000000 --- a/os/common/ports/ARM/compilers/GCC/mk/startup_lpc214x.mk +++ /dev/null @@ -1,9 +0,0 @@ -# List of the ChibiOS generic LPC214x file. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARM/compilers/GCC/crt1.c - -STARTUPASM = $(CHIBIOS)/os/common/ports/ARM/compilers/GCC/vectors.s \ - $(CHIBIOS)/os/common/ports/ARM/compilers/GCC/crt0.s - -STARTUPINC = ${CHIBIOS}/os/common/ports/ARM/devices/LPC214x - -STARTUPLD = ${CHIBIOS}/os/common/ports/ARM/compilers/GCC/ld diff --git a/os/common/ports/ARM/compilers/GCC/rules.ld b/os/common/ports/ARM/compilers/GCC/rules.ld deleted file mode 100644 index 6bda5170c..000000000 --- a/os/common/ports/ARM/compilers/GCC/rules.ld +++ /dev/null @@ -1,224 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -__stacks_total_size__ = __und_stack_size__ + __abt_stack_size__ + __fiq_stack_size__ + __irq_stack_size__ + __svc_stack_size__ + __sys_stack_size__; - -__ram0_start__ = ORIGIN(ram0); -__ram0_size__ = LENGTH(ram0); -__ram0_end__ = __ram0_start__ + __ram0_size__; -__ram1_start__ = ORIGIN(ram1); -__ram1_size__ = LENGTH(ram1); -__ram1_end__ = __ram1_start__ + __ram1_size__; -__ram2_start__ = ORIGIN(ram2); -__ram2_size__ = LENGTH(ram2); -__ram2_end__ = __ram2_start__ + __ram2_size__; -__ram3_start__ = ORIGIN(ram3); -__ram3_size__ = LENGTH(ram3); -__ram3_end__ = __ram3_start__ + __ram3_size__; -__ram4_start__ = ORIGIN(ram4); -__ram4_size__ = LENGTH(ram4); -__ram4_end__ = __ram4_start__ + __ram4_size__; -__ram5_start__ = ORIGIN(ram5); -__ram5_size__ = LENGTH(ram5); -__ram5_end__ = __ram5_start__ + __ram5_size__; -__ram6_start__ = ORIGIN(ram6); -__ram6_size__ = LENGTH(ram6); -__ram6_end__ = __ram6_start__ + __ram6_size__; -__ram7_start__ = ORIGIN(ram7); -__ram7_size__ = LENGTH(ram7); -__ram7_end__ = __ram7_start__ + __ram7_size__; - -ENTRY(Reset_Handler) - -SECTIONS -{ - . = 0; - _text = .; - - startup : ALIGN(16) SUBALIGN(16) - { - KEEP(*(.vectors)) - } > flash - - constructors : ALIGN(4) SUBALIGN(4) - { - PROVIDE(__init_array_start = .); - KEEP(*(SORT(.init_array.*))) - KEEP(*(.init_array)) - PROVIDE(__init_array_end = .); - } > flash - - destructors : ALIGN(4) SUBALIGN(4) - { - PROVIDE(__fini_array_start = .); - KEEP(*(.fini_array)) - KEEP(*(SORT(.fini_array.*))) - PROVIDE(__fini_array_end = .); - } > flash - - .text : ALIGN(16) SUBALIGN(16) - { - *(.text) - *(.text.*) - *(.rodata) - *(.rodata.*) - *(.glue_7t) - *(.glue_7) - *(.gcc*) - } > flash - - .ARM.extab : - { - *(.ARM.extab* .gnu.linkonce.armextab.*) - } > flash - - .ARM.exidx : { - PROVIDE(__exidx_start = .); - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - PROVIDE(__exidx_end = .); - } > flash - - .eh_frame_hdr : - { - *(.eh_frame_hdr) - } > flash - - .eh_frame : ONLY_IF_RO - { - *(.eh_frame) - } > flash - - .textalign : ONLY_IF_RO - { - . = ALIGN(8); - } > flash - - . = ALIGN(4); - _etext = .; - _textdata = _etext; - - .stacks : - { - . = ALIGN(8); - __stacks_base__ = .; - . += __stacks_total_size__; - . = ALIGN(8); - __stacks_end__ = .; - } > STACKS_RAM - - .data : ALIGN(4) - { - . = ALIGN(4); - PROVIDE(_data = .); - *(.data) - *(.data.*) - *(.ramtext) - . = ALIGN(4); - PROVIDE(_edata = .); - } > DATA_RAM AT > flash - - .bss : ALIGN(4) - { - . = ALIGN(4); - PROVIDE(_bss_start = .); - *(.bss) - *(.bss.*) - *(COMMON) - . = ALIGN(4); - PROVIDE(_bss_end = .); - PROVIDE(end = .); - } > BSS_RAM - - .ram0 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - *(.ram0) - *(.ram0.*) - . = ALIGN(4); - __ram0_free__ = .; - } > ram0 - - .ram1 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - *(.ram1) - *(.ram1.*) - . = ALIGN(4); - __ram1_free__ = .; - } > ram1 - - .ram2 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - *(.ram2) - *(.ram2.*) - . = ALIGN(4); - __ram2_free__ = .; - } > ram2 - - .ram3 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - *(.ram3) - *(.ram3.*) - . = ALIGN(4); - __ram3_free__ = .; - } > ram3 - - .ram4 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - *(.ram4) - *(.ram4.*) - . = ALIGN(4); - __ram4_free__ = .; - } > ram4 - - .ram5 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - *(.ram5) - *(.ram5.*) - . = ALIGN(4); - __ram5_free__ = .; - } > ram5 - - .ram6 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - *(.ram6) - *(.ram6.*) - . = ALIGN(4); - __ram6_free__ = .; - } > ram6 - - .ram7 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - *(.ram7) - *(.ram7.*) - . = ALIGN(4); - __ram7_free__ = .; - } > ram7 -} - -/* Heap default boundaries, it is defaulted to be the non-used part - of ram0 region.*/ -__heap_base__ = __ram0_free__; -__heap_end__ = __ram0_end__; diff --git a/os/common/ports/ARM/compilers/GCC/rules.mk b/os/common/ports/ARM/compilers/GCC/rules.mk deleted file mode 100644 index b8f66a99e..000000000 --- a/os/common/ports/ARM/compilers/GCC/rules.mk +++ /dev/null @@ -1,307 +0,0 @@ -# ARM Cortex-Mx common makefile scripts and rules. - -############################################################################## -# Processing options coming from the upper Makefile. -# - -# Compiler options -OPT = $(USE_OPT) -COPT = $(USE_COPT) -CPPOPT = $(USE_CPPOPT) - -# Garbage collection -ifeq ($(USE_LINK_GC),yes) - OPT += -ffunction-sections -fdata-sections -fno-common - LDOPT := ,--gc-sections -else - LDOPT := -endif - -# Linker extra options -ifneq ($(USE_LDOPT),) - LDOPT := $(LDOPT),$(USE_LDOPT) -endif - -# Link time optimizations -ifeq ($(USE_LTO),yes) - OPT += -flto -endif - -# Undefined state stack size -ifeq ($(USE_UND_STACKSIZE),) - LDOPT := $(LDOPT),--defsym=__und_stack_size__=8 -else - LDOPT := $(LDOPT),--defsym=__und_stack_size__=$(USE_UND_STACKSIZE) -endif - -# Abort stack size -ifeq ($(USE_ABT_STACKSIZE),) - LDOPT := $(LDOPT),--defsym=__abt_stack_size__=8 -else - LDOPT := $(LDOPT),--defsym=__abt_stack_size__=$(USE_ABT_STACKSIZE) -endif - -# FIQ stack size -ifeq ($(USE_FIQ_STACKSIZE),) - LDOPT := $(LDOPT),--defsym=__fiq_stack_size__=64 -else - LDOPT := $(LDOPT),--defsym=__fiq_stack_size__=$(USE_FIQ_STACKSIZE) -endif - -# IRQ stack size -ifeq ($(USE_IRQ_STACKSIZE),) - LDOPT := $(LDOPT),--defsym=__irq_stack_size__=0x400 -else - LDOPT := $(LDOPT),--defsym=__irq_stack_size__=$(USE_IRQ_STACKSIZE) -endif - -# Supervisor stack size -ifeq ($(USE_SUPERVISOR_STACKSIZE),) - LDOPT := $(LDOPT),--defsym=__svc_stack_size__=8 -else - LDOPT := $(LDOPT),--defsym=__svc_stack_size__=$(USE_SUPERVISOR_STACKSIZE) -endif - -# System stack size -ifeq ($(USE_SYSTEM_STACKSIZE),) - LDOPT := $(LDOPT),--defsym=__sys_stack_size__=0x400 -else - LDOPT := $(LDOPT),--defsym=__sys_stack_size__=$(USE_SYSTEM_STACKSIZE) -endif - -# Output directory and files -ifeq ($(BUILDDIR),) - BUILDDIR = build -endif -ifeq ($(BUILDDIR),.) - BUILDDIR = build -endif -OUTFILES = $(BUILDDIR)/$(PROJECT).elf $(BUILDDIR)/$(PROJECT).hex \ - $(BUILDDIR)/$(PROJECT).bin $(BUILDDIR)/$(PROJECT).dmp \ - $(BUILDDIR)/$(PROJECT).list - - -# Source files groups and paths -ifeq ($(USE_THUMB),yes) - TCSRC += $(CSRC) - TCPPSRC += $(CPPSRC) -else - ACSRC += $(CSRC) - ACPPSRC += $(CPPSRC) -endif -ASRC = $(ACSRC)$(ACPPSRC) -TSRC = $(TCSRC)$(TCPPSRC) -SRCPATHS = $(sort $(dir $(ASMXSRC)) $(dir $(ASMSRC)) $(dir $(ASRC)) $(dir $(TSRC))) - -# Various directories -OBJDIR = $(BUILDDIR)/obj -LSTDIR = $(BUILDDIR)/lst - -# Object files groups -ACOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ACSRC:.c=.o))) -ACPPOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ACPPSRC:.cpp=.o))) -TCOBJS = $(addprefix $(OBJDIR)/, $(notdir $(TCSRC:.c=.o))) -TCPPOBJS = $(addprefix $(OBJDIR)/, $(notdir $(TCPPSRC:.cpp=.o))) -ASMOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ASMSRC:.s=.o))) -ASMXOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ASMXSRC:.S=.o))) -OBJS = $(ASMXOBJS) $(ASMOBJS) $(ACOBJS) $(TCOBJS) $(ACPPOBJS) $(TCPPOBJS) - -# Paths -IINCDIR = $(patsubst %,-I%,$(INCDIR) $(DINCDIR) $(UINCDIR)) -LLIBDIR = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR)) - -# Macros -DEFS = $(DDEFS) $(UDEFS) -ADEFS = $(DADEFS) $(UADEFS) - -# Libs -LIBS = $(DLIBS) $(ULIBS) - -# Various settings -MCFLAGS = -mcpu=$(MCU) -ODFLAGS = -x --syms -ASFLAGS = $(MCFLAGS) -Wa,-amhls=$(LSTDIR)/$(notdir $(<:.s=.lst)) $(ADEFS) -ASXFLAGS = $(MCFLAGS) -Wa,-amhls=$(LSTDIR)/$(notdir $(<:.S=.lst)) $(ADEFS) -CFLAGS = $(MCFLAGS) $(OPT) $(COPT) $(CWARN) -Wa,-alms=$(LSTDIR)/$(notdir $(<:.c=.lst)) $(DEFS) -CPPFLAGS = $(MCFLAGS) $(OPT) $(CPPOPT) $(CPPWARN) -Wa,-alms=$(LSTDIR)/$(notdir $(<:.cpp=.lst)) $(DEFS) -LDFLAGS = $(MCFLAGS) $(OPT) -nostartfiles $(LLIBDIR) -Wl,-Map=$(BUILDDIR)/$(PROJECT).map,--cref,--no-warn-mismatch,--library-path=$(RULESPATH),--script=$(LDSCRIPT)$(LDOPT) - -# Thumb interwork enabled only if needed because it kills performance. -ifneq ($(TSRC),) - CFLAGS += -DTHUMB_PRESENT - CPPFLAGS += -DTHUMB_PRESENT - ASFLAGS += -DTHUMB_PRESENT - ifneq ($(ASRC),) - # Mixed ARM and THUMB mode. - CFLAGS += -mthumb-interwork - CPPFLAGS += -mthumb-interwork - ASFLAGS += -mthumb-interwork - LDFLAGS += -mthumb-interwork - else - # Pure THUMB mode, THUMB C code cannot be called by ARM asm code directly. - CFLAGS += -mno-thumb-interwork -DTHUMB_NO_INTERWORKING - CPPFLAGS += -mno-thumb-interwork -DTHUMB_NO_INTERWORKING - ASFLAGS += -mno-thumb-interwork -DTHUMB_NO_INTERWORKING -mthumb - LDFLAGS += -mno-thumb-interwork -mthumb - endif -else - # Pure ARM mode - CFLAGS += -mno-thumb-interwork - CPPFLAGS += -mno-thumb-interwork - ASFLAGS += -mno-thumb-interwork - LDFLAGS += -mno-thumb-interwork -endif - -# Generate dependency information -ASFLAGS += -MD -MP -MF .dep/$(@F).d -CFLAGS += -MD -MP -MF .dep/$(@F).d -CPPFLAGS += -MD -MP -MF .dep/$(@F).d - -# Paths where to search for sources -VPATH = $(SRCPATHS) - -# -# Makefile rules -# - -all: PRE_MAKE_ALL_RULE_HOOK $(OBJS) $(OUTFILES) POST_MAKE_ALL_RULE_HOOK - -PRE_MAKE_ALL_RULE_HOOK: - -POST_MAKE_ALL_RULE_HOOK: - -$(OBJS): | $(BUILDDIR) $(OBJDIR) $(LSTDIR) - -$(BUILDDIR): -ifneq ($(USE_VERBOSE_COMPILE),yes) - @echo Compiler Options - @echo $(CC) -c $(CFLAGS) -I. $(IINCDIR) main.c -o main.o - @echo -endif - @mkdir -p $(BUILDDIR) - -$(OBJDIR): - @mkdir -p $(OBJDIR) - -$(LSTDIR): - @mkdir -p $(LSTDIR) - -$(ACPPOBJS) : $(OBJDIR)/%.o : %.cpp Makefile -ifeq ($(USE_VERBOSE_COMPILE),yes) - @echo - $(CPPC) -c $(CPPFLAGS) $(AOPT) -I. $(IINCDIR) $< -o $@ -else - @echo Compiling $( $@ - $(SZ) $< -else - @echo Creating $@ - @$(OD) $(ODFLAGS) $< > $@ - @echo - @$(SZ) $< -endif - -%.list: %.elf -ifeq ($(USE_VERBOSE_COMPILE),yes) - $(OD) -S $< > $@ -else - @echo Creating $@ - @$(OD) -S $< > $@ - @echo - @echo Done -endif - -lib: $(OBJS) $(BUILDDIR)/lib$(PROJECT).a - -$(BUILDDIR)/lib$(PROJECT).a: $(OBJS) - @$(AR) -r $@ $^ - @echo - @echo Done - -clean: - @echo Cleaning - -rm -fR .dep $(BUILDDIR) - @echo - @echo Done - -# -# Include the dependency files, should be the last of the makefile -# --include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) - -# *** EOF *** diff --git a/os/common/ports/ARM/compilers/GCC/vectors.s b/os/common/ports/ARM/compilers/GCC/vectors.s deleted file mode 100644 index 971c42cdc..000000000 --- a/os/common/ports/ARM/compilers/GCC/vectors.s +++ /dev/null @@ -1,101 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file ARM/compilers/GCC/vectors.s - * @brief Interrupt vectors for ARM devices. - * - * @defgroup ARM_VECTORS ARM Exception Vectors - * @{ - */ - -#if defined(__DOXYGEN__) -/** - * @brief Unhandled exceptions handler. - * @details Any undefined exception vector points to this function by default. - * This function simply stops the system into an infinite loop. - * @note The default implementation is a weak symbol, the application - * can override the default implementation. - * - * @notapi - */ -void _unhandled_exception(void) {} -#endif - -#if !defined(__DOXYGEN__) - - .section .vectors, "ax" - .code 32 - .balign 4 - -/* - * System entry points. - */ - .global _start -_start: - ldr pc, _reset - ldr pc, _undefined - ldr pc, _swi - ldr pc, _prefetch - ldr pc, _abort - nop - ldr pc, _irq - ldr pc, _fiq - -_reset: - .word Reset_Handler -_undefined: - .word Und_Handler -_swi: - .word Swi_Handler -_prefetch: - .word Prefetch_Handler -_abort: - .word Abort_Handler -_fiq: - .word Fiq_Handler -_irq: - .word Irq_Handler - -/* - * Default exceptions handlers. The handlers are declared weak in order to be - * replaced by the real handling code. Everything is defaulted to an infinite - * loop. - */ - .weak Reset_Handler -Reset_Handler: - .weak Und_Handler -Und_Handler: - .weak Swi_Handler -Swi_Handler: - .weak Prefetch_Handler -Prefetch_Handler: - .weak Abort_Handler -Abort_Handler: - .weak Fiq_Handler -Fiq_Handler: - .weak Irq_Handler -Irq_Handler: - .weak _unhandled_exception -_unhandled_exception: - b _unhandled_exception - -#endif - -/** @} */ diff --git a/os/common/ports/ARM/devices/LPC214x/armparams.h b/os/common/ports/ARM/devices/LPC214x/armparams.h deleted file mode 100644 index 9033e9e38..000000000 --- a/os/common/ports/ARM/devices/LPC214x/armparams.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file armparams.h - * @brief ARM parameters for the LPC214x. - * - * @defgroup ARM_LPC214x LPC214x Specific Parameters - * @ingroup ARM_SPECIFIC - * @details This file contains the ARM specific parameters for the - * LPC214x platform. - * @{ - */ - -#ifndef _ARMPARAMS_H_ -#define _ARMPARAMS_H_ - -/** - * @brief ARM core model. - */ -#define ARM_CORE ARM_CORE_ARM7TDMI - -/** - * @brief Thumb-capable. - */ -#define ARM_SUPPORTS_THUMB 1 - -/** - * @brief Thumb2-capable. - */ -#define ARM_SUPPORTS_THUMB2 0 - -/** - * @brief Implementation of the wait-for-interrupt state enter. - */ -#define ARM_WFI_IMPL (PCON = 1) - -#if !defined(_FROM_ASM_) || defined(__DOXYGEN__) -/** - * @brief Address of the IRQ vector register in the interrupt controller. - */ -#define ARM_IRQ_VECTOR_REG 0xFFFFF030U -#else -#define ARM_IRQ_VECTOR_REG 0xFFFFF030 -#endif - -#endif /* _ARMPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/ARM/devices/LPC214x/lpc214x.h b/os/common/ports/ARM/devices/LPC214x/lpc214x.h deleted file mode 100644 index 4e0bc4fdb..000000000 --- a/os/common/ports/ARM/devices/LPC214x/lpc214x.h +++ /dev/null @@ -1,526 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file lpc214x.h - * @brief LPC214x register definitions. - */ - -#ifndef _LPC214X_H_ -#define _LPC214X_H_ - -typedef volatile uint8_t IOREG8; -typedef volatile uint16_t IOREG16; -typedef volatile uint32_t IOREG32; - -/* - * System. - */ -#define MEMMAP (*((IOREG32 *)0xE01FC040)) -#define PCON (*((IOREG32 *)0xE01FC0C0)) -#define PCONP (*((IOREG32 *)0xE01FC0C4)) -#define VPBDIV (*((IOREG32 *)0xE01FC100)) -#define EXTINT (*((IOREG32 *)0xE01FC140)) -#define INTWAKE (*((IOREG32 *)0xE01FC144)) -#define EXTMODE (*((IOREG32 *)0xE01FC148)) -#define EXTPOLAR (*((IOREG32 *)0xE01FC14C)) -#define RSID (*((IOREG32 *)0xE01FC180)) -#define CSPR (*((IOREG32 *)0xE01FC184)) -#define SCS (*((IOREG32 *)0xE01FC1A0)) - -#define VPD_D4 0 -#define VPD_D1 1 -#define VPD_D2 2 -#define VPD_RESERVED 3 - -#define PCTIM0 (1 << 1) -#define PCTIM1 (1 << 2) -#define PCUART0 (1 << 3) -#define PCUART1 (1 << 4) -#define PCPWM0 (1 << 5) -#define PCI2C0 (1 << 7) -#define PCSPI0 (1 << 8) -#define PCRTC (1 << 9) -#define PCSPI1 (1 << 10) -#define PCAD0 (1 << 12) -#define PCI2C1 (1 << 19) -#define PCAD1 (1 << 20) -#define PCUSB (1 << 31) -#define PCALL (PCTIM0 | PCTIM1 | PCUART0 | PCUART1 | \ - PCPWM0 | PCI2C0 | PCSPI0 | PCRTC | PCSPI1 | \ - PCAD0 | PCI2C1 | PCAD1 | PCUSB) - -#define EINT0 1 -#define EINT1 2 -#define EINT2 4 -#define EINT3 8 - -#define EXTWAKE0 1 -#define EXTWAKE1 2 -#define EXTWAKE2 4 -#define EXTWAKE3 8 -#define USBWAKE 0x20 -#define BODWAKE 0x4000 -#define RTCWAKE 0x8000 - -#define EXTMODE0 1 -#define EXTMODE1 2 -#define EXTMODE2 4 -#define EXTMODE3 8 - -#define EXTPOLAR0 1 -#define EXTPOLAR1 2 -#define EXTPOLAR2 4 -#define EXTPOLAR3 8 - -typedef struct { - IOREG32 PLL_CON; - IOREG32 PLL_CFG; - IOREG32 PLL_STAT; - IOREG32 PLL_FEED; -} PLL; - -#define PLL0Base ((PLL *)0xE01FC080) -#define PLL1Base ((PLL *)0xE01FC0A0) -#define PLL0CON (PLL0Base->PLL_CON) -#define PLL0CFG (PLL0Base->PLL_CFG) -#define PLL0STAT (PLL0Base->PLL_STAT) -#define PLL0FEED (PLL0Base->PLL_FEED) -#define PLL1CON (PLL1Base->PLL_CON) -#define PLL1CFG (PLL1Base->PLL_CFG) -#define PLL1STAT (PLL1Base->PLL_STAT) -#define PLL1FEED (PLL1Base->PLL_FEED) - -/* - * Pins. - */ -typedef struct { - IOREG32 PS_SEL0; - IOREG32 PS_SEL1; - IOREG32 _dummy[3]; - IOREG32 PS_SEL2; -} PS; - -#define PSBase ((PS *)0xE002C000) -#define PINSEL0 (PSBase->PS_SEL0) -#define PINSEL1 (PSBase->PS_SEL1) -#define PINSEL2 (PSBase->PS_SEL2) - -/* - * VIC - */ -#define SOURCE_WDT 0 -#define SOURCE_ARMCore0 2 -#define SOURCE_ARMCore1 3 -#define SOURCE_Timer0 4 -#define SOURCE_Timer1 5 -#define SOURCE_UART0 6 -#define SOURCE_UART1 7 -#define SOURCE_PWM0 8 -#define SOURCE_I2C0 9 -#define SOURCE_SPI0 10 -#define SOURCE_SPI1 11 -#define SOURCE_PLL 12 -#define SOURCE_RTC 13 -#define SOURCE_EINT0 14 -#define SOURCE_EINT1 15 -#define SOURCE_EINT2 16 -#define SOURCE_EINT3 17 -#define SOURCE_ADC0 18 -#define SOURCE_I2C1 19 -#define SOURCE_BOD 20 -#define SOURCE_ADC1 21 -#define SOURCE_USB 22 - -#define INTMASK(n) (1 << (n)) -#define ALLINTMASK (INTMASK(SOURCE_WDT) | INTMASK(SOURCE_ARMCore0) | \ - INTMASK(SOURCE_ARMCore1) | INTMASK(SOURCE_Timer0) | \ - INTMASK(SOURCE_Timer1) | INTMASK(SOURCE_UART0) | \ - INTMASK(SOURCE_UART1) | INTMASK(SOURCE_PWM0) | \ - INTMASK(SOURCE_I2C0) | INTMASK(SOURCE_SPI0) | \ - INTMASK(SOURCE_SPI1) | INTMASK(SOURCE_PLL) | \ - INTMASK(SOURCE_RTC) | INTMASK(SOURCE_EINT0) | \ - INTMASK(SOURCE_EINT1) | INTMASK(SOURCE_EINT2) | \ - INTMASK(SOURCE_EINT3) | INTMASK(SOURCE_ADC0) | \ - INTMASK(SOURCE_I2C1) | INTMASK(SOURCE_BOD) | \ - INTMASK(SOURCE_ADC1) | INTMASK(SOURCE_USB)) - -typedef struct { - IOREG32 VIC_IRQStatus; - IOREG32 VIC_FIQStatus; - IOREG32 VIC_RawIntr; - IOREG32 VIC_IntSelect; - IOREG32 VIC_IntEnable; - IOREG32 VIC_IntEnClear; - IOREG32 VIC_SoftInt; - IOREG32 VIC_SoftIntClear; - IOREG32 VIC_Protection; - IOREG32 unused1[3]; - IOREG32 VIC_VectAddr; - IOREG32 VIC_DefVectAddr; - IOREG32 unused2[50]; - IOREG32 VIC_VectAddrs[16]; - IOREG32 unused3[48]; - IOREG32 VIC_VectCntls[16]; -} VIC; - -#define VICBase ((VIC *)0xFFFFF000) -#define VICVectorsBase ((IOREG32 *)0xFFFFF100) -#define VICControlsBase ((IOREG32 *)0xFFFFF200) - -#define VICIRQStatus (VICBase->VIC_IRQStatus) -#define VICFIQStatus (VICBase->VIC_FIQStatus) -#define VICRawIntr (VICBase->VIC_RawIntr) -#define VICIntSelect (VICBase->VIC_IntSelect) -#define VICIntEnable (VICBase->VIC_IntEnable) -#define VICIntEnClear (VICBase->VIC_IntEnClear) -#define VICSoftInt (VICBase->VIC_SoftInt) -#define VICSoftIntClear (VICBase->VIC_SoftIntClear) -#define VICProtection (VICBase->VIC_Protection) -#define VICVectAddr (VICBase->VIC_VectAddr) -#define VICDefVectAddr (VICBase->VIC_DefVectAddr) - -#define VICVectAddrs(n) (VICBase->VIC_VectAddrs[n]) -#define VICVectCntls(n) (VICBase->VIC_VectCntls[n]) - -/* - * MAM. - */ -typedef struct { - IOREG32 MAM_Control; - IOREG32 MAM_Timing; -} MAM; - -#define MAMBase ((MAM *)0xE01FC000) -#define MAMCR (MAMBase->MAM_Control) -#define MAMTIM (MAMBase->MAM_Timing) - -/* - * GPIO - FIO. - */ -typedef struct { - IOREG32 IO_PIN; - IOREG32 IO_SET; - IOREG32 IO_DIR; - IOREG32 IO_CLR; -} GPIO; - -#define GPIO0Base ((GPIO *)0xE0028000) -#define IO0PIN (GPIO0Base->IO_PIN) -#define IO0SET (GPIO0Base->IO_SET) -#define IO0DIR (GPIO0Base->IO_DIR) -#define IO0CLR (GPIO0Base->IO_CLR) - -#define GPIO1Base ((GPIO *)0xE0028010) -#define IO1PIN (GPIO1Base->IO_PIN) -#define IO1SET (GPIO1Base->IO_SET) -#define IO1DIR (GPIO1Base->IO_DIR) -#define IO1CLR (GPIO1Base->IO_CLR) - -typedef struct { - IOREG32 FIO_DIR; - IOREG32 unused1; - IOREG32 unused2; - IOREG32 unused3; - IOREG32 FIO_MASK; - IOREG32 FIO_PIN; - IOREG32 FIO_SET; - IOREG32 FIO_CLR; -} FIO; - -#define FIO0Base ((FIO *)0x3FFFC000) -#define FIO0DIR (FIO0Base->FIO_DIR) -#define FIO0MASK (FIO0Base->FIO_MASK) -#define FIO0PIN (FIO0Base->FIO_PIN) -#define FIO0SET (FIO0Base->FIO_SET) -#define FIO0CLR (FIO0Base->FIO_CLR) - -#define FIO1Base ((FIO *)0x3FFFC020) -#define FIO1DIR (FIO1Base->FIO_DIR) -#define FIO1MASK (FIO1Base->FIO_MASK) -#define FIO1PIN (FIO1Base->FIO_PIN) -#define FIO1SET (FIO1Base->FIO_SET) -#define FIO1CLR (FIO1Base->FIO_CLR) - -/* - * UART. - */ -typedef struct { - union { - IOREG32 UART_RBR; - IOREG32 UART_THR; - IOREG32 UART_DLL; - }; - union { - IOREG32 UART_IER; - IOREG32 UART_DLM; - }; - union { - IOREG32 UART_IIR; - IOREG32 UART_FCR; - }; - IOREG32 UART_LCR; - IOREG32 UART_MCR; - IOREG32 UART_LSR; - IOREG32 unused18; - IOREG32 UART_SCR; - IOREG32 UART_ACR; - IOREG32 unused24; - IOREG32 UART_FDR; - IOREG32 unused2C; - IOREG32 UART_TER; -} UART; - -#define U0Base ((UART *)0xE000C000) -#define U0RBR (U0Base->UART_RBR) -#define U0THR (U0Base->UART_THR) -#define U0DLL (U0Base->UART_DLL) -#define U0IER (U0Base->UART_IER) -#define U0DLM (U0Base->UART_DLM) -#define U0IIR (U0Base->UART_IIR) -#define U0FCR (U0Base->UART_FCR) -#define U0LCR (U0Base->UART_LCR) -#define U0LSR (U0Base->UART_LSR) -#define U0SCR (U0Base->UART_SCR) -#define U0ACR (U0Base->UART_ACR) -#define U0FDR (U0Base->UART_FDR) -#define U0TER (U0Base->UART_TER) - -#define U1Base ((UART *)0xE0010000) -#define U1RBR (U1Base->UART_RBR) -#define U1THR (U1Base->UART_THR) -#define U1DLL (U1Base->UART_DLL) -#define U1IER (U1Base->UART_IER) -#define U1DLM (U1Base->UART_DLM) -#define U1IIR (U1Base->UART_IIR) -#define U1FCR (U1Base->UART_FCR) -#define U1MCR (U1Base->UART_MCR) -#define U1LCR (U1Base->UART_LCR) -#define U1LSR (U1Base->UART_LSR) -#define U1SCR (U1Base->UART_SCR) -#define U1ACR (U1Base->UART_ACR) -#define U1FDR (U1Base->UART_FDR) -#define U1TER (U1Base->UART_TER) - -#define IIR_SRC_MASK 0x0F -#define IIR_SRC_NONE 0x01 -#define IIR_SRC_TX 0x02 -#define IIR_SRC_RX 0x04 -#define IIR_SRC_ERROR 0x06 -#define IIR_SRC_TIMEOUT 0x0C - -#define IER_RBR 1 -#define IER_THRE 2 -#define IER_STATUS 4 - -#define IIR_INT_PENDING 1 - -#define LCR_WL5 0 -#define LCR_WL6 1 -#define LCR_WL7 2 -#define LCR_WL8 3 -#define LCR_STOP1 0 -#define LCR_STOP2 4 -#define LCR_NOPARITY 0 -#define LCR_PARITYODD 0x08 -#define LCR_PARITYEVEN 0x18 -#define LCR_PARITYONE 0x28 -#define LCR_PARITYZERO 0x38 -#define LCR_BREAK_ON 0x40 -#define LCR_DLAB 0x80 - -#define FCR_ENABLE 1 -#define FCR_RXRESET 2 -#define FCR_TXRESET 4 -#define FCR_TRIGGER0 0 -#define FCR_TRIGGER1 0x40 -#define FCR_TRIGGER2 0x80 -#define FCR_TRIGGER3 0xC0 - -#define LSR_RBR_FULL 1 -#define LSR_OVERRUN 2 -#define LSR_PARITY 4 -#define LSR_FRAMING 8 -#define LSR_BREAK 0x10 -#define LSR_THRE 0x20 -#define LSR_TEMT 0x40 -#define LSR_RXFE 0x80 - -#define TER_ENABLE 0x80 - -/* - * SSP. - */ -typedef struct { - IOREG32 SSP_CR0; - IOREG32 SSP_CR1; - IOREG32 SSP_DR; - IOREG32 SSP_SR; - IOREG32 SSP_CPSR; - IOREG32 SSP_IMSC; - IOREG32 SSP_RIS; - IOREG32 SSP_MIS; - IOREG32 SSP_ICR; -} SSP; - -#define SSPBase ((SSP *)0xE0068000) -#define SSPCR0 (SSPBase->SSP_CR0) -#define SSPCR1 (SSPBase->SSP_CR1) -#define SSPDR (SSPBase->SSP_DR) -#define SSPSR (SSPBase->SSP_SR) -#define SSPCPSR (SSPBase->SSP_CPSR) -#define SSPIMSC (SSPBase->SSP_IMSC) -#define SSPRIS (SSPBase->SSP_RIS) -#define SSPMIS (SSPBase->SSP_MIS) -#define SSPICR (SSPBase->SSP_ICR) - -#define CR0_DSSMASK 0x0F -#define CR0_DSS4BIT 3 -#define CR0_DSS5BIT 4 -#define CR0_DSS6BIT 5 -#define CR0_DSS7BIT 6 -#define CR0_DSS8BIT 7 -#define CR0_DSS9BIT 8 -#define CR0_DSS10BIT 9 -#define CR0_DSS11BIT 0xA -#define CR0_DSS12BIT 0xB -#define CR0_DSS13BIT 0xC -#define CR0_DSS14BIT 0xD -#define CR0_DSS15BIT 0xE -#define CR0_DSS16BIT 0xF -#define CR0_FRFSPI 0 -#define CR0_FRFSSI 0x10 -#define CR0_FRFMW 0x20 -#define CR0_CPOL 0x40 -#define CR0_CPHA 0x80 -#define CR0_CLOCKRATE(n) ((n) << 8) - -#define CR1_LBM 1 -#define CR1_SSE 2 -#define CR1_MS 4 -#define CR1_SOD 8 - -#define SR_TFE 1 -#define SR_TNF 2 -#define SR_RNE 4 -#define SR_RFF 8 -#define SR_BSY 0x10 - -#define IMSC_ROR 1 -#define IMSC_RT 2 -#define IMSC_RX 4 -#define IMSC_TX 8 - -#define RIS_ROR 1 -#define RIS_RT 2 -#define RIS_RX 4 -#define RIS_TX 8 - -#define MIS_ROR 1 -#define MIS_RT 2 -#define MIS_RX 4 -#define MIS_TX 8 - -#define ICR_ROR 1 -#define ICR_RT 2 - -/* - * Timers/Counters. - */ -typedef struct { - IOREG32 TC_IR; - IOREG32 TC_TCR; - IOREG32 TC_TC; - IOREG32 TC_PR; - IOREG32 TC_PC; - IOREG32 TC_MCR; - IOREG32 TC_MR0; - IOREG32 TC_MR1; - IOREG32 TC_MR2; - IOREG32 TC_MR3; - IOREG32 TC_CCR; - IOREG32 TC_CR0; - IOREG32 TC_CR1; - IOREG32 TC_CR2; - IOREG32 TC_CR3; - IOREG32 TC_EMR; - IOREG32 TC_CTCR; -} TC; - -#define T0Base ((TC *)0xE0004000) -#define T0IR (T0Base->TC_IR) -#define T0TCR (T0Base->TC_TCR) -#define T0TC (T0Base->TC_TC) -#define T0PR (T0Base->TC_PR) -#define T0PC (T0Base->TC_PC) -#define T0MCR (T0Base->TC_MCR) -#define T0MR0 (T0Base->TC_MR0) -#define T0MR1 (T0Base->TC_MR1) -#define T0MR2 (T0Base->TC_MR2) -#define T0MR3 (T0Base->TC_MR3) -#define T0CCR (T0Base->TC_CCR) -#define T0CR0 (T0Base->TC_CR0) -#define T0CR1 (T0Base->TC_CR1) -#define T0CR2 (T0Base->TC_CR2) -#define T0CR3 (T0Base->TC_CR3) -#define T0EMR (T0Base->TC_EMR) -#define T0CTCR (T0Base->TC_CTCR) - -#define T1Base ((TC *)0xE0008000) -#define T1IR (T1Base->TC_IR) -#define T1TCR (T1Base->TC_TCR) -#define T1TC (T1Base->TC_TC) -#define T1PR (T1Base->TC_PR) -#define T1PC (T1Base->TC_PC) -#define T1MCR (T1Base->TC_MCR) -#define T1MR0 (T1Base->TC_MR0) -#define T1MR1 (T1Base->TC_MR1) -#define T1MR2 (T1Base->TC_MR2) -#define T1MR3 (T1Base->TC_MR3) -#define T1CCR (T1Base->TC_CCR) -#define T1CR0 (T1Base->TC_CR0) -#define T1CR1 (T1Base->TC_CR1) -#define T1CR2 (T1Base->TC_CR2) -#define T1CR3 (T1Base->TC_CR3) -#define T1EMR (T1Base->TC_EMR) -#define T1CTCR (T1Base->TC_CTCR) - -/* - * Watchdog. - */ -typedef struct { - IOREG32 WD_MOD; - IOREG32 WD_TC; - IOREG32 WD_FEED; - IOREG32 WD_TV; -} WD; - -#define WDBase ((WD *)0xE0000000) -#define WDMOD (WDBase->WD_MOD) -#define WDTC (WDBase->WD_TC) -#define WDFEED (WDBase->WD_FEED) -#define WDTV (WDBase->WD_TV) - -/* - * DAC. - */ -#define DACR (*((IOREG32 *)0xE006C000)) - -#endif /* _LPC214X_H_ */ - diff --git a/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s b/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s deleted file mode 100644 index c3ca9faa5..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s +++ /dev/null @@ -1,259 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file crt0_v6m.s - * @brief Generic ARMv6-M (Cortex-M0/M1) startup file for ChibiOS. - * - * @addtogroup ARMCMx_GCC_STARTUP_V6M - * @{ - */ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -#if !defined(FALSE) || defined(__DOXYGEN__) -#define FALSE 0 -#endif - -#if !defined(TRUE) || defined(__DOXYGEN__) -#define TRUE 1 -#endif - -#define CONTROL_MODE_PRIVILEGED 0 -#define CONTROL_MODE_UNPRIVILEGED 1 -#define CONTROL_USE_MSP 0 -#define CONTROL_USE_PSP 2 - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/** - * @brief Control special register initialization value. - * @details The system is setup to run in privileged mode using the PSP - * stack (dual stack mode). - */ -#if !defined(CRT0_CONTROL_INIT) || defined(__DOXYGEN__) -#define CRT0_CONTROL_INIT (CONTROL_USE_PSP | \ - CONTROL_MODE_PRIVILEGED) -#endif - -/** - * @brief Core initialization switch. - */ -#if !defined(CRT0_INIT_CORE) || defined(__DOXYGEN__) -#define CRT0_INIT_CORE TRUE -#endif - -/** - * @brief Stack segments initialization switch. - */ -#if !defined(CRT0_STACKS_FILL_PATTERN) || defined(__DOXYGEN__) -#define CRT0_STACKS_FILL_PATTERN 0x55555555 -#endif - -/** - * @brief Stack segments initialization switch. - */ -#if !defined(CRT0_INIT_STACKS) || defined(__DOXYGEN__) -#define CRT0_INIT_STACKS TRUE -#endif - -/** - * @brief DATA segment initialization switch. - */ -#if !defined(CRT0_INIT_DATA) || defined(__DOXYGEN__) -#define CRT0_INIT_DATA TRUE -#endif - -/** - * @brief BSS segment initialization switch. - */ -#if !defined(CRT0_INIT_BSS) || defined(__DOXYGEN__) -#define CRT0_INIT_BSS TRUE -#endif - -/** - * @brief RAM areas initialization switch. - */ -#if !defined(CRT0_INIT_RAM_AREAS) || defined(__DOXYGEN__) -#define CRT0_INIT_RAM_AREAS TRUE -#endif - -/** - * @brief Constructors invocation switch. - */ -#if !defined(CRT0_CALL_CONSTRUCTORS) || defined(__DOXYGEN__) -#define CRT0_CALL_CONSTRUCTORS TRUE -#endif - -/** - * @brief Destructors invocation switch. - */ -#if !defined(CRT0_CALL_DESTRUCTORS) || defined(__DOXYGEN__) -#define CRT0_CALL_DESTRUCTORS TRUE -#endif - -/*===========================================================================*/ -/* Code section. */ -/*===========================================================================*/ - -#if !defined(__DOXYGEN__) - - .cpu cortex-m0 - .fpu softvfp - - .thumb - .text - -/* - * Reset handler. - */ - .align 2 - .thumb_func - .global Reset_Handler -Reset_Handler: - /* Interrupts are globally masked initially.*/ - cpsid i - - /* PSP stack pointers initialization.*/ - ldr r0, =__process_stack_end__ - msr PSP, r0 - - /* CPU mode initialization as configured.*/ - movs r0, #CRT0_CONTROL_INIT - msr CONTROL, r0 - isb - -#if CRT0_INIT_CORE == TRUE - /* Core initialization.*/ - bl __core_init -#endif - - /* Early initialization..*/ - bl __early_init - -#if CRT0_INIT_STACKS == TRUE - ldr r0, =CRT0_STACKS_FILL_PATTERN - /* Main Stack initialization. Note, it assumes that the - stack size is a multiple of 4 so the linker file must - ensure this.*/ - ldr r1, =__main_stack_base__ - ldr r2, =__main_stack_end__ -msloop: - cmp r1, r2 - bge endmsloop - str r0, [r1] - add r1, r1, #4 - b msloop -endmsloop: - /* Process Stack initialization. Note, it assumes that the - stack size is a multiple of 4 so the linker file must - ensure this.*/ - ldr r1, =__process_stack_base__ - ldr r2, =__process_stack_end__ -psloop: - cmp r1, r2 - bge endpsloop - str r0, [r1] - add r1, r1, #4 - b psloop -endpsloop: -#endif - -#if CRT0_INIT_DATA == TRUE - /* Data initialization. Note, it assumes that the DATA size - is a multiple of 4 so the linker file must ensure this.*/ - ldr r1, =_textdata - ldr r2, =_data - ldr r3, =_edata -dloop: - cmp r2, r3 - bge enddloop - ldr r0, [r1] - str r0, [r2] - add r1, r1, #4 - add r2, r2, #4 - b dloop -enddloop: -#endif - -#if CRT0_INIT_BSS == TRUE - /* BSS initialization. Note, it assumes that the DATA size - is a multiple of 4 so the linker file must ensure this.*/ - movs r0, #0 - ldr r1, =_bss_start - ldr r2, =_bss_end -bloop: - cmp r1, r2 - bge endbloop - str r0, [r1] - add r1, r1, #4 - b bloop -endbloop: -#endif - -#if CRT0_INIT_RAM_AREAS == TRUE - /* RAM areas initialization.*/ - bl __init_ram_areas -#endif - - /* Late initialization..*/ - bl __late_init - -#if CRT0_CALL_CONSTRUCTORS == TRUE - /* Constructors invocation.*/ - ldr r4, =__init_array_start - ldr r5, =__init_array_end -initloop: - cmp r4, r5 - bge endinitloop - ldr r1, [r4] - blx r1 - add r4, r4, #4 - b initloop -endinitloop: -#endif - - /* Main program invocation, r0 contains the returned value.*/ - bl main - -#if CRT0_CALL_DESTRUCTORS == TRUE - /* Destructors invocation.*/ - ldr r4, =__fini_array_start - ldr r5, =__fini_array_end -finiloop: - cmp r4, r5 - bge endfiniloop - ldr r1, [r4] - blx r1 - add r4, r4, #4 - b finiloop -endfiniloop: -#endif - - /* Branching to the defined exit handler.*/ - ldr r1, =__default_exit - bx r1 - -#endif - -/** @} */ diff --git a/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s b/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s deleted file mode 100644 index c7792f954..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s +++ /dev/null @@ -1,322 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file crt0_v7m.s - * @brief Generic ARMv7-M (Cortex-M3/M4/M7) startup file for ChibiOS. - * - * @addtogroup ARMCMx_GCC_STARTUP_V7M - * @{ - */ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -#if !defined(FALSE) || defined(__DOXYGEN__) -#define FALSE 0 -#endif - -#if !defined(TRUE) || defined(__DOXYGEN__) -#define TRUE 1 -#endif - -#define CONTROL_MODE_PRIVILEGED 0 -#define CONTROL_MODE_UNPRIVILEGED 1 -#define CONTROL_USE_MSP 0 -#define CONTROL_USE_PSP 2 -#define CONTROL_FPCA 4 - -#define FPCCR_ASPEN (1 << 31) -#define FPCCR_LSPEN (1 << 30) - -#define SCB_CPACR 0xE000ED88 -#define SCB_FPCCR 0xE000EF34 -#define SCB_FPDSCR 0xE000EF3C - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/** - * @brief FPU initialization switch. - */ -#if !defined(CRT0_INIT_FPU) || defined(__DOXYGEN__) -#if defined(CORTEX_USE_FPU) || defined(__DOXYGEN__) -#define CRT0_INIT_FPU CORTEX_USE_FPU -#else -#define CRT0_INIT_FPU FALSE -#endif -#endif - -/** - * @brief Control special register initialization value. - * @details The system is setup to run in privileged mode using the PSP - * stack (dual stack mode). - */ -#if !defined(CRT0_CONTROL_INIT) || defined(__DOXYGEN__) -#define CRT0_CONTROL_INIT (CONTROL_USE_PSP | \ - CONTROL_MODE_PRIVILEGED) -#endif - -/** - * @brief Core initialization switch. - */ -#if !defined(CRT0_INIT_CORE) || defined(__DOXYGEN__) -#define CRT0_INIT_CORE TRUE -#endif - -/** - * @brief Stack segments initialization switch. - */ -#if !defined(CRT0_STACKS_FILL_PATTERN) || defined(__DOXYGEN__) -#define CRT0_STACKS_FILL_PATTERN 0x55555555 -#endif - -/** - * @brief Stack segments initialization switch. - */ -#if !defined(CRT0_INIT_STACKS) || defined(__DOXYGEN__) -#define CRT0_INIT_STACKS TRUE -#endif - -/** - * @brief DATA segment initialization switch. - */ -#if !defined(CRT0_INIT_DATA) || defined(__DOXYGEN__) -#define CRT0_INIT_DATA TRUE -#endif - -/** - * @brief BSS segment initialization switch. - */ -#if !defined(CRT0_INIT_BSS) || defined(__DOXYGEN__) -#define CRT0_INIT_BSS TRUE -#endif - -/** - * @brief RAM areas initialization switch. - */ -#if !defined(CRT0_INIT_RAM_AREAS) || defined(__DOXYGEN__) -#define CRT0_INIT_RAM_AREAS TRUE -#endif - -/** - * @brief Constructors invocation switch. - */ -#if !defined(CRT0_CALL_CONSTRUCTORS) || defined(__DOXYGEN__) -#define CRT0_CALL_CONSTRUCTORS TRUE -#endif - -/** - * @brief Destructors invocation switch. - */ -#if !defined(CRT0_CALL_DESTRUCTORS) || defined(__DOXYGEN__) -#define CRT0_CALL_DESTRUCTORS TRUE -#endif - -/** - * @brief FPU FPCCR register initialization value. - * @note Only used if @p CRT0_INIT_FPU is equal to @p TRUE. - */ -#if !defined(CRT0_FPCCR_INIT) || defined(__DOXYGEN__) -#define CRT0_FPCCR_INIT (FPCCR_ASPEN | FPCCR_LSPEN) -#endif - -/** - * @brief CPACR register initialization value. - * @note Only used if @p CRT0_INIT_FPU is equal to @p TRUE. - */ -#if !defined(CRT0_CPACR_INIT) || defined(__DOXYGEN__) -#define CRT0_CPACR_INIT 0x00F00000 -#endif - -/*===========================================================================*/ -/* Code section. */ -/*===========================================================================*/ - -#if !defined(__DOXYGEN__) - - .syntax unified - .cpu cortex-m3 -#if CRT0_INIT_FPU == TRUE - .fpu fpv4-sp-d16 -#else - .fpu softvfp -#endif - - .thumb - .text - -/* - * Reset handler. - */ - .align 2 - .thumb_func - .global Reset_Handler -Reset_Handler: - /* Interrupts are globally masked initially.*/ - cpsid i - - /* PSP stack pointers initialization.*/ - ldr r0, =__process_stack_end__ - msr PSP, r0 - -#if CRT0_INIT_FPU == TRUE - /* FPU FPCCR initialization.*/ - movw r0, #CRT0_FPCCR_INIT & 0xFFFF - movt r0, #CRT0_FPCCR_INIT >> 16 - movw r1, #SCB_FPCCR & 0xFFFF - movt r1, #SCB_FPCCR >> 16 - str r0, [r1] - dsb - isb - - /* CPACR initialization.*/ - movw r0, #CRT0_CPACR_INIT & 0xFFFF - movt r0, #CRT0_CPACR_INIT >> 16 - movw r1, #SCB_CPACR & 0xFFFF - movt r1, #SCB_CPACR >> 16 - str r0, [r1] - dsb - isb - - /* FPU FPSCR initially cleared.*/ - mov r0, #0 - vmsr FPSCR, r0 - - /* FPU FPDSCR initially cleared.*/ - movw r1, #SCB_FPDSCR & 0xFFFF - movt r1, #SCB_FPDSCR >> 16 - str r0, [r1] - - /* Enforcing FPCA bit in the CONTROL register.*/ - movs r0, #CRT0_CONTROL_INIT | CONTROL_FPCA - -#else - movs r0, #CRT0_CONTROL_INIT -#endif - - /* CONTROL register initialization as configured.*/ - msr CONTROL, r0 - isb - -#if CRT0_INIT_CORE == TRUE - /* Core initialization.*/ - bl __core_init -#endif - - /* Early initialization.*/ - bl __early_init - -#if CRT0_INIT_STACKS == TRUE - ldr r0, =CRT0_STACKS_FILL_PATTERN - /* Main Stack initialization. Note, it assumes that the - stack size is a multiple of 4 so the linker file must - ensure this.*/ - ldr r1, =__main_stack_base__ - ldr r2, =__main_stack_end__ -msloop: - cmp r1, r2 - itt lo - strlo r0, [r1], #4 - blo msloop - - /* Process Stack initialization. Note, it assumes that the - stack size is a multiple of 4 so the linker file must - ensure this.*/ - ldr r1, =__process_stack_base__ - ldr r2, =__process_stack_end__ -psloop: - cmp r1, r2 - itt lo - strlo r0, [r1], #4 - blo psloop -#endif - -#if CRT0_INIT_DATA == TRUE - /* Data initialization. Note, it assumes that the DATA size - is a multiple of 4 so the linker file must ensure this.*/ - ldr r1, =_textdata_start - ldr r2, =_data_start - ldr r3, =_data_end -dloop: - cmp r2, r3 - ittt lo - ldrlo r0, [r1], #4 - strlo r0, [r2], #4 - blo dloop -#endif - -#if CRT0_INIT_BSS == TRUE - /* BSS initialization. Note, it assumes that the DATA size - is a multiple of 4 so the linker file must ensure this.*/ - movs r0, #0 - ldr r1, =_bss_start - ldr r2, =_bss_end -bloop: - cmp r1, r2 - itt lo - strlo r0, [r1], #4 - blo bloop -#endif - -#if CRT0_INIT_RAM_AREAS == TRUE - /* RAM areas initialization.*/ - bl __init_ram_areas -#endif - - /* Late initialization..*/ - bl __late_init - -#if CRT0_CALL_CONSTRUCTORS == TRUE - /* Constructors invocation.*/ - ldr r4, =__init_array_start - ldr r5, =__init_array_end -initloop: - cmp r4, r5 - bge endinitloop - ldr r1, [r4], #4 - blx r1 - b initloop -endinitloop: -#endif - - /* Main program invocation, r0 contains the returned value.*/ - bl main - -#if CRT0_CALL_DESTRUCTORS == TRUE - /* Destructors invocation.*/ - ldr r4, =__fini_array_start - ldr r5, =__fini_array_end -finiloop: - cmp r4, r5 - bge endfiniloop - ldr r1, [r4], #4 - blx r1 - b finiloop -endfiniloop: -#endif - - /* Branching to the defined exit handler.*/ - b __default_exit - -#endif /* !defined(__DOXYGEN__) */ - -/** @} */ diff --git a/os/common/ports/ARMCMx/compilers/GCC/crt1.c b/os/common/ports/ARMCMx/compilers/GCC/crt1.c deleted file mode 100644 index c47214e39..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/crt1.c +++ /dev/null @@ -1,221 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file ARMCMx/compilers/GCC/crt1.c - * @brief Startup stub functions. - * - * @addtogroup ARMCMx_GCC_STARTUP - * @{ - */ - -#include - -#include "cmparams.h" - -/*===========================================================================*/ -/* Module local definitions. */ -/*===========================================================================*/ - -#if !defined(CRT1_AREAS_NUMBER) || defined(__DOXYGEN__) -#define CRT1_AREAS_NUMBER 8 -#endif - -#if (CRT1_AREAS_NUMBER < 0) || (CRT1_AREAS_NUMBER > 8) -#error "CRT1_AREAS_NUMBER must be within 0 and 8" -#endif - -/*===========================================================================*/ -/* Module exported variables. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module local types. */ -/*===========================================================================*/ - -/** - * @brief Type of an area to be initialized. - */ -typedef struct { - uint32_t *init_text_area; - uint32_t *init_area; - uint32_t *clear_area; - uint32_t *no_init_area; -} ram_init_area_t; - -/*===========================================================================*/ -/* Module local variables. */ -/*===========================================================================*/ - -#if (CRT1_AREAS_NUMBER > 0) || defined(__DOXYGEN__) -extern uint32_t __ram0_init_text__, __ram0_init__, __ram0_clear__, __ram0_noinit__; -#endif -#if (CRT1_AREAS_NUMBER > 1) || defined(__DOXYGEN__) -extern uint32_t __ram1_init_text__, __ram1_init__, __ram1_clear__, __ram1_noinit__; -#endif -#if (CRT1_AREAS_NUMBER > 2) || defined(__DOXYGEN__) -extern uint32_t __ram2_init_text__, __ram2_init__, __ram2_clear__, __ram2_noinit__; -#endif -#if (CRT1_AREAS_NUMBER > 3) || defined(__DOXYGEN__) -extern uint32_t __ram3_init_text__, __ram3_init__, __ram3_clear__, __ram3_noinit__; -#endif -#if (CRT1_AREAS_NUMBER > 4) || defined(__DOXYGEN__) -extern uint32_t __ram4_init_text__, __ram4_init__, __ram4_clear__, __ram4_noinit__; -#endif -#if (CRT1_AREAS_NUMBER > 5) || defined(__DOXYGEN__) -extern uint32_t __ram5_init_text__, __ram5_init__, __ram5_clear__, __ram5_noinit__; -#endif -#if (CRT1_AREAS_NUMBER > 6) || defined(__DOXYGEN__) -extern uint32_t __ram6_init_text__, __ram6_init__, __ram6_clear__, __ram6_noinit__; -#endif -#if (CRT1_AREAS_NUMBER > 7) || defined(__DOXYGEN__) -extern uint32_t __ram7_init_text__, __ram7_init__, __ram7_clear__, __ram7_noinit__; -#endif - -/** - * @brief Static table of areas to be initialized. - */ -#if (CRT1_AREAS_NUMBER > 0) || defined(__DOXYGEN__) -static const ram_init_area_t ram_areas[CRT1_AREAS_NUMBER] = { - {&__ram0_init_text__, &__ram0_init__, &__ram0_clear__, &__ram0_noinit__}, -#if (CRT1_AREAS_NUMBER > 1) || defined(__DOXYGEN__) - {&__ram1_init_text__, &__ram1_init__, &__ram1_clear__, &__ram1_noinit__}, -#endif -#if (CRT1_AREAS_NUMBER > 2) || defined(__DOXYGEN__) - {&__ram2_init_text__, &__ram2_init__, &__ram2_clear__, &__ram2_noinit__}, -#endif -#if (CRT1_AREAS_NUMBER > 3) || defined(__DOXYGEN__) - {&__ram3_init_text__, &__ram3_init__, &__ram3_clear__, &__ram3_noinit__}, -#endif -#if (CRT1_AREAS_NUMBER > 4) || defined(__DOXYGEN__) - {&__ram4_init_text__, &__ram4_init__, &__ram4_clear__, &__ram4_noinit__}, -#endif -#if (CRT1_AREAS_NUMBER > 5) || defined(__DOXYGEN__) - {&__ram5_init_text__, &__ram5_init__, &__ram5_clear__, &__ram5_noinit__}, -#endif -#if (CRT1_AREAS_NUMBER > 6) || defined(__DOXYGEN__) - {&__ram6_init_text__, &__ram6_init__, &__ram6_clear__, &__ram6_noinit__}, -#endif -#if (CRT1_AREAS_NUMBER > 7) || defined(__DOXYGEN__) - {&__ram7_init_text__, &__ram7_init__, &__ram7_clear__, &__ram7_noinit__}, -#endif -}; -#endif - -/*===========================================================================*/ -/* Module local functions. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module exported functions. */ -/*===========================================================================*/ - -/** - * @brief Architecture-dependent core initialization. - * @details This hook is invoked immediately after the stack initialization - * and before the DATA and BSS segments initialization. - * @note This function is a weak symbol. - */ -#if !defined(__DOXYGEN__) -__attribute__((weak)) -#endif -/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ -void __core_init(void) { - -#if __CORTEX_M == 7 - SCB_EnableICache(); - SCB_EnableDCache(); -#endif -} - -/** - * @brief Early initialization. - * @details This hook is invoked immediately after the stack and core - * initialization and before the DATA and BSS segments - * initialization. - * @note This function is a weak symbol. - */ -#if !defined(__DOXYGEN__) -__attribute__((weak)) -#endif -/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ -void __early_init(void) {} -/*lint -restore*/ - -/** - * @brief Late initialization. - * @details This hook is invoked after the DATA and BSS segments - * initialization and before any static constructor. The - * default behavior is to do nothing. - * @note This function is a weak symbol. - */ -#if !defined(__DOXYGEN__) -__attribute__((weak)) -#endif -/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ -void __late_init(void) {} -/*lint -restore*/ - -/** - * @brief Default @p main() function exit handler. - * @details This handler is invoked or the @p main() function exit. The - * default behavior is to enter an infinite loop. - * @note This function is a weak symbol. - */ -#if !defined(__DOXYGEN__) -__attribute__((noreturn, weak)) -#endif -/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ -void __default_exit(void) { -/*lint -restore*/ - - while (true) { - } -} - -/** - * @brief Performs the initialization of the various RAM areas. - */ -void __init_ram_areas(void) { - const ram_init_area_t *rap = ram_areas; - -#if CRT1_AREAS_NUMBER > 0 - do { - uint32_t *tp = rap->init_text_area; - uint32_t *p = rap->init_area; - - /* Copying initialization data.*/ - while (p < rap->clear_area) { - *p = *tp; - p++; - tp++; - } - - /* Zeroing clear area.*/ - while (p < rap->no_init_area) { - *p = 0; - p++; - } - rap++; - } - while (rap < &ram_areas[CRT1_AREAS_NUMBER]); -#endif -} - -/** @} */ diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/KL25Z128.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/KL25Z128.ld deleted file mode 100644 index b0d6def1e..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/KL25Z128.ld +++ /dev/null @@ -1,392 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * KL25Z128 memory setup. - */ -MEMORY -{ - flash0 : org = 0x00000000, len = 0x100 - flashcfg : org = 0x00000400, len = 0x10 - flash : org = 0x00000410, len = 128k - 0x410 - ram0 : org = 0x1FFFF000, len = 16k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -REGION_ALIAS("MAIN_STACK_RAM", ram0); -REGION_ALIAS("PROCESS_STACK_RAM", ram0); -REGION_ALIAS("DATA_RAM", ram0); -REGION_ALIAS("BSS_RAM", ram0); -REGION_ALIAS("HEAP_RAM", ram0); - -__ram0_start__ = ORIGIN(ram0); -__ram0_size__ = LENGTH(ram0); -__ram0_end__ = __ram0_start__ + __ram0_size__; -__ram1_start__ = ORIGIN(ram1); -__ram1_size__ = LENGTH(ram1); -__ram1_end__ = __ram1_start__ + __ram1_size__; -__ram2_start__ = ORIGIN(ram2); -__ram2_size__ = LENGTH(ram2); -__ram2_end__ = __ram2_start__ + __ram2_size__; -__ram3_start__ = ORIGIN(ram3); -__ram3_size__ = LENGTH(ram3); -__ram3_end__ = __ram3_start__ + __ram3_size__; -__ram4_start__ = ORIGIN(ram4); -__ram4_size__ = LENGTH(ram4); -__ram4_end__ = __ram4_start__ + __ram4_size__; -__ram5_start__ = ORIGIN(ram5); -__ram5_size__ = LENGTH(ram5); -__ram5_end__ = __ram5_start__ + __ram5_size__; -__ram6_start__ = ORIGIN(ram6); -__ram6_size__ = LENGTH(ram6); -__ram6_end__ = __ram6_start__ + __ram6_size__; -__ram7_start__ = ORIGIN(ram7); -__ram7_size__ = LENGTH(ram7); -__ram7_end__ = __ram7_start__ + __ram7_size__; - -ENTRY(Reset_Handler) - -SECTIONS -{ - . = 0; - - startup : ALIGN(16) SUBALIGN(16) - { - KEEP(*(.vectors)) - } > flash0 - - .cfmprotect : ALIGN(4) SUBALIGN(4) - { - KEEP(*(.cfmconfig)) - } > flashcfg - - _text = .; - - constructors : ALIGN(4) SUBALIGN(4) - { - __init_array_start = .; - KEEP(*(SORT(.init_array.*))) - KEEP(*(.init_array)) - __init_array_end = .; - } > flash - - destructors : ALIGN(4) SUBALIGN(4) - { - __fini_array_start = .; - KEEP(*(.fini_array)) - KEEP(*(SORT(.fini_array.*))) - __fini_array_end = .; - } > flash - - .text : ALIGN(16) SUBALIGN(16) - { - *(.text) - *(.text.*) - *(.rodata) - *(.rodata.*) - *(.glue_7t) - *(.glue_7) - *(.gcc*) - } > flash - - .ARM.extab : - { - *(.ARM.extab* .gnu.linkonce.armextab.*) - } > flash - - .ARM.exidx : { - __exidx_start = .; - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - __exidx_end = .; - } > flash - - .eh_frame_hdr : - { - *(.eh_frame_hdr) - } > flash - - .eh_frame : ONLY_IF_RO - { - *(.eh_frame) - } > flash - - .textalign : ONLY_IF_RO - { - . = ALIGN(8); - } > flash - - /* Legacy symbol, not used anywhere.*/ - . = ALIGN(4); - PROVIDE(_etext = .); - - /* Special section for exceptions stack.*/ - .mstack : - { - . = ALIGN(8); - __main_stack_base__ = .; - . += __main_stack_size__; - . = ALIGN(8); - __main_stack_end__ = .; - } > MAIN_STACK_RAM - - /* Special section for process stack.*/ - .pstack : - { - __process_stack_base__ = .; - __main_thread_stack_base__ = .; - . += __process_stack_size__; - . = ALIGN(8); - __process_stack_end__ = .; - __main_thread_stack_end__ = .; - } > PROCESS_STACK_RAM - - .data : ALIGN(4) - { - . = ALIGN(4); - PROVIDE(_textdata = LOADADDR(.data)); - PROVIDE(_data = .); - _textdata_start = LOADADDR(.data); - _data_start = .; - *(.data) - *(.data.*) - *(.ramtext) - . = ALIGN(4); - PROVIDE(_edata = .); - _data_end = .; - } > DATA_RAM AT > flash - - .bss (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - _bss_start = .; - *(.bss) - *(.bss.*) - *(COMMON) - . = ALIGN(4); - _bss_end = .; - PROVIDE(end = .); - } > BSS_RAM - - .ram0_init : ALIGN(4) - { - . = ALIGN(4); - __ram0_init_text__ = LOADADDR(.ram0_init); - __ram0_init__ = .; - *(.ram0_init) - *(.ram0_init.*) - . = ALIGN(4); - } > ram0 AT > flash - - .ram0 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram0_clear__ = .; - *(.ram0_clear) - *(.ram0_clear.*) - . = ALIGN(4); - __ram0_noinit__ = .; - *(.ram0) - *(.ram0.*) - . = ALIGN(4); - __ram0_free__ = .; - } > ram0 - - .ram1_init : ALIGN(4) - { - . = ALIGN(4); - __ram1_init_text__ = LOADADDR(.ram1_init); - __ram1_init__ = .; - *(.ram1_init) - *(.ram1_init.*) - . = ALIGN(4); - } > ram1 AT > flash - - .ram1 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram1_clear__ = .; - *(.ram1_clear) - *(.ram1_clear.*) - . = ALIGN(4); - __ram1_noinit__ = .; - *(.ram1) - *(.ram1.*) - . = ALIGN(4); - __ram1_free__ = .; - } > ram1 - - .ram2_init : ALIGN(4) - { - . = ALIGN(4); - __ram2_init_text__ = LOADADDR(.ram2_init); - __ram2_init__ = .; - *(.ram2_init) - *(.ram2_init.*) - . = ALIGN(4); - } > ram2 AT > flash - - .ram2 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram2_clear__ = .; - *(.ram2_clear) - *(.ram2_clear.*) - . = ALIGN(4); - __ram2_noinit__ = .; - *(.ram2) - *(.ram2.*) - . = ALIGN(4); - __ram2_free__ = .; - } > ram2 - - .ram3_init : ALIGN(4) - { - . = ALIGN(4); - __ram3_init_text__ = LOADADDR(.ram3_init); - __ram3_init__ = .; - *(.ram3_init) - *(.ram3_init.*) - . = ALIGN(4); - } > ram3 AT > flash - - .ram3 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram3_clear__ = .; - *(.ram3_clear) - *(.ram3_clear.*) - . = ALIGN(4); - __ram3_noinit__ = .; - *(.ram3) - *(.ram3.*) - . = ALIGN(4); - __ram3_free__ = .; - } > ram3 - - .ram4_init : ALIGN(4) - { - . = ALIGN(4); - __ram4_init_text__ = LOADADDR(.ram4_init); - __ram4_init__ = .; - *(.ram4_init) - *(.ram4_init.*) - . = ALIGN(4); - } > ram4 AT > flash - - .ram4 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram4_clear__ = .; - *(.ram4_clear) - *(.ram4_clear.*) - . = ALIGN(4); - __ram4_noinit__ = .; - *(.ram4) - *(.ram4.*) - . = ALIGN(4); - __ram4_free__ = .; - } > ram4 - - .ram5_init : ALIGN(4) - { - . = ALIGN(4); - __ram5_init_text__ = LOADADDR(.ram5_init); - __ram5_init__ = .; - *(.ram5_init) - *(.ram5_init.*) - . = ALIGN(4); - } > ram5 AT > flash - - .ram5 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram5_clear__ = .; - *(.ram5_clear) - *(.ram5_clear.*) - . = ALIGN(4); - __ram5_noinit__ = .; - *(.ram5) - *(.ram5.*) - . = ALIGN(4); - __ram5_free__ = .; - } > ram5 - - .ram6_init : ALIGN(4) - { - . = ALIGN(4); - __ram6_init_text__ = LOADADDR(.ram6_init); - __ram6_init__ = .; - *(.ram6_init) - *(.ram6_init.*) - . = ALIGN(4); - } > ram6 AT > flash - - .ram6 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram6_clear__ = .; - *(.ram6_clear) - *(.ram6_clear.*) - . = ALIGN(4); - __ram6_noinit__ = .; - *(.ram6) - *(.ram6.*) - . = ALIGN(4); - __ram6_free__ = .; - } > ram6 - - .ram7_init : ALIGN(4) - { - . = ALIGN(4); - __ram7_init_text__ = LOADADDR(.ram7_init); - __ram7_init__ = .; - *(.ram7_init) - *(.ram7_init.*) - . = ALIGN(4); - } > ram7 AT > flash - - .ram7 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram7_clear__ = .; - *(.ram7_clear) - *(.ram7_clear.*) - . = ALIGN(4); - __ram7_noinit__ = .; - *(.ram7) - *(.ram7.*) - . = ALIGN(4); - __ram7_free__ = .; - } > ram7 - - /* The default heap uses the (statically) unused part of a RAM section.*/ - .heap (NOLOAD) : - { - . = ALIGN(8); - __heap_base__ = .; - . = ORIGIN(HEAP_RAM) + LENGTH(HEAP_RAM); - __heap_end__ = .; - } > HEAP_RAM -} diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/MK20DX128.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/MK20DX128.ld deleted file mode 100644 index d2350e749..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/MK20DX128.ld +++ /dev/null @@ -1,392 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * MK20DX128 memory setup. - */ -MEMORY -{ - flash0 : org = 0x00000000, len = 0x100 - flashcfg : org = 0x00000400, len = 0x10 - flash : org = 0x00000410, len = 128k - 0x410 - ram0 : org = 0x1fffe000, len = 16k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -REGION_ALIAS("MAIN_STACK_RAM", ram0); -REGION_ALIAS("PROCESS_STACK_RAM", ram0); -REGION_ALIAS("DATA_RAM", ram0); -REGION_ALIAS("BSS_RAM", ram0); -REGION_ALIAS("HEAP_RAM", ram0); - -__ram0_start__ = ORIGIN(ram0); -__ram0_size__ = LENGTH(ram0); -__ram0_end__ = __ram0_start__ + __ram0_size__; -__ram1_start__ = ORIGIN(ram1); -__ram1_size__ = LENGTH(ram1); -__ram1_end__ = __ram1_start__ + __ram1_size__; -__ram2_start__ = ORIGIN(ram2); -__ram2_size__ = LENGTH(ram2); -__ram2_end__ = __ram2_start__ + __ram2_size__; -__ram3_start__ = ORIGIN(ram3); -__ram3_size__ = LENGTH(ram3); -__ram3_end__ = __ram3_start__ + __ram3_size__; -__ram4_start__ = ORIGIN(ram4); -__ram4_size__ = LENGTH(ram4); -__ram4_end__ = __ram4_start__ + __ram4_size__; -__ram5_start__ = ORIGIN(ram5); -__ram5_size__ = LENGTH(ram5); -__ram5_end__ = __ram5_start__ + __ram5_size__; -__ram6_start__ = ORIGIN(ram6); -__ram6_size__ = LENGTH(ram6); -__ram6_end__ = __ram6_start__ + __ram6_size__; -__ram7_start__ = ORIGIN(ram7); -__ram7_size__ = LENGTH(ram7); -__ram7_end__ = __ram7_start__ + __ram7_size__; - -ENTRY(Reset_Handler) - -SECTIONS -{ - . = 0; - - startup : ALIGN(16) SUBALIGN(16) - { - KEEP(*(.vectors)) - } > flash0 - - .cfmprotect : ALIGN(4) SUBALIGN(4) - { - KEEP(*(.cfmconfig)) - } > flashcfg - - _text = .; - - constructors : ALIGN(4) SUBALIGN(4) - { - __init_array_start = .; - KEEP(*(SORT(.init_array.*))) - KEEP(*(.init_array)) - __init_array_end = .; - } > flash - - destructors : ALIGN(4) SUBALIGN(4) - { - __fini_array_start = .; - KEEP(*(.fini_array)) - KEEP(*(SORT(.fini_array.*))) - __fini_array_end = .; - } > flash - - .text : ALIGN(16) SUBALIGN(16) - { - *(.text) - *(.text.*) - *(.rodata) - *(.rodata.*) - *(.glue_7t) - *(.glue_7) - *(.gcc*) - } > flash - - .ARM.extab : - { - *(.ARM.extab* .gnu.linkonce.armextab.*) - } > flash - - .ARM.exidx : { - __exidx_start = .; - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - __exidx_end = .; - } > flash - - .eh_frame_hdr : - { - *(.eh_frame_hdr) - } > flash - - .eh_frame : ONLY_IF_RO - { - *(.eh_frame) - } > flash - - .textalign : ONLY_IF_RO - { - . = ALIGN(8); - } > flash - - /* Legacy symbol, not used anywhere.*/ - . = ALIGN(4); - PROVIDE(_etext = .); - - /* Special section for exceptions stack.*/ - .mstack : - { - . = ALIGN(8); - __main_stack_base__ = .; - . += __main_stack_size__; - . = ALIGN(8); - __main_stack_end__ = .; - } > MAIN_STACK_RAM - - /* Special section for process stack.*/ - .pstack : - { - __process_stack_base__ = .; - __main_thread_stack_base__ = .; - . += __process_stack_size__; - . = ALIGN(8); - __process_stack_end__ = .; - __main_thread_stack_end__ = .; - } > PROCESS_STACK_RAM - - .data : ALIGN(4) - { - . = ALIGN(4); - PROVIDE(_textdata = LOADADDR(.data)); - PROVIDE(_data = .); - _textdata_start = LOADADDR(.data); - _data_start = .; - *(.data) - *(.data.*) - *(.ramtext) - . = ALIGN(4); - PROVIDE(_edata = .); - _data_end = .; - } > DATA_RAM AT > flash - - .bss (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - _bss_start = .; - *(.bss) - *(.bss.*) - *(COMMON) - . = ALIGN(4); - _bss_end = .; - PROVIDE(end = .); - } > BSS_RAM - - .ram0_init : ALIGN(4) - { - . = ALIGN(4); - __ram0_init_text__ = LOADADDR(.ram0_init); - __ram0_init__ = .; - *(.ram0_init) - *(.ram0_init.*) - . = ALIGN(4); - } > ram0 AT > flash - - .ram0 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram0_clear__ = .; - *(.ram0_clear) - *(.ram0_clear.*) - . = ALIGN(4); - __ram0_noinit__ = .; - *(.ram0) - *(.ram0.*) - . = ALIGN(4); - __ram0_free__ = .; - } > ram0 - - .ram1_init : ALIGN(4) - { - . = ALIGN(4); - __ram1_init_text__ = LOADADDR(.ram1_init); - __ram1_init__ = .; - *(.ram1_init) - *(.ram1_init.*) - . = ALIGN(4); - } > ram1 AT > flash - - .ram1 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram1_clear__ = .; - *(.ram1_clear) - *(.ram1_clear.*) - . = ALIGN(4); - __ram1_noinit__ = .; - *(.ram1) - *(.ram1.*) - . = ALIGN(4); - __ram1_free__ = .; - } > ram1 - - .ram2_init : ALIGN(4) - { - . = ALIGN(4); - __ram2_init_text__ = LOADADDR(.ram2_init); - __ram2_init__ = .; - *(.ram2_init) - *(.ram2_init.*) - . = ALIGN(4); - } > ram2 AT > flash - - .ram2 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram2_clear__ = .; - *(.ram2_clear) - *(.ram2_clear.*) - . = ALIGN(4); - __ram2_noinit__ = .; - *(.ram2) - *(.ram2.*) - . = ALIGN(4); - __ram2_free__ = .; - } > ram2 - - .ram3_init : ALIGN(4) - { - . = ALIGN(4); - __ram3_init_text__ = LOADADDR(.ram3_init); - __ram3_init__ = .; - *(.ram3_init) - *(.ram3_init.*) - . = ALIGN(4); - } > ram3 AT > flash - - .ram3 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram3_clear__ = .; - *(.ram3_clear) - *(.ram3_clear.*) - . = ALIGN(4); - __ram3_noinit__ = .; - *(.ram3) - *(.ram3.*) - . = ALIGN(4); - __ram3_free__ = .; - } > ram3 - - .ram4_init : ALIGN(4) - { - . = ALIGN(4); - __ram4_init_text__ = LOADADDR(.ram4_init); - __ram4_init__ = .; - *(.ram4_init) - *(.ram4_init.*) - . = ALIGN(4); - } > ram4 AT > flash - - .ram4 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram4_clear__ = .; - *(.ram4_clear) - *(.ram4_clear.*) - . = ALIGN(4); - __ram4_noinit__ = .; - *(.ram4) - *(.ram4.*) - . = ALIGN(4); - __ram4_free__ = .; - } > ram4 - - .ram5_init : ALIGN(4) - { - . = ALIGN(4); - __ram5_init_text__ = LOADADDR(.ram5_init); - __ram5_init__ = .; - *(.ram5_init) - *(.ram5_init.*) - . = ALIGN(4); - } > ram5 AT > flash - - .ram5 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram5_clear__ = .; - *(.ram5_clear) - *(.ram5_clear.*) - . = ALIGN(4); - __ram5_noinit__ = .; - *(.ram5) - *(.ram5.*) - . = ALIGN(4); - __ram5_free__ = .; - } > ram5 - - .ram6_init : ALIGN(4) - { - . = ALIGN(4); - __ram6_init_text__ = LOADADDR(.ram6_init); - __ram6_init__ = .; - *(.ram6_init) - *(.ram6_init.*) - . = ALIGN(4); - } > ram6 AT > flash - - .ram6 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram6_clear__ = .; - *(.ram6_clear) - *(.ram6_clear.*) - . = ALIGN(4); - __ram6_noinit__ = .; - *(.ram6) - *(.ram6.*) - . = ALIGN(4); - __ram6_free__ = .; - } > ram6 - - .ram7_init : ALIGN(4) - { - . = ALIGN(4); - __ram7_init_text__ = LOADADDR(.ram7_init); - __ram7_init__ = .; - *(.ram7_init) - *(.ram7_init.*) - . = ALIGN(4); - } > ram7 AT > flash - - .ram7 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram7_clear__ = .; - *(.ram7_clear) - *(.ram7_clear.*) - . = ALIGN(4); - __ram7_noinit__ = .; - *(.ram7) - *(.ram7.*) - . = ALIGN(4); - __ram7_free__ = .; - } > ram7 - - /* The default heap uses the (statically) unused part of a RAM section.*/ - .heap (NOLOAD) : - { - . = ALIGN(8); - __heap_base__ = .; - . = ORIGIN(HEAP_RAM) + LENGTH(HEAP_RAM); - __heap_end__ = .; - } > HEAP_RAM -} diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F030x4.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F030x4.ld deleted file mode 100644 index 3a809ddb6..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F030x4.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F030x4 memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 16k - ram0 : org = 0x20000000, len = 4k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F030x6.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F030x6.ld deleted file mode 100644 index 71b738110..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F030x6.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F030x6 memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 32k - ram0 : org = 0x20000000, len = 4k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F030x8.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F030x8.ld deleted file mode 100644 index 429eba77a..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F030x8.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F030x8 memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 64k - ram0 : org = 0x20000000, len = 8k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F031x6.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F031x6.ld deleted file mode 100644 index cb479f1b3..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F031x6.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F031x6 memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 32k - ram0 : org = 0x20000000, len = 4k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F042x6.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F042x6.ld deleted file mode 100644 index b3e0f7390..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F042x6.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F042x6 memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 32k - ram0 : org = 0x20000000, len = 6k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F051x8.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F051x8.ld deleted file mode 100644 index 26466f115..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F051x8.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F051x8 memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 64k - ram0 : org = 0x20000000, len = 8k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F072xB.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F072xB.ld deleted file mode 100644 index e44d43730..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F072xB.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F072xB memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 128k - ram0 : org = 0x20000000, len = 16k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F091xC.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F091xC.ld deleted file mode 100644 index 6d0ca2692..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F091xC.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F091xC memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 256k - ram0 : org = 0x20000000, len = 32k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F100xB.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F100xB.ld deleted file mode 100644 index 76c19c669..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F100xB.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * ST32F100xB memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 128k - ram0 : org = 0x20000000, len = 8k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103x8.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103x8.ld deleted file mode 100644 index 4ce14d925..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103x8.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * ST32F103x8 memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 64k - ram0 : org = 0x20000000, len = 20k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xB.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xB.ld deleted file mode 100644 index 22eba093e..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xB.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * ST32F103xB memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 128k - ram0 : org = 0x20000000, len = 20k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xD.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xD.ld deleted file mode 100644 index 1952b614c..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xD.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * ST32F103xE memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 384k - ram0 : org = 0x20000000, len = 64k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xE.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xE.ld deleted file mode 100644 index 8af8a3c7b..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xE.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * ST32F103xE memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 512k - ram0 : org = 0x20000000, len = 64k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xE_maplemini_bootloader.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xE_maplemini_bootloader.ld deleted file mode 100644 index 73fbc5209..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xE_maplemini_bootloader.ld +++ /dev/null @@ -1,56 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * ST32F103xE memory setup for use with the maplemini bootloader. - * You will have to - * #define CORTEX_VTOR_INIT 0x5000 - * in your projects chconf.h - */ -MEMORY -{ - flash : org = 0x08005000, len = 512k - 0x5000 - ram0 : org = 0x20000C00, len = 64k - 0xC00 - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xG.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xG.ld deleted file mode 100644 index f40b46ff1..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F103xG.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * ST32F103xG memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 1m - ram0 : org = 0x20000000, len = 96k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F107xC.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F107xC.ld deleted file mode 100644 index f10a7a53b..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F107xC.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * ST32F107xC memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 256k - ram0 : org = 0x20000000, len = 64k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F207xG.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F207xG.ld deleted file mode 100644 index 644d358ab..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F207xG.ld +++ /dev/null @@ -1,54 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F207xG memory setup. - * Note: Use of ram1 and ram2 is mutually exclusive with use of ram0. - */ -MEMORY -{ - flash : org = 0x08000000, len = 1M - ram0 : org = 0x20000000, len = 128k /* SRAM1 + SRAM2 */ - ram1 : org = 0x20000000, len = 112k /* SRAM1 */ - ram2 : org = 0x2001C000, len = 16k /* SRAM2 */ - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x10000000, len = 64k /* CCM SRAM */ - ram5 : org = 0x40024000, len = 4k /* BCKP SRAM */ - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F302x8.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F302x8.ld deleted file mode 100644 index a78e033a6..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F302x8.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F302x8 memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 64k - ram0 : org = 0x20000000, len = 16k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F303x8.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F303x8.ld deleted file mode 100644 index 694ae5049..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F303x8.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F303x8 memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 64k - ram0 : org = 0x20000000, len = 12k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x10000000, len = 4k - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F303xC.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F303xC.ld deleted file mode 100644 index 518e96f0d..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F303xC.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F303xC memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 256k - ram0 : org = 0x20000000, len = 40k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x10000000, len = 8k - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F334x8.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F334x8.ld deleted file mode 100644 index cfd9698e1..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F334x8.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F3334x8 memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 64k - ram0 : org = 0x20000000, len = 12k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x10000000, len = 4k - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F373xC.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F373xC.ld deleted file mode 100644 index 96d58449c..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F373xC.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F373xC memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 256k - ram0 : org = 0x20000000, len = 32k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F401xC.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F401xC.ld deleted file mode 100644 index 798e255bb..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F401xC.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F401xC memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 256k - ram0 : org = 0x20000000, len = 64k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F401xE.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F401xE.ld deleted file mode 100644 index 235ae50ea..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F401xE.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F401xE memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 512k - ram0 : org = 0x20000000, len = 96k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F405xG.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F405xG.ld deleted file mode 100644 index 151ec0dba..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F405xG.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F405xG memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 1M - ram0 : org = 0x20000000, len = 128k /* SRAM1 + SRAM2 */ - ram1 : org = 0x20000000, len = 112k /* SRAM1 */ - ram2 : org = 0x2001C000, len = 16k /* SRAM2 */ - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x10000000, len = 64k /* CCM SRAM */ - ram5 : org = 0x40024000, len = 4k /* BCKP SRAM */ - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F407xG.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F407xG.ld deleted file mode 100644 index 4ced890b6..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F407xG.ld +++ /dev/null @@ -1,54 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F407xG memory setup. - * Note: Use of ram1 and ram2 is mutually exclusive with use of ram0. - */ -MEMORY -{ - flash : org = 0x08000000, len = 1M - ram0 : org = 0x20000000, len = 128k /* SRAM1 + SRAM2 */ - ram1 : org = 0x20000000, len = 112k /* SRAM1 */ - ram2 : org = 0x2001C000, len = 16k /* SRAM2 */ - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x10000000, len = 64k /* CCM SRAM */ - ram5 : org = 0x40024000, len = 4k /* BCKP SRAM */ - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F411xC.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F411xC.ld deleted file mode 100644 index b3f91a45b..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F411xC.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F411xC memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 256k - ram0 : org = 0x20000000, len = 128k /* SRAM1 */ - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F411xE.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F411xE.ld deleted file mode 100644 index 010f8d4d2..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F411xE.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F411xE memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 512k - ram0 : org = 0x20000000, len = 128k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F429xI.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F429xI.ld deleted file mode 100644 index 81248e10c..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F429xI.ld +++ /dev/null @@ -1,54 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * ST32F429xI memory setup. - * Note: Use of ram1, ram2 and ram3 is mutually exclusive with use of ram0. - */ -MEMORY -{ - flash : org = 0x08000000, len = 2M - ram0 : org = 0x20000000, len = 192k /* SRAM1 + SRAM2 + SRAM3 */ - ram1 : org = 0x20000000, len = 112k /* SRAM1 */ - ram2 : org = 0x2001C000, len = 16k /* SRAM2 */ - ram3 : org = 0x20020000, len = 64k /* SRAM3 */ - ram4 : org = 0x10000000, len = 64k /* CCM SRAM */ - ram5 : org = 0x40024000, len = 4k /* BCKP SRAM */ - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F746xG.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F746xG.ld deleted file mode 100644 index b7c90bd0e..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F746xG.ld +++ /dev/null @@ -1,66 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * ST32F746xG generic setup. - * - * RAM0 - Data, Heap. - * RAM3 - Main Stack, Process Stack, BSS, NOCACHE, ETH. - * - * Notes: - * BSS is placed in DTCM RAM in order to simplify DMA buffers management. - */ -MEMORY -{ - flash : org = 0x08000000, len = 1M - flash_itcm : org = 0x00200000, len = 1M - ram0 : org = 0x20010000, len = 256k /* SRAM1 + SRAM2 */ - ram1 : org = 0x20010000, len = 240k /* SRAM1 */ - ram2 : org = 0x2004C000, len = 16k /* SRAM2 */ - ram3 : org = 0x20000000, len = 64k /* DTCM-RAM */ - ram4 : org = 0x00000000, len = 16k /* ITCM-RAM */ - ram5 : org = 0x40024000, len = 4k /* BCKP SRAM */ - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram3); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram3); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram3); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -/* RAM region to be used for nocache segment.*/ -REGION_ALIAS("NOCACHE_RAM", ram3); - -/* RAM region to be used for eth segment.*/ -REGION_ALIAS("ETH_RAM", ram3); - -INCLUDE ld/rules_STM32F7xx.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F746xG_ETH.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F746xG_ETH.ld deleted file mode 100644 index d4fa6ca8a..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F746xG_ETH.ld +++ /dev/null @@ -1,66 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * ST32F746xG Ethernet setup. - * - * RAM1 - Data, Heap. - * RAM2 - ETH. - * RAM3 - Main Stack, Process Stack, BSS, NOCACHE. - * - * Notes: - * BSS is placed in DTCM RAM in order to simplify DMA buffers management. - */ -MEMORY -{ - flash : org = 0x08000000, len = 1M - ram0 : org = 0x20010000, len = 256k /* SRAM1 + SRAM2 */ - ram1 : org = 0x20010000, len = 240k /* SRAM1 */ - ram2 : org = 0x2004C000, len = 16k /* SRAM2 */ - ram3 : org = 0x20000000, len = 64k /* DTCM-RAM */ - ram4 : org = 0x00000000, len = 16k /* ITCM-RAM */ - ram5 : org = 0x40024000, len = 4k /* BCKP SRAM */ - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram3); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram3); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram1); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram3); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram1); - -/* RAM region to be used for nocache segment.*/ -REGION_ALIAS("NOCACHE_RAM", ram3); - -/* RAM region to be used for eth segment.*/ -REGION_ALIAS("ETH_RAM", ram2); - -INCLUDE rules_dma.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F746xG_MAX.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F746xG_MAX.ld deleted file mode 100644 index 21ba81fed..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32F746xG_MAX.ld +++ /dev/null @@ -1,68 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * ST32F746xG maximum RAM setup. - * - * RAM0 - Data, BSS, Heap. - * RAM3 - Main Stack, Process Stack, NOCACHE, ETH. - * - * Notes: - * BSS is placed in cached RAM, DMA buffers management is delegated to the - * application code. This setup maximizes the linear RAM available to BSS and - * Heap. - */ -MEMORY -{ - flash : org = 0x08000000, len = 1M - flash_itcm : org = 0x00200000, len = 1M - ram0 : org = 0x20010000, len = 256k /* SRAM1 + SRAM2 */ - ram1 : org = 0x20010000, len = 240k /* SRAM1 */ - ram2 : org = 0x2004C000, len = 16k /* SRAM2 */ - ram3 : org = 0x20000000, len = 64k /* DTCM-RAM */ - ram4 : org = 0x00000000, len = 16k /* ITCM-RAM */ - ram5 : org = 0x40024000, len = 4k /* BCKP SRAM */ - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram3); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram3); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -/* RAM region to be used for nocache segment.*/ -REGION_ALIAS("NOCACHE_RAM", ram3); - -/* RAM region to be used for eth segment.*/ -REGION_ALIAS("ETH_RAM", ram3); - -INCLUDE ld/rules_STM32F7xx.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L052x6.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L052x6.ld deleted file mode 100644 index e5ebcb88a..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L052x6.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32L052x8 memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 16k - ram0 : org = 0x20000000, len = 8k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L052x8.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L052x8.ld deleted file mode 100644 index faccde1ec..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L052x8.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32L052x8 memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 64k - ram0 : org = 0x20000000, len = 8k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L053x8.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L053x8.ld deleted file mode 100644 index 108e7f2c3..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L053x8.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32L053x8 memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 64k - ram0 : org = 0x20000000, len = 8k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L151x6.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L151x6.ld deleted file mode 100644 index 7709c2487..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L151x6.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32L151x6 memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 32k - ram0 : org = 0x20000000, len = 10k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L152xB.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L152xB.ld deleted file mode 100644 index 32ffdf596..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L152xB.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32L152xB memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 128k - ram0 : org = 0x20000000, len = 16k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L152xE.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L152xE.ld deleted file mode 100644 index d6ad839a2..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L152xE.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32L152xB memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 512k - ram0 : org = 0x20000000, len = 80k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L476xG.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L476xG.ld deleted file mode 100644 index 060e79072..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/STM32L476xG.ld +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * STM32F303xC memory setup. - */ -MEMORY -{ - flash : org = 0x08000000, len = 1M - ram0 : org = 0x20000000, len = 96k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x10000000, len = 32k - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : org = 0x00000000, len = 0 -} - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts*/ -REGION_ALIAS("MAIN_STACK_RAM", ram0); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram0); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -INCLUDE rules.ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/ld/rules_STM32F7xx.ld b/os/common/ports/ARMCMx/compilers/GCC/ld/rules_STM32F7xx.ld deleted file mode 100644 index 0035c7ac3..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/ld/rules_STM32F7xx.ld +++ /dev/null @@ -1,394 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -__ram0_start__ = ORIGIN(ram0); -__ram0_size__ = LENGTH(ram0); -__ram0_end__ = __ram0_start__ + __ram0_size__; -__ram1_start__ = ORIGIN(ram1); -__ram1_size__ = LENGTH(ram1); -__ram1_end__ = __ram1_start__ + __ram1_size__; -__ram2_start__ = ORIGIN(ram2); -__ram2_size__ = LENGTH(ram2); -__ram2_end__ = __ram2_start__ + __ram2_size__; -__ram3_start__ = ORIGIN(ram3); -__ram3_size__ = LENGTH(ram3); -__ram3_end__ = __ram3_start__ + __ram3_size__; -__ram4_start__ = ORIGIN(ram4); -__ram4_size__ = LENGTH(ram4); -__ram4_end__ = __ram4_start__ + __ram4_size__; -__ram5_start__ = ORIGIN(ram5); -__ram5_size__ = LENGTH(ram5); -__ram5_end__ = __ram5_start__ + __ram5_size__; -__ram6_start__ = ORIGIN(ram6); -__ram6_size__ = LENGTH(ram6); -__ram6_end__ = __ram6_start__ + __ram6_size__; -__ram7_start__ = ORIGIN(ram7); -__ram7_size__ = LENGTH(ram7); -__ram7_end__ = __ram7_start__ + __ram7_size__; - -ENTRY(Reset_Handler) - -SECTIONS -{ - . = 0; - _text = .; - - startup : ALIGN(16) SUBALIGN(16) - { - KEEP(*(.vectors)) - } > flash_itcm AT > flash - - constructors : ALIGN(4) SUBALIGN(4) - { - __init_array_start = .; - KEEP(*(SORT(.init_array.*))) - KEEP(*(.init_array)) - __init_array_end = .; - } > flash_itcm AT > flash - - destructors : ALIGN(4) SUBALIGN(4) - { - __fini_array_start = .; - KEEP(*(.fini_array)) - KEEP(*(SORT(.fini_array.*))) - __fini_array_end = .; - } > flash_itcm AT > flash - - .text : ALIGN(16) SUBALIGN(16) - { - *(.text) - *(.text.*) - *(.glue_7t) - *(.glue_7) - *(.gcc*) - } > flash_itcm AT > flash - - .ARM.extab : - { - *(.ARM.extab* .gnu.linkonce.armextab.*) - } > flash_itcm AT > flash - - .ARM.exidx : { - __exidx_start = .; - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - __exidx_end = .; - } > flash_itcm AT > flash - - .eh_frame_hdr : - { - *(.eh_frame_hdr) - } > flash_itcm AT > flash - - .eh_frame : ONLY_IF_RO - { - *(.eh_frame) - } > flash_itcm AT > flash - - .textalign : ONLY_IF_RO - { - . = ALIGN(8); - } > flash_itcm AT > flash - - /* Constants are placed in the normal flash (non-ITCM) region because it - is desirable to make them DMA-accessible.*/ - .rodata : ALIGN(4) - { - . = ALIGN(4); - __rodata_base__ = .; - *(.rodata) - *(.rodata.*) - . = ALIGN(4); - __rodata_end__ = .; - } > flash - - /* Legacy symbol, not used anywhere.*/ - . = ALIGN(4); - PROVIDE(_etext = .); - - /* Special section for exceptions stack.*/ - .mstack : - { - . = ALIGN(8); - __main_stack_base__ = .; - . += __main_stack_size__; - . = ALIGN(8); - __main_stack_end__ = .; - } > MAIN_STACK_RAM - - /* Special section for process stack.*/ - .pstack : - { - __process_stack_base__ = .; - __main_thread_stack_base__ = .; - . += __process_stack_size__; - . = ALIGN(8); - __process_stack_end__ = .; - __main_thread_stack_end__ = .; - } > PROCESS_STACK_RAM - - /* Special section for non cache-able areas.*/ - .nocache (NOLOAD) : ALIGN(4) - { - __nocache_base__ = .; - *(.nocache) - *(.nocache.*) - *(.bss.__nocache_*) - . = ALIGN(4); - __nocache_end__ = .; - } > NOCACHE_RAM - - /* Special section for Ethernet DMA non cache-able areas.*/ - .eth (NOLOAD) : ALIGN(4) - { - __eth_base__ = .; - *(.eth) - *(.eth.*) - *(.bss.__eth_*) - . = ALIGN(4); - __eth_end__ = .; - } > ETH_RAM - - .data : ALIGN(4) - { - . = ALIGN(4); - PROVIDE(_textdata = LOADADDR(.data)); - PROVIDE(_data = .); - _textdata_start = LOADADDR(.data); - _data_start = .; - *(.data) - *(.data.*) - *(.ramtext) - . = ALIGN(4); - PROVIDE(_edata = .); - _data_end = .; - } > DATA_RAM AT > flash - - .bss (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - _bss_start = .; - *(.bss) - *(.bss.*) - *(COMMON) - . = ALIGN(4); - _bss_end = .; - PROVIDE(end = .); - } > BSS_RAM - - .ram0_init : ALIGN(4) - { - . = ALIGN(4); - __ram0_init_text__ = LOADADDR(.ram0_init); - __ram0_init__ = .; - *(.ram0_init) - *(.ram0_init.*) - . = ALIGN(4); - } > ram0 AT > flash - - .ram0 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram0_clear__ = .; - *(.ram0_clear) - *(.ram0_clear.*) - . = ALIGN(4); - __ram0_noinit__ = .; - *(.ram0) - *(.ram0.*) - . = ALIGN(4); - __ram0_free__ = .; - } > ram0 - - .ram1_init : ALIGN(4) - { - . = ALIGN(4); - __ram1_init_text__ = LOADADDR(.ram1_init); - __ram1_init__ = .; - *(.ram1_init) - *(.ram1_init.*) - . = ALIGN(4); - } > ram1 AT > flash - - .ram1 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram1_clear__ = .; - *(.ram1_clear) - *(.ram1_clear.*) - . = ALIGN(4); - __ram1_noinit__ = .; - *(.ram1) - *(.ram1.*) - . = ALIGN(4); - __ram1_free__ = .; - } > ram1 - - .ram2_init : ALIGN(4) - { - . = ALIGN(4); - __ram2_init_text__ = LOADADDR(.ram2_init); - __ram2_init__ = .; - *(.ram2_init) - *(.ram2_init.*) - . = ALIGN(4); - } > ram2 AT > flash - - .ram2 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram2_clear__ = .; - *(.ram2_clear) - *(.ram2_clear.*) - . = ALIGN(4); - __ram2_noinit__ = .; - *(.ram2) - *(.ram2.*) - . = ALIGN(4); - __ram2_free__ = .; - } > ram2 - - .ram3_init : ALIGN(4) - { - . = ALIGN(4); - __ram3_init_text__ = LOADADDR(.ram3_init); - __ram3_init__ = .; - *(.ram3_init) - *(.ram3_init.*) - . = ALIGN(4); - } > ram3 AT > flash - - .ram3 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram3_clear__ = .; - *(.ram3_clear) - *(.ram3_clear.*) - . = ALIGN(4); - __ram3_noinit__ = .; - *(.ram3) - *(.ram3.*) - . = ALIGN(4); - __ram3_free__ = .; - } > ram3 - - .ram4_init : ALIGN(4) - { - . = ALIGN(4); - __ram4_init_text__ = LOADADDR(.ram4_init); - __ram4_init__ = .; - *(.ram4_init) - *(.ram4_init.*) - . = ALIGN(4); - } > ram4 AT > flash - - .ram4 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram4_clear__ = .; - *(.ram4_clear) - *(.ram4_clear.*) - . = ALIGN(4); - __ram4_noinit__ = .; - *(.ram4) - *(.ram4.*) - . = ALIGN(4); - __ram4_free__ = .; - } > ram4 - - .ram5_init : ALIGN(4) - { - . = ALIGN(4); - __ram5_init_text__ = LOADADDR(.ram5_init); - __ram5_init__ = .; - *(.ram5_init) - *(.ram5_init.*) - . = ALIGN(4); - } > ram5 AT > flash - - .ram5 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram5_clear__ = .; - *(.ram5_clear) - *(.ram5_clear.*) - . = ALIGN(4); - __ram5_noinit__ = .; - *(.ram5) - *(.ram5.*) - . = ALIGN(4); - __ram5_free__ = .; - } > ram5 - - .ram6_init : ALIGN(4) - { - . = ALIGN(4); - __ram6_init_text__ = LOADADDR(.ram6_init); - __ram6_init__ = .; - *(.ram6_init) - *(.ram6_init.*) - . = ALIGN(4); - } > ram6 AT > flash - - .ram6 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram6_clear__ = .; - *(.ram6_clear) - *(.ram6_clear.*) - . = ALIGN(4); - __ram6_noinit__ = .; - *(.ram6) - *(.ram6.*) - . = ALIGN(4); - __ram6_free__ = .; - } > ram6 - - .ram7_init : ALIGN(4) - { - . = ALIGN(4); - __ram7_init_text__ = LOADADDR(.ram7_init); - __ram7_init__ = .; - *(.ram7_init) - *(.ram7_init.*) - . = ALIGN(4); - } > ram7 AT > flash - - .ram7 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram7_clear__ = .; - *(.ram7_clear) - *(.ram7_clear.*) - . = ALIGN(4); - __ram7_noinit__ = .; - *(.ram7) - *(.ram7.*) - . = ALIGN(4); - __ram7_free__ = .; - } > ram7 - - /* The default heap uses the (statically) unused part of a RAM section.*/ - .heap (NOLOAD) : - { - . = ALIGN(8); - __heap_base__ = .; - . = ORIGIN(HEAP_RAM) + LENGTH(HEAP_RAM); - __heap_end__ = .; - } > HEAP_RAM -} diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_k20x.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_k20x.mk deleted file mode 100644 index b7ea0f3be..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_k20x.mk +++ /dev/null @@ -1,12 +0,0 @@ -# List of the ChibiOS generic K20x startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ - $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c - -STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s - -STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ - $(CHIBIOS)/os/common/ports/ARMCMx/devices/K20x \ - $(CHIBIOS)/os/ext/CMSIS/include \ - $(CHIBIOS)/os/ext/CMSIS/KINETIS - -STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_kl2x.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_kl2x.mk deleted file mode 100644 index a073da004..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_kl2x.mk +++ /dev/null @@ -1,12 +0,0 @@ -# List of the ChibiOS generic KL2x startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ - $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c - -STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s - -STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ - $(CHIBIOS)/os/common/ports/ARMCMx/devices/KL2x \ - $(CHIBIOS)/os/ext/CMSIS/include \ - $(CHIBIOS)/os/ext/CMSIS/KINETIS - -STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f0xx.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f0xx.mk deleted file mode 100644 index e705bd70f..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f0xx.mk +++ /dev/null @@ -1,12 +0,0 @@ -# List of the ChibiOS generic STM32F0xx startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ - $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c - -STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s - -STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ - $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32F0xx \ - $(CHIBIOS)/os/ext/CMSIS/include \ - $(CHIBIOS)/os/ext/CMSIS/ST/STM32F0xx - -STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk deleted file mode 100644 index 748075f99..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk +++ /dev/null @@ -1,12 +0,0 @@ -# List of the ChibiOS generic STM32F1xx startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ - $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c - -STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s - -STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ - $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32F1xx \ - $(CHIBIOS)/os/ext/CMSIS/include \ - $(CHIBIOS)/os/ext/CMSIS/ST/STM32F1xx - -STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f2xx.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f2xx.mk deleted file mode 100644 index 9789041c2..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f2xx.mk +++ /dev/null @@ -1,12 +0,0 @@ -# List of the ChibiOS generic STM32F2xx startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ - $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c - -STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s - -STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ - $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32F2xx \ - $(CHIBIOS)/os/ext/CMSIS/include \ - $(CHIBIOS)/os/ext/CMSIS/ST/STM32F2xx - -STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f3xx.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f3xx.mk deleted file mode 100644 index 6968d34a3..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f3xx.mk +++ /dev/null @@ -1,12 +0,0 @@ -# List of the ChibiOS generic STM32F3xx startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ - $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c - -STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s - -STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ - $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32F3xx \ - $(CHIBIOS)/os/ext/CMSIS/include \ - $(CHIBIOS)/os/ext/CMSIS/ST/STM32F3xx - -STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f4xx.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f4xx.mk deleted file mode 100644 index 28744ffb5..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f4xx.mk +++ /dev/null @@ -1,12 +0,0 @@ -# List of the ChibiOS generic STM32F4xx startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ - $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c - -STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s - -STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ - $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32F4xx \ - $(CHIBIOS)/os/ext/CMSIS/include \ - $(CHIBIOS)/os/ext/CMSIS/ST/STM32F4xx - -STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f7xx.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f7xx.mk deleted file mode 100644 index b2a8b1f56..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32f7xx.mk +++ /dev/null @@ -1,12 +0,0 @@ -# List of the ChibiOS generic STM32F7xx startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ - $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c - -STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s - -STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ - $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32F7xx \ - $(CHIBIOS)/os/ext/CMSIS/include \ - $(CHIBIOS)/os/ext/CMSIS/ST/STM32F7xx - -STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l0xx.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l0xx.mk deleted file mode 100644 index 24c1ef054..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l0xx.mk +++ /dev/null @@ -1,12 +0,0 @@ -# List of the ChibiOS generic STM32L0xx startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ - $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c - -STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s - -STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ - $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32L0xx \ - $(CHIBIOS)/os/ext/CMSIS/include \ - $(CHIBIOS)/os/ext/CMSIS/ST/STM32L0xx - -STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l1xx.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l1xx.mk deleted file mode 100644 index fcd588a9b..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l1xx.mk +++ /dev/null @@ -1,12 +0,0 @@ -# List of the ChibiOS generic STM32L1xx startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ - $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c - -STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s - -STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ - $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32L1xx \ - $(CHIBIOS)/os/ext/CMSIS/include \ - $(CHIBIOS)/os/ext/CMSIS/ST/STM32L1xx - -STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l4xx.mk b/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l4xx.mk deleted file mode 100644 index a8a3ec441..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/mk/startup_stm32l4xx.mk +++ /dev/null @@ -1,12 +0,0 @@ -# List of the ChibiOS generic STM32L4xx startup and CMSIS files. -STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ - $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c - -STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s - -STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ - $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32L4xx \ - $(CHIBIOS)/os/ext/CMSIS/include \ - $(CHIBIOS)/os/ext/CMSIS/ST/STM32L4xx - -STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/ports/ARMCMx/compilers/GCC/rules.ld b/os/common/ports/ARMCMx/compilers/GCC/rules.ld deleted file mode 100644 index 85d740b75..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/rules.ld +++ /dev/null @@ -1,362 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -__ram0_start__ = ORIGIN(ram0); -__ram0_size__ = LENGTH(ram0); -__ram0_end__ = __ram0_start__ + __ram0_size__; -__ram1_start__ = ORIGIN(ram1); -__ram1_size__ = LENGTH(ram1); -__ram1_end__ = __ram1_start__ + __ram1_size__; -__ram2_start__ = ORIGIN(ram2); -__ram2_size__ = LENGTH(ram2); -__ram2_end__ = __ram2_start__ + __ram2_size__; -__ram3_start__ = ORIGIN(ram3); -__ram3_size__ = LENGTH(ram3); -__ram3_end__ = __ram3_start__ + __ram3_size__; -__ram4_start__ = ORIGIN(ram4); -__ram4_size__ = LENGTH(ram4); -__ram4_end__ = __ram4_start__ + __ram4_size__; -__ram5_start__ = ORIGIN(ram5); -__ram5_size__ = LENGTH(ram5); -__ram5_end__ = __ram5_start__ + __ram5_size__; -__ram6_start__ = ORIGIN(ram6); -__ram6_size__ = LENGTH(ram6); -__ram6_end__ = __ram6_start__ + __ram6_size__; -__ram7_start__ = ORIGIN(ram7); -__ram7_size__ = LENGTH(ram7); -__ram7_end__ = __ram7_start__ + __ram7_size__; - -ENTRY(Reset_Handler) - -SECTIONS -{ - . = 0; - _text = .; - - startup : ALIGN(16) SUBALIGN(16) - { - KEEP(*(.vectors)) - } > flash - - constructors : ALIGN(4) SUBALIGN(4) - { - __init_array_start = .; - KEEP(*(SORT(.init_array.*))) - KEEP(*(.init_array)) - __init_array_end = .; - } > flash - - destructors : ALIGN(4) SUBALIGN(4) - { - __fini_array_start = .; - KEEP(*(.fini_array)) - KEEP(*(SORT(.fini_array.*))) - __fini_array_end = .; - } > flash - - .text : ALIGN(16) SUBALIGN(16) - { - *(.text) - *(.text.*) - *(.rodata) - *(.rodata.*) - *(.glue_7t) - *(.glue_7) - *(.gcc*) - } > flash - - .ARM.extab : - { - *(.ARM.extab* .gnu.linkonce.armextab.*) - } > flash - - .ARM.exidx : { - __exidx_start = .; - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - __exidx_end = .; - } > flash - - .eh_frame_hdr : - { - *(.eh_frame_hdr) - } > flash - - .eh_frame : ONLY_IF_RO - { - *(.eh_frame) - } > flash - - .textalign : ONLY_IF_RO - { - . = ALIGN(8); - } > flash - - /* Legacy symbol, not used anywhere.*/ - . = ALIGN(4); - PROVIDE(_etext = .); - - /* Special section for exceptions stack.*/ - .mstack : - { - . = ALIGN(8); - __main_stack_base__ = .; - . += __main_stack_size__; - . = ALIGN(8); - __main_stack_end__ = .; - } > MAIN_STACK_RAM - - /* Special section for process stack.*/ - .pstack : - { - __process_stack_base__ = .; - __main_thread_stack_base__ = .; - . += __process_stack_size__; - . = ALIGN(8); - __process_stack_end__ = .; - __main_thread_stack_end__ = .; - } > PROCESS_STACK_RAM - - .data : ALIGN(4) - { - . = ALIGN(4); - PROVIDE(_textdata = LOADADDR(.data)); - PROVIDE(_data = .); - _textdata_start = LOADADDR(.data); - _data_start = .; - *(.data) - *(.data.*) - *(.ramtext) - . = ALIGN(4); - PROVIDE(_edata = .); - _data_end = .; - } > DATA_RAM AT > flash - - .bss (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - _bss_start = .; - *(.bss) - *(.bss.*) - *(COMMON) - . = ALIGN(4); - _bss_end = .; - PROVIDE(end = .); - } > BSS_RAM - - .ram0_init : ALIGN(4) - { - . = ALIGN(4); - __ram0_init_text__ = LOADADDR(.ram0_init); - __ram0_init__ = .; - *(.ram0_init) - *(.ram0_init.*) - . = ALIGN(4); - } > ram0 AT > flash - - .ram0 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram0_clear__ = .; - *(.ram0_clear) - *(.ram0_clear.*) - . = ALIGN(4); - __ram0_noinit__ = .; - *(.ram0) - *(.ram0.*) - . = ALIGN(4); - __ram0_free__ = .; - } > ram0 - - .ram1_init : ALIGN(4) - { - . = ALIGN(4); - __ram1_init_text__ = LOADADDR(.ram1_init); - __ram1_init__ = .; - *(.ram1_init) - *(.ram1_init.*) - . = ALIGN(4); - } > ram1 AT > flash - - .ram1 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram1_clear__ = .; - *(.ram1_clear) - *(.ram1_clear.*) - . = ALIGN(4); - __ram1_noinit__ = .; - *(.ram1) - *(.ram1.*) - . = ALIGN(4); - __ram1_free__ = .; - } > ram1 - - .ram2_init : ALIGN(4) - { - . = ALIGN(4); - __ram2_init_text__ = LOADADDR(.ram2_init); - __ram2_init__ = .; - *(.ram2_init) - *(.ram2_init.*) - . = ALIGN(4); - } > ram2 AT > flash - - .ram2 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram2_clear__ = .; - *(.ram2_clear) - *(.ram2_clear.*) - . = ALIGN(4); - __ram2_noinit__ = .; - *(.ram2) - *(.ram2.*) - . = ALIGN(4); - __ram2_free__ = .; - } > ram2 - - .ram3_init : ALIGN(4) - { - . = ALIGN(4); - __ram3_init_text__ = LOADADDR(.ram3_init); - __ram3_init__ = .; - *(.ram3_init) - *(.ram3_init.*) - . = ALIGN(4); - } > ram3 AT > flash - - .ram3 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram3_clear__ = .; - *(.ram3_clear) - *(.ram3_clear.*) - . = ALIGN(4); - __ram3_noinit__ = .; - *(.ram3) - *(.ram3.*) - . = ALIGN(4); - __ram3_free__ = .; - } > ram3 - - .ram4_init : ALIGN(4) - { - . = ALIGN(4); - __ram4_init_text__ = LOADADDR(.ram4_init); - __ram4_init__ = .; - *(.ram4_init) - *(.ram4_init.*) - . = ALIGN(4); - } > ram4 AT > flash - - .ram4 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram4_clear__ = .; - *(.ram4_clear) - *(.ram4_clear.*) - . = ALIGN(4); - __ram4_noinit__ = .; - *(.ram4) - *(.ram4.*) - . = ALIGN(4); - __ram4_free__ = .; - } > ram4 - - .ram5_init : ALIGN(4) - { - . = ALIGN(4); - __ram5_init_text__ = LOADADDR(.ram5_init); - __ram5_init__ = .; - *(.ram5_init) - *(.ram5_init.*) - . = ALIGN(4); - } > ram5 AT > flash - - .ram5 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram5_clear__ = .; - *(.ram5_clear) - *(.ram5_clear.*) - . = ALIGN(4); - __ram5_noinit__ = .; - *(.ram5) - *(.ram5.*) - . = ALIGN(4); - __ram5_free__ = .; - } > ram5 - - .ram6_init : ALIGN(4) - { - . = ALIGN(4); - __ram6_init_text__ = LOADADDR(.ram6_init); - __ram6_init__ = .; - *(.ram6_init) - *(.ram6_init.*) - . = ALIGN(4); - } > ram6 AT > flash - - .ram6 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram6_clear__ = .; - *(.ram6_clear) - *(.ram6_clear.*) - . = ALIGN(4); - __ram6_noinit__ = .; - *(.ram6) - *(.ram6.*) - . = ALIGN(4); - __ram6_free__ = .; - } > ram6 - - .ram7_init : ALIGN(4) - { - . = ALIGN(4); - __ram7_init_text__ = LOADADDR(.ram7_init); - __ram7_init__ = .; - *(.ram7_init) - *(.ram7_init.*) - . = ALIGN(4); - } > ram7 AT > flash - - .ram7 (NOLOAD) : ALIGN(4) - { - . = ALIGN(4); - __ram7_clear__ = .; - *(.ram7_clear) - *(.ram7_clear.*) - . = ALIGN(4); - __ram7_noinit__ = .; - *(.ram7) - *(.ram7.*) - . = ALIGN(4); - __ram7_free__ = .; - } > ram7 - - /* The default heap uses the (statically) unused part of a RAM section.*/ - .heap (NOLOAD) : - { - . = ALIGN(8); - __heap_base__ = .; - . = ORIGIN(HEAP_RAM) + LENGTH(HEAP_RAM); - __heap_end__ = .; - } > HEAP_RAM -} diff --git a/os/common/ports/ARMCMx/compilers/GCC/rules.mk b/os/common/ports/ARMCMx/compilers/GCC/rules.mk deleted file mode 100644 index 2434be9cd..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/rules.mk +++ /dev/null @@ -1,307 +0,0 @@ -# ARM Cortex-Mx common makefile scripts and rules. - -############################################################################## -# Processing options coming from the upper Makefile. -# - -# Compiler options -OPT = $(USE_OPT) -COPT = $(USE_COPT) -CPPOPT = $(USE_CPPOPT) - -# Garbage collection -ifeq ($(USE_LINK_GC),yes) - OPT += -ffunction-sections -fdata-sections -fno-common - LDOPT := ,--gc-sections -else - LDOPT := -endif - -# Linker extra options -ifneq ($(USE_LDOPT),) - LDOPT := $(LDOPT),$(USE_LDOPT) -endif - -# Link time optimizations -ifeq ($(USE_LTO),yes) - OPT += -flto -endif - -# FPU-related options -ifeq ($(USE_FPU),) - USE_FPU = no -endif -ifneq ($(USE_FPU),no) - OPT += -mfloat-abi=$(USE_FPU) -mfpu=fpv4-sp-d16 -fsingle-precision-constant - DDEFS += -DCORTEX_USE_FPU=TRUE - DADEFS += -DCORTEX_USE_FPU=TRUE -else - DDEFS += -DCORTEX_USE_FPU=FALSE - DADEFS += -DCORTEX_USE_FPU=FALSE -endif - -# Process stack size -ifeq ($(USE_PROCESS_STACKSIZE),) - LDOPT := $(LDOPT),--defsym=__process_stack_size__=0x400 -else - LDOPT := $(LDOPT),--defsym=__process_stack_size__=$(USE_PROCESS_STACKSIZE) -endif - -# Exceptions stack size -ifeq ($(USE_EXCEPTIONS_STACKSIZE),) - LDOPT := $(LDOPT),--defsym=__main_stack_size__=0x400 -else - LDOPT := $(LDOPT),--defsym=__main_stack_size__=$(USE_EXCEPTIONS_STACKSIZE) -endif - -# Output directory and files -ifeq ($(BUILDDIR),) - BUILDDIR = build -endif -ifeq ($(BUILDDIR),.) - BUILDDIR = build -endif -OUTFILES = $(BUILDDIR)/$(PROJECT).elf \ - $(BUILDDIR)/$(PROJECT).hex \ - $(BUILDDIR)/$(PROJECT).bin \ - $(BUILDDIR)/$(PROJECT).dmp \ - $(BUILDDIR)/$(PROJECT).list - -ifdef SREC - OUTFILES += $(BUILDDIR)/$(PROJECT).srec -endif - -# Source files groups and paths -ifeq ($(USE_THUMB),yes) - TCSRC += $(CSRC) - TCPPSRC += $(CPPSRC) -else - ACSRC += $(CSRC) - ACPPSRC += $(CPPSRC) -endif -ASRC = $(ACSRC)$(ACPPSRC) -TSRC = $(TCSRC)$(TCPPSRC) -SRCPATHS = $(sort $(dir $(ASMXSRC)) $(dir $(ASMSRC)) $(dir $(ASRC)) $(dir $(TSRC))) - -# Various directories -OBJDIR = $(BUILDDIR)/obj -LSTDIR = $(BUILDDIR)/lst - -# Object files groups -ACOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ACSRC:.c=.o))) -ACPPOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ACPPSRC:.cpp=.o))) -TCOBJS = $(addprefix $(OBJDIR)/, $(notdir $(TCSRC:.c=.o))) -TCPPOBJS = $(addprefix $(OBJDIR)/, $(notdir $(TCPPSRC:.cpp=.o))) -ASMOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ASMSRC:.s=.o))) -ASMXOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ASMXSRC:.S=.o))) -OBJS = $(ASMXOBJS) $(ASMOBJS) $(ACOBJS) $(TCOBJS) $(ACPPOBJS) $(TCPPOBJS) - -# Paths -IINCDIR = $(patsubst %,-I%,$(INCDIR) $(DINCDIR) $(UINCDIR)) -LLIBDIR = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR)) - -# Macros -DEFS = $(DDEFS) $(UDEFS) -ADEFS = $(DADEFS) $(UADEFS) - -# Libs -LIBS = $(DLIBS) $(ULIBS) - -# Various settings -MCFLAGS = -mcpu=$(MCU) -ODFLAGS = -x --syms -ASFLAGS = $(MCFLAGS) -Wa,-amhls=$(LSTDIR)/$(notdir $(<:.s=.lst)) $(ADEFS) -ASXFLAGS = $(MCFLAGS) -Wa,-amhls=$(LSTDIR)/$(notdir $(<:.S=.lst)) $(ADEFS) -CFLAGS = $(MCFLAGS) $(OPT) $(COPT) $(CWARN) -Wa,-alms=$(LSTDIR)/$(notdir $(<:.c=.lst)) $(DEFS) -CPPFLAGS = $(MCFLAGS) $(OPT) $(CPPOPT) $(CPPWARN) -Wa,-alms=$(LSTDIR)/$(notdir $(<:.cpp=.lst)) $(DEFS) -LDFLAGS = $(MCFLAGS) $(OPT) -nostartfiles $(LLIBDIR) -Wl,-Map=$(BUILDDIR)/$(PROJECT).map,--cref,--no-warn-mismatch,--library-path=$(RULESPATH),--script=$(LDSCRIPT)$(LDOPT) - -# Thumb interwork enabled only if needed because it kills performance. -ifneq ($(TSRC),) - CFLAGS += -DTHUMB_PRESENT - CPPFLAGS += -DTHUMB_PRESENT - ASFLAGS += -DTHUMB_PRESENT - ifneq ($(ASRC),) - # Mixed ARM and THUMB mode. - CFLAGS += -mthumb-interwork - CPPFLAGS += -mthumb-interwork - ASFLAGS += -mthumb-interwork - LDFLAGS += -mthumb-interwork - else - # Pure THUMB mode, THUMB C code cannot be called by ARM asm code directly. - CFLAGS += -mno-thumb-interwork -DTHUMB_NO_INTERWORKING - CPPFLAGS += -mno-thumb-interwork -DTHUMB_NO_INTERWORKING - ASFLAGS += -mno-thumb-interwork -DTHUMB_NO_INTERWORKING -mthumb - LDFLAGS += -mno-thumb-interwork -mthumb - endif -else - # Pure ARM mode - CFLAGS += -mno-thumb-interwork - CPPFLAGS += -mno-thumb-interwork - ASFLAGS += -mno-thumb-interwork - LDFLAGS += -mno-thumb-interwork -endif - -# Generate dependency information -ASFLAGS += -MD -MP -MF .dep/$(@F).d -CFLAGS += -MD -MP -MF .dep/$(@F).d -CPPFLAGS += -MD -MP -MF .dep/$(@F).d - -# Paths where to search for sources -VPATH = $(SRCPATHS) - -# -# Makefile rules -# - -all: PRE_MAKE_ALL_RULE_HOOK $(OBJS) $(OUTFILES) POST_MAKE_ALL_RULE_HOOK - -PRE_MAKE_ALL_RULE_HOOK: - -POST_MAKE_ALL_RULE_HOOK: - -$(OBJS): | $(BUILDDIR) $(OBJDIR) $(LSTDIR) - -$(BUILDDIR): -ifneq ($(USE_VERBOSE_COMPILE),yes) - @echo Compiler Options - @echo $(CC) -c $(CFLAGS) -I. $(IINCDIR) main.c -o main.o - @echo -endif - @mkdir -p $(BUILDDIR) - -$(OBJDIR): - @mkdir -p $(OBJDIR) - -$(LSTDIR): - @mkdir -p $(LSTDIR) - -$(ACPPOBJS) : $(OBJDIR)/%.o : %.cpp Makefile -ifeq ($(USE_VERBOSE_COMPILE),yes) - @echo - $(CPPC) -c $(CPPFLAGS) $(AOPT) -I. $(IINCDIR) $< -o $@ -else - @echo Compiling $( $@ - $(SZ) $< -else - @echo Creating $@ - @$(OD) $(ODFLAGS) $< > $@ - @echo - @$(SZ) $< -endif - -%.list: %.elf -ifeq ($(USE_VERBOSE_COMPILE),yes) - $(OD) -S $< > $@ -else - @echo Creating $@ - @$(OD) -S $< > $@ - @echo - @echo Done -endif - -lib: $(OBJS) $(BUILDDIR)/lib$(PROJECT).a - -$(BUILDDIR)/lib$(PROJECT).a: $(OBJS) - @$(AR) -r $@ $^ - @echo - @echo Done - -clean: - @echo Cleaning - -rm -fR .dep $(BUILDDIR) - @echo - @echo Done - -# -# Include the dependency files, should be the last of the makefile -# --include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) - -# *** EOF *** diff --git a/os/common/ports/ARMCMx/compilers/GCC/vectors.c b/os/common/ports/ARMCMx/compilers/GCC/vectors.c deleted file mode 100644 index d978d113c..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/vectors.c +++ /dev/null @@ -1,632 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file ARMCMx/compilers/GCC/vectors.c - * @brief Interrupt vectors for Cortex-Mx devices. - * - * @defgroup ARMCMx_VECTORS Cortex-Mx Interrupt Vectors - * @{ - */ - -#include -#include - -#include "vectors.h" - -#if (CORTEX_NUM_VECTORS % 8) != 0 -#error "the constant CORTEX_NUM_VECTORS must be a multiple of 8" -#endif - -#if (CORTEX_NUM_VECTORS < 8) || (CORTEX_NUM_VECTORS > 240) -#error "the constant CORTEX_NUM_VECTORS must be between 8 and 240 inclusive" -#endif - -/** - * @brief Unhandled exceptions handler. - * @details Any undefined exception vector points to this function by default. - * This function simply stops the system into an infinite loop. - * - * @notapi - */ -/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ -void _unhandled_exception(void) { -/*lint -restore*/ - - while (true) { - } -} - -#if !defined(__DOXYGEN__) -extern uint32_t __main_stack_end__; -void Reset_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); -void NMI_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); -void HardFault_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); -void MemManage_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); -void BusFault_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); -void UsageFault_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1C(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector20(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector24(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector28(void) __attribute__((weak, alias("_unhandled_exception"))); -void SVC_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); -void DebugMon_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector34(void) __attribute__((weak, alias("_unhandled_exception"))); -void PendSV_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); -void SysTick_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector40(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector44(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector48(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector4C(void) __attribute__((weak, alias("_unhandled_exception"))); -#if CORTEX_NUM_VECTORS > 4 -void Vector50(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector54(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector58(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector5C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 8 -void Vector60(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector64(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector68(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector6C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 12 -void Vector70(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector74(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector78(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector7C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 16 -void Vector80(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector84(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector88(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector8C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 20 -void Vector90(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector94(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector98(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector9C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 24 -void VectorA0(void) __attribute__((weak, alias("_unhandled_exception"))); -void VectorA4(void) __attribute__((weak, alias("_unhandled_exception"))); -void VectorA8(void) __attribute__((weak, alias("_unhandled_exception"))); -void VectorAC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 28 -void VectorB0(void) __attribute__((weak, alias("_unhandled_exception"))); -void VectorB4(void) __attribute__((weak, alias("_unhandled_exception"))); -void VectorB8(void) __attribute__((weak, alias("_unhandled_exception"))); -void VectorBC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 32 -void VectorC0(void) __attribute__((weak, alias("_unhandled_exception"))); -void VectorC4(void) __attribute__((weak, alias("_unhandled_exception"))); -void VectorC8(void) __attribute__((weak, alias("_unhandled_exception"))); -void VectorCC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 36 -void VectorD0(void) __attribute__((weak, alias("_unhandled_exception"))); -void VectorD4(void) __attribute__((weak, alias("_unhandled_exception"))); -void VectorD8(void) __attribute__((weak, alias("_unhandled_exception"))); -void VectorDC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 40 -void VectorE0(void) __attribute__((weak, alias("_unhandled_exception"))); -void VectorE4(void) __attribute__((weak, alias("_unhandled_exception"))); -void VectorE8(void) __attribute__((weak, alias("_unhandled_exception"))); -void VectorEC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 44 -void VectorF0(void) __attribute__((weak, alias("_unhandled_exception"))); -void VectorF4(void) __attribute__((weak, alias("_unhandled_exception"))); -void VectorF8(void) __attribute__((weak, alias("_unhandled_exception"))); -void VectorFC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 48 -void Vector100(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector104(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector108(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector10C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 52 -void Vector110(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector114(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector118(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector11C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 56 -void Vector120(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector124(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector128(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector12C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 60 -void Vector130(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector134(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector138(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector13C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 64 -void Vector140(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector144(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector148(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector14C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 68 -void Vector150(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector154(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector158(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector15C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 72 -void Vector160(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector164(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector168(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector16C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 76 -void Vector170(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector174(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector178(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector17C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 80 -void Vector180(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector184(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector188(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector18C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 84 -void Vector190(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector194(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector198(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector19C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 88 -void Vector1A0(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1A4(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1A8(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1AC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 92 -void Vector1B0(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1B4(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1B8(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1BC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 96 -void Vector1C0(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1C4(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1C8(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1CC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 100 -void Vector1D0(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1D4(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1D8(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1DC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 104 -void Vector1E0(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1E4(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1E8(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1EC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 108 -void Vector1F0(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1F4(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1F8(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector1FC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 112 -void Vector200(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector204(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector208(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector20C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 116 -void Vector210(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector214(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector218(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector21C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 120 -void Vector220(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector224(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector228(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector22C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 124 -void Vector230(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector234(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector238(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector23C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 128 -void Vector240(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector244(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector248(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector24C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 132 -void Vector250(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector254(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector258(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector25C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 136 -void Vector260(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector264(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector268(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector26C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 140 -void Vector270(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector274(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector278(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector27C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 144 -void Vector280(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector284(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector288(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector28C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 148 -void Vector290(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector294(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector298(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector29C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 152 -void Vector2A0(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector2A4(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector2A8(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector2AC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 156 -void Vector2B0(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector2B4(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector2B8(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector2BC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 160 -void Vector2C0(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector2C4(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector2C8(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector2CC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 164 -void Vector2D0(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector2D4(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector2D8(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector2DC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 168 -void Vector2E0(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector2E4(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector2E8(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector2EC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 172 -void Vector2F0(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector2F4(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector2F8(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector2FC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 176 -void Vector300(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector304(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector308(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector30C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 180 -void Vector310(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector314(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector318(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector31C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 184 -void Vector320(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector324(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector328(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector32C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 188 -void Vector330(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector334(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector338(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector33C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 192 -void Vector340(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector344(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector348(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector34C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 196 -void Vector350(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector354(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector358(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector35C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 200 -void Vector360(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector364(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector368(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector36C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 204 -void Vector370(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector374(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector378(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector37C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 208 -void Vector380(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector384(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector388(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector38C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 212 -void Vector390(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector394(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector398(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector39C(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 216 -void Vector3A0(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector3A4(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector3A8(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector3AC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 220 -void Vector3B0(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector3B4(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector3B8(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector3BC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 224 -void Vector3C0(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector3C4(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector3C8(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector3CC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 228 -void Vector3D0(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector3D4(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector3D8(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector3DC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 232 -void Vector3E0(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector3E4(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector3E8(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector3EC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#if CORTEX_NUM_VECTORS > 236 -void Vector3F0(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector3F4(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector3F8(void) __attribute__((weak, alias("_unhandled_exception"))); -void Vector3FC(void) __attribute__((weak, alias("_unhandled_exception"))); -#endif -#endif /* !defined(__DOXYGEN__) */ - -/** - * @brief STM32 vectors table. - */ -#if !defined(__DOXYGEN__) -#if !defined(VECTORS_SECTION) -__attribute__ ((used, aligned(128), section(".vectors"))) -#else -__attribute__ ((used, aligned(128), section(VECTORS_SECTION))) -#endif -#endif -/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ -vectors_t _vectors = { -/*lint -restore*/ - &__main_stack_end__,Reset_Handler, NMI_Handler, HardFault_Handler, - MemManage_Handler, BusFault_Handler, UsageFault_Handler, Vector1C, - Vector20, Vector24, Vector28, SVC_Handler, - DebugMon_Handler, Vector34, PendSV_Handler, SysTick_Handler, - { - Vector40, Vector44, Vector48, Vector4C, -#if CORTEX_NUM_VECTORS > 4 - Vector50, Vector54, Vector58, Vector5C, -#endif -#if CORTEX_NUM_VECTORS > 8 - Vector60, Vector64, Vector68, Vector6C, -#endif -#if CORTEX_NUM_VECTORS > 12 - Vector70, Vector74, Vector78, Vector7C, -#endif -#if CORTEX_NUM_VECTORS > 16 - Vector80, Vector84, Vector88, Vector8C, -#endif -#if CORTEX_NUM_VECTORS > 20 - Vector90, Vector94, Vector98, Vector9C, -#endif -#if CORTEX_NUM_VECTORS > 24 - VectorA0, VectorA4, VectorA8, VectorAC, -#endif -#if CORTEX_NUM_VECTORS > 28 - VectorB0, VectorB4, VectorB8, VectorBC, -#endif -#if CORTEX_NUM_VECTORS > 32 - VectorC0, VectorC4, VectorC8, VectorCC, -#endif -#if CORTEX_NUM_VECTORS > 36 - VectorD0, VectorD4, VectorD8, VectorDC, -#endif -#if CORTEX_NUM_VECTORS > 40 - VectorE0, VectorE4, VectorE8, VectorEC, -#endif -#if CORTEX_NUM_VECTORS > 44 - VectorF0, VectorF4, VectorF8, VectorFC, -#endif -#if CORTEX_NUM_VECTORS > 48 - Vector100, Vector104, Vector108, Vector10C, -#endif -#if CORTEX_NUM_VECTORS > 52 - Vector110, Vector114, Vector118, Vector11C, -#endif -#if CORTEX_NUM_VECTORS > 56 - Vector120, Vector124, Vector128, Vector12C, -#endif -#if CORTEX_NUM_VECTORS > 60 - Vector130, Vector134, Vector138, Vector13C, -#endif -#if CORTEX_NUM_VECTORS > 64 - Vector140, Vector144, Vector148, Vector14C, -#endif -#if CORTEX_NUM_VECTORS > 68 - Vector150, Vector154, Vector158, Vector15C, -#endif -#if CORTEX_NUM_VECTORS > 72 - Vector160, Vector164, Vector168, Vector16C, -#endif -#if CORTEX_NUM_VECTORS > 76 - Vector170, Vector174, Vector178, Vector17C, -#endif -#if CORTEX_NUM_VECTORS > 80 - Vector180, Vector184, Vector188, Vector18C, -#endif -#if CORTEX_NUM_VECTORS > 84 - Vector190, Vector194, Vector198, Vector19C, -#endif -#if CORTEX_NUM_VECTORS > 88 - Vector1A0, Vector1A4, Vector1A8, Vector1AC, -#endif -#if CORTEX_NUM_VECTORS > 92 - Vector1B0, Vector1B4, Vector1B8, Vector1BC, -#endif -#if CORTEX_NUM_VECTORS > 96 - Vector1C0, Vector1C4, Vector1C8, Vector1CC, -#endif -#if CORTEX_NUM_VECTORS > 100 - Vector1D0, Vector1D4, Vector1D8, Vector1DC, -#endif -#if CORTEX_NUM_VECTORS > 104 - Vector1E0, Vector1E4, Vector1E8, Vector1EC, -#endif -#if CORTEX_NUM_VECTORS > 108 - Vector1F0, Vector1F4, Vector1F8, Vector1FC, -#endif -#if CORTEX_NUM_VECTORS > 112 - Vector200, Vector204, Vector208, Vector20C, -#endif -#if CORTEX_NUM_VECTORS > 116 - Vector210, Vector214, Vector218, Vector21C, -#endif -#if CORTEX_NUM_VECTORS > 120 - Vector220, Vector224, Vector228, Vector22C, -#endif -#if CORTEX_NUM_VECTORS > 124 - Vector230, Vector234, Vector238, Vector23C, -#endif -#if CORTEX_NUM_VECTORS > 128 - Vector240, Vector244, Vector248, Vector24C, -#endif -#if CORTEX_NUM_VECTORS > 132 - Vector250, Vector254, Vector258, Vector25C, -#endif -#if CORTEX_NUM_VECTORS > 136 - Vector260, Vector264, Vector268, Vector26C, -#endif -#if CORTEX_NUM_VECTORS > 140 - Vector270, Vector274, Vector278, Vector27C, -#endif -#if CORTEX_NUM_VECTORS > 144 - Vector280, Vector284, Vector288, Vector28C, -#endif -#if CORTEX_NUM_VECTORS > 148 - Vector290, Vector294, Vector298, Vector29C, -#endif -#if CORTEX_NUM_VECTORS > 152 - Vector2A0, Vector2A4, Vector2A8, Vector2AC, -#endif -#if CORTEX_NUM_VECTORS > 156 - Vector2B0, Vector2B4, Vector2B8, Vector2BC, -#endif -#if CORTEX_NUM_VECTORS > 160 - Vector2C0, Vector2C4, Vector2C8, Vector2CC, -#endif -#if CORTEX_NUM_VECTORS > 164 - Vector2D0, Vector2D4, Vector2D8, Vector2DC, -#endif -#if CORTEX_NUM_VECTORS > 168 - Vector2E0, Vector2E4, Vector2E8, Vector2EC, -#endif -#if CORTEX_NUM_VECTORS > 172 - Vector2F0, Vector2F4, Vector2F8, Vector2FC, -#endif -#if CORTEX_NUM_VECTORS > 176 - Vector300, Vector304, Vector308, Vector30C, -#endif -#if CORTEX_NUM_VECTORS > 180 - Vector310, Vector314, Vector318, Vector31C, -#endif -#if CORTEX_NUM_VECTORS > 184 - Vector320, Vector324, Vector328, Vector32C, -#endif -#if CORTEX_NUM_VECTORS > 188 - Vector330, Vector334, Vector338, Vector33C, -#endif -#if CORTEX_NUM_VECTORS > 192 - Vector340, Vector344, Vector348, Vector34C, -#endif -#if CORTEX_NUM_VECTORS > 196 - Vector350, Vector354, Vector358, Vector35C, -#endif -#if CORTEX_NUM_VECTORS > 200 - Vector360, Vector364, Vector368, Vector36C, -#endif -#if CORTEX_NUM_VECTORS > 204 - Vector370, Vector374, Vector378, Vector37C, -#endif -#if CORTEX_NUM_VECTORS > 208 - Vector380, Vector384, Vector388, Vector38C, -#endif -#if CORTEX_NUM_VECTORS > 212 - Vector390, Vector394, Vector398, Vector39C, -#endif -#if CORTEX_NUM_VECTORS > 216 - Vector3A0, Vector3A4, Vector3A8, Vector3AC, -#endif -#if CORTEX_NUM_VECTORS > 220 - Vector3B0, Vector3B4, Vector3B8, Vector3BC, -#endif -#if CORTEX_NUM_VECTORS > 224 - Vector3C0, Vector3C4, Vector3C8, Vector3CC, -#endif -#if CORTEX_NUM_VECTORS > 228 - Vector3D0, Vector3D4, Vector3D8, Vector3DC -#endif -#if CORTEX_NUM_VECTORS > 232 - Vector3E0, Vector3E4, Vector3E8, Vector3EC -#endif -#if CORTEX_NUM_VECTORS > 236 - Vector3F0, Vector3F4, Vector3F8, Vector3FC -#endif - } -}; - -/** @} */ diff --git a/os/common/ports/ARMCMx/compilers/GCC/vectors.h b/os/common/ports/ARMCMx/compilers/GCC/vectors.h deleted file mode 100644 index a86db615b..000000000 --- a/os/common/ports/ARMCMx/compilers/GCC/vectors.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file ARMCMx/compilers/GCC/vectors.h - * @brief Interrupt vectors for Cortex-Mx devices. - * - * @defgroup ARMCMx_VECTORS Cortex-Mx Interrupt Vectors - * @{ - */ - -#ifndef _VECTORS_H_ -#define _VECTORS_H_ - -#include "cmparams.h" - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -#if !defined(_FROM_ASM_) -/** - * @brief Type of an IRQ vector. - */ -typedef void (*irq_vector_t)(void); - -/** - * @brief Type of a structure representing the whole vectors table. - */ -typedef struct { - uint32_t *init_stack; - irq_vector_t reset_handler; - irq_vector_t nmi_handler; - irq_vector_t hardfault_handler; - irq_vector_t memmanage_handler; - irq_vector_t busfault_handler; - irq_vector_t usagefault_handler; - irq_vector_t vector1c; - irq_vector_t vector20; - irq_vector_t vector24; - irq_vector_t vector28; - irq_vector_t svc_handler; - irq_vector_t debugmonitor_handler; - irq_vector_t vector34; - irq_vector_t pendsv_handler; - irq_vector_t systick_handler; - irq_vector_t vectors[CORTEX_NUM_VECTORS]; -} vectors_t; -#endif /* !defined(_FROM_ASM_) */ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -#if !defined(_FROM_ASM_) -extern vectors_t _vectors; -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _VECTORS_H_ */ - -/** @} */ diff --git a/os/common/ports/ARMCMx/compilers/IAR/cstartup.s b/os/common/ports/ARMCMx/compilers/IAR/cstartup.s deleted file mode 100644 index 6e5236f73..000000000 --- a/os/common/ports/ARMCMx/compilers/IAR/cstartup.s +++ /dev/null @@ -1,82 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file ARMCMx/IAR/cstartup.s - * @brief Generic IAR Cortex-Mx startup file. - * - * @addtogroup ARMCMx_IAR_STARTUP - * @{ - */ - -#if !defined(__DOXYGEN__) - - MODULE ?cstartup - -CONTROL_MODE_PRIVILEGED SET 0 -CONTROL_MODE_UNPRIVILEGED SET 1 -CONTROL_USE_MSP SET 0 -CONTROL_USE_PSP SET 2 - - AAPCS INTERWORK, VFP_COMPATIBLE, ROPI - PRESERVE8 - - SECTION .intvec:CODE:NOROOT(3) - - SECTION CSTACK:DATA:NOROOT(3) - PUBLIC __main_thread_stack_base__ -__main_thread_stack_base__: - PUBLIC __heap_end__ -__heap_end__: - - SECTION SYSHEAP:DATA:NOROOT(3) - PUBLIC __heap_base__ -__heap_base__: - - PUBLIC __iar_program_start - EXTERN __vector_table - EXTWEAK __iar_init_core - EXTWEAK __iar_init_vfp - EXTERN __cmain - - SECTION .text:CODE:REORDER(2) - REQUIRE __vector_table - THUMB -__iar_program_start: - cpsid i - ldr r0, =SFE(CSTACK) - msr PSP, r0 - movs r0, #CONTROL_MODE_PRIVILEGED | CONTROL_USE_PSP - msr CONTROL, r0 - isb - bl __early_init - bl __iar_init_core - bl __iar_init_vfp - b __cmain - - SECTION .text:CODE:NOROOT:REORDER(2) - PUBWEAK __early_init -__early_init: - bx lr - - END - -#endif /* !defined(__DOXYGEN__) */ - -/**< @} */ diff --git a/os/common/ports/ARMCMx/compilers/IAR/vectors.s b/os/common/ports/ARMCMx/compilers/IAR/vectors.s deleted file mode 100644 index 51110dda9..000000000 --- a/os/common/ports/ARMCMx/compilers/IAR/vectors.s +++ /dev/null @@ -1,1009 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file ARMCMx/IAR/vectors.c - * @brief Interrupt vectors for Cortex-Mx devices. - * - * @defgroup ARMCMx_IAR_VECTORS Cortex-Mx Interrupt Vectors - * @{ - */ - -#define _FROM_ASM_ -#include "cmparams.h" - -#if !defined(__DOXYGEN__) - -#if (CORTEX_NUM_VECTORS & 7) != 0 -#error "the constant CORTEX_NUM_VECTORS must be a multiple of 8" -#endif - -#if (CORTEX_NUM_VECTORS < 8) || (CORTEX_NUM_VECTORS > 240) -#error "the constant CORTEX_NUM_VECTORS must be between 8 and 240 inclusive" -#endif - - MODULE ?vectors - - AAPCS INTERWORK, VFP_COMPATIBLE, RWPI_COMPATIBLE - PRESERVE8 - - SECTION IRQSTACK:DATA:NOROOT(3) - SECTION .intvec:CODE:NOROOT(3) - - EXTERN __iar_program_start - PUBLIC __vector_table - - DATA - -__vector_table: - DCD SFE(IRQSTACK) - DCD __iar_program_start - DCD NMI_Handler - DCD HardFault_Handler - DCD MemManage_Handler - DCD BusFault_Handler - DCD UsageFault_Handler - DCD Vector1C - DCD Vector20 - DCD Vector24 - DCD Vector28 - DCD SVC_Handler - DCD DebugMon_Handler - DCD Vector34 - DCD PendSV_Handler - DCD SysTick_Handler - DCD Vector40 - DCD Vector44 - DCD Vector48 - DCD Vector4C - DCD Vector50 - DCD Vector54 - DCD Vector58 - DCD Vector5C -#if CORTEX_NUM_VECTORS > 8 - DCD Vector60 - DCD Vector64 - DCD Vector68 - DCD Vector6C - DCD Vector70 - DCD Vector74 - DCD Vector78 - DCD Vector7C -#endif -#if CORTEX_NUM_VECTORS > 16 - DCD Vector80 - DCD Vector84 - DCD Vector88 - DCD Vector8C - DCD Vector90 - DCD Vector94 - DCD Vector98 - DCD Vector9C -#endif -#if CORTEX_NUM_VECTORS > 24 - DCD VectorA0 - DCD VectorA4 - DCD VectorA8 - DCD VectorAC - DCD VectorB0 - DCD VectorB4 - DCD VectorB8 - DCD VectorBC -#endif -#if CORTEX_NUM_VECTORS > 32 - DCD VectorC0 - DCD VectorC4 - DCD VectorC8 - DCD VectorCC - DCD VectorD0 - DCD VectorD4 - DCD VectorD8 - DCD VectorDC -#endif -#if CORTEX_NUM_VECTORS > 40 - DCD VectorE0 - DCD VectorE4 - DCD VectorE8 - DCD VectorEC - DCD VectorF0 - DCD VectorF4 - DCD VectorF8 - DCD VectorFC -#endif -#if CORTEX_NUM_VECTORS > 48 - DCD Vector100 - DCD Vector104 - DCD Vector108 - DCD Vector10C - DCD Vector110 - DCD Vector114 - DCD Vector118 - DCD Vector11C -#endif -#if CORTEX_NUM_VECTORS > 56 - DCD Vector120 - DCD Vector124 - DCD Vector128 - DCD Vector12C - DCD Vector130 - DCD Vector134 - DCD Vector138 - DCD Vector13C -#endif -#if CORTEX_NUM_VECTORS > 64 - DCD Vector140 - DCD Vector144 - DCD Vector148 - DCD Vector14C - DCD Vector150 - DCD Vector154 - DCD Vector158 - DCD Vector15C -#endif -#if CORTEX_NUM_VECTORS > 72 - DCD Vector160 - DCD Vector164 - DCD Vector168 - DCD Vector16C - DCD Vector170 - DCD Vector174 - DCD Vector178 - DCD Vector17C -#endif -#if CORTEX_NUM_VECTORS > 80 - DCD Vector180 - DCD Vector184 - DCD Vector188 - DCD Vector18C - DCD Vector190 - DCD Vector194 - DCD Vector198 - DCD Vector19C -#endif -#if CORTEX_NUM_VECTORS > 88 - DCD Vector1A0 - DCD Vector1A4 - DCD Vector1A8 - DCD Vector1AC - DCD Vector1B0 - DCD Vector1B4 - DCD Vector1B8 - DCD Vector1BC -#endif -#if CORTEX_NUM_VECTORS > 96 - DCD Vector1C0 - DCD Vector1C4 - DCD Vector1C8 - DCD Vector1CC - DCD Vector1D0 - DCD Vector1D4 - DCD Vector1D8 - DCD Vector1DC -#endif -#if CORTEX_NUM_VECTORS > 104 - DCD Vector1E0 - DCD Vector1E4 - DCD Vector1E8 - DCD Vector1EC - DCD Vector1F0 - DCD Vector1F4 - DCD Vector1F8 - DCD Vector1FC -#endif -#if CORTEX_NUM_VECTORS > 112 - DCD Vector200 - DCD Vector204 - DCD Vector208 - DCD Vector20C - DCD Vector210 - DCD Vector214 - DCD Vector218 - DCD Vector21C -#endif -#if CORTEX_NUM_VECTORS > 120 - DCD Vector220 - DCD Vector224 - DCD Vector228 - DCD Vector22C - DCD Vector230 - DCD Vector234 - DCD Vector238 - DCD Vector23C -#endif -#if CORTEX_NUM_VECTORS > 128 - DCD Vector240 - DCD Vector244 - DCD Vector248 - DCD Vector24C - DCD Vector250 - DCD Vector254 - DCD Vector258 - DCD Vector25C -#endif -#if CORTEX_NUM_VECTORS > 136 - DCD Vector260 - DCD Vector264 - DCD Vector268 - DCD Vector26C - DCD Vector270 - DCD Vector274 - DCD Vector278 - DCD Vector27C -#endif -#if CORTEX_NUM_VECTORS > 144 - DCD Vector280 - DCD Vector284 - DCD Vector288 - DCD Vector28C - DCD Vector290 - DCD Vector294 - DCD Vector298 - DCD Vector29C -#endif -#if CORTEX_NUM_VECTORS > 152 - DCD Vector2A0 - DCD Vector2A4 - DCD Vector2A8 - DCD Vector2AC - DCD Vector2B0 - DCD Vector2B4 - DCD Vector2B8 - DCD Vector2BC -#endif -#if CORTEX_NUM_VECTORS > 160 - DCD Vector2C0 - DCD Vector2C4 - DCD Vector2C8 - DCD Vector2CC - DCD Vector2D0 - DCD Vector2D4 - DCD Vector2D8 - DCD Vector2DC -#endif -#if CORTEX_NUM_VECTORS > 168 - DCD Vector2E0 - DCD Vector2E4 - DCD Vector2E8 - DCD Vector2EC - DCD Vector2F0 - DCD Vector2F4 - DCD Vector2F8 - DCD Vector2FC -#endif -#if CORTEX_NUM_VECTORS > 176 - DCD Vector300 - DCD Vector304 - DCD Vector308 - DCD Vector30C - DCD Vector310 - DCD Vector314 - DCD Vector318 - DCD Vector31C -#endif -#if CORTEX_NUM_VECTORS > 184 - DCD Vector320 - DCD Vector324 - DCD Vector328 - DCD Vector32C - DCD Vector330 - DCD Vector334 - DCD Vector338 - DCD Vector33C -#endif -#if CORTEX_NUM_VECTORS > 192 - DCD Vector340 - DCD Vector344 - DCD Vector348 - DCD Vector34C - DCD Vector350 - DCD Vector354 - DCD Vector358 - DCD Vector35C -#endif -#if CORTEX_NUM_VECTORS > 200 - DCD Vector360 - DCD Vector364 - DCD Vector368 - DCD Vector36C - DCD Vector370 - DCD Vector374 - DCD Vector378 - DCD Vector37C -#endif -#if CORTEX_NUM_VECTORS > 208 - DCD Vector380 - DCD Vector384 - DCD Vector388 - DCD Vector38C - DCD Vector390 - DCD Vector394 - DCD Vector398 - DCD Vector39C -#endif -#if CORTEX_NUM_VECTORS > 216 - DCD Vector3A0 - DCD Vector3A4 - DCD Vector3A8 - DCD Vector3AC - DCD Vector3B0 - DCD Vector3B4 - DCD Vector3B8 - DCD Vector3BC -#endif -#if CORTEX_NUM_VECTORS > 224 - DCD Vector3C0 - DCD Vector3C4 - DCD Vector3C8 - DCD Vector3CC - DCD Vector3D0 - DCD Vector3D4 - DCD Vector3D8 - DCD Vector3DC -#endif -#if CORTEX_NUM_VECTORS > 232 - DCD Vector3E0 - DCD Vector3E4 - DCD Vector3E8 - DCD Vector3EC - DCD Vector3F0 - DCD Vector3F4 - DCD Vector3F8 - DCD Vector3FC -#endif - -/* - * Default interrupt handlers. - */ - PUBWEAK NMI_Handler - PUBWEAK HardFault_Handler - PUBWEAK MemManage_Handler - PUBWEAK BusFault_Handler - PUBWEAK UsageFault_Handler - PUBWEAK Vector1C - PUBWEAK Vector20 - PUBWEAK Vector24 - PUBWEAK Vector28 - PUBWEAK SVC_Handler - PUBWEAK DebugMon_Handler - PUBWEAK Vector34 - PUBWEAK PendSV_Handler - PUBWEAK SysTick_Handler - PUBWEAK Vector40 - PUBWEAK Vector44 - PUBWEAK Vector48 - PUBWEAK Vector4C - PUBWEAK Vector50 - PUBWEAK Vector54 - PUBWEAK Vector58 - PUBWEAK Vector5C -#if CORTEX_NUM_VECTORS > 8 - PUBWEAK Vector60 - PUBWEAK Vector64 - PUBWEAK Vector68 - PUBWEAK Vector6C - PUBWEAK Vector70 - PUBWEAK Vector74 - PUBWEAK Vector78 - PUBWEAK Vector7C -#endif -#if CORTEX_NUM_VECTORS > 16 - PUBWEAK Vector80 - PUBWEAK Vector84 - PUBWEAK Vector88 - PUBWEAK Vector8C - PUBWEAK Vector90 - PUBWEAK Vector94 - PUBWEAK Vector98 - PUBWEAK Vector9C -#endif -#if CORTEX_NUM_VECTORS > 24 - PUBWEAK VectorA0 - PUBWEAK VectorA4 - PUBWEAK VectorA8 - PUBWEAK VectorAC - PUBWEAK VectorB0 - PUBWEAK VectorB4 - PUBWEAK VectorB8 - PUBWEAK VectorBC -#endif -#if CORTEX_NUM_VECTORS > 32 - PUBWEAK VectorC0 - PUBWEAK VectorC4 - PUBWEAK VectorC8 - PUBWEAK VectorCC - PUBWEAK VectorD0 - PUBWEAK VectorD4 - PUBWEAK VectorD8 - PUBWEAK VectorDC -#endif -#if CORTEX_NUM_VECTORS > 40 - PUBWEAK VectorE0 - PUBWEAK VectorE4 - PUBWEAK VectorE8 - PUBWEAK VectorEC - PUBWEAK VectorF0 - PUBWEAK VectorF4 - PUBWEAK VectorF8 - PUBWEAK VectorFC -#endif -#if CORTEX_NUM_VECTORS > 48 - PUBWEAK Vector100 - PUBWEAK Vector104 - PUBWEAK Vector108 - PUBWEAK Vector10C - PUBWEAK Vector110 - PUBWEAK Vector114 - PUBWEAK Vector118 - PUBWEAK Vector11C -#endif -#if CORTEX_NUM_VECTORS > 56 - PUBWEAK Vector120 - PUBWEAK Vector124 - PUBWEAK Vector128 - PUBWEAK Vector12C - PUBWEAK Vector130 - PUBWEAK Vector134 - PUBWEAK Vector138 - PUBWEAK Vector13C -#endif -#if CORTEX_NUM_VECTORS > 64 - PUBWEAK Vector140 - PUBWEAK Vector144 - PUBWEAK Vector148 - PUBWEAK Vector14C - PUBWEAK Vector150 - PUBWEAK Vector154 - PUBWEAK Vector158 - PUBWEAK Vector15C -#endif -#if CORTEX_NUM_VECTORS > 72 - PUBWEAK Vector160 - PUBWEAK Vector164 - PUBWEAK Vector168 - PUBWEAK Vector16C - PUBWEAK Vector170 - PUBWEAK Vector174 - PUBWEAK Vector178 - PUBWEAK Vector17C -#endif -#if CORTEX_NUM_VECTORS > 80 - PUBWEAK Vector180 - PUBWEAK Vector184 - PUBWEAK Vector188 - PUBWEAK Vector18C - PUBWEAK Vector190 - PUBWEAK Vector194 - PUBWEAK Vector198 - PUBWEAK Vector19C -#endif -#if CORTEX_NUM_VECTORS > 88 - PUBWEAK Vector1A0 - PUBWEAK Vector1A4 - PUBWEAK Vector1A8 - PUBWEAK Vector1AC - PUBWEAK Vector1B0 - PUBWEAK Vector1B4 - PUBWEAK Vector1B8 - PUBWEAK Vector1BC -#endif -#if CORTEX_NUM_VECTORS > 96 - PUBWEAK Vector1C0 - PUBWEAK Vector1C4 - PUBWEAK Vector1C8 - PUBWEAK Vector1CC - PUBWEAK Vector1D0 - PUBWEAK Vector1D4 - PUBWEAK Vector1D8 - PUBWEAK Vector1DC -#endif -#if CORTEX_NUM_VECTORS > 104 - PUBWEAK Vector1E0 - PUBWEAK Vector1E4 - PUBWEAK Vector1E8 - PUBWEAK Vector1EC - PUBWEAK Vector1F0 - PUBWEAK Vector1F4 - PUBWEAK Vector1F8 - PUBWEAK Vector1FC -#endif -#if CORTEX_NUM_VECTORS > 112 - PUBWEAK Vector200 - PUBWEAK Vector204 - PUBWEAK Vector208 - PUBWEAK Vector20C - PUBWEAK Vector210 - PUBWEAK Vector214 - PUBWEAK Vector218 - PUBWEAK Vector21C -#endif -#if CORTEX_NUM_VECTORS > 120 - PUBWEAK Vector220 - PUBWEAK Vector224 - PUBWEAK Vector228 - PUBWEAK Vector22C - PUBWEAK Vector230 - PUBWEAK Vector234 - PUBWEAK Vector238 - PUBWEAK Vector23C -#endif -#if CORTEX_NUM_VECTORS > 128 - PUBWEAK Vector240 - PUBWEAK Vector244 - PUBWEAK Vector248 - PUBWEAK Vector24C - PUBWEAK Vector250 - PUBWEAK Vector254 - PUBWEAK Vector258 - PUBWEAK Vector25C -#endif -#if CORTEX_NUM_VECTORS > 136 - PUBWEAK Vector260 - PUBWEAK Vector264 - PUBWEAK Vector268 - PUBWEAK Vector26C - PUBWEAK Vector270 - PUBWEAK Vector274 - PUBWEAK Vector278 - PUBWEAK Vector27C -#endif -#if CORTEX_NUM_VECTORS > 144 - PUBWEAK Vector280 - PUBWEAK Vector284 - PUBWEAK Vector288 - PUBWEAK Vector28C - PUBWEAK Vector290 - PUBWEAK Vector294 - PUBWEAK Vector298 - PUBWEAK Vector29C -#endif -#if CORTEX_NUM_VECTORS > 152 - PUBWEAK Vector2A0 - PUBWEAK Vector2A4 - PUBWEAK Vector2A8 - PUBWEAK Vector2AC - PUBWEAK Vector2B0 - PUBWEAK Vector2B4 - PUBWEAK Vector2B8 - PUBWEAK Vector2BC -#endif -#if CORTEX_NUM_VECTORS > 160 - PUBWEAK Vector2C0 - PUBWEAK Vector2C4 - PUBWEAK Vector2C8 - PUBWEAK Vector2CC - PUBWEAK Vector2D0 - PUBWEAK Vector2D4 - PUBWEAK Vector2D8 - PUBWEAK Vector2DC -#endif -#if CORTEX_NUM_VECTORS > 168 - PUBWEAK Vector2E0 - PUBWEAK Vector2E4 - PUBWEAK Vector2E8 - PUBWEAK Vector2EC - PUBWEAK Vector2F0 - PUBWEAK Vector2F4 - PUBWEAK Vector2F8 - PUBWEAK Vector2FC -#endif -#if CORTEX_NUM_VECTORS > 176 - PUBWEAK Vector300 - PUBWEAK Vector304 - PUBWEAK Vector308 - PUBWEAK Vector30C - PUBWEAK Vector310 - PUBWEAK Vector314 - PUBWEAK Vector318 - PUBWEAK Vector31C -#endif -#if CORTEX_NUM_VECTORS > 184 - PUBWEAK Vector320 - PUBWEAK Vector324 - PUBWEAK Vector328 - PUBWEAK Vector32C - PUBWEAK Vector330 - PUBWEAK Vector334 - PUBWEAK Vector338 - PUBWEAK Vector33C -#endif -#if CORTEX_NUM_VECTORS > 192 - PUBWEAK Vector340 - PUBWEAK Vector344 - PUBWEAK Vector348 - PUBWEAK Vector34C - PUBWEAK Vector350 - PUBWEAK Vector354 - PUBWEAK Vector358 - PUBWEAK Vector35C -#endif -#if CORTEX_NUM_VECTORS > 200 - PUBWEAK Vector360 - PUBWEAK Vector364 - PUBWEAK Vector368 - PUBWEAK Vector36C - PUBWEAK Vector370 - PUBWEAK Vector374 - PUBWEAK Vector378 - PUBWEAK Vector37C -#endif -#if CORTEX_NUM_VECTORS > 208 - PUBWEAK Vector380 - PUBWEAK Vector384 - PUBWEAK Vector388 - PUBWEAK Vector38C - PUBWEAK Vector390 - PUBWEAK Vector394 - PUBWEAK Vector398 - PUBWEAK Vector39C -#endif -#if CORTEX_NUM_VECTORS > 216 - PUBWEAK Vector3A0 - PUBWEAK Vector3A4 - PUBWEAK Vector3A8 - PUBWEAK Vector3AC - PUBWEAK Vector3B0 - PUBWEAK Vector3B4 - PUBWEAK Vector3B8 - PUBWEAK Vector3BC -#endif -#if CORTEX_NUM_VECTORS > 224 - PUBWEAK Vector3C0 - PUBWEAK Vector3C4 - PUBWEAK Vector3C8 - PUBWEAK Vector3CC - PUBWEAK Vector3D0 - PUBWEAK Vector3D4 - PUBWEAK Vector3D8 - PUBWEAK Vector3DC -#endif -#if CORTEX_NUM_VECTORS > 232 - PUBWEAK Vector3E0 - PUBWEAK Vector3E4 - PUBWEAK Vector3E8 - PUBWEAK Vector3EC - PUBWEAK Vector3F0 - PUBWEAK Vector3F4 - PUBWEAK Vector3F8 - PUBWEAK Vector3FC -#endif - PUBLIC _unhandled_exception - - SECTION .text:CODE:NOROOT:REORDER(1) - THUMB - -NMI_Handler -HardFault_Handler -MemManage_Handler -BusFault_Handler -UsageFault_Handler -Vector1C -Vector20 -Vector24 -Vector28 -SVC_Handler -DebugMon_Handler -Vector34 -PendSV_Handler -SysTick_Handler -Vector40 -Vector44 -Vector48 -Vector4C -Vector50 -Vector54 -Vector58 -Vector5C -#if CORTEX_NUM_VECTORS > 8 -Vector60 -Vector64 -Vector68 -Vector6C -Vector70 -Vector74 -Vector78 -Vector7C -#endif -#if CORTEX_NUM_VECTORS > 16 -Vector80 -Vector84 -Vector88 -Vector8C -Vector90 -Vector94 -Vector98 -Vector9C -#endif -#if CORTEX_NUM_VECTORS > 24 -VectorA0 -VectorA4 -VectorA8 -VectorAC -VectorB0 -VectorB4 -VectorB8 -VectorBC -#endif -#if CORTEX_NUM_VECTORS > 32 -VectorC0 -VectorC4 -VectorC8 -VectorCC -VectorD0 -VectorD4 -VectorD8 -VectorDC -#endif -#if CORTEX_NUM_VECTORS > 40 -VectorE0 -VectorE4 -VectorE8 -VectorEC -VectorF0 -VectorF4 -VectorF8 -VectorFC -#endif -#if CORTEX_NUM_VECTORS > 48 -Vector100 -Vector104 -Vector108 -Vector10C -Vector110 -Vector114 -Vector118 -Vector11C -#endif -#if CORTEX_NUM_VECTORS > 56 -Vector120 -Vector124 -Vector128 -Vector12C -Vector130 -Vector134 -Vector138 -Vector13C -#endif -#if CORTEX_NUM_VECTORS > 64 -Vector140 -Vector144 -Vector148 -Vector14C -Vector150 -Vector154 -Vector158 -Vector15C -#endif -#if CORTEX_NUM_VECTORS > 72 -Vector160 -Vector164 -Vector168 -Vector16C -Vector170 -Vector174 -Vector178 -Vector17C -#endif -#if CORTEX_NUM_VECTORS > 80 -Vector180 -Vector184 -Vector188 -Vector18C -Vector190 -Vector194 -Vector198 -Vector19C -#endif -#if CORTEX_NUM_VECTORS > 88 -Vector1A0 -Vector1A4 -Vector1A8 -Vector1AC -Vector1B0 -Vector1B4 -Vector1B8 -Vector1BC -#endif -#if CORTEX_NUM_VECTORS > 96 -Vector1C0 -Vector1C4 -Vector1C8 -Vector1CC -Vector1D0 -Vector1D4 -Vector1D8 -Vector1DC -#endif -#if CORTEX_NUM_VECTORS > 104 -Vector1E0 -Vector1E4 -Vector1E8 -Vector1EC -Vector1F0 -Vector1F4 -Vector1F8 -Vector1FC -#endif -#if CORTEX_NUM_VECTORS > 112 -Vector200 -Vector204 -Vector208 -Vector20C -Vector210 -Vector214 -Vector218 -Vector21C -#endif -#if CORTEX_NUM_VECTORS > 120 -Vector220 -Vector224 -Vector228 -Vector22C -Vector230 -Vector234 -Vector238 -Vector23C -#endif -#if CORTEX_NUM_VECTORS > 128 -Vector240 -Vector244 -Vector248 -Vector24C -Vector250 -Vector254 -Vector258 -Vector25C -#endif -#if CORTEX_NUM_VECTORS > 136 -Vector260 -Vector264 -Vector268 -Vector26C -Vector270 -Vector274 -Vector278 -Vector27C -#endif -#if CORTEX_NUM_VECTORS > 144 -Vector280 -Vector284 -Vector288 -Vector28C -Vector290 -Vector294 -Vector298 -Vector29C -#endif -#if CORTEX_NUM_VECTORS > 152 -Vector2A0 -Vector2A4 -Vector2A8 -Vector2AC -Vector2B0 -Vector2B4 -Vector2B8 -Vector2BC -#endif -#if CORTEX_NUM_VECTORS > 160 -Vector2C0 -Vector2C4 -Vector2C8 -Vector2CC -Vector2D0 -Vector2D4 -Vector2D8 -Vector2DC -#endif -#if CORTEX_NUM_VECTORS > 168 -Vector2E0 -Vector2E4 -Vector2E8 -Vector2EC -Vector2F0 -Vector2F4 -Vector2F8 -Vector2FC -#endif -#if CORTEX_NUM_VECTORS > 176 -Vector300 -Vector304 -Vector308 -Vector30C -Vector310 -Vector314 -Vector318 -Vector31C -#endif -#if CORTEX_NUM_VECTORS > 184 -Vector320 -Vector324 -Vector328 -Vector32C -Vector330 -Vector334 -Vector338 -Vector33C -#endif -#if CORTEX_NUM_VECTORS > 192 -Vector340 -Vector344 -Vector348 -Vector34C -Vector350 -Vector354 -Vector358 -Vector35C -#endif -#if CORTEX_NUM_VECTORS > 200 -Vector360 -Vector364 -Vector368 -Vector36C -Vector370 -Vector374 -Vector378 -Vector37C -#endif -#if CORTEX_NUM_VECTORS > 208 -Vector380 -Vector384 -Vector388 -Vector38C -Vector390 -Vector394 -Vector398 -Vector39C -#endif -#if CORTEX_NUM_VECTORS > 216 -Vector3A0 -Vector3A4 -Vector3A8 -Vector3AC -Vector3B0 -Vector3B4 -Vector3B8 -Vector3BC -#endif -#if CORTEX_NUM_VECTORS > 224 -Vector3C0 -Vector3C4 -Vector3C8 -Vector3CC -Vector3D0 -Vector3D4 -Vector3D8 -Vector3DC -#endif -#if CORTEX_NUM_VECTORS > 232 -Vector3E0 -Vector3E4 -Vector3E8 -Vector3EC -Vector3F0 -Vector3F4 -Vector3F8 -Vector3FC -#endif -_unhandled_exception - b _unhandled_exception - - END - -#endif /* !defined(__DOXYGEN__) */ - -/**< @} */ diff --git a/os/common/ports/ARMCMx/compilers/RVCT/cstartup.s b/os/common/ports/ARMCMx/compilers/RVCT/cstartup.s deleted file mode 100644 index 01dd6facb..000000000 --- a/os/common/ports/ARMCMx/compilers/RVCT/cstartup.s +++ /dev/null @@ -1,134 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file ARMCMx/RVCT/cstartup.s - * @brief Generic RVCT Cortex-Mx startup file. - * - * @addtogroup ARMCMx_RVCT_STARTUP - * @{ - */ - -#if !defined(__DOXYGEN__) - -;/* <<< Use Configuration Wizard in Context Menu >>> */ - -;// Main Stack Configuration (IRQ Stack) -;// Main Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> -;// -main_stack_size EQU 0x00000400 - -;// Process Stack Configuration -;// Process Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> -;// -proc_stack_size EQU 0x00000400 - -;// C-runtime heap size -;// C-runtime heap size (in Bytes) <0x0-0xFFFFFFFF:8> -;// -heap_size EQU 0x00000400 - - AREA MSTACK, NOINIT, READWRITE, ALIGN=3 -main_stack_mem SPACE main_stack_size - EXPORT __initial_msp -__initial_msp - - AREA CSTACK, NOINIT, READWRITE, ALIGN=3 -__main_thread_stack_base__ - EXPORT __main_thread_stack_base__ -proc_stack_mem SPACE proc_stack_size - EXPORT __initial_sp -__initial_sp - - AREA HEAP, NOINIT, READWRITE, ALIGN=3 -__heap_base -Heap_Mem SPACE heap_size -__heap_limit - -CONTROL_MODE_PRIVILEGED EQU 0 -CONTROL_MODE_UNPRIVILEGED EQU 1 -CONTROL_USE_MSP EQU 0 -CONTROL_USE_PSP EQU 2 - - PRESERVE8 - THUMB - - AREA |.text|, CODE, READONLY - -/* - * Reset handler. - */ - IMPORT __main - EXPORT Reset_Handler -Reset_Handler PROC - cpsid i - ldr r0, =__initial_sp - msr PSP, r0 - movs r0, #CONTROL_MODE_PRIVILEGED :OR: CONTROL_USE_PSP - msr CONTROL, r0 - isb - bl __early_init - - IF {CPU} = "Cortex-M4.fp" - LDR R0, =0xE000ED88 ; Enable CP10,CP11 - LDR R1, [R0] - ORR R1, R1, #(0xF << 20) - STR R1, [R0] - ENDIF - - ldr r0, =__main - bx r0 - ENDP - -__early_init PROC - EXPORT __early_init [WEAK] - bx lr - ENDP - - ALIGN - -/* - * User Initial Stack & Heap. - */ - IF :DEF:__MICROLIB - - EXPORT __initial_sp - EXPORT __heap_base - EXPORT __heap_limit - - ELSE - - IMPORT __use_two_region_memory - EXPORT __user_initial_stackheap -__user_initial_stackheap - ldr r0, =Heap_Mem - ldr r1, =(proc_stack_mem + proc_stack_size) - ldr r2, =(Heap_Mem + heap_size) - ldr r3, =proc_stack_mem - bx lr - - ALIGN - - ENDIF - - END - -#endif /* !defined(__DOXYGEN__) */ - -/**< @} */ diff --git a/os/common/ports/ARMCMx/compilers/RVCT/vectors.s b/os/common/ports/ARMCMx/compilers/RVCT/vectors.s deleted file mode 100644 index f51a9c921..000000000 --- a/os/common/ports/ARMCMx/compilers/RVCT/vectors.s +++ /dev/null @@ -1,1005 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file ARMCMx/RVCT/vectors.c - * @brief Interrupt vectors for Cortex-Mx devices. - * - * @defgroup ARMCMx_RVCT_VECTORS Cortex-Mx Interrupt Vectors - * @{ - */ - -#define _FROM_ASM_ -#include "cmparams.h" - -#if !defined(__DOXYGEN__) - -#if (CORTEX_NUM_VECTORS & 7) != 0 -#error "the constant CORTEX_NUM_VECTORS must be a multiple of 8" -#endif - -#if (CORTEX_NUM_VECTORS < 8) || (CORTEX_NUM_VECTORS > 240) -#error "the constant CORTEX_NUM_VECTORS must be between 8 and 240 inclusive" -#endif - - PRESERVE8 - - AREA RESET, DATA, READONLY - - IMPORT __initial_msp - IMPORT Reset_Handler - EXPORT __Vectors - -__Vectors - DCD __initial_msp - DCD Reset_Handler - DCD NMI_Handler - DCD HardFault_Handler - DCD MemManage_Handler - DCD BusFault_Handler - DCD UsageFault_Handler - DCD Vector1C - DCD Vector20 - DCD Vector24 - DCD Vector28 - DCD SVC_Handler - DCD DebugMon_Handler - DCD Vector34 - DCD PendSV_Handler - DCD SysTick_Handler - DCD Vector40 - DCD Vector44 - DCD Vector48 - DCD Vector4C - DCD Vector50 - DCD Vector54 - DCD Vector58 - DCD Vector5C -#if CORTEX_NUM_VECTORS > 8 - DCD Vector60 - DCD Vector64 - DCD Vector68 - DCD Vector6C - DCD Vector70 - DCD Vector74 - DCD Vector78 - DCD Vector7C -#endif -#if CORTEX_NUM_VECTORS > 16 - DCD Vector80 - DCD Vector84 - DCD Vector88 - DCD Vector8C - DCD Vector90 - DCD Vector94 - DCD Vector98 - DCD Vector9C -#endif -#if CORTEX_NUM_VECTORS > 24 - DCD VectorA0 - DCD VectorA4 - DCD VectorA8 - DCD VectorAC - DCD VectorB0 - DCD VectorB4 - DCD VectorB8 - DCD VectorBC -#endif -#if CORTEX_NUM_VECTORS > 32 - DCD VectorC0 - DCD VectorC4 - DCD VectorC8 - DCD VectorCC - DCD VectorD0 - DCD VectorD4 - DCD VectorD8 - DCD VectorDC -#endif -#if CORTEX_NUM_VECTORS > 40 - DCD VectorE0 - DCD VectorE4 - DCD VectorE8 - DCD VectorEC - DCD VectorF0 - DCD VectorF4 - DCD VectorF8 - DCD VectorFC -#endif -#if CORTEX_NUM_VECTORS > 48 - DCD Vector100 - DCD Vector104 - DCD Vector108 - DCD Vector10C - DCD Vector110 - DCD Vector114 - DCD Vector118 - DCD Vector11C -#endif -#if CORTEX_NUM_VECTORS > 56 - DCD Vector120 - DCD Vector124 - DCD Vector128 - DCD Vector12C - DCD Vector130 - DCD Vector134 - DCD Vector138 - DCD Vector13C -#endif -#if CORTEX_NUM_VECTORS > 64 - DCD Vector140 - DCD Vector144 - DCD Vector148 - DCD Vector14C - DCD Vector150 - DCD Vector154 - DCD Vector158 - DCD Vector15C -#endif -#if CORTEX_NUM_VECTORS > 72 - DCD Vector160 - DCD Vector164 - DCD Vector168 - DCD Vector16C - DCD Vector170 - DCD Vector174 - DCD Vector178 - DCD Vector17C -#endif -#if CORTEX_NUM_VECTORS > 80 - DCD Vector180 - DCD Vector184 - DCD Vector188 - DCD Vector18C - DCD Vector190 - DCD Vector194 - DCD Vector198 - DCD Vector19C -#endif -#if CORTEX_NUM_VECTORS > 88 - DCD Vector1A0 - DCD Vector1A4 - DCD Vector1A8 - DCD Vector1AC - DCD Vector1B0 - DCD Vector1B4 - DCD Vector1B8 - DCD Vector1BC -#endif -#if CORTEX_NUM_VECTORS > 96 - DCD Vector1C0 - DCD Vector1C4 - DCD Vector1C8 - DCD Vector1CC - DCD Vector1D0 - DCD Vector1D4 - DCD Vector1D8 - DCD Vector1DC -#endif -#if CORTEX_NUM_VECTORS > 104 - DCD Vector1E0 - DCD Vector1E4 - DCD Vector1E8 - DCD Vector1EC - DCD Vector1F0 - DCD Vector1F4 - DCD Vector1F8 - DCD Vector1FC -#endif -#if CORTEX_NUM_VECTORS > 112 - DCD Vector200 - DCD Vector204 - DCD Vector208 - DCD Vector20C - DCD Vector210 - DCD Vector214 - DCD Vector218 - DCD Vector21C -#endif -#if CORTEX_NUM_VECTORS > 120 - DCD Vector220 - DCD Vector224 - DCD Vector228 - DCD Vector22C - DCD Vector230 - DCD Vector234 - DCD Vector238 - DCD Vector23C -#endif -#if CORTEX_NUM_VECTORS > 128 - DCD Vector240 - DCD Vector244 - DCD Vector248 - DCD Vector24C - DCD Vector250 - DCD Vector254 - DCD Vector258 - DCD Vector25C -#endif -#if CORTEX_NUM_VECTORS > 136 - DCD Vector260 - DCD Vector264 - DCD Vector268 - DCD Vector26C - DCD Vector270 - DCD Vector274 - DCD Vector278 - DCD Vector27C -#endif -#if CORTEX_NUM_VECTORS > 144 - DCD Vector280 - DCD Vector284 - DCD Vector288 - DCD Vector28C - DCD Vector290 - DCD Vector294 - DCD Vector298 - DCD Vector29C -#endif -#if CORTEX_NUM_VECTORS > 152 - DCD Vector2A0 - DCD Vector2A4 - DCD Vector2A8 - DCD Vector2AC - DCD Vector2B0 - DCD Vector2B4 - DCD Vector2B8 - DCD Vector2BC -#endif -#if CORTEX_NUM_VECTORS > 160 - DCD Vector2C0 - DCD Vector2C4 - DCD Vector2C8 - DCD Vector2CC - DCD Vector2D0 - DCD Vector2D4 - DCD Vector2D8 - DCD Vector2DC -#endif -#if CORTEX_NUM_VECTORS > 168 - DCD Vector2E0 - DCD Vector2E4 - DCD Vector2E8 - DCD Vector2EC - DCD Vector2F0 - DCD Vector2F4 - DCD Vector2F8 - DCD Vector2FC -#endif -#if CORTEX_NUM_VECTORS > 176 - DCD Vector300 - DCD Vector304 - DCD Vector308 - DCD Vector30C - DCD Vector310 - DCD Vector314 - DCD Vector318 - DCD Vector31C -#endif -#if CORTEX_NUM_VECTORS > 184 - DCD Vector320 - DCD Vector324 - DCD Vector328 - DCD Vector32C - DCD Vector330 - DCD Vector334 - DCD Vector338 - DCD Vector33C -#endif -#if CORTEX_NUM_VECTORS > 192 - DCD Vector340 - DCD Vector344 - DCD Vector348 - DCD Vector34C - DCD Vector350 - DCD Vector354 - DCD Vector358 - DCD Vector35C -#endif -#if CORTEX_NUM_VECTORS > 200 - DCD Vector360 - DCD Vector364 - DCD Vector368 - DCD Vector36C - DCD Vector370 - DCD Vector374 - DCD Vector378 - DCD Vector37C -#endif -#if CORTEX_NUM_VECTORS > 208 - DCD Vector380 - DCD Vector384 - DCD Vector388 - DCD Vector38C - DCD Vector390 - DCD Vector394 - DCD Vector398 - DCD Vector39C -#endif -#if CORTEX_NUM_VECTORS > 216 - DCD Vector3A0 - DCD Vector3A4 - DCD Vector3A8 - DCD Vector3AC - DCD Vector3B0 - DCD Vector3B4 - DCD Vector3B8 - DCD Vector3BC -#endif -#if CORTEX_NUM_VECTORS > 224 - DCD Vector3C0 - DCD Vector3C4 - DCD Vector3C8 - DCD Vector3CC - DCD Vector3D0 - DCD Vector3D4 - DCD Vector3D8 - DCD Vector3DC -#endif -#if CORTEX_NUM_VECTORS > 232 - DCD Vector3E0 - DCD Vector3E4 - DCD Vector3E8 - DCD Vector3EC - DCD Vector3F0 - DCD Vector3F4 - DCD Vector3F8 - DCD Vector3FC -#endif - - AREA |.text|, CODE, READONLY - THUMB - -/* - * Default interrupt handlers. - */ - EXPORT _unhandled_exception -_unhandled_exception PROC - EXPORT NMI_Handler [WEAK] - EXPORT HardFault_Handler [WEAK] - EXPORT MemManage_Handler [WEAK] - EXPORT BusFault_Handler [WEAK] - EXPORT UsageFault_Handler [WEAK] - EXPORT Vector1C [WEAK] - EXPORT Vector20 [WEAK] - EXPORT Vector24 [WEAK] - EXPORT Vector28 [WEAK] - EXPORT SVC_Handler [WEAK] - EXPORT DebugMon_Handler [WEAK] - EXPORT Vector34 [WEAK] - EXPORT PendSV_Handler [WEAK] - EXPORT SysTick_Handler [WEAK] - EXPORT Vector40 [WEAK] - EXPORT Vector44 [WEAK] - EXPORT Vector48 [WEAK] - EXPORT Vector4C [WEAK] - EXPORT Vector50 [WEAK] - EXPORT Vector54 [WEAK] - EXPORT Vector58 [WEAK] - EXPORT Vector5C [WEAK] -#if CORTEX_NUM_VECTORS > 8 - EXPORT Vector60 [WEAK] - EXPORT Vector64 [WEAK] - EXPORT Vector68 [WEAK] - EXPORT Vector6C [WEAK] - EXPORT Vector70 [WEAK] - EXPORT Vector74 [WEAK] - EXPORT Vector78 [WEAK] - EXPORT Vector7C [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 16 - EXPORT Vector80 [WEAK] - EXPORT Vector84 [WEAK] - EXPORT Vector88 [WEAK] - EXPORT Vector8C [WEAK] - EXPORT Vector90 [WEAK] - EXPORT Vector94 [WEAK] - EXPORT Vector98 [WEAK] - EXPORT Vector9C [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 24 - EXPORT VectorA0 [WEAK] - EXPORT VectorA4 [WEAK] - EXPORT VectorA8 [WEAK] - EXPORT VectorAC [WEAK] - EXPORT VectorB0 [WEAK] - EXPORT VectorB4 [WEAK] - EXPORT VectorB8 [WEAK] - EXPORT VectorBC [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 32 - EXPORT VectorC0 [WEAK] - EXPORT VectorC4 [WEAK] - EXPORT VectorC8 [WEAK] - EXPORT VectorCC [WEAK] - EXPORT VectorD0 [WEAK] - EXPORT VectorD4 [WEAK] - EXPORT VectorD8 [WEAK] - EXPORT VectorDC [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 40 - EXPORT VectorE0 [WEAK] - EXPORT VectorE4 [WEAK] - EXPORT VectorE8 [WEAK] - EXPORT VectorEC [WEAK] - EXPORT VectorF0 [WEAK] - EXPORT VectorF4 [WEAK] - EXPORT VectorF8 [WEAK] - EXPORT VectorFC [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 48 - EXPORT Vector100 [WEAK] - EXPORT Vector104 [WEAK] - EXPORT Vector108 [WEAK] - EXPORT Vector10C [WEAK] - EXPORT Vector110 [WEAK] - EXPORT Vector114 [WEAK] - EXPORT Vector118 [WEAK] - EXPORT Vector11C [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 56 - EXPORT Vector120 [WEAK] - EXPORT Vector124 [WEAK] - EXPORT Vector128 [WEAK] - EXPORT Vector12C [WEAK] - EXPORT Vector130 [WEAK] - EXPORT Vector134 [WEAK] - EXPORT Vector138 [WEAK] - EXPORT Vector13C [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 64 - EXPORT Vector140 [WEAK] - EXPORT Vector144 [WEAK] - EXPORT Vector148 [WEAK] - EXPORT Vector14C [WEAK] - EXPORT Vector150 [WEAK] - EXPORT Vector154 [WEAK] - EXPORT Vector158 [WEAK] - EXPORT Vector15C [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 72 - EXPORT Vector160 [WEAK] - EXPORT Vector164 [WEAK] - EXPORT Vector168 [WEAK] - EXPORT Vector16C [WEAK] - EXPORT Vector170 [WEAK] - EXPORT Vector174 [WEAK] - EXPORT Vector178 [WEAK] - EXPORT Vector17C [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 80 - EXPORT Vector180 [WEAK] - EXPORT Vector184 [WEAK] - EXPORT Vector188 [WEAK] - EXPORT Vector18C [WEAK] - EXPORT Vector190 [WEAK] - EXPORT Vector194 [WEAK] - EXPORT Vector198 [WEAK] - EXPORT Vector19C [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 88 - EXPORT Vector1A0 [WEAK] - EXPORT Vector1A4 [WEAK] - EXPORT Vector1A8 [WEAK] - EXPORT Vector1AC [WEAK] - EXPORT Vector1B0 [WEAK] - EXPORT Vector1B4 [WEAK] - EXPORT Vector1B8 [WEAK] - EXPORT Vector1BC [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 96 - EXPORT Vector1C0 [WEAK] - EXPORT Vector1C4 [WEAK] - EXPORT Vector1C8 [WEAK] - EXPORT Vector1CC [WEAK] - EXPORT Vector1D0 [WEAK] - EXPORT Vector1D4 [WEAK] - EXPORT Vector1D8 [WEAK] - EXPORT Vector1DC [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 104 - EXPORT Vector1E0 [WEAK] - EXPORT Vector1E4 [WEAK] - EXPORT Vector1E8 [WEAK] - EXPORT Vector1EC [WEAK] - EXPORT Vector1F0 [WEAK] - EXPORT Vector1F4 [WEAK] - EXPORT Vector1F8 [WEAK] - EXPORT Vector1FC [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 112 - EXPORT Vector200 [WEAK] - EXPORT Vector204 [WEAK] - EXPORT Vector208 [WEAK] - EXPORT Vector20C [WEAK] - EXPORT Vector210 [WEAK] - EXPORT Vector214 [WEAK] - EXPORT Vector218 [WEAK] - EXPORT Vector21C [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 120 - EXPORT Vector220 [WEAK] - EXPORT Vector224 [WEAK] - EXPORT Vector228 [WEAK] - EXPORT Vector22C [WEAK] - EXPORT Vector230 [WEAK] - EXPORT Vector234 [WEAK] - EXPORT Vector238 [WEAK] - EXPORT Vector23C [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 128 - EXPORT Vector240 [WEAK] - EXPORT Vector244 [WEAK] - EXPORT Vector248 [WEAK] - EXPORT Vector24C [WEAK] - EXPORT Vector250 [WEAK] - EXPORT Vector254 [WEAK] - EXPORT Vector258 [WEAK] - EXPORT Vector25C [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 136 - EXPORT Vector260 [WEAK] - EXPORT Vector264 [WEAK] - EXPORT Vector268 [WEAK] - EXPORT Vector26C [WEAK] - EXPORT Vector270 [WEAK] - EXPORT Vector274 [WEAK] - EXPORT Vector278 [WEAK] - EXPORT Vector27C [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 144 - EXPORT Vector280 [WEAK] - EXPORT Vector284 [WEAK] - EXPORT Vector288 [WEAK] - EXPORT Vector28C [WEAK] - EXPORT Vector290 [WEAK] - EXPORT Vector294 [WEAK] - EXPORT Vector298 [WEAK] - EXPORT Vector29C [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 152 - EXPORT Vector2A0 [WEAK] - EXPORT Vector2A4 [WEAK] - EXPORT Vector2A8 [WEAK] - EXPORT Vector2AC [WEAK] - EXPORT Vector2B0 [WEAK] - EXPORT Vector2B4 [WEAK] - EXPORT Vector2B8 [WEAK] - EXPORT Vector2BC [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 160 - EXPORT Vector2C0 [WEAK] - EXPORT Vector2C4 [WEAK] - EXPORT Vector2C8 [WEAK] - EXPORT Vector2CC [WEAK] - EXPORT Vector2D0 [WEAK] - EXPORT Vector2D4 [WEAK] - EXPORT Vector2D8 [WEAK] - EXPORT Vector2DC [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 168 - EXPORT Vector2E0 [WEAK] - EXPORT Vector2E4 [WEAK] - EXPORT Vector2E8 [WEAK] - EXPORT Vector2EC [WEAK] - EXPORT Vector2F0 [WEAK] - EXPORT Vector2F4 [WEAK] - EXPORT Vector2F8 [WEAK] - EXPORT Vector2FC [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 176 - EXPORT Vector300 [WEAK] - EXPORT Vector304 [WEAK] - EXPORT Vector308 [WEAK] - EXPORT Vector30C [WEAK] - EXPORT Vector310 [WEAK] - EXPORT Vector314 [WEAK] - EXPORT Vector318 [WEAK] - EXPORT Vector31C [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 184 - EXPORT Vector320 [WEAK] - EXPORT Vector324 [WEAK] - EXPORT Vector328 [WEAK] - EXPORT Vector32C [WEAK] - EXPORT Vector330 [WEAK] - EXPORT Vector334 [WEAK] - EXPORT Vector338 [WEAK] - EXPORT Vector33C [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 192 - EXPORT Vector340 [WEAK] - EXPORT Vector344 [WEAK] - EXPORT Vector348 [WEAK] - EXPORT Vector34C [WEAK] - EXPORT Vector350 [WEAK] - EXPORT Vector354 [WEAK] - EXPORT Vector358 [WEAK] - EXPORT Vector35C [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 200 - EXPORT Vector360 [WEAK] - EXPORT Vector364 [WEAK] - EXPORT Vector368 [WEAK] - EXPORT Vector36C [WEAK] - EXPORT Vector370 [WEAK] - EXPORT Vector374 [WEAK] - EXPORT Vector378 [WEAK] - EXPORT Vector37C [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 208 - EXPORT Vector380 [WEAK] - EXPORT Vector384 [WEAK] - EXPORT Vector388 [WEAK] - EXPORT Vector38C [WEAK] - EXPORT Vector390 [WEAK] - EXPORT Vector394 [WEAK] - EXPORT Vector398 [WEAK] - EXPORT Vector39C [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 216 - EXPORT Vector3A0 [WEAK] - EXPORT Vector3A4 [WEAK] - EXPORT Vector3A8 [WEAK] - EXPORT Vector3AC [WEAK] - EXPORT Vector3B0 [WEAK] - EXPORT Vector3B4 [WEAK] - EXPORT Vector3B8 [WEAK] - EXPORT Vector3BC [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 224 - EXPORT Vector3C0 [WEAK] - EXPORT Vector3C4 [WEAK] - EXPORT Vector3C8 [WEAK] - EXPORT Vector3CC [WEAK] - EXPORT Vector3D0 [WEAK] - EXPORT Vector3D4 [WEAK] - EXPORT Vector3D8 [WEAK] - EXPORT Vector3DC [WEAK] -#endif -#if CORTEX_NUM_VECTORS > 232 - EXPORT Vector3E0 [WEAK] - EXPORT Vector3E4 [WEAK] - EXPORT Vector3E8 [WEAK] - EXPORT Vector3EC [WEAK] - EXPORT Vector3F0 [WEAK] - EXPORT Vector3F4 [WEAK] - EXPORT Vector3F8 [WEAK] - EXPORT Vector3FC [WEAK] -#endif - -NMI_Handler -HardFault_Handler -MemManage_Handler -BusFault_Handler -UsageFault_Handler -Vector1C -Vector20 -Vector24 -Vector28 -SVC_Handler -DebugMon_Handler -Vector34 -PendSV_Handler -SysTick_Handler -Vector40 -Vector44 -Vector48 -Vector4C -Vector50 -Vector54 -Vector58 -Vector5C -#if CORTEX_NUM_VECTORS > 8 -Vector60 -Vector64 -Vector68 -Vector6C -Vector70 -Vector74 -Vector78 -Vector7C -#endif -#if CORTEX_NUM_VECTORS > 16 -Vector80 -Vector84 -Vector88 -Vector8C -Vector90 -Vector94 -Vector98 -Vector9C -#endif -#if CORTEX_NUM_VECTORS > 24 -VectorA0 -VectorA4 -VectorA8 -VectorAC -VectorB0 -VectorB4 -VectorB8 -VectorBC -#endif -#if CORTEX_NUM_VECTORS > 32 -VectorC0 -VectorC4 -VectorC8 -VectorCC -VectorD0 -VectorD4 -VectorD8 -VectorDC -#endif -#if CORTEX_NUM_VECTORS > 40 -VectorE0 -VectorE4 -VectorE8 -VectorEC -VectorF0 -VectorF4 -VectorF8 -VectorFC -#endif -#if CORTEX_NUM_VECTORS > 48 -Vector100 -Vector104 -Vector108 -Vector10C -Vector110 -Vector114 -Vector118 -Vector11C -#endif -#if CORTEX_NUM_VECTORS > 56 -Vector120 -Vector124 -Vector128 -Vector12C -Vector130 -Vector134 -Vector138 -Vector13C -#endif -#if CORTEX_NUM_VECTORS > 64 -Vector140 -Vector144 -Vector148 -Vector14C -Vector150 -Vector154 -Vector158 -Vector15C -#endif -#if CORTEX_NUM_VECTORS > 72 -Vector160 -Vector164 -Vector168 -Vector16C -Vector170 -Vector174 -Vector178 -Vector17C -#endif -#if CORTEX_NUM_VECTORS > 80 -Vector180 -Vector184 -Vector188 -Vector18C -Vector190 -Vector194 -Vector198 -Vector19C -#endif -#if CORTEX_NUM_VECTORS > 88 -Vector1A0 -Vector1A4 -Vector1A8 -Vector1AC -Vector1B0 -Vector1B4 -Vector1B8 -Vector1BC -#endif -#if CORTEX_NUM_VECTORS > 96 -Vector1C0 -Vector1C4 -Vector1C8 -Vector1CC -Vector1D0 -Vector1D4 -Vector1D8 -Vector1DC -#endif -#if CORTEX_NUM_VECTORS > 104 -Vector1E0 -Vector1E4 -Vector1E8 -Vector1EC -Vector1F0 -Vector1F4 -Vector1F8 -Vector1FC -#endif -#if CORTEX_NUM_VECTORS > 112 -Vector200 -Vector204 -Vector208 -Vector20C -Vector210 -Vector214 -Vector218 -Vector21C -#endif -#if CORTEX_NUM_VECTORS > 120 -Vector220 -Vector224 -Vector228 -Vector22C -Vector230 -Vector234 -Vector238 -Vector23C -#endif -#if CORTEX_NUM_VECTORS > 128 -Vector240 -Vector244 -Vector248 -Vector24C -Vector250 -Vector254 -Vector258 -Vector25C -#endif -#if CORTEX_NUM_VECTORS > 136 -Vector260 -Vector264 -Vector268 -Vector26C -Vector270 -Vector274 -Vector278 -Vector27C -#endif -#if CORTEX_NUM_VECTORS > 144 -Vector280 -Vector284 -Vector288 -Vector28C -Vector290 -Vector294 -Vector298 -Vector29C -#endif -#if CORTEX_NUM_VECTORS > 152 -Vector2A0 -Vector2A4 -Vector2A8 -Vector2AC -Vector2B0 -Vector2B4 -Vector2B8 -Vector2BC -#endif -#if CORTEX_NUM_VECTORS > 160 -Vector2C0 -Vector2C4 -Vector2C8 -Vector2CC -Vector2D0 -Vector2D4 -Vector2D8 -Vector2DC -#endif -#if CORTEX_NUM_VECTORS > 168 -Vector2E0 -Vector2E4 -Vector2E8 -Vector2EC -Vector2F0 -Vector2F4 -Vector2F8 -Vector2FC -#endif -#if CORTEX_NUM_VECTORS > 176 -Vector300 -Vector304 -Vector308 -Vector30C -Vector310 -Vector314 -Vector318 -Vector31C -#endif -#if CORTEX_NUM_VECTORS > 184 -Vector320 -Vector324 -Vector328 -Vector32C -Vector330 -Vector334 -Vector338 -Vector33C -#endif -#if CORTEX_NUM_VECTORS > 192 -Vector340 -Vector344 -Vector348 -Vector34C -Vector350 -Vector354 -Vector358 -Vector35C -#endif -#if CORTEX_NUM_VECTORS > 200 -Vector360 -Vector364 -Vector368 -Vector36C -Vector370 -Vector374 -Vector378 -Vector37C -#endif -#if CORTEX_NUM_VECTORS > 208 -Vector380 -Vector384 -Vector388 -Vector38C -Vector390 -Vector394 -Vector398 -Vector39C -#endif -#if CORTEX_NUM_VECTORS > 216 -Vector3A0 -Vector3A4 -Vector3A8 -Vector3AC -Vector3B0 -Vector3B4 -Vector3B8 -Vector3BC -#endif -#if CORTEX_NUM_VECTORS > 224 -Vector3C0 -Vector3C4 -Vector3C8 -Vector3CC -Vector3D0 -Vector3D4 -Vector3D8 -Vector3DC -#endif -#if CORTEX_NUM_VECTORS > 232 -Vector3E0 -Vector3E4 -Vector3E8 -Vector3EC -Vector3F0 -Vector3F4 -Vector3F8 -Vector3FC -#endif - b _unhandled_exception - ENDP - - END - -#endif /* !defined(__DOXYGEN__) */ - -/**< @} */ diff --git a/os/common/ports/ARMCMx/devices/K20x/cmparams.h b/os/common/ports/ARMCMx/devices/K20x/cmparams.h deleted file mode 100644 index 5ae9dada6..000000000 --- a/os/common/ports/ARMCMx/devices/K20x/cmparams.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file GCC/ARMCMx/MK20Dx/cmparams.h - * @brief ARM Cortex-M4 parameters for the Kinetis MK20Dx. - * - * @defgroup ARMCMx_MK20Dx Kinetis MK20Dx Specific Parameters - * @ingroup ARMCMx_SPECIFIC - * @details This file contains the Cortex-M4 specific parameters for the - * Kinetis MK20Dx platform. - * @{ - */ - -#ifndef _CMPARAMS_H_ -#define _CMPARAMS_H_ - -/** - * @brief Cortex core model. - */ -#define CORTEX_MODEL 4 - -/** - * @brief Systick unit presence. - */ -#define CORTEX_HAS_ST TRUE - -/** - * @brief Floating Point unit presence. - */ -#define CORTEX_HAS_FPU FALSE - -/** - * @brief Number of bits in priority masks. - */ -#define CORTEX_PRIORITY_BITS 4 - -/** - * @brief Number of interrupt vectors. - * @note This number does not include the 16 system vectors and must be - * rounded to a multiple of 8. - */ -#define CORTEX_NUM_VECTORS 48 - -/* The following code is not processed when the file is included from an - asm module.*/ -#if !defined(_FROM_ASM_) - -/* Including the device CMSIS header. Note, we are not using the definitions - from this header because we need this file to be usable also from - assembler source files. We verify that the info matches instead.*/ -#include "mk20d5.h" - -#if CORTEX_MODEL != __CORTEX_M -#error "CMSIS __CORTEX_M mismatch" -#endif - -#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS -#error "CMSIS __NVIC_PRIO_BITS mismatch" -#endif - -#endif /* !defined(_FROM_ASM_) */ - -#endif /* _CMPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/ARMCMx/devices/KL2x/cmparams.h b/os/common/ports/ARMCMx/devices/KL2x/cmparams.h deleted file mode 100644 index 6da2fed0e..000000000 --- a/os/common/ports/ARMCMx/devices/KL2x/cmparams.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file KL2x/cmparams.h - * @brief ARM Cortex-M0+ parameters for the Kinetis KL2x family. - * - * @defgroup ARMCMx_KL2x Kinetis KL2x Specific Parameters - * @ingroup ARMCMx_SPECIFIC - * @details This file contains the Cortex-M0+ specific parameters for the - * Kinetis KL2x platform. - * @{ - */ - -#ifndef _CMPARAMS_H_ -#define _CMPARAMS_H_ - -/** - * @brief Cortex core model. - */ -#define CORTEX_MODEL 0 - -/** - * @brief Systick unit presence. - */ -#define CORTEX_HAS_ST TRUE - -/** - * @brief Floating Point unit presence. - */ -#define CORTEX_HAS_FPU FALSE - -/** - * @brief Number of bits in priority masks. - */ -#define CORTEX_PRIORITY_BITS 2 - -/** - * @brief Number of interrupt vectors. - * @note This number does not include the 16 system vectors and must be - * rounded to a multiple of 8. - */ -#define CORTEX_NUM_VECTORS 32 - -/* The following code is not processed when the file is included from an - asm module.*/ -#if !defined(_FROM_ASM_) - -/* Including the device CMSIS header. Note, we are not using the definitions - from this header because we need this file to be usable also from - assembler source files. We verify that the info matches instead.*/ -#include "kl25z.h" - -#if CORTEX_MODEL != __CORTEX_M -#error "CMSIS __CORTEX_M mismatch" -#endif - -#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS -#error "CMSIS __NVIC_PRIO_BITS mismatch" -#endif - -#endif /* !defined(_FROM_ASM_) */ - -#endif /* _CMPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/ARMCMx/devices/STM32F0xx/cmparams.h b/os/common/ports/ARMCMx/devices/STM32F0xx/cmparams.h deleted file mode 100644 index 2744a6f72..000000000 --- a/os/common/ports/ARMCMx/devices/STM32F0xx/cmparams.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file STM32F0xx/cmparams.h - * @brief ARM Cortex-M0 parameters for the STM32F0xx. - * - * @defgroup ARMCMx_STM32F0xx STM32F0xx Specific Parameters - * @ingroup ARMCMx_SPECIFIC - * @details This file contains the Cortex-M0 specific parameters for the - * STM32F0xx platform. - * @{ - */ - -#ifndef _CMPARAMS_H_ -#define _CMPARAMS_H_ - -/** - * @brief Cortex core model. - */ -#define CORTEX_MODEL 0 - -/** - * @brief Floating Point unit presence. - */ -#define CORTEX_HAS_FPU 0 - -/** - * @brief Number of bits in priority masks. - */ -#define CORTEX_PRIORITY_BITS 2 - -/** - * @brief Number of interrupt vectors. - * @note This number does not include the 16 system vectors and must be - * rounded to a multiple of 8. - */ -#define CORTEX_NUM_VECTORS 32 - -/* The following code is not processed when the file is included from an - asm module.*/ -#if !defined(_FROM_ASM_) - -/* If the device type is not externally defined, for example from the Makefile, - then a file named board.h is included. This file must contain a device - definition compatible with the vendor include file.*/ -#if !defined (STM32F030x6) && !defined (STM32F030x8) && \ - !defined (STM32F031x6) && !defined (STM32F038xx) && \ - !defined (STM32F042x6) && !defined (STM32F048xx) && \ - !defined (STM32F051x8) && !defined (STM32F058xx) && \ - !defined (STM32F071xB) && !defined (STM32F072xB) && \ - !defined (STM32F078xx) -#include "board.h" -#endif - -/* Including the device CMSIS header. Note, we are not using the definitions - from this header because we need this file to be usable also from - assembler source files. We verify that the info matches instead.*/ -#include "stm32f0xx.h" - -#if CORTEX_MODEL != __CORTEX_M -#error "CMSIS __CORTEX_M mismatch" -#endif - -#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS -#error "CMSIS __NVIC_PRIO_BITS mismatch" -#endif - -#endif /* !defined(_FROM_ASM_) */ - -#endif /* _CMPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/ARMCMx/devices/STM32F1xx/cmparams.h b/os/common/ports/ARMCMx/devices/STM32F1xx/cmparams.h deleted file mode 100644 index 0fe7e27ab..000000000 --- a/os/common/ports/ARMCMx/devices/STM32F1xx/cmparams.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file STM32F1xx/cmparams.h - * @brief ARM Cortex-M3 parameters for the STM32F1xx. - * - * @defgroup ARMCMx_STM32F1xx STM32F1xx Specific Parameters - * @ingroup ARMCMx_SPECIFIC - * @details This file contains the Cortex-M4 specific parameters for the - * STM32F1xx platform. - * @{ - */ - -#ifndef _CMPARAMS_H_ -#define _CMPARAMS_H_ - -/** - * @brief Cortex core model. - */ -#define CORTEX_MODEL 3 - -/** - * @brief Floating Point unit presence. - */ -#define CORTEX_HAS_FPU 0 - -/** - * @brief Number of bits in priority masks. - */ -#define CORTEX_PRIORITY_BITS 4 - -/** - * @brief Number of interrupt vectors. - * @note This number does not include the 16 system vectors and must be - * rounded to a multiple of 8. - */ -#define CORTEX_NUM_VECTORS 72 - -/* The following code is not processed when the file is included from an - asm module.*/ -#if !defined(_FROM_ASM_) - -/* If the device type is not externally defined, for example from the Makefile, - then a file named board.h is included. This file must contain a device - definition compatible with the vendor include file.*/ -#if !defined(STM32F100xB) && !defined(STM32F100xE) && \ - !defined(STM32F101x6) && !defined(STM32F101xB) && \ - !defined(STM32F101xE) && !defined(STM32F101xG) && \ - !defined(STM32F102x6) && !defined(STM32F102xB) && \ - !defined(STM32F103x6) && !defined(STM32F103xB) && \ - !defined(STM32F103xE) && !defined(STM32F103xG) && \ - !defined(STM32F105xC) && !defined(STM32F107xC) -#include "board.h" -#endif - -/* Including the device CMSIS header. Note, we are not using the definitions - from this header because we need this file to be usable also from - assembler source files. We verify that the info matches instead.*/ -#include "stm32f1xx.h" - -#if CORTEX_MODEL != __CORTEX_M -#error "CMSIS __CORTEX_M mismatch" -#endif - -#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS -#error "CMSIS __NVIC_PRIO_BITS mismatch" -#endif - -#endif /* !defined(_FROM_ASM_) */ - -#endif /* _CMPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/ARMCMx/devices/STM32F2xx/cmparams.h b/os/common/ports/ARMCMx/devices/STM32F2xx/cmparams.h deleted file mode 100644 index 7644bf42c..000000000 --- a/os/common/ports/ARMCMx/devices/STM32F2xx/cmparams.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file STM32F2xx/cmparams.h - * @brief ARM Cortex-M3 parameters for the STM32F2xx. - * - * @defgroup ARMCMx_STM32F2xx STM32F2xx Specific Parameters - * @ingroup ARMCMx_SPECIFIC - * @details This file contains the Cortex-M3 specific parameters for the - * STM32F2xx platform. - * @{ - */ - -#ifndef _CMPARAMS_H_ -#define _CMPARAMS_H_ - -/** - * @brief Cortex core model. - */ -#define CORTEX_MODEL 3 - -/** - * @brief Floating Point unit presence. - */ -#define CORTEX_HAS_FPU 0 - -/** - * @brief Number of bits in priority masks. - */ -#define CORTEX_PRIORITY_BITS 4 - -/** - * @brief Number of interrupt vectors. - * @note This number does not include the 16 system vectors and must be - * rounded to a multiple of 8. - */ -#define CORTEX_NUM_VECTORS 96 - -/* The following code is not processed when the file is included from an - asm module.*/ -#if !defined(_FROM_ASM_) - -/* If the device type is not externally defined, for example from the Makefile, - then a file named board.h is included. This file must contain a device - definition compatible with the vendor include file.*/ -#if !defined(STM32F2XX) -#include "board.h" -#endif - -/* Including the device CMSIS header. Note, we are not using the definitions - from this header because we need this file to be usable also from - assembler source files. We verify that the info matches instead.*/ -#include "stm32f2xx.h" - -#if CORTEX_MODEL != __CORTEX_M -#error "CMSIS __CORTEX_M mismatch" -#endif - -#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS -#error "CMSIS __NVIC_PRIO_BITS mismatch" -#endif - -#endif /* !defined(_FROM_ASM_) */ - -#endif /* _CMPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/ARMCMx/devices/STM32F3xx/cmparams.h b/os/common/ports/ARMCMx/devices/STM32F3xx/cmparams.h deleted file mode 100644 index bcf0c6f32..000000000 --- a/os/common/ports/ARMCMx/devices/STM32F3xx/cmparams.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file STM32F3xx/cmparams.h - * @brief ARM Cortex-M4 parameters for the STM32F3xx. - * - * @defgroup ARMCMx_STM32F3xx STM32F3xx Specific Parameters - * @ingroup ARMCMx_SPECIFIC - * @details This file contains the Cortex-M4 specific parameters for the - * STM32F3xx platform. - * @{ - */ - -#ifndef _CMPARAMS_H_ -#define _CMPARAMS_H_ - -/** - * @brief Cortex core model. - */ -#define CORTEX_MODEL 4 - -/** - * @brief Floating Point unit presence. - */ -#define CORTEX_HAS_FPU 1 - -/** - * @brief Number of bits in priority masks. - */ -#define CORTEX_PRIORITY_BITS 4 - -/** - * @brief Number of interrupt vectors. - * @note This number does not include the 16 system vectors and must be - * rounded to a multiple of 8. - */ -#define CORTEX_NUM_VECTORS 88 - -/* The following code is not processed when the file is included from an - asm module.*/ -#if !defined(_FROM_ASM_) - -/* If the device type is not externally defined, for example from the Makefile, - then a file named board.h is included. This file must contain a device - definition compatible with the vendor include file.*/ -#if !defined (STM32F301x8) && !defined (STM32F318xx) && \ - !defined (STM32F302x8) && !defined (STM32F302xC) && \ - !defined (STM32F303x8) && !defined (STM32F303xC) && \ - !defined (STM32F358xx) && !defined (STM32F334x8) && \ - !defined (STM32F328xx) && \ - !defined (STM32F373xC) && !defined (STM32F378xx) -#include "board.h" -#endif - -/* Including the device CMSIS header. Note, we are not using the definitions - from this header because we need this file to be usable also from - assembler source files. We verify that the info matches instead.*/ -#include "stm32f3xx.h" - -#if CORTEX_MODEL != __CORTEX_M -#error "CMSIS __CORTEX_M mismatch" -#endif - -#if CORTEX_HAS_FPU != __FPU_PRESENT -#error "CMSIS __FPU_PRESENT mismatch" -#endif - -#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS -#error "CMSIS __NVIC_PRIO_BITS mismatch" -#endif - -#endif /* !defined(_FROM_ASM_) */ - -#endif /* _CMPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/ARMCMx/devices/STM32F4xx/cmparams.h b/os/common/ports/ARMCMx/devices/STM32F4xx/cmparams.h deleted file mode 100644 index 59951b5ae..000000000 --- a/os/common/ports/ARMCMx/devices/STM32F4xx/cmparams.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file STM32F4xx/cmparams.h - * @brief ARM Cortex-M4 parameters for the STM32F4xx. - * - * @defgroup ARMCMx_STM32F4xx STM32F4xx Specific Parameters - * @ingroup ARMCMx_SPECIFIC - * @details This file contains the Cortex-M4 specific parameters for the - * STM32F4xx platform. - * @{ - */ - -#ifndef _CMPARAMS_H_ -#define _CMPARAMS_H_ - -/** - * @brief Cortex core model. - */ -#define CORTEX_MODEL 4 - -/** - * @brief Floating Point unit presence. - */ -#define CORTEX_HAS_FPU 1 - -/** - * @brief Number of bits in priority masks. - */ -#define CORTEX_PRIORITY_BITS 4 - -/** - * @brief Number of interrupt vectors. - * @note This number does not include the 16 system vectors and must be - * rounded to a multiple of 8. - */ -#define CORTEX_NUM_VECTORS 96 - -/* The following code is not processed when the file is included from an - asm module.*/ -#if !defined(_FROM_ASM_) - -/* If the device type is not externally defined, for example from the Makefile, - then a file named board.h is included. This file must contain a device - definition compatible with the vendor include file.*/ -#if !defined(STM32F405xx) && !defined(STM32F415xx) && \ - !defined(STM32F407xx) && !defined(STM32F417xx) && \ - !defined(STM32F427xx) && !defined(STM32F437xx) && \ - !defined(STM32F429xx) && !defined(STM32F439xx) && \ - !defined(STM32F401xC) && !defined(STM32F401xE) && \ - !defined(STM32F411xE) -#include "board.h" -#endif - -/* Including the device CMSIS header. Note, we are not using the definitions - from this header because we need this file to be usable also from - assembler source files. We verify that the info matches instead.*/ -#include "stm32f4xx.h" - -#if CORTEX_MODEL != __CORTEX_M -#error "CMSIS __CORTEX_M mismatch" -#endif - -#if CORTEX_HAS_FPU != __FPU_PRESENT -#error "CMSIS __FPU_PRESENT mismatch" -#endif - -#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS -#error "CMSIS __NVIC_PRIO_BITS mismatch" -#endif - -#endif /* !defined(_FROM_ASM_) */ - -#endif /* _CMPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/ARMCMx/devices/STM32F7xx/cmparams.h b/os/common/ports/ARMCMx/devices/STM32F7xx/cmparams.h deleted file mode 100644 index f9c5ea36d..000000000 --- a/os/common/ports/ARMCMx/devices/STM32F7xx/cmparams.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file STM32F7xx/cmparams.h - * @brief ARM Cortex-M7 parameters for the STM32F4xx. - * - * @defgroup ARMCMx_STM32F7xx STM32F7xx Specific Parameters - * @ingroup ARMCMx_SPECIFIC - * @details This file contains the Cortex-M7 specific parameters for the - * STM32F7xx platform. - * @{ - */ - -#ifndef _CMPARAMS_H_ -#define _CMPARAMS_H_ - -/** - * @brief Cortex core model. - */ -#define CORTEX_MODEL 7 - -/** - * @brief Floating Point unit presence. - */ -#define CORTEX_HAS_FPU 1 - -/** - * @brief Number of bits in priority masks. - */ -#define CORTEX_PRIORITY_BITS 4 - -/** - * @brief Number of interrupt vectors. - * @note This number does not include the 16 system vectors and must be - * rounded to a multiple of 8. - */ -#define CORTEX_NUM_VECTORS 112 - -/* The following code is not processed when the file is included from an - asm module.*/ -#if !defined(_FROM_ASM_) - -/* If the device type is not externally defined, for example from the Makefile, - then a file named board.h is included. This file must contain a device - definition compatible with the vendor include file.*/ -#if !defined(STM32F745xx) && !defined(STM32F746xx) && !defined(STM32F756xx) -#include "board.h" -#endif - -/* Including the device CMSIS header. Note, we are not using the definitions - from this header because we need this file to be usable also from - assembler source files. We verify that the info matches instead.*/ -#include "stm32f7xx.h" - -#if CORTEX_MODEL != __CORTEX_M -#error "CMSIS __CORTEX_M mismatch" -#endif - -#if CORTEX_HAS_FPU != __FPU_PRESENT -#error "CMSIS __FPU_PRESENT mismatch" -#endif - -#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS -#error "CMSIS __NVIC_PRIO_BITS mismatch" -#endif - -#endif /* !defined(_FROM_ASM_) */ - -#endif /* _CMPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/ARMCMx/devices/STM32L0xx/cmparams.h b/os/common/ports/ARMCMx/devices/STM32L0xx/cmparams.h deleted file mode 100644 index ad14e43b0..000000000 --- a/os/common/ports/ARMCMx/devices/STM32L0xx/cmparams.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file STM32L0xx/cmparams.h - * @brief ARM Cortex-M0+ parameters for the STM32L0xx. - * - * @defgroup ARMCMx_STM32L0xx STM32L0xx Specific Parameters - * @ingroup ARMCMx_SPECIFIC - * @details This file contains the Cortex-M0 specific parameters for the - * STM32L0xx platform. - * @{ - */ - -#ifndef _CMPARAMS_H_ -#define _CMPARAMS_H_ - -/** - * @brief Cortex core model. - */ -#define CORTEX_MODEL 0 - -/** - * @brief Floating Point unit presence. - */ -#define CORTEX_HAS_FPU 0 - -/** - * @brief Number of bits in priority masks. - */ -#define CORTEX_PRIORITY_BITS 2 - -/** - * @brief Number of interrupt vectors. - * @note This number does not include the 16 system vectors and must be - * rounded to a multiple of 8. - */ -#define CORTEX_NUM_VECTORS 32 - -/* The following code is not processed when the file is included from an - asm module.*/ -#if !defined(_FROM_ASM_) - -/* If the device type is not externally defined, for example from the Makefile, - then a file named board.h is included. This file must contain a device - definition compatible with the vendor include file.*/ -#if !defined(STM32L051xx) && !defined(STM32L052xx) && \ - !defined(STM32L053xx) && !defined(STM32L062xx) && \ - !defined(STM32L063xx) && !defined(STM32L061xx) -#include "board.h" -#endif - -/* Including the device CMSIS header. Note, we are not using the definitions - from this header because we need this file to be usable also from - assembler source files. We verify that the info matches instead.*/ -#include "stm32l0xx.h" - -#if CORTEX_MODEL != __CORTEX_M -#error "CMSIS __CORTEX_M mismatch" -#endif - -#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS -#error "CMSIS __NVIC_PRIO_BITS mismatch" -#endif - -#endif /* !defined(_FROM_ASM_) */ - -#endif /* _CMPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/ARMCMx/devices/STM32L1xx/cmparams.h b/os/common/ports/ARMCMx/devices/STM32L1xx/cmparams.h deleted file mode 100644 index 84304e4ad..000000000 --- a/os/common/ports/ARMCMx/devices/STM32L1xx/cmparams.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file STM32L1xx/cmparams.h - * @brief ARM Cortex-M3 parameters for the STM32L1xx. - * - * @defgroup ARMCMx_STM32L1xx STM32L1xx Specific Parameters - * @ingroup ARMCMx_SPECIFIC - * @details This file contains the Cortex-M3 specific parameters for the - * STM32L1xx platform. - * @{ - */ - -#ifndef _CMPARAMS_H_ -#define _CMPARAMS_H_ - -/** - * @brief Cortex core model. - */ -#define CORTEX_MODEL 3 - -/** - * @brief Floating Point unit presence. - */ -#define CORTEX_HAS_FPU 0 - -/** - * @brief Number of bits in priority masks. - */ -#define CORTEX_PRIORITY_BITS 4 - -/** - * @brief Number of interrupt vectors. - * @note This number does not include the 16 system vectors and must be - * rounded to a multiple of 8. - */ -#define CORTEX_NUM_VECTORS 64 - -/* The following code is not processed when the file is included from an - asm module.*/ -#if !defined(_FROM_ASM_) - -/* If the device type is not externally defined, for example from the Makefile, - then a file named board.h is included. This file must contain a device - definition compatible with the vendor include file.*/ -#if !defined(STM32L100xB) && !defined(STM32L100xBA) && \ - !defined(STM32L100xC) && !defined(STM32L151xB) && \ - !defined(STM32L151xBA) && !defined(STM32L151xC) && \ - !defined(STM32L151xCA) && !defined(STM32L151xD) && \ - !defined(STM32L151xDX) && !defined(STM32L151xE) && \ - !defined(STM32L152xB) && !defined(STM32L152xBA) && \ - !defined(STM32L152xC) && !defined(STM32L152xCA) && \ - !defined(STM32L152xD) && !defined(STM32L152xDX) && \ - !defined(STM32L152xE) && !defined(STM32L162xC) && \ - !defined(STM32L162xCA) && !defined(STM32L162xD) && \ - !defined(STM32L162xDX) && !defined(STM32L162xE) -#include "board.h" -#endif - -/* Including the device CMSIS header. Note, we are not using the definitions - from this header because we need this file to be usable also from - assembler source files. We verify that the info matches instead.*/ -#include "stm32l1xx.h" - -#if CORTEX_MODEL != __CORTEX_M -#error "CMSIS __CORTEX_M mismatch" -#endif - -#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS -#error "CMSIS __NVIC_PRIO_BITS mismatch" -#endif - -/* Fix for yet another consistency error in ST headers.*/ -#define SVCall_IRQn SVC_IRQn - -#endif /* !defined(_FROM_ASM_) */ - -#endif /* _CMPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/ARMCMx/devices/STM32L4xx/cmparams.h b/os/common/ports/ARMCMx/devices/STM32L4xx/cmparams.h deleted file mode 100644 index a3a4e09a4..000000000 --- a/os/common/ports/ARMCMx/devices/STM32L4xx/cmparams.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file STM32F4xx/cmparams.h - * @brief ARM Cortex-M4 parameters for the STM32F4xx. - * - * @defgroup ARMCMx_STM32L$xx STM32L4xx Specific Parameters - * @ingroup ARMCMx_SPECIFIC - * @details This file contains the Cortex-M4 specific parameters for the - * STM32L4xx platform. - * @{ - */ - -#ifndef _CMPARAMS_H_ -#define _CMPARAMS_H_ - -/** - * @brief Cortex core model. - */ -#define CORTEX_MODEL 4 - -/** - * @brief Floating Point unit presence. - */ -#define CORTEX_HAS_FPU 1 - -/** - * @brief Number of bits in priority masks. - */ -#define CORTEX_PRIORITY_BITS 4 - -/** - * @brief Number of interrupt vectors. - * @note This number does not include the 16 system vectors and must be - * rounded to a multiple of 8. - */ -#define CORTEX_NUM_VECTORS 88 - -/* The following code is not processed when the file is included from an - asm module.*/ -#if !defined(_FROM_ASM_) - -/* If the device type is not externally defined, for example from the Makefile, - then a file named board.h is included. This file must contain a device - definition compatible with the vendor include file.*/ -#if !defined(STM32L471xx) && !defined(STM32L475xx) && \ - !defined(STM32L476xx) && !defined(STM32L485xx) && \ - !defined (STM32L486xx) -#include "board.h" -#endif - -/* Including the device CMSIS header. Note, we are not using the definitions - from this header because we need this file to be usable also from - assembler source files. We verify that the info matches instead.*/ -#include "stm32l4xx.h" - -#if CORTEX_MODEL != __CORTEX_M -#error "CMSIS __CORTEX_M mismatch" -#endif - -#if CORTEX_HAS_FPU != __FPU_PRESENT -#error "CMSIS __FPU_PRESENT mismatch" -#endif - -#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS -#error "CMSIS __NVIC_PRIO_BITS mismatch" -#endif - -#endif /* !defined(_FROM_ASM_) */ - -#endif /* _CMPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/compilers/CW/crt0.s b/os/common/ports/e200/compilers/CW/crt0.s deleted file mode 100644 index 510dc9a2f..000000000 --- a/os/common/ports/e200/compilers/CW/crt0.s +++ /dev/null @@ -1,261 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file CW/crt0.s - * @brief Generic PowerPC startup file for CodeWarrior. - * - * @addtogroup PPC_CW_CORE - * @{ - */ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -#if !defined(FALSE) || defined(__DOXYGEN__) -#define FALSE 0 -#endif - -#if !defined(TRUE) || defined(__DOXYGEN__) -#define TRUE 1 -#endif - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/** - * @brief Stack segments initialization switch. - */ -#if !defined(CRT0_STACKS_FILL_PATTERN) || defined(__DOXYGEN__) -#define CRT0_STACKS_FILL_PATTERN 0x55555555 -#endif - -/** - * @brief Stack segments initialization switch. - */ -#if !defined(CRT0_INIT_STACKS) || defined(__DOXYGEN__) -#define CRT0_INIT_STACKS TRUE -#endif - -/** - * @brief DATA segment initialization switch. - */ -#if !defined(CRT0_INIT_DATA) || defined(__DOXYGEN__) -#define CRT0_INIT_DATA TRUE -#endif - -/** - * @brief BSS segment initialization switch. - */ -#if !defined(CRT0_INIT_BSS) || defined(__DOXYGEN__) -#define CRT0_INIT_BSS TRUE -#endif - -/** - * @brief Constructors invocation switch. - */ -#if !defined(CRT0_CALL_CONSTRUCTORS) || defined(__DOXYGEN__) -#define CRT0_CALL_CONSTRUCTORS FALSE -#endif - -/** - * @brief Destructors invocation switch. - */ -#if !defined(CRT0_CALL_DESTRUCTORS) || defined(__DOXYGEN__) -#define CRT0_CALL_DESTRUCTORS FALSE -#endif - -/*===========================================================================*/ -/* Code section. */ -/*===========================================================================*/ - -#if !defined(__DOXYGEN__) - .extern __sdata2_start__ - .extern __sdata_start__ - .extern __bss_start__ - .extern __bss_end__ - .extern __irq_stack_base__ - .extern __irq_stack_end__ - .extern __process_stack_end__ - .extern __process_stack_base__ - .extern __romdata_start__ - .extern __data_start__ - .extern __data_end__ - .extern __init_array_start - .extern __init_array_end - .extern __fini_array_start - .extern __fini_array_end - - .extern main - - .section .crt0, text_vle - .align 16 - .globl _boot_address - .type _boot_address, @function -_boot_address: - /* Stack setup.*/ - e_lis r1, __process_stack_end__@h - e_or2i r1, __process_stack_end__@l - se_li r0, 0 - e_stwu r0, -8(r1) - - /* Small sections registers initialization.*/ - e_lis r2, __sdata2_start__@h - e_or2i r2, __sdata2_start__@l - e_lis r13, __sdata_start__@h - e_or2i r13, __sdata_start__@l - - /* Early initialization.*/ - e_bl __early_init - -#if CRT0_INIT_STACKS == TRUE - /* Stacks fill pattern.*/ - e_lis r7, CRT0_STACKS_FILL_PATTERN@h - e_or2i r7, CRT0_STACKS_FILL_PATTERN@l - - /* IRQ Stack initialization. Note, the architecture does not use this - stack, the size is usually zero. An OS can have special SW handling - and require this. A 4 bytes alignment is assumed and required.*/ - e_lis r4, __irq_stack_base__@h - e_or2i r4, __irq_stack_base__@l - e_lis r5, __irq_stack_end__@h - e_or2i r5, __irq_stack_end__@l -.irqsloop: - se_cmpl r4, r5 - se_bge .irqsend - se_stw r7, 0(r4) - se_addi r4, 4 - se_b .irqsloop -.irqsend: - - /* Process Stack initialization. Note, does not overwrite the already - written EABI frame. A 4 bytes alignment is assumed and required.*/ - e_lis r4, __process_stack_base__@h - e_or2i r4, __process_stack_base__@l - e_lis r5, (__process_stack_end__ - 8)@h - e_or2i r5, (__process_stack_end__ - 8)@l -.prcsloop: - se_cmpl r4, r5 - se_bge .prcsend - se_stw r7, 0(r4) - se_addi r4, 4 - se_b .prcsloop -.prcsend: -#endif - -#if CRT0_INIT_BSS == TRUE - /* BSS clearing.*/ - e_lis r4, __bss_start__@h - e_or2i r4, __bss_start__@l - e_lis r5, __bss_end__@h - e_or2i r5, __bss_end__@l - se_li r7, 0 -.bssloop: - se_cmpl r4, r5 - se_bge .bssend - se_stw r7, 0(r4) - se_addi r4, 4 - se_b .bssloop -.bssend: -#endif - -#if CRT0_INIT_DATA == TRUE - /* DATA initialization.*/ - e_lis r4, __romdata_start__@h - e_or2i r4, __romdata_start__@l - e_lis r5, __data_start__@h - e_or2i r5, __data_start__@l - e_lis r6, __data_end__@h - e_or2i r6, __data_end__@l -.dataloop: - se_cmpl r5, r6 - se_bge .dataend - se_lwz r7, 0(r4) - se_addi r4, 4 - se_stw r7, 0(r5) - se_addi r5, 4 - se_b .dataloop -.dataend: -#endif - - /* Late initialization.*/ - e_bl __late_init - -#if CRT0_CALL_CONSTRUCTORS == TRUE - /* Constructors invocation.*/ - e_lis r4, __init_array_start@h - e_or2i r4, __init_array_start@l - e_lis r5, __init_array_end@h - e_or2i r5, __init_array_end@l -.iniloop: - se_cmpl r4, r5 - se_bge .iniend - se_lwz r6, 0(r4) - se_mtctr r6 - se_addi r4, 4 - se_bctrl - se_b .iniloop -.iniend: -#endif - - /* Main program invocation.*/ - e_bl main - -#if CRT0_CALL_DESTRUCTORS == TRUE - /* Destructors invocation.*/ - e_lis r4, __fini_array_start@h - e_or2i r4, __fini_array_start@l - e_lis r5, __fini_array_end@h - e_or2i r5, __fini_array_end@l -.finiloop: - se_cmpl r4, r5 - se_bge .finiend - se_lwz r6, 0(r4) - se_mtctr r6 - se_addi r4, 4 - se_bctrl - se_b .finiloop -.finiend: -#endif - - /* Branching to the defined exit handler.*/ - e_b __default_exit - -#endif /* !defined(__DOXYGEN__) */ - - .section .text_vle - .align 4 - - /* Default main exit code, infinite loop.*/ - .weak __default_exit -__default_exit: - e_b __default_exit - - /* Default early initialization code, none.*/ - .weak __early_init - se_blr - - /* Default late initialization code, none.*/ - .weak __late_init -__late_init: - se_blr - -/** @} */ diff --git a/os/common/ports/e200/compilers/CW/unhandled.s b/os/common/ports/e200/compilers/CW/unhandled.s deleted file mode 100644 index c129a92ed..000000000 --- a/os/common/ports/e200/compilers/CW/unhandled.s +++ /dev/null @@ -1,1861 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file weak.s - * @brief Unhandled IRQs. - * - * @addtogroup PPC_CW_CORE - * @{ - */ - -#define _FROM_ASM_ -#include "ppcparams.h" - -#if defined(VECTORS_RENAMING) -#include "isrs.h" -#endif - -#if !defined(__DOXYGEN__) - - .section .text_vle - .align 4 - - .weak _IVOR0, _IVOR1, _IVOR2, _IVOR3, _IVOR4, _IVOR5 - .weak _IVOR6, _IVOR7, _IVOR8, _IVOR9, _IVOR10, _IVOR11 - .weak _IVOR12, _IVOR13, _IVOR14, _IVOR15 -_IVOR0: -_IVOR1: -_IVOR2: -_IVOR3: -_IVOR4: -_IVOR5: -_IVOR6: -_IVOR7: -_IVOR8: -_IVOR9: -_IVOR10: -_IVOR11: -_IVOR12: -_IVOR13: -_IVOR14: -_IVOR15: - .global _unhandled_exception -_unhandled_exception: - se_b _unhandled_exception - - .weak vector0, vector1, vector2, vector3 -#if PPC_NUM_VECTORS > 4 - .weak vector4, vector5, vector6, vector7 -#endif -#if PPC_NUM_VECTORS > 8 - .weak vector8, vector9, vector10, vector11 -#endif -#if PPC_NUM_VECTORS > 12 - .weak vector12, vector13, vector14, vector15 -#endif -#if PPC_NUM_VECTORS > 16 - .weak vector16, vector17, vector18, vector19 -#endif -#if PPC_NUM_VECTORS > 20 - .weak vector20, vector21, vector22, vector23 -#endif -#if PPC_NUM_VECTORS > 24 - .weak vector24, vector25, vector26, vector27 -#endif -#if PPC_NUM_VECTORS > 28 - .weak vector28, vector29, vector30, vector31 -#endif -#if PPC_NUM_VECTORS > 32 - .weak vector32, vector33, vector34, vector35 -#endif -#if PPC_NUM_VECTORS > 36 - .weak vector36, vector37, vector38, vector39 -#endif -#if PPC_NUM_VECTORS > 40 - .weak vector40, vector41, vector42, vector43 -#endif -#if PPC_NUM_VECTORS > 44 - .weak vector44, vector45, vector46, vector47 -#endif -#if PPC_NUM_VECTORS > 48 - .weak vector48, vector49, vector50, vector51 -#endif -#if PPC_NUM_VECTORS > 52 - .weak vector52, vector53, vector54, vector55 -#endif -#if PPC_NUM_VECTORS > 56 - .weak vector56, vector57, vector58, vector59 -#endif -#if PPC_NUM_VECTORS > 60 - .weak vector60, vector61, vector62, vector63 -#endif -#if PPC_NUM_VECTORS > 64 - .weak vector64, vector65, vector66, vector67 -#endif -#if PPC_NUM_VECTORS > 68 - .weak vector68, vector69, vector70, vector71 -#endif -#if PPC_NUM_VECTORS > 72 - .weak vector72, vector73, vector74, vector75 -#endif -#if PPC_NUM_VECTORS > 76 - .weak vector76, vector77, vector78, vector79 -#endif -#if PPC_NUM_VECTORS > 80 - .weak vector80, vector81, vector82, vector83 -#endif -#if PPC_NUM_VECTORS > 84 - .weak vector84, vector85, vector86, vector87 -#endif -#if PPC_NUM_VECTORS > 88 - .weak vector88, vector89, vector90, vector91 -#endif -#if PPC_NUM_VECTORS > 92 - .weak vector92, vector93, vector94, vector95 -#endif -#if PPC_NUM_VECTORS > 96 - .weak vector96, vector97, vector98, vector99 -#endif -#if PPC_NUM_VECTORS > 100 - .weak vector100, vector101, vector102, vector103 -#endif -#if PPC_NUM_VECTORS > 104 - .weak vector104, vector105, vector106, vector107 -#endif -#if PPC_NUM_VECTORS > 108 - .weak vector108, vector109, vector110, vector111 -#endif -#if PPC_NUM_VECTORS > 112 - .weak vector112, vector113, vector114, vector115 -#endif -#if PPC_NUM_VECTORS > 116 - .weak vector116, vector117, vector118, vector119 -#endif -#if PPC_NUM_VECTORS > 120 - .weak vector120, vector121, vector122, vector123 -#endif -#if PPC_NUM_VECTORS > 124 - .weak vector124, vector125, vector126, vector127 -#endif -#if PPC_NUM_VECTORS > 128 - .weak vector128, vector129, vector130, vector131 -#endif -#if PPC_NUM_VECTORS > 132 - .weak vector132, vector133, vector134, vector135 -#endif -#if PPC_NUM_VECTORS > 136 - .weak vector136, vector137, vector138, vector139 -#endif -#if PPC_NUM_VECTORS > 140 - .weak vector140, vector141, vector142, vector143 -#endif -#if PPC_NUM_VECTORS > 144 - .weak vector144, vector145, vector146, vector147 -#endif -#if PPC_NUM_VECTORS > 148 - .weak vector148, vector149, vector150, vector151 -#endif -#if PPC_NUM_VECTORS > 152 - .weak vector152, vector153, vector154, vector155 -#endif -#if PPC_NUM_VECTORS > 156 - .weak vector156, vector157, vector158, vector159 -#endif -#if PPC_NUM_VECTORS > 160 - .weak vector160, vector161, vector162, vector163 -#endif -#if PPC_NUM_VECTORS > 164 - .weak vector164, vector165, vector166, vector167 -#endif -#if PPC_NUM_VECTORS > 168 - .weak vector168, vector169, vector170, vector171 -#endif -#if PPC_NUM_VECTORS > 172 - .weak vector172, vector173, vector174, vector175 -#endif -#if PPC_NUM_VECTORS > 176 - .weak vector176, vector177, vector178, vector179 -#endif -#if PPC_NUM_VECTORS > 180 - .weak vector180, vector181, vector182, vector183 -#endif -#if PPC_NUM_VECTORS > 184 - .weak vector184, vector185, vector186, vector187 -#endif -#if PPC_NUM_VECTORS > 188 - .weak vector188, vector189, vector190, vector191 -#endif -#if PPC_NUM_VECTORS > 192 - .weak vector192, vector193, vector194, vector195 -#endif -#if PPC_NUM_VECTORS > 196 - .weak vector196, vector197, vector198, vector199 -#endif -#if PPC_NUM_VECTORS > 200 - .weak vector200, vector201, vector202, vector203 -#endif -#if PPC_NUM_VECTORS > 204 - .weak vector204, vector205, vector206, vector207 -#endif -#if PPC_NUM_VECTORS > 208 - .weak vector208, vector209, vector210, vector211 -#endif -#if PPC_NUM_VECTORS > 212 - .weak vector212, vector213, vector214, vector215 -#endif -#if PPC_NUM_VECTORS > 216 - .weak vector216, vector217, vector218, vector219 -#endif -#if PPC_NUM_VECTORS > 220 - .weak vector220, vector221, vector222, vector223 -#endif -#if PPC_NUM_VECTORS > 224 - .weak vector224, vector225, vector226, vector227 -#endif -#if PPC_NUM_VECTORS > 228 - .weak vector228, vector229, vector230, vector231 -#endif -#if PPC_NUM_VECTORS > 232 - .weak vector232, vector233, vector234, vector235 -#endif -#if PPC_NUM_VECTORS > 236 - .weak vector236, vector237, vector238, vector239 -#endif -#if PPC_NUM_VECTORS > 240 - .weak vector240, vector241, vector242, vector243 -#endif -#if PPC_NUM_VECTORS > 244 - .weak vector244, vector245, vector246, vector247 -#endif -#if PPC_NUM_VECTORS > 248 - .weak vector248, vector249, vector250, vector251 -#endif -#if PPC_NUM_VECTORS > 252 - .weak vector252, vector253, vector254, vector255 -#endif -#if PPC_NUM_VECTORS > 256 - .weak vector256, vector257, vector258, vector259 -#endif -#if PPC_NUM_VECTORS > 260 - .weak vector260, vector261, vector262, vector263 -#endif -#if PPC_NUM_VECTORS > 264 - .weak vector264, vector265, vector266, vector267 -#endif -#if PPC_NUM_VECTORS > 268 - .weak vector268, vector269, vector270, vector271 -#endif -#if PPC_NUM_VECTORS > 272 - .weak vector272, vector273, vector274, vector275 -#endif -#if PPC_NUM_VECTORS > 276 - .weak vector276, vector277, vector278, vector279 -#endif -#if PPC_NUM_VECTORS > 280 - .weak vector280, vector281, vector282, vector283 -#endif -#if PPC_NUM_VECTORS > 284 - .weak vector284, vector285, vector286, vector287 -#endif -#if PPC_NUM_VECTORS > 288 - .weak vector288, vector289, vector290, vector291 -#endif -#if PPC_NUM_VECTORS > 292 - .weak vector292, vector293, vector294, vector295 -#endif -#if PPC_NUM_VECTORS > 296 - .weak vector296, vector297, vector298, vector299 -#endif -#if PPC_NUM_VECTORS > 300 - .weak vector300, vector301, vector302, vector303 -#endif -#if PPC_NUM_VECTORS > 304 - .weak vector304, vector305, vector306, vector307 -#endif -#if PPC_NUM_VECTORS > 308 - .weak vector308, vector309, vector310, vector311 -#endif -#if PPC_NUM_VECTORS > 312 - .weak vector312, vector313, vector314, vector315 -#endif -#if PPC_NUM_VECTORS > 316 - .weak vector316, vector317, vector318, vector319 -#endif -#if PPC_NUM_VECTORS > 320 - .weak vector320, vector321, vector322, vector323 -#endif -#if PPC_NUM_VECTORS > 324 - .weak vector324, vector325, vector326, vector327 -#endif -#if PPC_NUM_VECTORS > 328 - .weak vector328, vector329, vector330, vector331 -#endif -#if PPC_NUM_VECTORS > 332 - .weak vector332, vector333, vector334, vector335 -#endif -#if PPC_NUM_VECTORS > 336 - .weak vector336, vector337, vector338, vector339 -#endif -#if PPC_NUM_VECTORS > 340 - .weak vector340, vector341, vector342, vector343 -#endif -#if PPC_NUM_VECTORS > 344 - .weak vector344, vector345, vector346, vector347 -#endif -#if PPC_NUM_VECTORS > 348 - .weak vector348, vector349, vector350, vector351 -#endif -#if PPC_NUM_VECTORS > 352 - .weak vector352, vector353, vector354, vector355 -#endif -#if PPC_NUM_VECTORS > 356 - .weak vector356, vector357, vector358, vector359 -#endif -#if PPC_NUM_VECTORS > 360 - .weak vector360, vector361, vector362, vector363 -#endif -#if PPC_NUM_VECTORS > 364 - .weak vector364, vector365, vector366, vector367 -#endif -#if PPC_NUM_VECTORS > 368 - .weak vector368, vector369, vector370, vector371 -#endif -#if PPC_NUM_VECTORS > 372 - .weak vector372, vector373, vector374, vector375 -#endif -#if PPC_NUM_VECTORS > 376 - .weak vector376, vector377, vector378, vector379 -#endif -#if PPC_NUM_VECTORS > 380 - .weak vector380, vector381, vector382, vector383 -#endif -#if PPC_NUM_VECTORS > 384 - .weak vector384, vector385, vector386, vector387 -#endif -#if PPC_NUM_VECTORS > 388 - .weak vector388, vector389, vector390, vector391 -#endif -#if PPC_NUM_VECTORS > 392 - .weak vector392, vector393, vector394, vector395 -#endif -#if PPC_NUM_VECTORS > 396 - .weak vector396, vector397, vector398, vector399 -#endif -#if PPC_NUM_VECTORS > 400 - .weak vector400, vector401, vector402, vector403 -#endif -#if PPC_NUM_VECTORS > 404 - .weak vector404, vector405, vector406, vector407 -#endif -#if PPC_NUM_VECTORS > 408 - .weak vector408, vector409, vector410, vector411 -#endif -#if PPC_NUM_VECTORS > 412 - .weak vector412, vector413, vector414, vector415 -#endif -#if PPC_NUM_VECTORS > 416 - .weak vector416, vector417, vector418, vector419 -#endif -#if PPC_NUM_VECTORS > 420 - .weak vector420, vector421, vector422, vector423 -#endif -#if PPC_NUM_VECTORS > 424 - .weak vector424, vector425, vector426, vector427 -#endif -#if PPC_NUM_VECTORS > 428 - .weak vector428, vector429, vector430, vector431 -#endif -#if PPC_NUM_VECTORS > 432 - .weak vector432, vector433, vector434, vector435 -#endif -#if PPC_NUM_VECTORS > 436 - .weak vector436, vector437, vector438, vector439 -#endif -#if PPC_NUM_VECTORS > 440 - .weak vector440, vector441, vector442, vector443 -#endif -#if PPC_NUM_VECTORS > 444 - .weak vector444, vector445, vector446, vector447 -#endif -#if PPC_NUM_VECTORS > 448 - .weak vector448, vector449, vector450, vector451 -#endif -#if PPC_NUM_VECTORS > 452 - .weak vector452, vector453, vector454, vector455 -#endif -#if PPC_NUM_VECTORS > 456 - .weak vector456, vector457, vector458, vector459 -#endif -#if PPC_NUM_VECTORS > 460 - .weak vector460, vector461, vector462, vector463 -#endif -#if PPC_NUM_VECTORS > 464 - .weak vector464, vector465, vector466, vector467 -#endif -#if PPC_NUM_VECTORS > 468 - .weak vector468, vector469, vector470, vector471 -#endif -#if PPC_NUM_VECTORS > 472 - .weak vector472, vector473, vector474, vector475 -#endif -#if PPC_NUM_VECTORS > 476 - .weak vector476, vector477, vector478, vector479 -#endif -#if PPC_NUM_VECTORS > 480 - .weak vector480, vector481, vector482, vector483 -#endif -#if PPC_NUM_VECTORS > 484 - .weak vector484, vector485, vector486, vector487 -#endif -#if PPC_NUM_VECTORS > 488 - .weak vector488, vector489, vector490, vector491 -#endif -#if PPC_NUM_VECTORS > 492 - .weak vector492, vector493, vector494, vector495 -#endif -#if PPC_NUM_VECTORS > 496 - .weak vector496, vector497, vector498, vector499 -#endif -#if PPC_NUM_VECTORS > 500 - .weak vector500, vector501, vector502, vector503 -#endif -#if PPC_NUM_VECTORS > 504 - .weak vector504, vector505, vector506, vector507 -#endif -#if PPC_NUM_VECTORS > 508 - .weak vector508, vector509, vector510, vector511 -#endif -#if PPC_NUM_VECTORS > 512 - .weak vector512, vector513, vector514, vector515 -#endif -#if PPC_NUM_VECTORS > 516 - .weak vector516, vector517, vector518, vector519 -#endif -#if PPC_NUM_VECTORS > 520 - .weak vector520, vector521, vector522, vector523 -#endif -#if PPC_NUM_VECTORS > 524 - .weak vector524, vector525, vector526, vector527 -#endif -#if PPC_NUM_VECTORS > 528 - .weak vector528, vector529, vector530, vector531 -#endif -#if PPC_NUM_VECTORS > 532 - .weak vector532, vector533, vector534, vector535 -#endif -#if PPC_NUM_VECTORS > 536 - .weak vector536, vector537, vector538, vector539 -#endif -#if PPC_NUM_VECTORS > 540 - .weak vector540, vector541, vector542, vector543 -#endif -#if PPC_NUM_VECTORS > 544 - .weak vector544, vector545, vector546, vector547 -#endif -#if PPC_NUM_VECTORS > 548 - .weak vector548, vector549, vector550, vector551 -#endif -#if PPC_NUM_VECTORS > 552 - .weak vector552, vector553, vector554, vector555 -#endif -#if PPC_NUM_VECTORS > 556 - .weak vector556, vector557, vector558, vector559 -#endif -#if PPC_NUM_VECTORS > 560 - .weak vector560, vector561, vector562, vector563 -#endif -#if PPC_NUM_VECTORS > 564 - .weak vector564, vector565, vector566, vector567 -#endif -#if PPC_NUM_VECTORS > 568 - .weak vector568, vector569, vector570, vector571 -#endif -#if PPC_NUM_VECTORS > 572 - .weak vector572, vector573, vector574, vector575 -#endif -#if PPC_NUM_VECTORS > 576 - .weak vector576, vector577, vector578, vector579 -#endif -#if PPC_NUM_VECTORS > 580 - .weak vector580, vector581, vector582, vector583 -#endif -#if PPC_NUM_VECTORS > 584 - .weak vector584, vector585, vector586, vector587 -#endif -#if PPC_NUM_VECTORS > 588 - .weak vector588, vector589, vector590, vector591 -#endif -#if PPC_NUM_VECTORS > 592 - .weak vector592, vector593, vector594, vector595 -#endif -#if PPC_NUM_VECTORS > 596 - .weak vector596, vector597, vector598, vector599 -#endif -#if PPC_NUM_VECTORS > 600 - .weak vector600, vector601, vector602, vector603 -#endif -#if PPC_NUM_VECTORS > 604 - .weak vector604, vector605, vector606, vector607 -#endif -#if PPC_NUM_VECTORS > 608 - .weak vector608, vector609, vector610, vector611 -#endif -#if PPC_NUM_VECTORS > 612 - .weak vector612, vector613, vector614, vector615 -#endif -#if PPC_NUM_VECTORS > 616 - .weak vector616, vector617, vector618, vector619 -#endif -#if PPC_NUM_VECTORS > 620 - .weak vector620, vector621, vector622, vector623 -#endif -#if PPC_NUM_VECTORS > 624 - .weak vector624, vector625, vector626, vector627 -#endif -#if PPC_NUM_VECTORS > 628 - .weak vector628, vector629, vector630, vector631 -#endif -#if PPC_NUM_VECTORS > 632 - .weak vector632, vector633, vector634, vector635 -#endif -#if PPC_NUM_VECTORS > 636 - .weak vector636, vector637, vector638, vector639 -#endif -#if PPC_NUM_VECTORS > 640 - .weak vector640, vector641, vector642, vector643 -#endif -#if PPC_NUM_VECTORS > 644 - .weak vector644, vector645, vector646, vector647 -#endif -#if PPC_NUM_VECTORS > 648 - .weak vector648, vector649, vector650, vector651 -#endif -#if PPC_NUM_VECTORS > 652 - .weak vector652, vector653, vector654, vector655 -#endif -#if PPC_NUM_VECTORS > 656 - .weak vector656, vector657, vector658, vector659 -#endif -#if PPC_NUM_VECTORS > 660 - .weak vector660, vector661, vector662, vector663 -#endif -#if PPC_NUM_VECTORS > 664 - .weak vector664, vector665, vector666, vector667 -#endif -#if PPC_NUM_VECTORS > 668 - .weak vector668, vector669, vector670, vector671 -#endif -#if PPC_NUM_VECTORS > 672 - .weak vector672, vector673, vector674, vector675 -#endif -#if PPC_NUM_VECTORS > 676 - .weak vector676, vector677, vector678, vector679 -#endif -#if PPC_NUM_VECTORS > 680 - .weak vector680, vector681, vector682, vector683 -#endif -#if PPC_NUM_VECTORS > 684 - .weak vector684, vector685, vector686, vector687 -#endif -#if PPC_NUM_VECTORS > 688 - .weak vector688, vector689, vector690, vector691 -#endif -#if PPC_NUM_VECTORS > 692 - .weak vector692, vector693, vector694, vector695 -#endif -#if PPC_NUM_VECTORS > 696 - .weak vector696, vector697, vector698, vector699 -#endif -#if PPC_NUM_VECTORS > 700 - .weak vector700, vector701, vector702, vector703 -#endif -#if PPC_NUM_VECTORS > 704 - .weak vector704, vector705, vector706, vector707 -#endif -#if PPC_NUM_VECTORS > 708 - .weak vector708, vector709, vector710, vector711 -#endif -#if PPC_NUM_VECTORS > 712 - .weak vector712, vector713, vector714, vector715 -#endif -#if PPC_NUM_VECTORS > 716 - .weak vector716, vector717, vector718, vector719 -#endif -#if PPC_NUM_VECTORS > 720 - .weak vector720, vector721, vector722, vector723 -#endif -#if PPC_NUM_VECTORS > 724 - .weak vector724, vector725, vector726, vector727 -#endif -#if PPC_NUM_VECTORS > 728 - .weak vector728, vector729, vector730, vector731 -#endif -#if PPC_NUM_VECTORS > 732 - .weak vector732, vector733, vector734, vector735 -#endif -#if PPC_NUM_VECTORS > 736 - .weak vector736, vector737, vector738, vector739 -#endif -#if PPC_NUM_VECTORS > 740 - .weak vector740, vector741, vector742, vector743 -#endif -#if PPC_NUM_VECTORS > 744 - .weak vector744, vector745, vector746, vector747 -#endif -#if PPC_NUM_VECTORS > 748 - .weak vector748, vector749, vector750, vector751 -#endif -#if PPC_NUM_VECTORS > 752 - .weak vector752, vector753, vector754, vector755 -#endif -#if PPC_NUM_VECTORS > 756 - .weak vector756, vector757, vector758, vector759 -#endif -#if PPC_NUM_VECTORS > 760 - .weak vector760, vector761, vector762, vector763 -#endif -#if PPC_NUM_VECTORS > 764 - .weak vector764, vector765, vector766, vector767 -#endif -#if PPC_NUM_VECTORS > 768 - .weak vector768, vector769, vector770, vector771 -#endif -#if PPC_NUM_VECTORS > 772 - .weak vector772, vector773, vector774, vector775 -#endif -#if PPC_NUM_VECTORS > 776 - .weak vector776, vector777, vector778, vector779 -#endif -#if PPC_NUM_VECTORS > 780 - .weak vector780, vector781, vector782, vector783 -#endif -#if PPC_NUM_VECTORS > 784 - .weak vector784, vector785, vector786, vector787 -#endif -#if PPC_NUM_VECTORS > 788 - .weak vector788, vector789, vector790, vector791 -#endif -#if PPC_NUM_VECTORS > 792 - .weak vector792, vector793, vector794, vector795 -#endif -#if PPC_NUM_VECTORS > 796 - .weak vector796, vector797, vector798, vector799 -#endif -#if PPC_NUM_VECTORS > 800 - .weak vector800, vector801, vector802, vector803 -#endif -#if PPC_NUM_VECTORS > 804 - .weak vector804, vector805, vector806, vector807 -#endif -#if PPC_NUM_VECTORS > 808 - .weak vector808, vector809, vector810, vector811 -#endif -#if PPC_NUM_VECTORS > 812 - .weak vector812, vector813, vector814, vector815 -#endif -#if PPC_NUM_VECTORS > 816 - .weak vector816, vector817, vector818, vector819 -#endif -#if PPC_NUM_VECTORS > 820 - .weak vector820, vector821, vector822, vector823 -#endif -#if PPC_NUM_VECTORS > 824 - .weak vector824, vector825, vector826, vector827 -#endif -#if PPC_NUM_VECTORS > 828 - .weak vector828, vector829, vector830, vector831 -#endif -#if PPC_NUM_VECTORS > 832 - .weak vector832, vector833, vector834, vector835 -#endif -#if PPC_NUM_VECTORS > 836 - .weak vector836, vector837, vector838, vector839 -#endif -#if PPC_NUM_VECTORS > 840 - .weak vector840, vector841, vector842, vector843 -#endif -#if PPC_NUM_VECTORS > 844 - .weak vector844, vector845, vector846, vector847 -#endif -#if PPC_NUM_VECTORS > 848 - .weak vector848, vector849, vector850, vector851 -#endif -#if PPC_NUM_VECTORS > 852 - .weak vector852, vector853, vector854, vector855 -#endif -#if PPC_NUM_VECTORS > 856 - .weak vector856, vector857, vector858, vector859 -#endif -#if PPC_NUM_VECTORS > 860 - .weak vector860, vector861, vector862, vector863 -#endif -#if PPC_NUM_VECTORS > 864 - .weak vector864, vector865, vector866, vector867 -#endif -#if PPC_NUM_VECTORS > 868 - .weak vector868, vector869, vector870, vector871 -#endif -#if PPC_NUM_VECTORS > 872 - .weak vector872, vector873, vector874, vector875 -#endif -#if PPC_NUM_VECTORS > 876 - .weak vector876, vector877, vector878, vector879 -#endif -#if PPC_NUM_VECTORS > 880 - .weak vector880, vector881, vector882, vector883 -#endif -#if PPC_NUM_VECTORS > 884 - .weak vector884, vector885, vector886, vector887 -#endif -#if PPC_NUM_VECTORS > 888 - .weak vector888, vector889, vector890, vector891 -#endif -#if PPC_NUM_VECTORS > 892 - .weak vector892, vector893, vector894, vector895 -#endif -#if PPC_NUM_VECTORS > 896 - .weak vector896, vector897, vector898, vector899 -#endif -#if PPC_NUM_VECTORS > 900 - .weak vector900, vector901, vector902, vector903 -#endif -#if PPC_NUM_VECTORS > 904 - .weak vector904, vector905, vector906, vector907 -#endif -#if PPC_NUM_VECTORS > 908 - .weak vector908, vector909, vector910, vector911 -#endif -#if PPC_NUM_VECTORS > 912 - .weak vector912, vector913, vector914, vector915 -#endif -#if PPC_NUM_VECTORS > 916 - .weak vector916, vector917, vector918, vector919 -#endif -#if PPC_NUM_VECTORS > 920 - .weak vector920, vector921, vector922, vector923 -#endif -#if PPC_NUM_VECTORS > 924 - .weak vector924, vector925, vector926, vector927 -#endif -#if PPC_NUM_VECTORS > 928 - .weak vector928, vector929, vector930, vector931 -#endif -#if PPC_NUM_VECTORS > 932 - .weak vector932, vector933, vector934, vector935 -#endif -#if PPC_NUM_VECTORS > 936 - .weak vector936, vector937, vector938, vector939 -#endif -#if PPC_NUM_VECTORS > 940 - .weak vector940, vector941, vector942, vector943 -#endif -#if PPC_NUM_VECTORS > 944 - .weak vector944, vector945, vector946, vector947 -#endif -#if PPC_NUM_VECTORS > 948 - .weak vector948, vector949, vector950, vector951 -#endif -#if PPC_NUM_VECTORS > 952 - .weak vector952, vector953, vector954, vector955 -#endif -#if PPC_NUM_VECTORS > 956 - .weak vector956, vector957, vector958, vector959 -#endif -#if PPC_NUM_VECTORS > 960 - .weak vector960, vector961, vector962, vector963 -#endif -#if PPC_NUM_VECTORS > 964 - .weak vector964, vector965, vector966, vector967 -#endif -#if PPC_NUM_VECTORS > 968 - .weak vector968, vector969, vector970, vector971 -#endif -#if PPC_NUM_VECTORS > 972 - .weak vector972, vector973, vector974, vector975 -#endif -#if PPC_NUM_VECTORS > 976 - .weak vector976, vector977, vector978, vector979 -#endif -#if PPC_NUM_VECTORS > 980 - .weak vector980, vector981, vector982, vector983 -#endif -#if PPC_NUM_VECTORS > 984 - .weak vector984, vector985, vector986, vector987 -#endif -#if PPC_NUM_VECTORS > 988 - .weak vector988, vector989, vector990, vector991 -#endif -#if PPC_NUM_VECTORS > 992 - .weak vector992, vector993, vector994, vector995 -#endif -#if PPC_NUM_VECTORS > 996 - .weak vector996, vector997, vector998, vector999 -#endif -#if PPC_NUM_VECTORS > 1000 - .weak vector1000, vector1001, vector1002, vector1003 -#endif -#if PPC_NUM_VECTORS > 1004 - .weak vector1004, vector1005, vector1006, vector1007 -#endif -#if PPC_NUM_VECTORS > 1008 - .weak vector1008, vector1009, vector1010, vector1011 -#endif -#if PPC_NUM_VECTORS > 1012 - .weak vector1012, vector1013, vector1014, vector1015 -#endif -#if PPC_NUM_VECTORS > 1016 - .weak vector1016, vector1017, vector1018, vector1019 -#endif -#if PPC_NUM_VECTORS > 1020 - .weak vector1020, vector1021, vector1022, vector1023 -#endif - -vector0: -vector1: -vector2: -vector3: -vector4: -vector5: -vector6: -vector7: -vector8: -vector9: -vector10: -vector11: -vector12: -vector13: -vector14: -vector15: -vector16: -vector17: -vector18: -vector19: -vector20: -vector21: -vector22: -vector23: -vector24: -vector25: -vector26: -vector27: -vector28: -vector29: -vector30: -vector31: -vector32: -vector33: -vector34: -vector35: -vector36: -vector37: -vector38: -vector39: -vector40: -vector41: -vector42: -vector43: -vector44: -vector45: -vector46: -vector47: -vector48: -vector49: -vector50: -vector51: -vector52: -vector53: -vector54: -vector55: -vector56: -vector57: -vector58: -vector59: -vector60: -vector61: -vector62: -vector63: -vector64: -vector65: -vector66: -vector67: -vector68: -vector69: -vector70: -vector71: -vector72: -vector73: -vector74: -vector75: -vector76: -vector77: -vector78: -vector79: -vector80: -vector81: -vector82: -vector83: -vector84: -vector85: -vector86: -vector87: -vector88: -vector89: -vector90: -vector91: -vector92: -vector93: -vector94: -vector95: -vector96: -vector97: -vector98: -vector99: -vector100: -vector101: -vector102: -vector103: -vector104: -vector105: -vector106: -vector107: -vector108: -vector109: -vector110: -vector111: -vector112: -vector113: -vector114: -vector115: -vector116: -vector117: -vector118: -vector119: -vector120: -vector121: -vector122: -vector123: -vector124: -vector125: -vector126: -vector127: -vector128: -vector129: -vector130: -vector131: -vector132: -vector133: -vector134: -vector135: -vector136: -vector137: -vector138: -vector139: -vector140: -vector141: -vector142: -vector143: -vector144: -vector145: -vector146: -vector147: -vector148: -vector149: -vector150: -vector151: -vector152: -vector153: -vector154: -vector155: -vector156: -vector157: -vector158: -vector159: -vector160: -vector161: -vector162: -vector163: -vector164: -vector165: -vector166: -vector167: -vector168: -vector169: -vector170: -vector171: -vector172: -vector173: -vector174: -vector175: -vector176: -vector177: -vector178: -vector179: -vector180: -vector181: -vector182: -vector183: -vector184: -vector185: -vector186: -vector187: -vector188: -vector189: -vector190: -vector191: -vector192: -vector193: -vector194: -vector195: -vector196: -vector197: -vector198: -vector199: -vector200: -vector201: -vector202: -vector203: -vector204: -vector205: -vector206: -vector207: -vector208: -vector209: -vector210: -vector211: -vector212: -vector213: -vector214: -vector215: -vector216: -vector217: -vector218: -vector219: -vector220: -vector221: -vector222: -vector223: -vector224: -vector225: -vector226: -vector227: -vector228: -vector229: -vector230: -vector231: -vector232: -vector233: -vector234: -vector235: -vector236: -vector237: -vector238: -vector239: -vector240: -vector241: -vector242: -vector243: -vector244: -vector245: -vector246: -vector247: -vector248: -vector249: -vector250: -vector251: -vector252: -vector253: -vector254: -vector255: -vector256: -vector257: -vector258: -vector259: -vector260: -vector261: -vector262: -vector263: -vector264: -vector265: -vector266: -vector267: -vector268: -vector269: -vector270: -vector271: -vector272: -vector273: -vector274: -vector275: -vector276: -vector277: -vector278: -vector279: -vector280: -vector281: -vector282: -vector283: -vector284: -vector285: -vector286: -vector287: -vector288: -vector289: -vector290: -vector291: -vector292: -vector293: -vector294: -vector295: -vector296: -vector297: -vector298: -vector299: -vector300: -vector301: -vector302: -vector303: -vector304: -vector305: -vector306: -vector307: -vector308: -vector309: -vector310: -vector311: -vector312: -vector313: -vector314: -vector315: -vector316: -vector317: -vector318: -vector319: -vector320: -vector321: -vector322: -vector323: -vector324: -vector325: -vector326: -vector327: -vector328: -vector329: -vector330: -vector331: -vector332: -vector333: -vector334: -vector335: -vector336: -vector337: -vector338: -vector339: -vector340: -vector341: -vector342: -vector343: -vector344: -vector345: -vector346: -vector347: -vector348: -vector349: -vector350: -vector351: -vector352: -vector353: -vector354: -vector355: -vector356: -vector357: -vector358: -vector359: -vector360: -vector361: -vector362: -vector363: -vector364: -vector365: -vector366: -vector367: -vector368: -vector369: -vector370: -vector371: -vector372: -vector373: -vector374: -vector375: -vector376: -vector377: -vector378: -vector379: -vector380: -vector381: -vector382: -vector383: -vector384: -vector385: -vector386: -vector387: -vector388: -vector389: -vector390: -vector391: -vector392: -vector393: -vector394: -vector395: -vector396: -vector397: -vector398: -vector399: -vector400: -vector401: -vector402: -vector403: -vector404: -vector405: -vector406: -vector407: -vector408: -vector409: -vector410: -vector411: -vector412: -vector413: -vector414: -vector415: -vector416: -vector417: -vector418: -vector419: -vector420: -vector421: -vector422: -vector423: -vector424: -vector425: -vector426: -vector427: -vector428: -vector429: -vector430: -vector431: -vector432: -vector433: -vector434: -vector435: -vector436: -vector437: -vector438: -vector439: -vector440: -vector441: -vector442: -vector443: -vector444: -vector445: -vector446: -vector447: -vector448: -vector449: -vector450: -vector451: -vector452: -vector453: -vector454: -vector455: -vector456: -vector457: -vector458: -vector459: -vector460: -vector461: -vector462: -vector463: -vector464: -vector465: -vector466: -vector467: -vector468: -vector469: -vector470: -vector471: -vector472: -vector473: -vector474: -vector475: -vector476: -vector477: -vector478: -vector479: -vector480: -vector481: -vector482: -vector483: -vector484: -vector485: -vector486: -vector487: -vector488: -vector489: -vector490: -vector491: -vector492: -vector493: -vector494: -vector495: -vector496: -vector497: -vector498: -vector499: -vector500: -vector501: -vector502: -vector503: -vector504: -vector505: -vector506: -vector507: -vector508: -vector509: -vector510: -vector511: -vector512: -vector513: -vector514: -vector515: -vector516: -vector517: -vector518: -vector519: -vector520: -vector521: -vector522: -vector523: -vector524: -vector525: -vector526: -vector527: -vector528: -vector529: -vector530: -vector531: -vector532: -vector533: -vector534: -vector535: -vector536: -vector537: -vector538: -vector539: -vector540: -vector541: -vector542: -vector543: -vector544: -vector545: -vector546: -vector547: -vector548: -vector549: -vector550: -vector551: -vector552: -vector553: -vector554: -vector555: -vector556: -vector557: -vector558: -vector559: -vector560: -vector561: -vector562: -vector563: -vector564: -vector565: -vector566: -vector567: -vector568: -vector569: -vector570: -vector571: -vector572: -vector573: -vector574: -vector575: -vector576: -vector577: -vector578: -vector579: -vector580: -vector581: -vector582: -vector583: -vector584: -vector585: -vector586: -vector587: -vector588: -vector589: -vector590: -vector591: -vector592: -vector593: -vector594: -vector595: -vector596: -vector597: -vector598: -vector599: -vector600: -vector601: -vector602: -vector603: -vector604: -vector605: -vector606: -vector607: -vector608: -vector609: -vector610: -vector611: -vector612: -vector613: -vector614: -vector615: -vector616: -vector617: -vector618: -vector619: -vector620: -vector621: -vector622: -vector623: -vector624: -vector625: -vector626: -vector627: -vector628: -vector629: -vector630: -vector631: -vector632: -vector633: -vector634: -vector635: -vector636: -vector637: -vector638: -vector639: -vector640: -vector641: -vector642: -vector643: -vector644: -vector645: -vector646: -vector647: -vector648: -vector649: -vector650: -vector651: -vector652: -vector653: -vector654: -vector655: -vector656: -vector657: -vector658: -vector659: -vector660: -vector661: -vector662: -vector663: -vector664: -vector665: -vector666: -vector667: -vector668: -vector669: -vector670: -vector671: -vector672: -vector673: -vector674: -vector675: -vector676: -vector677: -vector678: -vector679: -vector680: -vector681: -vector682: -vector683: -vector684: -vector685: -vector686: -vector687: -vector688: -vector689: -vector690: -vector691: -vector692: -vector693: -vector694: -vector695: -vector696: -vector697: -vector698: -vector699: -vector700: -vector701: -vector702: -vector703: -vector704: -vector705: -vector706: -vector707: -vector708: -vector709: -vector710: -vector711: -vector712: -vector713: -vector714: -vector715: -vector716: -vector717: -vector718: -vector719: -vector720: -vector721: -vector722: -vector723: -vector724: -vector725: -vector726: -vector727: -vector728: -vector729: -vector730: -vector731: -vector732: -vector733: -vector734: -vector735: -vector736: -vector737: -vector738: -vector739: -vector740: -vector741: -vector742: -vector743: -vector744: -vector745: -vector746: -vector747: -vector748: -vector749: -vector750: -vector751: -vector752: -vector753: -vector754: -vector755: -vector756: -vector757: -vector758: -vector759: -vector760: -vector761: -vector762: -vector763: -vector764: -vector765: -vector766: -vector767: -vector768: -vector769: -vector770: -vector771: -vector772: -vector773: -vector774: -vector775: -vector776: -vector777: -vector778: -vector779: -vector780: -vector781: -vector782: -vector783: -vector784: -vector785: -vector786: -vector787: -vector788: -vector789: -vector790: -vector791: -vector792: -vector793: -vector794: -vector795: -vector796: -vector797: -vector798: -vector799: -vector800: -vector801: -vector802: -vector803: -vector804: -vector805: -vector806: -vector807: -vector808: -vector809: -vector810: -vector811: -vector812: -vector813: -vector814: -vector815: -vector816: -vector817: -vector818: -vector819: -vector820: -vector821: -vector822: -vector823: -vector824: -vector825: -vector826: -vector827: -vector828: -vector829: -vector830: -vector831: -vector832: -vector833: -vector834: -vector835: -vector836: -vector837: -vector838: -vector839: -vector840: -vector841: -vector842: -vector843: -vector844: -vector845: -vector846: -vector847: -vector848: -vector849: -vector850: -vector851: -vector852: -vector853: -vector854: -vector855: -vector856: -vector857: -vector858: -vector859: -vector860: -vector861: -vector862: -vector863: -vector864: -vector865: -vector866: -vector867: -vector868: -vector869: -vector870: -vector871: -vector872: -vector873: -vector874: -vector875: -vector876: -vector877: -vector878: -vector879: -vector880: -vector881: -vector882: -vector883: -vector884: -vector885: -vector886: -vector887: -vector888: -vector889: -vector890: -vector891: -vector892: -vector893: -vector894: -vector895: -vector896: -vector897: -vector898: -vector899: -vector900: -vector901: -vector902: -vector903: -vector904: -vector905: -vector906: -vector907: -vector908: -vector909: -vector910: -vector911: -vector912: -vector913: -vector914: -vector915: -vector916: -vector917: -vector918: -vector919: -vector920: -vector921: -vector922: -vector923: -vector924: -vector925: -vector926: -vector927: -vector928: -vector929: -vector930: -vector931: -vector932: -vector933: -vector934: -vector935: -vector936: -vector937: -vector938: -vector939: -vector940: -vector941: -vector942: -vector943: -vector944: -vector945: -vector946: -vector947: -vector948: -vector949: -vector950: -vector951: -vector952: -vector953: -vector954: -vector955: -vector956: -vector957: -vector958: -vector959: -vector960: -vector961: -vector962: -vector963: -vector964: -vector965: -vector966: -vector967: -vector968: -vector969: -vector970: -vector971: -vector972: -vector973: -vector974: -vector975: -vector976: -vector977: -vector978: -vector979: -vector980: -vector981: -vector982: -vector983: -vector984: -vector985: -vector986: -vector987: -vector988: -vector989: -vector990: -vector991: -vector992: -vector993: -vector994: -vector995: -vector996: -vector997: -vector998: -vector999: -vector1000: -vector1001: -vector1002: -vector1003: -vector1004: -vector1005: -vector1006: -vector1007: -vector1008: -vector1009: -vector1010: -vector1011: -vector1012: -vector1013: -vector1014: -vector1015: -vector1016: -vector1017: -vector1018: -vector1019: -vector1020: -vector1021: -vector1022: -vector1023: - - .global _unhandled_irq -_unhandled_irq: - se_b _unhandled_irq - -#endif /* !defined(__DOXYGEN__) */ - -/** @} */ diff --git a/os/common/ports/e200/compilers/CW/vectors.h b/os/common/ports/e200/compilers/CW/vectors.h deleted file mode 100644 index b07589d9c..000000000 --- a/os/common/ports/e200/compilers/CW/vectors.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file vectors.h - * @brief ISR vector module header. - * - * @addtogroup PPC_CW_CORE - * @{ - */ - -#ifndef _VECTORS_H_ -#define _VECTORS_H_ - -#include "ppcparams.h" - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/* The following code is not processed when the file is included from an - asm module.*/ -#if !defined(_FROM_ASM_) - -#if !defined(__DOXYGEN__) -extern uint32_t _vectors[PPC_NUM_VECTORS]; -#endif - -#ifdef __cplusplus -extern "C" { -#endif - void _unhandled_irq(void); -#ifdef __cplusplus -} -#endif - -#endif /* !defined(_FROM_ASM_) */ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _VECTORS_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/compilers/CW/vectors.s b/os/common/ports/e200/compilers/CW/vectors.s deleted file mode 100644 index 00e8c1dfe..000000000 --- a/os/common/ports/e200/compilers/CW/vectors.s +++ /dev/null @@ -1,1580 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file vectors.s - * @brief SPC56x vectors table. - * - * @addtogroup PPC_CW_CORE - * @{ - */ - -#define _FROM_ASM_ -#include "ppcparams.h" - -#if defined(VECTORS_RENAMING) -#include "isrs.h" -#endif - -#if !defined(__DOXYGEN__) - - .global vector0, vector1, vector2, vector3 -#if PPC_NUM_VECTORS > 4 - .global vector4, vector5, vector6, vector7 -#endif -#if PPC_NUM_VECTORS > 8 - .global vector8, vector9, vector10, vector11 -#endif -#if PPC_NUM_VECTORS > 12 - .global vector12, vector13, vector14, vector15 -#endif -#if PPC_NUM_VECTORS > 16 - .global vector16, vector17, vector18, vector19 -#endif -#if PPC_NUM_VECTORS > 20 - .global vector20, vector21, vector22, vector23 -#endif -#if PPC_NUM_VECTORS > 24 - .global vector24, vector25, vector26, vector27 -#endif -#if PPC_NUM_VECTORS > 28 - .global vector28, vector29, vector30, vector31 -#endif -#if PPC_NUM_VECTORS > 32 - .global vector32, vector33, vector34, vector35 -#endif -#if PPC_NUM_VECTORS > 36 - .global vector36, vector37, vector38, vector39 -#endif -#if PPC_NUM_VECTORS > 40 - .global vector40, vector41, vector42, vector43 -#endif -#if PPC_NUM_VECTORS > 44 - .global vector44, vector45, vector46, vector47 -#endif -#if PPC_NUM_VECTORS > 48 - .global vector48, vector49, vector50, vector51 -#endif -#if PPC_NUM_VECTORS > 52 - .global vector52, vector53, vector54, vector55 -#endif -#if PPC_NUM_VECTORS > 56 - .global vector56, vector57, vector58, vector59 -#endif -#if PPC_NUM_VECTORS > 60 - .global vector60, vector61, vector62, vector63 -#endif -#if PPC_NUM_VECTORS > 64 - .global vector64, vector65, vector66, vector67 -#endif -#if PPC_NUM_VECTORS > 68 - .global vector68, vector69, vector70, vector71 -#endif -#if PPC_NUM_VECTORS > 72 - .global vector72, vector73, vector74, vector75 -#endif -#if PPC_NUM_VECTORS > 76 - .global vector76, vector77, vector78, vector79 -#endif -#if PPC_NUM_VECTORS > 80 - .global vector80, vector81, vector82, vector83 -#endif -#if PPC_NUM_VECTORS > 84 - .global vector84, vector85, vector86, vector87 -#endif -#if PPC_NUM_VECTORS > 88 - .global vector88, vector89, vector90, vector91 -#endif -#if PPC_NUM_VECTORS > 92 - .global vector92, vector93, vector94, vector95 -#endif -#if PPC_NUM_VECTORS > 96 - .global vector96, vector97, vector98, vector99 -#endif -#if PPC_NUM_VECTORS > 100 - .global vector100, vector101, vector102, vector103 -#endif -#if PPC_NUM_VECTORS > 104 - .global vector104, vector105, vector106, vector107 -#endif -#if PPC_NUM_VECTORS > 108 - .global vector108, vector109, vector110, vector111 -#endif -#if PPC_NUM_VECTORS > 112 - .global vector112, vector113, vector114, vector115 -#endif -#if PPC_NUM_VECTORS > 116 - .global vector116, vector117, vector118, vector119 -#endif -#if PPC_NUM_VECTORS > 120 - .global vector120, vector121, vector122, vector123 -#endif -#if PPC_NUM_VECTORS > 124 - .global vector124, vector125, vector126, vector127 -#endif -#if PPC_NUM_VECTORS > 128 - .global vector128, vector129, vector130, vector131 -#endif -#if PPC_NUM_VECTORS > 132 - .global vector132, vector133, vector134, vector135 -#endif -#if PPC_NUM_VECTORS > 136 - .global vector136, vector137, vector138, vector139 -#endif -#if PPC_NUM_VECTORS > 140 - .global vector140, vector141, vector142, vector143 -#endif -#if PPC_NUM_VECTORS > 144 - .global vector144, vector145, vector146, vector147 -#endif -#if PPC_NUM_VECTORS > 148 - .global vector148, vector149, vector150, vector151 -#endif -#if PPC_NUM_VECTORS > 152 - .global vector152, vector153, vector154, vector155 -#endif -#if PPC_NUM_VECTORS > 156 - .global vector156, vector157, vector158, vector159 -#endif -#if PPC_NUM_VECTORS > 160 - .global vector160, vector161, vector162, vector163 -#endif -#if PPC_NUM_VECTORS > 164 - .global vector164, vector165, vector166, vector167 -#endif -#if PPC_NUM_VECTORS > 168 - .global vector168, vector169, vector170, vector171 -#endif -#if PPC_NUM_VECTORS > 172 - .global vector172, vector173, vector174, vector175 -#endif -#if PPC_NUM_VECTORS > 176 - .global vector176, vector177, vector178, vector179 -#endif -#if PPC_NUM_VECTORS > 180 - .global vector180, vector181, vector182, vector183 -#endif -#if PPC_NUM_VECTORS > 184 - .global vector184, vector185, vector186, vector187 -#endif -#if PPC_NUM_VECTORS > 188 - .global vector188, vector189, vector190, vector191 -#endif -#if PPC_NUM_VECTORS > 192 - .global vector192, vector193, vector194, vector195 -#endif -#if PPC_NUM_VECTORS > 196 - .global vector196, vector197, vector198, vector199 -#endif -#if PPC_NUM_VECTORS > 200 - .global vector200, vector201, vector202, vector203 -#endif -#if PPC_NUM_VECTORS > 204 - .global vector204, vector205, vector206, vector207 -#endif -#if PPC_NUM_VECTORS > 208 - .global vector208, vector209, vector210, vector211 -#endif -#if PPC_NUM_VECTORS > 212 - .global vector212, vector213, vector214, vector215 -#endif -#if PPC_NUM_VECTORS > 216 - .global vector216, vector217, vector218, vector219 -#endif -#if PPC_NUM_VECTORS > 220 - .global vector220, vector221, vector222, vector223 -#endif -#if PPC_NUM_VECTORS > 224 - .global vector224, vector225, vector226, vector227 -#endif -#if PPC_NUM_VECTORS > 228 - .global vector228, vector229, vector230, vector231 -#endif -#if PPC_NUM_VECTORS > 232 - .global vector232, vector233, vector234, vector235 -#endif -#if PPC_NUM_VECTORS > 236 - .global vector236, vector237, vector238, vector239 -#endif -#if PPC_NUM_VECTORS > 240 - .global vector240, vector241, vector242, vector243 -#endif -#if PPC_NUM_VECTORS > 244 - .global vector244, vector245, vector246, vector247 -#endif -#if PPC_NUM_VECTORS > 248 - .global vector248, vector249, vector250, vector251 -#endif -#if PPC_NUM_VECTORS > 252 - .global vector252, vector253, vector254, vector255 -#endif -#if PPC_NUM_VECTORS > 256 - .global vector256, vector257, vector258, vector259 -#endif -#if PPC_NUM_VECTORS > 260 - .global vector260, vector261, vector262, vector263 -#endif -#if PPC_NUM_VECTORS > 264 - .global vector264, vector265, vector266, vector267 -#endif -#if PPC_NUM_VECTORS > 268 - .global vector268, vector269, vector270, vector271 -#endif -#if PPC_NUM_VECTORS > 272 - .global vector272, vector273, vector274, vector275 -#endif -#if PPC_NUM_VECTORS > 276 - .global vector276, vector277, vector278, vector279 -#endif -#if PPC_NUM_VECTORS > 280 - .global vector280, vector281, vector282, vector283 -#endif -#if PPC_NUM_VECTORS > 284 - .global vector284, vector285, vector286, vector287 -#endif -#if PPC_NUM_VECTORS > 288 - .global vector288, vector289, vector290, vector291 -#endif -#if PPC_NUM_VECTORS > 292 - .global vector292, vector293, vector294, vector295 -#endif -#if PPC_NUM_VECTORS > 296 - .global vector296, vector297, vector298, vector299 -#endif -#if PPC_NUM_VECTORS > 300 - .global vector300, vector301, vector302, vector303 -#endif -#if PPC_NUM_VECTORS > 304 - .global vector304, vector305, vector306, vector307 -#endif -#if PPC_NUM_VECTORS > 308 - .global vector308, vector309, vector310, vector311 -#endif -#if PPC_NUM_VECTORS > 312 - .global vector312, vector313, vector314, vector315 -#endif -#if PPC_NUM_VECTORS > 316 - .global vector316, vector317, vector318, vector319 -#endif -#if PPC_NUM_VECTORS > 320 - .global vector320, vector321, vector322, vector323 -#endif -#if PPC_NUM_VECTORS > 324 - .global vector324, vector325, vector326, vector327 -#endif -#if PPC_NUM_VECTORS > 328 - .global vector328, vector329, vector330, vector331 -#endif -#if PPC_NUM_VECTORS > 332 - .global vector332, vector333, vector334, vector335 -#endif -#if PPC_NUM_VECTORS > 336 - .global vector336, vector337, vector338, vector339 -#endif -#if PPC_NUM_VECTORS > 340 - .global vector340, vector341, vector342, vector343 -#endif -#if PPC_NUM_VECTORS > 344 - .global vector344, vector345, vector346, vector347 -#endif -#if PPC_NUM_VECTORS > 348 - .global vector348, vector349, vector350, vector351 -#endif -#if PPC_NUM_VECTORS > 352 - .global vector352, vector353, vector354, vector355 -#endif -#if PPC_NUM_VECTORS > 356 - .global vector356, vector357, vector358, vector359 -#endif -#if PPC_NUM_VECTORS > 360 - .global vector360, vector361, vector362, vector363 -#endif -#if PPC_NUM_VECTORS > 364 - .global vector364, vector365, vector366, vector367 -#endif -#if PPC_NUM_VECTORS > 368 - .global vector368, vector369, vector370, vector371 -#endif -#if PPC_NUM_VECTORS > 372 - .global vector372, vector373, vector374, vector375 -#endif -#if PPC_NUM_VECTORS > 376 - .global vector376, vector377, vector378, vector379 -#endif -#if PPC_NUM_VECTORS > 380 - .global vector380, vector381, vector382, vector383 -#endif -#if PPC_NUM_VECTORS > 384 - .global vector384, vector385, vector386, vector387 -#endif -#if PPC_NUM_VECTORS > 388 - .global vector388, vector389, vector390, vector391 -#endif -#if PPC_NUM_VECTORS > 392 - .global vector392, vector393, vector394, vector395 -#endif -#if PPC_NUM_VECTORS > 396 - .global vector396, vector397, vector398, vector399 -#endif -#if PPC_NUM_VECTORS > 400 - .global vector400, vector401, vector402, vector403 -#endif -#if PPC_NUM_VECTORS > 404 - .global vector404, vector405, vector406, vector407 -#endif -#if PPC_NUM_VECTORS > 408 - .global vector408, vector409, vector410, vector411 -#endif -#if PPC_NUM_VECTORS > 412 - .global vector412, vector413, vector414, vector415 -#endif -#if PPC_NUM_VECTORS > 416 - .global vector416, vector417, vector418, vector419 -#endif -#if PPC_NUM_VECTORS > 420 - .global vector420, vector421, vector422, vector423 -#endif -#if PPC_NUM_VECTORS > 424 - .global vector424, vector425, vector426, vector427 -#endif -#if PPC_NUM_VECTORS > 428 - .global vector428, vector429, vector430, vector431 -#endif -#if PPC_NUM_VECTORS > 432 - .global vector432, vector433, vector434, vector435 -#endif -#if PPC_NUM_VECTORS > 436 - .global vector436, vector437, vector438, vector439 -#endif -#if PPC_NUM_VECTORS > 440 - .global vector440, vector441, vector442, vector443 -#endif -#if PPC_NUM_VECTORS > 444 - .global vector444, vector445, vector446, vector447 -#endif -#if PPC_NUM_VECTORS > 448 - .global vector448, vector449, vector450, vector451 -#endif -#if PPC_NUM_VECTORS > 452 - .global vector452, vector453, vector454, vector455 -#endif -#if PPC_NUM_VECTORS > 456 - .global vector456, vector457, vector458, vector459 -#endif -#if PPC_NUM_VECTORS > 460 - .global vector460, vector461, vector462, vector463 -#endif -#if PPC_NUM_VECTORS > 464 - .global vector464, vector465, vector466, vector467 -#endif -#if PPC_NUM_VECTORS > 468 - .global vector468, vector469, vector470, vector471 -#endif -#if PPC_NUM_VECTORS > 472 - .global vector472, vector473, vector474, vector475 -#endif -#if PPC_NUM_VECTORS > 476 - .global vector476, vector477, vector478, vector479 -#endif -#if PPC_NUM_VECTORS > 480 - .global vector480, vector481, vector482, vector483 -#endif -#if PPC_NUM_VECTORS > 484 - .global vector484, vector485, vector486, vector487 -#endif -#if PPC_NUM_VECTORS > 488 - .global vector488, vector489, vector490, vector491 -#endif -#if PPC_NUM_VECTORS > 492 - .global vector492, vector493, vector494, vector495 -#endif -#if PPC_NUM_VECTORS > 496 - .global vector496, vector497, vector498, vector499 -#endif -#if PPC_NUM_VECTORS > 500 - .global vector500, vector501, vector502, vector503 -#endif -#if PPC_NUM_VECTORS > 504 - .global vector504, vector505, vector506, vector507 -#endif -#if PPC_NUM_VECTORS > 508 - .global vector508, vector509, vector510, vector511 -#endif -#if PPC_NUM_VECTORS > 512 - .global vector512, vector513, vector514, vector515 -#endif -#if PPC_NUM_VECTORS > 516 - .global vector516, vector517, vector518, vector519 -#endif -#if PPC_NUM_VECTORS > 520 - .global vector520, vector521, vector522, vector523 -#endif -#if PPC_NUM_VECTORS > 524 - .global vector524, vector525, vector526, vector527 -#endif -#if PPC_NUM_VECTORS > 528 - .global vector528, vector529, vector530, vector531 -#endif -#if PPC_NUM_VECTORS > 532 - .global vector532, vector533, vector534, vector535 -#endif -#if PPC_NUM_VECTORS > 536 - .global vector536, vector537, vector538, vector539 -#endif -#if PPC_NUM_VECTORS > 540 - .global vector540, vector541, vector542, vector543 -#endif -#if PPC_NUM_VECTORS > 544 - .global vector544, vector545, vector546, vector547 -#endif -#if PPC_NUM_VECTORS > 548 - .global vector548, vector549, vector550, vector551 -#endif -#if PPC_NUM_VECTORS > 552 - .global vector552, vector553, vector554, vector555 -#endif -#if PPC_NUM_VECTORS > 556 - .global vector556, vector557, vector558, vector559 -#endif -#if PPC_NUM_VECTORS > 560 - .global vector560, vector561, vector562, vector563 -#endif -#if PPC_NUM_VECTORS > 564 - .global vector564, vector565, vector566, vector567 -#endif -#if PPC_NUM_VECTORS > 568 - .global vector568, vector569, vector570, vector571 -#endif -#if PPC_NUM_VECTORS > 572 - .global vector572, vector573, vector574, vector575 -#endif -#if PPC_NUM_VECTORS > 576 - .global vector576, vector577, vector578, vector579 -#endif -#if PPC_NUM_VECTORS > 580 - .global vector580, vector581, vector582, vector583 -#endif -#if PPC_NUM_VECTORS > 584 - .global vector584, vector585, vector586, vector587 -#endif -#if PPC_NUM_VECTORS > 588 - .global vector588, vector589, vector590, vector591 -#endif -#if PPC_NUM_VECTORS > 592 - .global vector592, vector593, vector594, vector595 -#endif -#if PPC_NUM_VECTORS > 596 - .global vector596, vector597, vector598, vector599 -#endif -#if PPC_NUM_VECTORS > 600 - .global vector600, vector601, vector602, vector603 -#endif -#if PPC_NUM_VECTORS > 604 - .global vector604, vector605, vector606, vector607 -#endif -#if PPC_NUM_VECTORS > 608 - .global vector608, vector609, vector610, vector611 -#endif -#if PPC_NUM_VECTORS > 612 - .global vector612, vector613, vector614, vector615 -#endif -#if PPC_NUM_VECTORS > 616 - .global vector616, vector617, vector618, vector619 -#endif -#if PPC_NUM_VECTORS > 620 - .global vector620, vector621, vector622, vector623 -#endif -#if PPC_NUM_VECTORS > 624 - .global vector624, vector625, vector626, vector627 -#endif -#if PPC_NUM_VECTORS > 628 - .global vector628, vector629, vector630, vector631 -#endif -#if PPC_NUM_VECTORS > 632 - .global vector632, vector633, vector634, vector635 -#endif -#if PPC_NUM_VECTORS > 636 - .global vector636, vector637, vector638, vector639 -#endif -#if PPC_NUM_VECTORS > 640 - .global vector640, vector641, vector642, vector643 -#endif -#if PPC_NUM_VECTORS > 644 - .global vector644, vector645, vector646, vector647 -#endif -#if PPC_NUM_VECTORS > 648 - .global vector648, vector649, vector650, vector651 -#endif -#if PPC_NUM_VECTORS > 652 - .global vector652, vector653, vector654, vector655 -#endif -#if PPC_NUM_VECTORS > 656 - .global vector656, vector657, vector658, vector659 -#endif -#if PPC_NUM_VECTORS > 660 - .global vector660, vector661, vector662, vector663 -#endif -#if PPC_NUM_VECTORS > 664 - .global vector664, vector665, vector666, vector667 -#endif -#if PPC_NUM_VECTORS > 668 - .global vector668, vector669, vector670, vector671 -#endif -#if PPC_NUM_VECTORS > 672 - .global vector672, vector673, vector674, vector675 -#endif -#if PPC_NUM_VECTORS > 676 - .global vector676, vector677, vector678, vector679 -#endif -#if PPC_NUM_VECTORS > 680 - .global vector680, vector681, vector682, vector683 -#endif -#if PPC_NUM_VECTORS > 684 - .global vector684, vector685, vector686, vector687 -#endif -#if PPC_NUM_VECTORS > 688 - .global vector688, vector689, vector690, vector691 -#endif -#if PPC_NUM_VECTORS > 692 - .global vector692, vector693, vector694, vector695 -#endif -#if PPC_NUM_VECTORS > 696 - .global vector696, vector697, vector698, vector699 -#endif -#if PPC_NUM_VECTORS > 700 - .global vector700, vector701, vector702, vector703 -#endif -#if PPC_NUM_VECTORS > 704 - .global vector704, vector705, vector706, vector707 -#endif -#if PPC_NUM_VECTORS > 708 - .global vector708, vector709, vector710, vector711 -#endif -#if PPC_NUM_VECTORS > 712 - .global vector712, vector713, vector714, vector715 -#endif -#if PPC_NUM_VECTORS > 716 - .global vector716, vector717, vector718, vector719 -#endif -#if PPC_NUM_VECTORS > 720 - .global vector720, vector721, vector722, vector723 -#endif -#if PPC_NUM_VECTORS > 724 - .global vector724, vector725, vector726, vector727 -#endif -#if PPC_NUM_VECTORS > 728 - .global vector728, vector729, vector730, vector731 -#endif -#if PPC_NUM_VECTORS > 732 - .global vector732, vector733, vector734, vector735 -#endif -#if PPC_NUM_VECTORS > 736 - .global vector736, vector737, vector738, vector739 -#endif -#if PPC_NUM_VECTORS > 740 - .global vector740, vector741, vector742, vector743 -#endif -#if PPC_NUM_VECTORS > 744 - .global vector744, vector745, vector746, vector747 -#endif -#if PPC_NUM_VECTORS > 748 - .global vector748, vector749, vector750, vector751 -#endif -#if PPC_NUM_VECTORS > 752 - .global vector752, vector753, vector754, vector755 -#endif -#if PPC_NUM_VECTORS > 756 - .global vector756, vector757, vector758, vector759 -#endif -#if PPC_NUM_VECTORS > 760 - .global vector760, vector761, vector762, vector763 -#endif -#if PPC_NUM_VECTORS > 764 - .global vector764, vector765, vector766, vector767 -#endif -#if PPC_NUM_VECTORS > 768 - .global vector768, vector769, vector770, vector771 -#endif -#if PPC_NUM_VECTORS > 772 - .global vector772, vector773, vector774, vector775 -#endif -#if PPC_NUM_VECTORS > 776 - .global vector776, vector777, vector778, vector779 -#endif -#if PPC_NUM_VECTORS > 780 - .global vector780, vector781, vector782, vector783 -#endif -#if PPC_NUM_VECTORS > 784 - .global vector784, vector785, vector786, vector787 -#endif -#if PPC_NUM_VECTORS > 788 - .global vector788, vector789, vector790, vector791 -#endif -#if PPC_NUM_VECTORS > 792 - .global vector792, vector793, vector794, vector795 -#endif -#if PPC_NUM_VECTORS > 796 - .global vector796, vector797, vector798, vector799 -#endif -#if PPC_NUM_VECTORS > 800 - .global vector800, vector801, vector802, vector803 -#endif -#if PPC_NUM_VECTORS > 804 - .global vector804, vector805, vector806, vector807 -#endif -#if PPC_NUM_VECTORS > 808 - .global vector808, vector809, vector810, vector811 -#endif -#if PPC_NUM_VECTORS > 812 - .global vector812, vector813, vector814, vector815 -#endif -#if PPC_NUM_VECTORS > 816 - .global vector816, vector817, vector818, vector819 -#endif -#if PPC_NUM_VECTORS > 820 - .global vector820, vector821, vector822, vector823 -#endif -#if PPC_NUM_VECTORS > 824 - .global vector824, vector825, vector826, vector827 -#endif -#if PPC_NUM_VECTORS > 828 - .global vector828, vector829, vector830, vector831 -#endif -#if PPC_NUM_VECTORS > 832 - .global vector832, vector833, vector834, vector835 -#endif -#if PPC_NUM_VECTORS > 836 - .global vector836, vector837, vector838, vector839 -#endif -#if PPC_NUM_VECTORS > 840 - .global vector840, vector841, vector842, vector843 -#endif -#if PPC_NUM_VECTORS > 844 - .global vector844, vector845, vector846, vector847 -#endif -#if PPC_NUM_VECTORS > 848 - .global vector848, vector849, vector850, vector851 -#endif -#if PPC_NUM_VECTORS > 852 - .global vector852, vector853, vector854, vector855 -#endif -#if PPC_NUM_VECTORS > 856 - .global vector856, vector857, vector858, vector859 -#endif -#if PPC_NUM_VECTORS > 860 - .global vector860, vector861, vector862, vector863 -#endif -#if PPC_NUM_VECTORS > 864 - .global vector864, vector865, vector866, vector867 -#endif -#if PPC_NUM_VECTORS > 868 - .global vector868, vector869, vector870, vector871 -#endif -#if PPC_NUM_VECTORS > 872 - .global vector872, vector873, vector874, vector875 -#endif -#if PPC_NUM_VECTORS > 876 - .global vector876, vector877, vector878, vector879 -#endif -#if PPC_NUM_VECTORS > 880 - .global vector880, vector881, vector882, vector883 -#endif -#if PPC_NUM_VECTORS > 884 - .global vector884, vector885, vector886, vector887 -#endif -#if PPC_NUM_VECTORS > 888 - .global vector888, vector889, vector890, vector891 -#endif -#if PPC_NUM_VECTORS > 892 - .global vector892, vector893, vector894, vector895 -#endif -#if PPC_NUM_VECTORS > 896 - .global vector896, vector897, vector898, vector899 -#endif -#if PPC_NUM_VECTORS > 900 - .global vector900, vector901, vector902, vector903 -#endif -#if PPC_NUM_VECTORS > 904 - .global vector904, vector905, vector906, vector907 -#endif -#if PPC_NUM_VECTORS > 908 - .global vector908, vector909, vector910, vector911 -#endif -#if PPC_NUM_VECTORS > 912 - .global vector912, vector913, vector914, vector915 -#endif -#if PPC_NUM_VECTORS > 916 - .global vector916, vector917, vector918, vector919 -#endif -#if PPC_NUM_VECTORS > 920 - .global vector920, vector921, vector922, vector923 -#endif -#if PPC_NUM_VECTORS > 924 - .global vector924, vector925, vector926, vector927 -#endif -#if PPC_NUM_VECTORS > 928 - .global vector928, vector929, vector930, vector931 -#endif -#if PPC_NUM_VECTORS > 932 - .global vector932, vector933, vector934, vector935 -#endif -#if PPC_NUM_VECTORS > 936 - .global vector936, vector937, vector938, vector939 -#endif -#if PPC_NUM_VECTORS > 940 - .global vector940, vector941, vector942, vector943 -#endif -#if PPC_NUM_VECTORS > 944 - .global vector944, vector945, vector946, vector947 -#endif -#if PPC_NUM_VECTORS > 948 - .global vector948, vector949, vector950, vector951 -#endif -#if PPC_NUM_VECTORS > 952 - .global vector952, vector953, vector954, vector955 -#endif -#if PPC_NUM_VECTORS > 956 - .global vector956, vector957, vector958, vector959 -#endif -#if PPC_NUM_VECTORS > 960 - .global vector960, vector961, vector962, vector963 -#endif -#if PPC_NUM_VECTORS > 964 - .global vector964, vector965, vector966, vector967 -#endif -#if PPC_NUM_VECTORS > 968 - .global vector968, vector969, vector970, vector971 -#endif -#if PPC_NUM_VECTORS > 972 - .global vector972, vector973, vector974, vector975 -#endif -#if PPC_NUM_VECTORS > 976 - .global vector976, vector977, vector978, vector979 -#endif -#if PPC_NUM_VECTORS > 980 - .global vector980, vector981, vector982, vector983 -#endif -#if PPC_NUM_VECTORS > 984 - .global vector984, vector985, vector986, vector987 -#endif -#if PPC_NUM_VECTORS > 988 - .global vector988, vector989, vector990, vector991 -#endif -#if PPC_NUM_VECTORS > 992 - .global vector992, vector993, vector994, vector995 -#endif -#if PPC_NUM_VECTORS > 996 - .global vector996, vector997, vector998, vector999 -#endif -#if PPC_NUM_VECTORS > 1000 - .global vector1000, vector1001, vector1002, vector1003 -#endif -#if PPC_NUM_VECTORS > 1004 - .global vector1004, vector1005, vector1006, vector1007 -#endif -#if PPC_NUM_VECTORS > 1008 - .global vector1008, vector1009, vector1010, vector1011 -#endif -#if PPC_NUM_VECTORS > 1012 - .global vector1012, vector1013, vector1014, vector1015 -#endif -#if PPC_NUM_VECTORS > 1016 - .global vector1016, vector1017, vector1018, vector1019 -#endif -#if PPC_NUM_VECTORS > 1020 - .global vector1020, vector1021, vector1022, vector1023 -#endif - - /* Software vectors table. The vectors are accessed from the IVOR4 - handler only. In order to declare an interrupt handler just create - a function withe the same name of a vector, the symbol will - override the weak symbol declared here.*/ - .section .vectors - .globl _vectors -_vectors: - .long vector0, vector1, vector2, vector3 -#if PPC_NUM_VECTORS > 4 - .long vector4, vector5, vector6, vector7 -#endif -#if PPC_NUM_VECTORS > 8 - .long vector8, vector9, vector10, vector11 -#endif -#if PPC_NUM_VECTORS > 12 - .long vector12, vector13, vector14, vector15 -#endif -#if PPC_NUM_VECTORS > 16 - .long vector16, vector17, vector18, vector19 -#endif -#if PPC_NUM_VECTORS > 20 - .long vector20, vector21, vector22, vector23 -#endif -#if PPC_NUM_VECTORS > 24 - .long vector24, vector25, vector26, vector27 -#endif -#if PPC_NUM_VECTORS > 28 - .long vector28, vector29, vector30, vector31 -#endif -#if PPC_NUM_VECTORS > 32 - .long vector32, vector33, vector34, vector35 -#endif -#if PPC_NUM_VECTORS > 36 - .long vector36, vector37, vector38, vector39 -#endif -#if PPC_NUM_VECTORS > 40 - .long vector40, vector41, vector42, vector43 -#endif -#if PPC_NUM_VECTORS > 44 - .long vector44, vector45, vector46, vector47 -#endif -#if PPC_NUM_VECTORS > 48 - .long vector48, vector49, vector50, vector51 -#endif -#if PPC_NUM_VECTORS > 52 - .long vector52, vector53, vector54, vector55 -#endif -#if PPC_NUM_VECTORS > 56 - .long vector56, vector57, vector58, vector59 -#endif -#if PPC_NUM_VECTORS > 60 - .long vector60, vector61, vector62, vector63 -#endif -#if PPC_NUM_VECTORS > 64 - .long vector64, vector65, vector66, vector67 -#endif -#if PPC_NUM_VECTORS > 68 - .long vector68, vector69, vector70, vector71 -#endif -#if PPC_NUM_VECTORS > 72 - .long vector72, vector73, vector74, vector75 -#endif -#if PPC_NUM_VECTORS > 76 - .long vector76, vector77, vector78, vector79 -#endif -#if PPC_NUM_VECTORS > 80 - .long vector80, vector81, vector82, vector83 -#endif -#if PPC_NUM_VECTORS > 84 - .long vector84, vector85, vector86, vector87 -#endif -#if PPC_NUM_VECTORS > 88 - .long vector88, vector89, vector90, vector91 -#endif -#if PPC_NUM_VECTORS > 92 - .long vector92, vector93, vector94, vector95 -#endif -#if PPC_NUM_VECTORS > 96 - .long vector96, vector97, vector98, vector99 -#endif -#if PPC_NUM_VECTORS > 100 - .long vector100, vector101, vector102, vector103 -#endif -#if PPC_NUM_VECTORS > 104 - .long vector104, vector105, vector106, vector107 -#endif -#if PPC_NUM_VECTORS > 108 - .long vector108, vector109, vector110, vector111 -#endif -#if PPC_NUM_VECTORS > 112 - .long vector112, vector113, vector114, vector115 -#endif -#if PPC_NUM_VECTORS > 116 - .long vector116, vector117, vector118, vector119 -#endif -#if PPC_NUM_VECTORS > 120 - .long vector120, vector121, vector122, vector123 -#endif -#if PPC_NUM_VECTORS > 124 - .long vector124, vector125, vector126, vector127 -#endif -#if PPC_NUM_VECTORS > 128 - .long vector128, vector129, vector130, vector131 -#endif -#if PPC_NUM_VECTORS > 132 - .long vector132, vector133, vector134, vector135 -#endif -#if PPC_NUM_VECTORS > 136 - .long vector136, vector137, vector138, vector139 -#endif -#if PPC_NUM_VECTORS > 140 - .long vector140, vector141, vector142, vector143 -#endif -#if PPC_NUM_VECTORS > 144 - .long vector144, vector145, vector146, vector147 -#endif -#if PPC_NUM_VECTORS > 148 - .long vector148, vector149, vector150, vector151 -#endif -#if PPC_NUM_VECTORS > 152 - .long vector152, vector153, vector154, vector155 -#endif -#if PPC_NUM_VECTORS > 156 - .long vector156, vector157, vector158, vector159 -#endif -#if PPC_NUM_VECTORS > 160 - .long vector160, vector161, vector162, vector163 -#endif -#if PPC_NUM_VECTORS > 164 - .long vector164, vector165, vector166, vector167 -#endif -#if PPC_NUM_VECTORS > 168 - .long vector168, vector169, vector170, vector171 -#endif -#if PPC_NUM_VECTORS > 172 - .long vector172, vector173, vector174, vector175 -#endif -#if PPC_NUM_VECTORS > 176 - .long vector176, vector177, vector178, vector179 -#endif -#if PPC_NUM_VECTORS > 180 - .long vector180, vector181, vector182, vector183 -#endif -#if PPC_NUM_VECTORS > 184 - .long vector184, vector185, vector186, vector187 -#endif -#if PPC_NUM_VECTORS > 188 - .long vector188, vector189, vector190, vector191 -#endif -#if PPC_NUM_VECTORS > 192 - .long vector192, vector193, vector194, vector195 -#endif -#if PPC_NUM_VECTORS > 196 - .long vector196, vector197, vector198, vector199 -#endif -#if PPC_NUM_VECTORS > 200 - .long vector200, vector201, vector202, vector203 -#endif -#if PPC_NUM_VECTORS > 204 - .long vector204, vector205, vector206, vector207 -#endif -#if PPC_NUM_VECTORS > 208 - .long vector208, vector209, vector210, vector211 -#endif -#if PPC_NUM_VECTORS > 212 - .long vector212, vector213, vector214, vector215 -#endif -#if PPC_NUM_VECTORS > 216 - .long vector216, vector217, vector218, vector219 -#endif -#if PPC_NUM_VECTORS > 220 - .long vector220, vector221, vector222, vector223 -#endif -#if PPC_NUM_VECTORS > 224 - .long vector224, vector225, vector226, vector227 -#endif -#if PPC_NUM_VECTORS > 228 - .long vector228, vector229, vector230, vector231 -#endif -#if PPC_NUM_VECTORS > 232 - .long vector232, vector233, vector234, vector235 -#endif -#if PPC_NUM_VECTORS > 236 - .long vector236, vector237, vector238, vector239 -#endif -#if PPC_NUM_VECTORS > 240 - .long vector240, vector241, vector242, vector243 -#endif -#if PPC_NUM_VECTORS > 244 - .long vector244, vector245, vector246, vector247 -#endif -#if PPC_NUM_VECTORS > 248 - .long vector248, vector249, vector250, vector251 -#endif -#if PPC_NUM_VECTORS > 252 - .long vector252, vector253, vector254, vector255 -#endif -#if PPC_NUM_VECTORS > 256 - .long vector256, vector257, vector258, vector259 -#endif -#if PPC_NUM_VECTORS > 260 - .long vector260, vector261, vector262, vector263 -#endif -#if PPC_NUM_VECTORS > 264 - .long vector264, vector265, vector266, vector267 -#endif -#if PPC_NUM_VECTORS > 268 - .long vector268, vector269, vector270, vector271 -#endif -#if PPC_NUM_VECTORS > 272 - .long vector272, vector273, vector274, vector275 -#endif -#if PPC_NUM_VECTORS > 276 - .long vector276, vector277, vector278, vector279 -#endif -#if PPC_NUM_VECTORS > 280 - .long vector280, vector281, vector282, vector283 -#endif -#if PPC_NUM_VECTORS > 284 - .long vector284, vector285, vector286, vector287 -#endif -#if PPC_NUM_VECTORS > 288 - .long vector288, vector289, vector290, vector291 -#endif -#if PPC_NUM_VECTORS > 292 - .long vector292, vector293, vector294, vector295 -#endif -#if PPC_NUM_VECTORS > 296 - .long vector296, vector297, vector298, vector299 -#endif -#if PPC_NUM_VECTORS > 300 - .long vector300, vector301, vector302, vector303 -#endif -#if PPC_NUM_VECTORS > 304 - .long vector304, vector305, vector306, vector307 -#endif -#if PPC_NUM_VECTORS > 308 - .long vector308, vector309, vector310, vector311 -#endif -#if PPC_NUM_VECTORS > 312 - .long vector312, vector313, vector314, vector315 -#endif -#if PPC_NUM_VECTORS > 316 - .long vector316, vector317, vector318, vector319 -#endif -#if PPC_NUM_VECTORS > 320 - .long vector320, vector321, vector322, vector323 -#endif -#if PPC_NUM_VECTORS > 324 - .long vector324, vector325, vector326, vector327 -#endif -#if PPC_NUM_VECTORS > 328 - .long vector328, vector329, vector330, vector331 -#endif -#if PPC_NUM_VECTORS > 332 - .long vector332, vector333, vector334, vector335 -#endif -#if PPC_NUM_VECTORS > 336 - .long vector336, vector337, vector338, vector339 -#endif -#if PPC_NUM_VECTORS > 340 - .long vector340, vector341, vector342, vector343 -#endif -#if PPC_NUM_VECTORS > 344 - .long vector344, vector345, vector346, vector347 -#endif -#if PPC_NUM_VECTORS > 348 - .long vector348, vector349, vector350, vector351 -#endif -#if PPC_NUM_VECTORS > 352 - .long vector352, vector353, vector354, vector355 -#endif -#if PPC_NUM_VECTORS > 356 - .long vector356, vector357, vector358, vector359 -#endif -#if PPC_NUM_VECTORS > 360 - .long vector360, vector361, vector362, vector363 -#endif -#if PPC_NUM_VECTORS > 364 - .long vector364, vector365, vector366, vector367 -#endif -#if PPC_NUM_VECTORS > 368 - .long vector368, vector369, vector370, vector371 -#endif -#if PPC_NUM_VECTORS > 372 - .long vector372, vector373, vector374, vector375 -#endif -#if PPC_NUM_VECTORS > 376 - .long vector376, vector377, vector378, vector379 -#endif -#if PPC_NUM_VECTORS > 380 - .long vector380, vector381, vector382, vector383 -#endif -#if PPC_NUM_VECTORS > 384 - .long vector384, vector385, vector386, vector387 -#endif -#if PPC_NUM_VECTORS > 388 - .long vector388, vector389, vector390, vector391 -#endif -#if PPC_NUM_VECTORS > 392 - .long vector392, vector393, vector394, vector395 -#endif -#if PPC_NUM_VECTORS > 396 - .long vector396, vector397, vector398, vector399 -#endif -#if PPC_NUM_VECTORS > 400 - .long vector400, vector401, vector402, vector403 -#endif -#if PPC_NUM_VECTORS > 404 - .long vector404, vector405, vector406, vector407 -#endif -#if PPC_NUM_VECTORS > 408 - .long vector408, vector409, vector410, vector411 -#endif -#if PPC_NUM_VECTORS > 412 - .long vector412, vector413, vector414, vector415 -#endif -#if PPC_NUM_VECTORS > 416 - .long vector416, vector417, vector418, vector419 -#endif -#if PPC_NUM_VECTORS > 420 - .long vector420, vector421, vector422, vector423 -#endif -#if PPC_NUM_VECTORS > 424 - .long vector424, vector425, vector426, vector427 -#endif -#if PPC_NUM_VECTORS > 428 - .long vector428, vector429, vector430, vector431 -#endif -#if PPC_NUM_VECTORS > 432 - .long vector432, vector433, vector434, vector435 -#endif -#if PPC_NUM_VECTORS > 436 - .long vector436, vector437, vector438, vector439 -#endif -#if PPC_NUM_VECTORS > 440 - .long vector440, vector441, vector442, vector443 -#endif -#if PPC_NUM_VECTORS > 444 - .long vector444, vector445, vector446, vector447 -#endif -#if PPC_NUM_VECTORS > 448 - .long vector448, vector449, vector450, vector451 -#endif -#if PPC_NUM_VECTORS > 452 - .long vector452, vector453, vector454, vector455 -#endif -#if PPC_NUM_VECTORS > 456 - .long vector456, vector457, vector458, vector459 -#endif -#if PPC_NUM_VECTORS > 460 - .long vector460, vector461, vector462, vector463 -#endif -#if PPC_NUM_VECTORS > 464 - .long vector464, vector465, vector466, vector467 -#endif -#if PPC_NUM_VECTORS > 468 - .long vector468, vector469, vector470, vector471 -#endif -#if PPC_NUM_VECTORS > 472 - .long vector472, vector473, vector474, vector475 -#endif -#if PPC_NUM_VECTORS > 476 - .long vector476, vector477, vector478, vector479 -#endif -#if PPC_NUM_VECTORS > 480 - .long vector480, vector481, vector482, vector483 -#endif -#if PPC_NUM_VECTORS > 484 - .long vector484, vector485, vector486, vector487 -#endif -#if PPC_NUM_VECTORS > 488 - .long vector488, vector489, vector490, vector491 -#endif -#if PPC_NUM_VECTORS > 492 - .long vector492, vector493, vector494, vector495 -#endif -#if PPC_NUM_VECTORS > 496 - .long vector496, vector497, vector498, vector499 -#endif -#if PPC_NUM_VECTORS > 500 - .long vector500, vector501, vector502, vector503 -#endif -#if PPC_NUM_VECTORS > 504 - .long vector504, vector505, vector506, vector507 -#endif -#if PPC_NUM_VECTORS > 508 - .long vector508, vector509, vector510, vector511 -#endif -#if PPC_NUM_VECTORS > 512 - .long vector512, vector513, vector514, vector515 -#endif -#if PPC_NUM_VECTORS > 516 - .long vector516, vector517, vector518, vector519 -#endif -#if PPC_NUM_VECTORS > 520 - .long vector520, vector521, vector522, vector523 -#endif -#if PPC_NUM_VECTORS > 524 - .long vector524, vector525, vector526, vector527 -#endif -#if PPC_NUM_VECTORS > 528 - .long vector528, vector529, vector530, vector531 -#endif -#if PPC_NUM_VECTORS > 532 - .long vector532, vector533, vector534, vector535 -#endif -#if PPC_NUM_VECTORS > 536 - .long vector536, vector537, vector538, vector539 -#endif -#if PPC_NUM_VECTORS > 540 - .long vector540, vector541, vector542, vector543 -#endif -#if PPC_NUM_VECTORS > 544 - .long vector544, vector545, vector546, vector547 -#endif -#if PPC_NUM_VECTORS > 548 - .long vector548, vector549, vector550, vector551 -#endif -#if PPC_NUM_VECTORS > 552 - .long vector552, vector553, vector554, vector555 -#endif -#if PPC_NUM_VECTORS > 556 - .long vector556, vector557, vector558, vector559 -#endif -#if PPC_NUM_VECTORS > 560 - .long vector560, vector561, vector562, vector563 -#endif -#if PPC_NUM_VECTORS > 564 - .long vector564, vector565, vector566, vector567 -#endif -#if PPC_NUM_VECTORS > 568 - .long vector568, vector569, vector570, vector571 -#endif -#if PPC_NUM_VECTORS > 572 - .long vector572, vector573, vector574, vector575 -#endif -#if PPC_NUM_VECTORS > 576 - .long vector576, vector577, vector578, vector579 -#endif -#if PPC_NUM_VECTORS > 580 - .long vector580, vector581, vector582, vector583 -#endif -#if PPC_NUM_VECTORS > 584 - .long vector584, vector585, vector586, vector587 -#endif -#if PPC_NUM_VECTORS > 588 - .long vector588, vector589, vector590, vector591 -#endif -#if PPC_NUM_VECTORS > 592 - .long vector592, vector593, vector594, vector595 -#endif -#if PPC_NUM_VECTORS > 596 - .long vector596, vector597, vector598, vector599 -#endif -#if PPC_NUM_VECTORS > 600 - .long vector600, vector601, vector602, vector603 -#endif -#if PPC_NUM_VECTORS > 604 - .long vector604, vector605, vector606, vector607 -#endif -#if PPC_NUM_VECTORS > 608 - .long vector608, vector609, vector610, vector611 -#endif -#if PPC_NUM_VECTORS > 612 - .long vector612, vector613, vector614, vector615 -#endif -#if PPC_NUM_VECTORS > 616 - .long vector616, vector617, vector618, vector619 -#endif -#if PPC_NUM_VECTORS > 620 - .long vector620, vector621, vector622, vector623 -#endif -#if PPC_NUM_VECTORS > 624 - .long vector624, vector625, vector626, vector627 -#endif -#if PPC_NUM_VECTORS > 628 - .long vector628, vector629, vector630, vector631 -#endif -#if PPC_NUM_VECTORS > 632 - .long vector632, vector633, vector634, vector635 -#endif -#if PPC_NUM_VECTORS > 636 - .long vector636, vector637, vector638, vector639 -#endif -#if PPC_NUM_VECTORS > 640 - .long vector640, vector641, vector642, vector643 -#endif -#if PPC_NUM_VECTORS > 644 - .long vector644, vector645, vector646, vector647 -#endif -#if PPC_NUM_VECTORS > 648 - .long vector648, vector649, vector650, vector651 -#endif -#if PPC_NUM_VECTORS > 652 - .long vector652, vector653, vector654, vector655 -#endif -#if PPC_NUM_VECTORS > 656 - .long vector656, vector657, vector658, vector659 -#endif -#if PPC_NUM_VECTORS > 660 - .long vector660, vector661, vector662, vector663 -#endif -#if PPC_NUM_VECTORS > 664 - .long vector664, vector665, vector666, vector667 -#endif -#if PPC_NUM_VECTORS > 668 - .long vector668, vector669, vector670, vector671 -#endif -#if PPC_NUM_VECTORS > 672 - .long vector672, vector673, vector674, vector675 -#endif -#if PPC_NUM_VECTORS > 676 - .long vector676, vector677, vector678, vector679 -#endif -#if PPC_NUM_VECTORS > 680 - .long vector680, vector681, vector682, vector683 -#endif -#if PPC_NUM_VECTORS > 684 - .long vector684, vector685, vector686, vector687 -#endif -#if PPC_NUM_VECTORS > 688 - .long vector688, vector689, vector690, vector691 -#endif -#if PPC_NUM_VECTORS > 692 - .long vector692, vector693, vector694, vector695 -#endif -#if PPC_NUM_VECTORS > 696 - .long vector696, vector697, vector698, vector699 -#endif -#if PPC_NUM_VECTORS > 700 - .long vector700, vector701, vector702, vector703 -#endif -#if PPC_NUM_VECTORS > 704 - .long vector704, vector705, vector706, vector707 -#endif -#if PPC_NUM_VECTORS > 708 - .long vector708, vector709, vector710, vector711 -#endif -#if PPC_NUM_VECTORS > 712 - .long vector712, vector713, vector714, vector715 -#endif -#if PPC_NUM_VECTORS > 716 - .long vector716, vector717, vector718, vector719 -#endif -#if PPC_NUM_VECTORS > 720 - .long vector720, vector721, vector722, vector723 -#endif -#if PPC_NUM_VECTORS > 724 - .long vector724, vector725, vector726, vector727 -#endif -#if PPC_NUM_VECTORS > 728 - .long vector728, vector729, vector730, vector731 -#endif -#if PPC_NUM_VECTORS > 732 - .long vector732, vector733, vector734, vector735 -#endif -#if PPC_NUM_VECTORS > 736 - .long vector736, vector737, vector738, vector739 -#endif -#if PPC_NUM_VECTORS > 740 - .long vector740, vector741, vector742, vector743 -#endif -#if PPC_NUM_VECTORS > 744 - .long vector744, vector745, vector746, vector747 -#endif -#if PPC_NUM_VECTORS > 748 - .long vector748, vector749, vector750, vector751 -#endif -#if PPC_NUM_VECTORS > 752 - .long vector752, vector753, vector754, vector755 -#endif -#if PPC_NUM_VECTORS > 756 - .long vector756, vector757, vector758, vector759 -#endif -#if PPC_NUM_VECTORS > 760 - .long vector760, vector761, vector762, vector763 -#endif -#if PPC_NUM_VECTORS > 764 - .long vector764, vector765, vector766, vector767 -#endif -#if PPC_NUM_VECTORS > 768 - .long vector768, vector769, vector770, vector771 -#endif -#if PPC_NUM_VECTORS > 772 - .long vector772, vector773, vector774, vector775 -#endif -#if PPC_NUM_VECTORS > 776 - .long vector776, vector777, vector778, vector779 -#endif -#if PPC_NUM_VECTORS > 780 - .long vector780, vector781, vector782, vector783 -#endif -#if PPC_NUM_VECTORS > 784 - .long vector784, vector785, vector786, vector787 -#endif -#if PPC_NUM_VECTORS > 788 - .long vector788, vector789, vector790, vector791 -#endif -#if PPC_NUM_VECTORS > 792 - .long vector792, vector793, vector794, vector795 -#endif -#if PPC_NUM_VECTORS > 796 - .long vector796, vector797, vector798, vector799 -#endif -#if PPC_NUM_VECTORS > 800 - .long vector800, vector801, vector802, vector803 -#endif -#if PPC_NUM_VECTORS > 804 - .long vector804, vector805, vector806, vector807 -#endif -#if PPC_NUM_VECTORS > 808 - .long vector808, vector809, vector810, vector811 -#endif -#if PPC_NUM_VECTORS > 812 - .long vector812, vector813, vector814, vector815 -#endif -#if PPC_NUM_VECTORS > 816 - .long vector816, vector817, vector818, vector819 -#endif -#if PPC_NUM_VECTORS > 820 - .long vector820, vector821, vector822, vector823 -#endif -#if PPC_NUM_VECTORS > 824 - .long vector824, vector825, vector826, vector827 -#endif -#if PPC_NUM_VECTORS > 828 - .long vector828, vector829, vector830, vector831 -#endif -#if PPC_NUM_VECTORS > 832 - .long vector832, vector833, vector834, vector835 -#endif -#if PPC_NUM_VECTORS > 836 - .long vector836, vector837, vector838, vector839 -#endif -#if PPC_NUM_VECTORS > 840 - .long vector840, vector841, vector842, vector843 -#endif -#if PPC_NUM_VECTORS > 844 - .long vector844, vector845, vector846, vector847 -#endif -#if PPC_NUM_VECTORS > 848 - .long vector848, vector849, vector850, vector851 -#endif -#if PPC_NUM_VECTORS > 852 - .long vector852, vector853, vector854, vector855 -#endif -#if PPC_NUM_VECTORS > 856 - .long vector856, vector857, vector858, vector859 -#endif -#if PPC_NUM_VECTORS > 860 - .long vector860, vector861, vector862, vector863 -#endif -#if PPC_NUM_VECTORS > 864 - .long vector864, vector865, vector866, vector867 -#endif -#if PPC_NUM_VECTORS > 868 - .long vector868, vector869, vector870, vector871 -#endif -#if PPC_NUM_VECTORS > 872 - .long vector872, vector873, vector874, vector875 -#endif -#if PPC_NUM_VECTORS > 876 - .long vector876, vector877, vector878, vector879 -#endif -#if PPC_NUM_VECTORS > 880 - .long vector880, vector881, vector882, vector883 -#endif -#if PPC_NUM_VECTORS > 884 - .long vector884, vector885, vector886, vector887 -#endif -#if PPC_NUM_VECTORS > 888 - .long vector888, vector889, vector890, vector891 -#endif -#if PPC_NUM_VECTORS > 892 - .long vector892, vector893, vector894, vector895 -#endif -#if PPC_NUM_VECTORS > 896 - .long vector896, vector897, vector898, vector899 -#endif -#if PPC_NUM_VECTORS > 900 - .long vector900, vector901, vector902, vector903 -#endif -#if PPC_NUM_VECTORS > 904 - .long vector904, vector905, vector906, vector907 -#endif -#if PPC_NUM_VECTORS > 908 - .long vector908, vector909, vector910, vector911 -#endif -#if PPC_NUM_VECTORS > 912 - .long vector912, vector913, vector914, vector915 -#endif -#if PPC_NUM_VECTORS > 916 - .long vector916, vector917, vector918, vector919 -#endif -#if PPC_NUM_VECTORS > 920 - .long vector920, vector921, vector922, vector923 -#endif -#if PPC_NUM_VECTORS > 924 - .long vector924, vector925, vector926, vector927 -#endif -#if PPC_NUM_VECTORS > 928 - .long vector928, vector929, vector930, vector931 -#endif -#if PPC_NUM_VECTORS > 932 - .long vector932, vector933, vector934, vector935 -#endif -#if PPC_NUM_VECTORS > 936 - .long vector936, vector937, vector938, vector939 -#endif -#if PPC_NUM_VECTORS > 940 - .long vector940, vector941, vector942, vector943 -#endif -#if PPC_NUM_VECTORS > 944 - .long vector944, vector945, vector946, vector947 -#endif -#if PPC_NUM_VECTORS > 948 - .long vector948, vector949, vector950, vector951 -#endif -#if PPC_NUM_VECTORS > 952 - .long vector952, vector953, vector954, vector955 -#endif -#if PPC_NUM_VECTORS > 956 - .long vector956, vector957, vector958, vector959 -#endif -#if PPC_NUM_VECTORS > 960 - .long vector960, vector961, vector962, vector963 -#endif -#if PPC_NUM_VECTORS > 964 - .long vector964, vector965, vector966, vector967 -#endif -#if PPC_NUM_VECTORS > 968 - .long vector968, vector969, vector970, vector971 -#endif -#if PPC_NUM_VECTORS > 972 - .long vector972, vector973, vector974, vector975 -#endif -#if PPC_NUM_VECTORS > 976 - .long vector976, vector977, vector978, vector979 -#endif -#if PPC_NUM_VECTORS > 980 - .long vector980, vector981, vector982, vector983 -#endif -#if PPC_NUM_VECTORS > 984 - .long vector984, vector985, vector986, vector987 -#endif -#if PPC_NUM_VECTORS > 988 - .long vector988, vector989, vector990, vector991 -#endif -#if PPC_NUM_VECTORS > 992 - .long vector992, vector993, vector994, vector995 -#endif -#if PPC_NUM_VECTORS > 996 - .long vector996, vector997, vector998, vector999 -#endif -#if PPC_NUM_VECTORS > 1000 - .long vector1000, vector1001, vector1002, vector1003 -#endif -#if PPC_NUM_VECTORS > 1004 - .long vector1004, vector1005, vector1006, vector1007 -#endif -#if PPC_NUM_VECTORS > 1008 - .long vector1008, vector1009, vector1010, vector1011 -#endif -#if PPC_NUM_VECTORS > 1012 - .long vector1012, vector1013, vector1014, vector1015 -#endif -#if PPC_NUM_VECTORS > 1016 - .long vector1016, vector1017, vector1018, vector1019 -#endif -#if PPC_NUM_VECTORS > 1020 - .long vector1020, vector1021, vector1022, vector1023 -#endif - -#endif /* !defined(__DOXYGEN__) */ - -/** @} */ diff --git a/os/common/ports/e200/compilers/GCC/crt0.s b/os/common/ports/e200/compilers/GCC/crt0.s deleted file mode 100644 index 92a8642cb..000000000 --- a/os/common/ports/e200/compilers/GCC/crt0.s +++ /dev/null @@ -1,245 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file GCC/crt0.s - * @brief Generic PowerPC startup file for GCC. - * - * @addtogroup PPC_GCC_CORE - * @{ - */ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -#if !defined(FALSE) || defined(__DOXYGEN__) -#define FALSE 0 -#endif - -#if !defined(TRUE) || defined(__DOXYGEN__) -#define TRUE 1 -#endif - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/** - * @brief Stack segments initialization switch. - */ -#if !defined(CRT0_STACKS_FILL_PATTERN) || defined(__DOXYGEN__) -#define CRT0_STACKS_FILL_PATTERN 0x55555555 -#endif - -/** - * @brief Stack segments initialization switch. - */ -#if !defined(CRT0_INIT_STACKS) || defined(__DOXYGEN__) -#define CRT0_INIT_STACKS TRUE -#endif - -/** - * @brief DATA segment initialization switch. - */ -#if !defined(CRT0_INIT_DATA) || defined(__DOXYGEN__) -#define CRT0_INIT_DATA TRUE -#endif - -/** - * @brief BSS segment initialization switch. - */ -#if !defined(CRT0_INIT_BSS) || defined(__DOXYGEN__) -#define CRT0_INIT_BSS TRUE -#endif - -/** - * @brief Constructors invocation switch. - */ -#if !defined(CRT0_CALL_CONSTRUCTORS) || defined(__DOXYGEN__) -#define CRT0_CALL_CONSTRUCTORS TRUE -#endif - -/** - * @brief Destructors invocation switch. - */ -#if !defined(CRT0_CALL_DESTRUCTORS) || defined(__DOXYGEN__) -#define CRT0_CALL_DESTRUCTORS TRUE -#endif - -/*===========================================================================*/ -/* Code section. */ -/*===========================================================================*/ - -#if !defined(__DOXYGEN__) - - .section .crt0, "ax" - .align 2 - .globl _boot_address - .type _boot_address, @function -_boot_address: - /* Stack setup.*/ - lis %r1, __process_stack_end__@h - ori %r1, %r1, __process_stack_end__@l - li %r0, 0 - stwu %r0, -8(%r1) - - /* Small sections registers initialization.*/ - lis %r2, __sdata2_start__@h - ori %r2, %r2, __sdata2_start__@l - lis %r13, __sdata_start__@h - ori %r13, %r13, __sdata_start__@l - - /* Early initialization.*/ - bl __early_init - -#if CRT0_INIT_STACKS == TRUE - /* Stacks fill pattern.*/ - lis %r7, CRT0_STACKS_FILL_PATTERN@h - ori %r7, %r7, CRT0_STACKS_FILL_PATTERN@l - - /* IRQ Stack initialization. Note, the architecture does not use this - stack, the size is usually zero. An OS can have special SW handling - and require this. A 4 bytes alignment is assmend and required.*/ - lis %r4, __irq_stack_base__@h - ori %r4, %r4, __irq_stack_base__@l - lis %r5, __irq_stack_end__@h - ori %r5, %r5, __irq_stack_end__@l -.irqsloop: - cmpl cr0, %r4, %r5 - bge cr0, .irqsend - stw %r7, 0(%r4) - addi %r4, %r4, 4 - b .irqsloop -.irqsend: - - /* Process Stack initialization. Note, does not overwrite the already - written EABI frame. A 4 bytes alignment is assmend and required.*/ - lis %r4, __process_stack_base__@h - ori %r4, %r4, __process_stack_base__@l - lis %r5, (__process_stack_end__ - 8)@h - ori %r5, %r5, (__process_stack_end__ - 8)@l -.prcsloop: - cmpl cr0, %r4, %r5 - bge cr0, .prcsend - stw %r7, 0(%r4) - addi %r4, %r4, 4 - b .prcsloop -.prcsend: -#endif - -#if CRT0_INIT_BSS == TRUE - /* BSS clearing.*/ - lis %r4, __bss_start__@h - ori %r4, %r4, __bss_start__@l - lis %r5, __bss_end__@h - ori %r5, %r5, __bss_end__@l - li %r7, 0 -.bssloop: - cmpl cr0, %r4, %r5 - bge cr0, .bssend - stw %r7, 0(%r4) - addi %r4, %r4, 4 - b .bssloop -.bssend: -#endif - -#if CRT0_INIT_DATA == TRUE - /* DATA initialization.*/ - lis %r4, __romdata_start__@h - ori %r4, %r4, __romdata_start__@l - lis %r5, __data_start__@h - ori %r5, %r5, __data_start__@l - lis %r6, __data_end__@h - ori %r6, %r6, __data_end__@l -.dataloop: - cmpl cr0, %r5, %r6 - bge cr0, .dataend - lwz %r7, 0(%r4) - addi %r4, %r4, 4 - stw %r7, 0(%r5) - addi %r5, %r5, 4 - b .dataloop -.dataend: -#endif - - /* Late initialization.*/ - bl __late_init - -#if CRT0_CALL_CONSTRUCTORS == TRUE - /* Constructors invocation.*/ - lis %r4, __init_array_start@h - ori %r4, %r4, __init_array_start@l - lis %r5, __init_array_end@h - ori %r5, %r5, __init_array_end@l -.iniloop: - cmplw %cr0, %r4, %r5 - bge %cr0, .iniend - lwz %r6, 0(%r4) - mtctr %r6 - addi %r4, %r4, 4 - bctrl - b .iniloop -.iniend: -#endif - - /* Main program invocation.*/ - bl main - -#if CRT0_CALL_DESTRUCTORS == TRUE - /* Destructors invocation.*/ - lis %r4, __fini_array_start@h - ori %r4, %r4, __fini_array_start@l - lis %r5, __fini_array_end@h - ori %r5, %r5, __fini_array_end@l -.finiloop: - cmplw %cr0, %r4, %r5 - bge %cr0, .finiend - lwz %r6, 0(%r4) - mtctr %r6 - addi %r4, %r4, 4 - bctrl - b .finiloop -.finiend: -#endif - - /* Branching to the defined exit handler.*/ - b __default_exit - - /* Default main exit code, infinite loop.*/ - .weak __default_exit - .type __default_exit, @function -__default_exit: - b __default_exit - - /* Default early initialization code, none.*/ - .weak __early_init - .type __early_init, @function -__early_init: - blr - - /* Default late initialization code, none.*/ - .weak __late_init - .type __late_init, @function -__late_init: - blr - -#endif /* !defined(__DOXYGEN__) */ - -/** @} */ diff --git a/os/common/ports/e200/compilers/GCC/ld/SPC560B50.ld b/os/common/ports/e200/compilers/GCC/ld/SPC560B50.ld deleted file mode 100644 index 62f2abc76..000000000 --- a/os/common/ports/e200/compilers/GCC/ld/SPC560B50.ld +++ /dev/null @@ -1,30 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * SPC560B50 memory setup. - */ -MEMORY -{ - flash : org = 0x00000000, len = 512k - dataflash : org = 0x00800000, len = 64k - ram : org = 0x40000000, len = 32k -} - -INCLUDE rules_z0.ld diff --git a/os/common/ports/e200/compilers/GCC/ld/SPC560B60.ld b/os/common/ports/e200/compilers/GCC/ld/SPC560B60.ld deleted file mode 100644 index 73ca28d9a..000000000 --- a/os/common/ports/e200/compilers/GCC/ld/SPC560B60.ld +++ /dev/null @@ -1,30 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * SPC560B60 memory setup. - */ -MEMORY -{ - flash : org = 0x00000000, len = 1024k - dataflash : org = 0x00800000, len = 64k - ram : org = 0x40000000, len = 80k -} - -INCLUDE rules_z0.ld diff --git a/os/common/ports/e200/compilers/GCC/ld/SPC560B64.ld b/os/common/ports/e200/compilers/GCC/ld/SPC560B64.ld deleted file mode 100644 index 5961d8414..000000000 --- a/os/common/ports/e200/compilers/GCC/ld/SPC560B64.ld +++ /dev/null @@ -1,30 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * SPC560B64 memory setup. - */ -MEMORY -{ - flash : org = 0x00000000, len = 1536k - dataflash : org = 0x00800000, len = 64k - ram : org = 0x40000000, len = 96k -} - -INCLUDE rules_z0.ld diff --git a/os/common/ports/e200/compilers/GCC/ld/SPC560D40.ld b/os/common/ports/e200/compilers/GCC/ld/SPC560D40.ld deleted file mode 100644 index 45929e6e0..000000000 --- a/os/common/ports/e200/compilers/GCC/ld/SPC560D40.ld +++ /dev/null @@ -1,30 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * SPC560D40 memory setup. - */ -MEMORY -{ - flash : org = 0x00000000, len = 256k - dataflash : org = 0x00800000, len = 64k - ram : org = 0x40000000, len = 16k -} - -INCLUDE rules_z0.ld diff --git a/os/common/ports/e200/compilers/GCC/ld/SPC560P50.ld b/os/common/ports/e200/compilers/GCC/ld/SPC560P50.ld deleted file mode 100644 index f42dcda01..000000000 --- a/os/common/ports/e200/compilers/GCC/ld/SPC560P50.ld +++ /dev/null @@ -1,30 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * SPC560P50 memory setup. - */ -MEMORY -{ - flash : org = 0x00000000, len = 512k - dataflash : org = 0x00800000, len = 64k - ram : org = 0x40000000, len = 40k -} - -INCLUDE rules_z0.ld diff --git a/os/common/ports/e200/compilers/GCC/ld/SPC563M64.ld b/os/common/ports/e200/compilers/GCC/ld/SPC563M64.ld deleted file mode 100644 index 7753edc7f..000000000 --- a/os/common/ports/e200/compilers/GCC/ld/SPC563M64.ld +++ /dev/null @@ -1,29 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * SPC563M64 memory setup. - */ -MEMORY -{ - flash : org = 0x00000000, len = 1536k - ram : org = 0x40000000, len = 94k -} - -INCLUDE rules_z3.ld diff --git a/os/common/ports/e200/compilers/GCC/ld/SPC564A70.ld b/os/common/ports/e200/compilers/GCC/ld/SPC564A70.ld deleted file mode 100644 index b3d78ca70..000000000 --- a/os/common/ports/e200/compilers/GCC/ld/SPC564A70.ld +++ /dev/null @@ -1,29 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * SPC563A70 memory setup. - */ -MEMORY -{ - flash : org = 0x00000000, len = 2M - ram : org = 0x40000000, len = 128k -} - -INCLUDE rules_z4.ld diff --git a/os/common/ports/e200/compilers/GCC/ld/SPC564A80.ld b/os/common/ports/e200/compilers/GCC/ld/SPC564A80.ld deleted file mode 100644 index 313872487..000000000 --- a/os/common/ports/e200/compilers/GCC/ld/SPC564A80.ld +++ /dev/null @@ -1,29 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * SPC563A80 memory setup. - */ -MEMORY -{ - flash : org = 0x00000000, len = 4M - ram : org = 0x40000000, len = 192k -} - -INCLUDE rules_z4.ld diff --git a/os/common/ports/e200/compilers/GCC/ld/SPC56EC74.ld b/os/common/ports/e200/compilers/GCC/ld/SPC56EC74.ld deleted file mode 100644 index d8285b953..000000000 --- a/os/common/ports/e200/compilers/GCC/ld/SPC56EC74.ld +++ /dev/null @@ -1,30 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * SPC56EC74 memory setup. - */ -MEMORY -{ - flash : org = 0x00000000, len = 3M - dataflash : org = 0x00800000, len = 64k - ram : org = 0x40000000, len = 256k -} - -INCLUDE rules_z4.ld diff --git a/os/common/ports/e200/compilers/GCC/ld/SPC56EL54_LSM.ld b/os/common/ports/e200/compilers/GCC/ld/SPC56EL54_LSM.ld deleted file mode 100644 index 191d49d41..000000000 --- a/os/common/ports/e200/compilers/GCC/ld/SPC56EL54_LSM.ld +++ /dev/null @@ -1,29 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * SPC56EL54 memory setup in LSM mode. - */ -MEMORY -{ - flash : org = 0x00000000, len = 768k - ram : org = 0x40000000, len = 128k -} - -INCLUDE rules_z4.ld diff --git a/os/common/ports/e200/compilers/GCC/ld/SPC56EL60_LSM.ld b/os/common/ports/e200/compilers/GCC/ld/SPC56EL60_LSM.ld deleted file mode 100644 index 2001ac6f0..000000000 --- a/os/common/ports/e200/compilers/GCC/ld/SPC56EL60_LSM.ld +++ /dev/null @@ -1,29 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * SPC56EL60 memory setup in LSM mode. - */ -MEMORY -{ - flash : org = 0x00000000, len = 1M - ram : org = 0x40000000, len = 128k -} - -INCLUDE rules_z4.ld diff --git a/os/common/ports/e200/compilers/GCC/ld/SPC56EL70_LSM.ld b/os/common/ports/e200/compilers/GCC/ld/SPC56EL70_LSM.ld deleted file mode 100644 index 0938cb008..000000000 --- a/os/common/ports/e200/compilers/GCC/ld/SPC56EL70_LSM.ld +++ /dev/null @@ -1,29 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * SPC56EL70 memory setup in LSM mode. - */ -MEMORY -{ - flash : org = 0x00000000, len = 2M - ram : org = 0x40000000, len = 192k -} - -INCLUDE rules_z4.ld diff --git a/os/common/ports/e200/compilers/GCC/ld/SPC57EM80_HSM.ld b/os/common/ports/e200/compilers/GCC/ld/SPC57EM80_HSM.ld deleted file mode 100644 index d792364f5..000000000 --- a/os/common/ports/e200/compilers/GCC/ld/SPC57EM80_HSM.ld +++ /dev/null @@ -1,31 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* - * SPC57EM80-HSM memory setup. - */ -MEMORY -{ - flash : org = 0x0060C000, len = 144k - dflash0 : org = 0x00680000, len = 16k - dflash1 : org = 0x00684000, len = 16k - ram : org = 0xA0000000, len = 40k -} - -INCLUDE rules_z0.ld diff --git a/os/common/ports/e200/compilers/GCC/mk/startup_spc560bcxx.mk b/os/common/ports/e200/compilers/GCC/mk/startup_spc560bcxx.mk deleted file mode 100644 index 2e067b149..000000000 --- a/os/common/ports/e200/compilers/GCC/mk/startup_spc560bcxx.mk +++ /dev/null @@ -1,11 +0,0 @@ -# List of the ChibiOS e200z0 SPC560BCxx startup files. -STARTUPSRC = - -STARTUPASM = $(CHIBIOS)/os/common/ports/e200/devices/SPC560BCxx/boot.s \ - $(CHIBIOS)/os/common/ports/e200/compilers/GCC/vectors.s \ - $(CHIBIOS)/os/common/ports/e200/compilers/GCC/crt0.s - -STARTUPINC = ${CHIBIOS}/os/common/ports/e200/compilers/GCC \ - ${CHIBIOS}/os/common/ports/e200/devices/SPC560BCxx - -STARTUPLD = ${CHIBIOS}/os/common/ports/e200/compilers/GCC/ld diff --git a/os/common/ports/e200/compilers/GCC/mk/startup_spc560bxx.mk b/os/common/ports/e200/compilers/GCC/mk/startup_spc560bxx.mk deleted file mode 100644 index 5cfc4a81e..000000000 --- a/os/common/ports/e200/compilers/GCC/mk/startup_spc560bxx.mk +++ /dev/null @@ -1,11 +0,0 @@ -# List of the ChibiOS e200z0 SPC560Bxx startup files. -STARTUPSRC = - -STARTUPASM = $(CHIBIOS)/os/common/ports/e200/devices/SPC560Bxx/boot.s \ - $(CHIBIOS)/os/common/ports/e200/compilers/GCC/vectors.s \ - $(CHIBIOS)/os/common/ports/e200/compilers/GCC/crt0.s - -STARTUPINC = ${CHIBIOS}/os/common/ports/e200/compilers/GCC \ - ${CHIBIOS}/os/common/ports/e200/devices/SPC560Bxx - -STARTUPLD = ${CHIBIOS}/os/common/ports/e200/compilers/GCC/ld diff --git a/os/common/ports/e200/compilers/GCC/mk/startup_spc560dxx.mk b/os/common/ports/e200/compilers/GCC/mk/startup_spc560dxx.mk deleted file mode 100644 index 4e8b633fd..000000000 --- a/os/common/ports/e200/compilers/GCC/mk/startup_spc560dxx.mk +++ /dev/null @@ -1,11 +0,0 @@ -# List of the ChibiOS e200z0 SPC560Dxx startup files. -STARTUPSRC = - -STARTUPASM = $(CHIBIOS)/os/common/ports/e200/devices/SPC560Dxx/boot.s \ - $(CHIBIOS)/os/common/ports/e200/compilers/GCC/vectors.s \ - $(CHIBIOS)/os/common/ports/e200/compilers/GCC/crt0.s - -STARTUPINC = ${CHIBIOS}/os/common/ports/e200/compilers/GCC \ - ${CHIBIOS}/os/common/ports/e200/devices/SPC560Dxx - -STARTUPLD = ${CHIBIOS}/os/common/ports/e200/compilers/GCC/ld diff --git a/os/common/ports/e200/compilers/GCC/mk/startup_spc560pxx.mk b/os/common/ports/e200/compilers/GCC/mk/startup_spc560pxx.mk deleted file mode 100644 index 72a62d787..000000000 --- a/os/common/ports/e200/compilers/GCC/mk/startup_spc560pxx.mk +++ /dev/null @@ -1,11 +0,0 @@ -# List of the ChibiOS e200z0 SPC560Pxx startup files. -STARTUPSRC = - -STARTUPASM = $(CHIBIOS)/os/common/ports/e200/devices/SPC560Pxx/boot.s \ - $(CHIBIOS)/os/common/ports/e200/compilers/GCC/vectors.s \ - $(CHIBIOS)/os/common/ports/e200/compilers/GCC/crt0.s - -STARTUPINC = ${CHIBIOS}/os/common/ports/e200/compilers/GCC \ - ${CHIBIOS}/os/common/ports/e200/devices/SPC560Pxx - -STARTUPLD = ${CHIBIOS}/os/common/ports/e200/compilers/GCC/ld diff --git a/os/common/ports/e200/compilers/GCC/mk/startup_spc563mxx.mk b/os/common/ports/e200/compilers/GCC/mk/startup_spc563mxx.mk deleted file mode 100644 index 92af14e4c..000000000 --- a/os/common/ports/e200/compilers/GCC/mk/startup_spc563mxx.mk +++ /dev/null @@ -1,11 +0,0 @@ -# List of the ChibiOS e200z3 SPC563Mxx startup files. -STARTUPSRC = - -STARTUPASM = $(CHIBIOS)/os/common/ports/e200/devices/SPC563Mxx/boot.s \ - $(CHIBIOS)/os/common/ports/e200/compilers/GCC/vectors.s \ - $(CHIBIOS)/os/common/ports/e200/compilers/GCC/crt0.s - -STARTUPINC = ${CHIBIOS}/os/common/ports/e200/compilers/GCC \ - ${CHIBIOS}/os/common/ports/e200/devices/SPC563Mxx - -STARTUPLD = ${CHIBIOS}/os/common/ports/e200/compilers/GCC/ld diff --git a/os/common/ports/e200/compilers/GCC/mk/startup_spc564axx.mk b/os/common/ports/e200/compilers/GCC/mk/startup_spc564axx.mk deleted file mode 100644 index a903aa8ff..000000000 --- a/os/common/ports/e200/compilers/GCC/mk/startup_spc564axx.mk +++ /dev/null @@ -1,11 +0,0 @@ -# List of the ChibiOS e200z4 SPC564Axx startup files. -STARTUPSRC = - -STARTUPASM = $(CHIBIOS)/os/common/ports/e200/devices/SPC564Axx/boot.s \ - $(CHIBIOS)/os/common/ports/e200/compilers/GCC/vectors.s \ - $(CHIBIOS)/os/common/ports/e200/compilers/GCC/crt0.s - -STARTUPINC = ${CHIBIOS}/os/common/ports/e200/compilers/GCC \ - ${CHIBIOS}/os/common/ports/e200/devices/SPC564Axx - -STARTUPLD = ${CHIBIOS}/os/common/ports/e200/compilers/GCC/ld diff --git a/os/common/ports/e200/compilers/GCC/mk/startup_spc56ecxx.mk b/os/common/ports/e200/compilers/GCC/mk/startup_spc56ecxx.mk deleted file mode 100644 index d2377e57f..000000000 --- a/os/common/ports/e200/compilers/GCC/mk/startup_spc56ecxx.mk +++ /dev/null @@ -1,11 +0,0 @@ -# List of the ChibiOS e200z4 SPC56ECxx startup files. -STARTUPSRC = - -STARTUPASM = $(CHIBIOS)/os/common/ports/e200/devices/SPC56ECxx/boot.s \ - $(CHIBIOS)/os/common/ports/e200/compilers/GCC/vectors.s \ - $(CHIBIOS)/os/common/ports/e200/compilers/GCC/crt0.s - -STARTUPINC = ${CHIBIOS}/os/common/ports/e200/compilers/GCC \ - ${CHIBIOS}/os/common/ports/e200/devices/SPC56ECxx - -STARTUPLD = ${CHIBIOS}/os/common/ports/e200/compilers/GCC/ld diff --git a/os/common/ports/e200/compilers/GCC/mk/startup_spc56elxx.mk b/os/common/ports/e200/compilers/GCC/mk/startup_spc56elxx.mk deleted file mode 100644 index 40753b63f..000000000 --- a/os/common/ports/e200/compilers/GCC/mk/startup_spc56elxx.mk +++ /dev/null @@ -1,11 +0,0 @@ -# List of the ChibiOS e200z4 SPC56ELxx startup files. -STARTUPSRC = - -STARTUPASM = $(CHIBIOS)/os/common/ports/e200/devices/SPC56ELxx/boot.s \ - $(CHIBIOS)/os/common/ports/e200/compilers/GCC/vectors.s \ - $(CHIBIOS)/os/common/ports/e200/compilers/GCC/crt0.s - -STARTUPINC = ${CHIBIOS}/os/common/ports/e200/compilers/GCC \ - ${CHIBIOS}/os/common/ports/e200/devices/SPC56ELxx - -STARTUPLD = ${CHIBIOS}/os/common/ports/e200/compilers/GCC/ld diff --git a/os/common/ports/e200/compilers/GCC/rules.mk b/os/common/ports/e200/compilers/GCC/rules.mk deleted file mode 100644 index c7f9d9b03..000000000 --- a/os/common/ports/e200/compilers/GCC/rules.mk +++ /dev/null @@ -1,242 +0,0 @@ -# e200z common makefile scripts and rules. - -############################################################################## -# Processing options coming from the upper Makefile. -# - -# Compiler options -OPT = $(USE_OPT) -COPT = $(USE_COPT) -CPPOPT = $(USE_CPPOPT) - -# Garbage collection -ifeq ($(USE_LINK_GC),yes) - OPT += -ffunction-sections -fdata-sections -fno-common - LDOPT := --gc-sections -else - LDOPT := --no-gc-sections -endif - -# Linker extra options -ifneq ($(USE_LDOPT),) - LDOPT := $(LDOPT),$(USE_LDOPT) -endif - -# Link time optimizations -ifeq ($(USE_LTO),yes) - OPT += -flto -endif - -# VLE option handling. -ifeq ($(USE_VLE),yes) - DDEFS += -DPPC_USE_VLE=1 - DADEFS += -DPPC_USE_VLE=1 - MCU += -mvle -else - DDEFS += -DPPC_USE_VLE=0 - DADEFS += -DPPC_USE_VLE=0 -endif - -# Process stack size -ifeq ($(USE_PROCESS_STACKSIZE),) - LDOPT := $(LDOPT),--defsym=__process_stack_size__=0x400 -else - LDOPT := $(LDOPT),--defsym=__process_stack_size__=$(USE_PROCESS_STACKSIZE) -endif - -# Exceptions stack size -ifeq ($(USE_EXCEPTIONS_STACKSIZE),) - LDOPT := $(LDOPT),--defsym=__irq_stack_size__=0x400 -else - LDOPT := $(LDOPT),--defsym=__irq_stack_size__=$(USE_EXCEPTIONS_STACKSIZE) -endif - -# Output directory and files -ifeq ($(BUILDDIR),) - BUILDDIR = build -endif -ifeq ($(BUILDDIR),.) - BUILDDIR = build -endif -OUTFILES = $(BUILDDIR)/$(PROJECT).elf $(BUILDDIR)/$(PROJECT).hex \ - $(BUILDDIR)/$(PROJECT).mot $(BUILDDIR)/$(PROJECT).bin \ - $(BUILDDIR)/$(PROJECT).dmp $(BUILDDIR)/$(PROJECT).list - - -# Source files groups and paths -SRC = $(CSRC)$(CPPSRC) -SRCPATHS = $(sort $(dir $(ASMXSRC)) $(dir $(ASMSRC)) $(dir $(SRC))) - -# Various directories -OBJDIR = $(BUILDDIR)/obj -LSTDIR = $(BUILDDIR)/lst - -# Object files groups -COBJS = $(addprefix $(OBJDIR)/, $(notdir $(CSRC:.c=.o))) -CPPOBJS = $(addprefix $(OBJDIR)/, $(notdir $(CPPSRC:.cpp=.o))) -ASMOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ASMSRC:.s=.o))) -ASMXOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ASMXSRC:.S=.o))) -OBJS = $(ASMXOBJS) $(ASMOBJS) $(COBJS) $(CPPOBJS) - -# Paths -IINCDIR = $(patsubst %,-I%,$(INCDIR) $(DINCDIR) $(UINCDIR)) -LLIBDIR = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR)) - -# Macros -DEFS = $(DDEFS) $(UDEFS) -ADEFS = $(DADEFS) $(UADEFS) - -# Libs -LIBS = $(DLIBS) $(ULIBS) - -# Various settings -MCFLAGS = -mcpu=$(MCU) -ODFLAGS = -x --syms -ASFLAGS = $(MCFLAGS) -Wa,-amhls=$(LSTDIR)/$(notdir $(<:.s=.lst)) $(ADEFS) -ASXFLAGS = $(MCFLAGS) -Wa,-amhls=$(LSTDIR)/$(notdir $(<:.S=.lst)) $(ADEFS) -CFLAGS = $(MCFLAGS) $(OPT) $(COPT) $(CWARN) -Wa,-alms=$(LSTDIR)/$(notdir $(<:.c=.lst)) $(DEFS) -CPPFLAGS = $(MCFLAGS) $(OPT) $(CPPOPT) $(CPPWARN) -Wa,-alms=$(LSTDIR)/$(notdir $(<:.cpp=.lst)) $(DEFS) -LDFLAGS = $(MCFLAGS) $(OPT) -nostartfiles $(LLIBDIR) -Wl,-Map=$(BUILDDIR)/$(PROJECT).map,--cref,--no-warn-mismatch,--library-path=$(RULESPATH),$(LDOPT),--script=$(LDSCRIPT) - -# Generate dependency information -ASFLAGS += -MD -MP -MF .dep/$(@F).d -CFLAGS += -MD -MP -MF .dep/$(@F).d -CPPFLAGS += -MD -MP -MF .dep/$(@F).d - -# Paths where to search for sources -VPATH = $(SRCPATHS) - -# -# Makefile rules -# - -all: PRE_MAKE_ALL_RULE_HOOK $(OBJS) $(OUTFILES) POST_MAKE_ALL_RULE_HOOK - -PRE_MAKE_ALL_RULE_HOOK: - -POST_MAKE_ALL_RULE_HOOK: - -$(OBJS): | $(BUILDDIR) $(OBJDIR) $(LSTDIR) - -$(BUILDDIR): -ifneq ($(USE_VERBOSE_COMPILE),yes) - @echo Compiler Options - @echo $(CC) -c $(CFLAGS) -I. $(IINCDIR) main.c -o main.o - @echo -endif - @mkdir -p $(BUILDDIR) - -$(OBJDIR): - @mkdir -p $(OBJDIR) - -$(LSTDIR): - @mkdir -p $(LSTDIR) - -$(CPPOBJS) : $(OBJDIR)/%.o : %.cpp Makefile -ifeq ($(USE_VERBOSE_COMPILE),yes) - @echo - $(CPPC) -c $(CPPFLAGS) -I. $(IINCDIR) $< -o $@ -else - @echo Compiling $( $@ - $(SZ) $< -else - @echo Creating $@ - @$(OD) $(ODFLAGS) $< > $@ - @echo - @$(SZ) $< -endif - -%.list: %.elf $(LDSCRIPT) -ifeq ($(USE_VERBOSE_COMPILE),yes) - $(OD) -S $< > $@ -else - @echo Creating $@ - @$(OD) -S $< > $@ - @echo Done -endif - -lib: $(OBJS) $(BUILDDIR)/lib$(PROJECT).a - -$(BUILDDIR)/lib$(PROJECT).a: $(OBJS) - @$(AR) -r $@ $^ - @echo - @echo Done - -clean: - @echo Cleaning - -rm -fR .dep $(BUILDDIR) - @echo - @echo Done - -# -# Include the dependency files, should be the last of the makefile -# --include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) - -# *** EOF *** diff --git a/os/common/ports/e200/compilers/GCC/rules_z0.ld b/os/common/ports/e200/compilers/GCC/rules_z0.ld deleted file mode 100644 index 7474fcb4f..000000000 --- a/os/common/ports/e200/compilers/GCC/rules_z0.ld +++ /dev/null @@ -1,162 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -__ram_size__ = LENGTH(ram); -__ram_start__ = ORIGIN(ram); -__ram_end__ = ORIGIN(ram) + LENGTH(ram); - -ENTRY(_reset_address) - -SECTIONS -{ - . = ORIGIN(flash); - .boot0 : ALIGN(16) SUBALIGN(16) - { - KEEP(*(.boot)) - } > flash - - .boot1 : ALIGN(16) SUBALIGN(16) - { - KEEP(*(.handlers)) - KEEP(*(.crt0)) - /* The vectors table requires a 2kB alignment.*/ - . = ALIGN(0x800); - KEEP(*(.vectors)) - /* The IVPR register requires a 4kB alignment.*/ - . = ALIGN(0x1000); - __ivpr_base__ = .; - KEEP(*(.ivors)) - } > flash - - constructors : ALIGN(4) SUBALIGN(4) - { - PROVIDE(__init_array_start = .); - KEEP(*(SORT(.init_array.*))) - KEEP(*(.init_array)) - PROVIDE(__init_array_end = .); - } > flash - - destructors : ALIGN(4) SUBALIGN(4) - { - PROVIDE(__fini_array_start = .); - KEEP(*(.fini_array)) - KEEP(*(SORT(.fini_array.*))) - PROVIDE(__fini_array_end = .); - } > flash - - .text_vle : ALIGN(16) SUBALIGN(16) - { - *(.text_vle) - *(.text_vle.*) - *(.gnu.linkonce.t_vle.*) - } > flash - - .text : ALIGN(16) SUBALIGN(16) - { - *(.text) - *(.text.*) - *(.gnu.linkonce.t.*) - } > flash - - .rodata : ALIGN(16) SUBALIGN(16) - { - *(.glue_7t) - *(.glue_7) - *(.gcc*) - *(.rodata) - *(.rodata.*) - *(.rodata1) - } > flash - - .sdata2 : ALIGN(16) SUBALIGN(16) - { - __sdata2_start__ = . + 0x8000; - *(.sdata2) - *(.sdata2.*) - *(.gnu.linkonce.s2.*) - *(.sbss2) - *(.sbss2.*) - *(.gnu.linkonce.sb2.*) - } > flash - - .eh_frame_hdr : - { - *(.eh_frame_hdr) - } > flash - - .eh_frame : ONLY_IF_RO - { - *(.eh_frame) - } > flash - - .romdata : ALIGN(16) SUBALIGN(16) - { - __romdata_start__ = .; - } > flash - - .stacks : ALIGN(16) SUBALIGN(16) - { - . = ALIGN(8); - __irq_stack_base__ = .; - . += __irq_stack_size__; - . = ALIGN(8); - __irq_stack_end__ = .; - __process_stack_base__ = .; - __main_thread_stack_base__ = .; - . += __process_stack_size__; - . = ALIGN(8); - __process_stack_end__ = .; - __main_thread_stack_end__ = .; - } > ram - - .data : AT(__romdata_start__) - { - . = ALIGN(4); - __data_start__ = .; - *(.data) - *(.data.*) - *(.gnu.linkonce.d.*) - __sdata_start__ = . + 0x8000; - *(.sdata) - *(.sdata.*) - *(.gnu.linkonce.s.*) - __data_end__ = .; - } > ram - - .sbss : - { - __bss_start__ = .; - *(.sbss) - *(.sbss.*) - *(.gnu.linkonce.sb.*) - *(.scommon) - } > ram - - .bss : - { - *(.bss) - *(.bss.*) - *(.gnu.linkonce.b.*) - *(COMMON) - __bss_end__ = .; - } > ram - - __heap_base__ = __bss_end__; - __heap_end__ = __ram_end__; -} diff --git a/os/common/ports/e200/compilers/GCC/rules_z3.ld b/os/common/ports/e200/compilers/GCC/rules_z3.ld deleted file mode 100644 index a73e3b757..000000000 --- a/os/common/ports/e200/compilers/GCC/rules_z3.ld +++ /dev/null @@ -1,159 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -__ram_size__ = LENGTH(ram); -__ram_start__ = ORIGIN(ram); -__ram_end__ = ORIGIN(ram) + LENGTH(ram); - -ENTRY(_reset_address) - -SECTIONS -{ - . = ORIGIN(flash); - .boot0 : ALIGN(16) SUBALIGN(16) - { - __ivpr_base__ = .; - KEEP(*(.boot)) - } > flash - - .boot1 : ALIGN(16) SUBALIGN(16) - { - KEEP(*(.handlers)) - KEEP(*(.crt0)) - /* The vectors table requires a 2kB alignment.*/ - . = ALIGN(0x800); - KEEP(*(.vectors)) - } > flash - - constructors : ALIGN(4) SUBALIGN(4) - { - PROVIDE(__init_array_start = .); - KEEP(*(SORT(.init_array.*))) - KEEP(*(.init_array)) - PROVIDE(__init_array_end = .); - } > flash - - destructors : ALIGN(4) SUBALIGN(4) - { - PROVIDE(__fini_array_start = .); - KEEP(*(.fini_array)) - KEEP(*(SORT(.fini_array.*))) - PROVIDE(__fini_array_end = .); - } > flash - - .text_vle : ALIGN(16) SUBALIGN(16) - { - *(.text_vle) - *(.text_vle.*) - *(.gnu.linkonce.t_vle.*) - } > flash - - .text : ALIGN(16) SUBALIGN(16) - { - *(.text) - *(.text.*) - *(.gnu.linkonce.t.*) - } > flash - - .rodata : ALIGN(16) SUBALIGN(16) - { - *(.glue_7t) - *(.glue_7) - *(.gcc*) - *(.rodata) - *(.rodata.*) - *(.rodata1) - } > flash - - .sdata2 : ALIGN(16) SUBALIGN(16) - { - __sdata2_start__ = . + 0x8000; - *(.sdata2) - *(.sdata2.*) - *(.gnu.linkonce.s2.*) - *(.sbss2) - *(.sbss2.*) - *(.gnu.linkonce.sb2.*) - } > flash - - .eh_frame_hdr : - { - *(.eh_frame_hdr) - } > flash - - .eh_frame : ONLY_IF_RO - { - *(.eh_frame) - } > flash - - .romdata : ALIGN(16) SUBALIGN(16) - { - __romdata_start__ = .; - } > flash - - .stacks : ALIGN(16) SUBALIGN(16) - { - . = ALIGN(8); - __irq_stack_base__ = .; - . += __irq_stack_size__; - . = ALIGN(8); - __irq_stack_end__ = .; - __process_stack_base__ = .; - __main_thread_stack_base__ = .; - . += __process_stack_size__; - . = ALIGN(8); - __process_stack_end__ = .; - __main_thread_stack_end__ = .; - } > ram - - .data : AT(__romdata_start__) - { - . = ALIGN(4); - __data_start__ = .; - *(.data) - *(.data.*) - *(.gnu.linkonce.d.*) - __sdata_start__ = . + 0x8000; - *(.sdata) - *(.sdata.*) - *(.gnu.linkonce.s.*) - __data_end__ = .; - } > ram - - .sbss : - { - __bss_start__ = .; - *(.sbss) - *(.sbss.*) - *(.gnu.linkonce.sb.*) - *(.scommon) - } > ram - - .bss : - { - *(.bss) - *(.bss.*) - *(.gnu.linkonce.b.*) - *(COMMON) - __bss_end__ = .; - } > ram - - __heap_base__ = __bss_end__; - __heap_end__ = __ram_end__; -} diff --git a/os/common/ports/e200/compilers/GCC/rules_z4.ld b/os/common/ports/e200/compilers/GCC/rules_z4.ld deleted file mode 100644 index a73e3b757..000000000 --- a/os/common/ports/e200/compilers/GCC/rules_z4.ld +++ /dev/null @@ -1,159 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -__ram_size__ = LENGTH(ram); -__ram_start__ = ORIGIN(ram); -__ram_end__ = ORIGIN(ram) + LENGTH(ram); - -ENTRY(_reset_address) - -SECTIONS -{ - . = ORIGIN(flash); - .boot0 : ALIGN(16) SUBALIGN(16) - { - __ivpr_base__ = .; - KEEP(*(.boot)) - } > flash - - .boot1 : ALIGN(16) SUBALIGN(16) - { - KEEP(*(.handlers)) - KEEP(*(.crt0)) - /* The vectors table requires a 2kB alignment.*/ - . = ALIGN(0x800); - KEEP(*(.vectors)) - } > flash - - constructors : ALIGN(4) SUBALIGN(4) - { - PROVIDE(__init_array_start = .); - KEEP(*(SORT(.init_array.*))) - KEEP(*(.init_array)) - PROVIDE(__init_array_end = .); - } > flash - - destructors : ALIGN(4) SUBALIGN(4) - { - PROVIDE(__fini_array_start = .); - KEEP(*(.fini_array)) - KEEP(*(SORT(.fini_array.*))) - PROVIDE(__fini_array_end = .); - } > flash - - .text_vle : ALIGN(16) SUBALIGN(16) - { - *(.text_vle) - *(.text_vle.*) - *(.gnu.linkonce.t_vle.*) - } > flash - - .text : ALIGN(16) SUBALIGN(16) - { - *(.text) - *(.text.*) - *(.gnu.linkonce.t.*) - } > flash - - .rodata : ALIGN(16) SUBALIGN(16) - { - *(.glue_7t) - *(.glue_7) - *(.gcc*) - *(.rodata) - *(.rodata.*) - *(.rodata1) - } > flash - - .sdata2 : ALIGN(16) SUBALIGN(16) - { - __sdata2_start__ = . + 0x8000; - *(.sdata2) - *(.sdata2.*) - *(.gnu.linkonce.s2.*) - *(.sbss2) - *(.sbss2.*) - *(.gnu.linkonce.sb2.*) - } > flash - - .eh_frame_hdr : - { - *(.eh_frame_hdr) - } > flash - - .eh_frame : ONLY_IF_RO - { - *(.eh_frame) - } > flash - - .romdata : ALIGN(16) SUBALIGN(16) - { - __romdata_start__ = .; - } > flash - - .stacks : ALIGN(16) SUBALIGN(16) - { - . = ALIGN(8); - __irq_stack_base__ = .; - . += __irq_stack_size__; - . = ALIGN(8); - __irq_stack_end__ = .; - __process_stack_base__ = .; - __main_thread_stack_base__ = .; - . += __process_stack_size__; - . = ALIGN(8); - __process_stack_end__ = .; - __main_thread_stack_end__ = .; - } > ram - - .data : AT(__romdata_start__) - { - . = ALIGN(4); - __data_start__ = .; - *(.data) - *(.data.*) - *(.gnu.linkonce.d.*) - __sdata_start__ = . + 0x8000; - *(.sdata) - *(.sdata.*) - *(.gnu.linkonce.s.*) - __data_end__ = .; - } > ram - - .sbss : - { - __bss_start__ = .; - *(.sbss) - *(.sbss.*) - *(.gnu.linkonce.sb.*) - *(.scommon) - } > ram - - .bss : - { - *(.bss) - *(.bss.*) - *(.gnu.linkonce.b.*) - *(COMMON) - __bss_end__ = .; - } > ram - - __heap_base__ = __bss_end__; - __heap_end__ = __ram_end__; -} diff --git a/os/common/ports/e200/compilers/GCC/vectors.h b/os/common/ports/e200/compilers/GCC/vectors.h deleted file mode 100644 index a374a87c7..000000000 --- a/os/common/ports/e200/compilers/GCC/vectors.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file vectors.h - * @brief ISR vector module header. - * - * @addtogroup PPC_GCC_CORE - * @{ - */ - -#ifndef _VECTORS_H_ -#define _VECTORS_H_ - -#include "ppcparams.h" - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/* The following code is not processed when the file is included from an - asm module.*/ -#if !defined(_FROM_ASM_) - -#if !defined(__DOXYGEN__) -extern uint32_t _vectors[PPC_NUM_VECTORS]; -#endif - -#ifdef __cplusplus -extern "C" { -#endif - void _unhandled_irq(void); -#ifdef __cplusplus -} -#endif - -#endif /* !defined(_FROM_ASM_) */ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _VECTORS_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/compilers/GCC/vectors.s b/os/common/ports/e200/compilers/GCC/vectors.s deleted file mode 100644 index e142f1150..000000000 --- a/os/common/ports/e200/compilers/GCC/vectors.s +++ /dev/null @@ -1,2615 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file vectors.s - * @brief SPC56x vectors table. - * - * @addtogroup PPC_GCC_CORE - * @{ - */ - -#define _FROM_ASM_ -#include "ppcparams.h" - -#if defined(VECTORS_RENAMING) -#include "isrs.h" -#endif - -#if !defined(__DOXYGEN__) - - /* Software vectors table. The vectors are accessed from the IVOR4 - handler only. In order to declare an interrupt handler just create - a function withe the same name of a vector, the symbol will - override the weak symbol declared here.*/ - .section .vectors, "ax" - .align 4 - .globl _vectors -_vectors: - .long vector0, vector1, vector2, vector3 -#if PPC_NUM_VECTORS > 4 - .long vector4, vector5, vector6, vector7 -#endif -#if PPC_NUM_VECTORS > 8 - .long vector8, vector9, vector10, vector11 -#endif -#if PPC_NUM_VECTORS > 12 - .long vector12, vector13, vector14, vector15 -#endif -#if PPC_NUM_VECTORS > 16 - .long vector16, vector17, vector18, vector19 -#endif -#if PPC_NUM_VECTORS > 20 - .long vector20, vector21, vector22, vector23 -#endif -#if PPC_NUM_VECTORS > 24 - .long vector24, vector25, vector26, vector27 -#endif -#if PPC_NUM_VECTORS > 28 - .long vector28, vector29, vector30, vector31 -#endif -#if PPC_NUM_VECTORS > 32 - .long vector32, vector33, vector34, vector35 -#endif -#if PPC_NUM_VECTORS > 36 - .long vector36, vector37, vector38, vector39 -#endif -#if PPC_NUM_VECTORS > 40 - .long vector40, vector41, vector42, vector43 -#endif -#if PPC_NUM_VECTORS > 44 - .long vector44, vector45, vector46, vector47 -#endif -#if PPC_NUM_VECTORS > 48 - .long vector48, vector49, vector50, vector51 -#endif -#if PPC_NUM_VECTORS > 52 - .long vector52, vector53, vector54, vector55 -#endif -#if PPC_NUM_VECTORS > 56 - .long vector56, vector57, vector58, vector59 -#endif -#if PPC_NUM_VECTORS > 60 - .long vector60, vector61, vector62, vector63 -#endif -#if PPC_NUM_VECTORS > 64 - .long vector64, vector65, vector66, vector67 -#endif -#if PPC_NUM_VECTORS > 68 - .long vector68, vector69, vector70, vector71 -#endif -#if PPC_NUM_VECTORS > 72 - .long vector72, vector73, vector74, vector75 -#endif -#if PPC_NUM_VECTORS > 76 - .long vector76, vector77, vector78, vector79 -#endif -#if PPC_NUM_VECTORS > 80 - .long vector80, vector81, vector82, vector83 -#endif -#if PPC_NUM_VECTORS > 84 - .long vector84, vector85, vector86, vector87 -#endif -#if PPC_NUM_VECTORS > 88 - .long vector88, vector89, vector90, vector91 -#endif -#if PPC_NUM_VECTORS > 92 - .long vector92, vector93, vector94, vector95 -#endif -#if PPC_NUM_VECTORS > 96 - .long vector96, vector97, vector98, vector99 -#endif -#if PPC_NUM_VECTORS > 100 - .long vector100, vector101, vector102, vector103 -#endif -#if PPC_NUM_VECTORS > 104 - .long vector104, vector105, vector106, vector107 -#endif -#if PPC_NUM_VECTORS > 108 - .long vector108, vector109, vector110, vector111 -#endif -#if PPC_NUM_VECTORS > 112 - .long vector112, vector113, vector114, vector115 -#endif -#if PPC_NUM_VECTORS > 116 - .long vector116, vector117, vector118, vector119 -#endif -#if PPC_NUM_VECTORS > 120 - .long vector120, vector121, vector122, vector123 -#endif -#if PPC_NUM_VECTORS > 124 - .long vector124, vector125, vector126, vector127 -#endif -#if PPC_NUM_VECTORS > 128 - .long vector128, vector129, vector130, vector131 -#endif -#if PPC_NUM_VECTORS > 132 - .long vector132, vector133, vector134, vector135 -#endif -#if PPC_NUM_VECTORS > 136 - .long vector136, vector137, vector138, vector139 -#endif -#if PPC_NUM_VECTORS > 140 - .long vector140, vector141, vector142, vector143 -#endif -#if PPC_NUM_VECTORS > 144 - .long vector144, vector145, vector146, vector147 -#endif -#if PPC_NUM_VECTORS > 148 - .long vector148, vector149, vector150, vector151 -#endif -#if PPC_NUM_VECTORS > 152 - .long vector152, vector153, vector154, vector155 -#endif -#if PPC_NUM_VECTORS > 156 - .long vector156, vector157, vector158, vector159 -#endif -#if PPC_NUM_VECTORS > 160 - .long vector160, vector161, vector162, vector163 -#endif -#if PPC_NUM_VECTORS > 164 - .long vector164, vector165, vector166, vector167 -#endif -#if PPC_NUM_VECTORS > 168 - .long vector168, vector169, vector170, vector171 -#endif -#if PPC_NUM_VECTORS > 172 - .long vector172, vector173, vector174, vector175 -#endif -#if PPC_NUM_VECTORS > 176 - .long vector176, vector177, vector178, vector179 -#endif -#if PPC_NUM_VECTORS > 180 - .long vector180, vector181, vector182, vector183 -#endif -#if PPC_NUM_VECTORS > 184 - .long vector184, vector185, vector186, vector187 -#endif -#if PPC_NUM_VECTORS > 188 - .long vector188, vector189, vector190, vector191 -#endif -#if PPC_NUM_VECTORS > 192 - .long vector192, vector193, vector194, vector195 -#endif -#if PPC_NUM_VECTORS > 196 - .long vector196, vector197, vector198, vector199 -#endif -#if PPC_NUM_VECTORS > 200 - .long vector200, vector201, vector202, vector203 -#endif -#if PPC_NUM_VECTORS > 204 - .long vector204, vector205, vector206, vector207 -#endif -#if PPC_NUM_VECTORS > 208 - .long vector208, vector209, vector210, vector211 -#endif -#if PPC_NUM_VECTORS > 212 - .long vector212, vector213, vector214, vector215 -#endif -#if PPC_NUM_VECTORS > 216 - .long vector216, vector217, vector218, vector219 -#endif -#if PPC_NUM_VECTORS > 220 - .long vector220, vector221, vector222, vector223 -#endif -#if PPC_NUM_VECTORS > 224 - .long vector224, vector225, vector226, vector227 -#endif -#if PPC_NUM_VECTORS > 228 - .long vector228, vector229, vector230, vector231 -#endif -#if PPC_NUM_VECTORS > 232 - .long vector232, vector233, vector234, vector235 -#endif -#if PPC_NUM_VECTORS > 236 - .long vector236, vector237, vector238, vector239 -#endif -#if PPC_NUM_VECTORS > 240 - .long vector240, vector241, vector242, vector243 -#endif -#if PPC_NUM_VECTORS > 244 - .long vector244, vector245, vector246, vector247 -#endif -#if PPC_NUM_VECTORS > 248 - .long vector248, vector249, vector250, vector251 -#endif -#if PPC_NUM_VECTORS > 252 - .long vector252, vector253, vector254, vector255 -#endif -#if PPC_NUM_VECTORS > 256 - .long vector256, vector257, vector258, vector259 -#endif -#if PPC_NUM_VECTORS > 260 - .long vector260, vector261, vector262, vector263 -#endif -#if PPC_NUM_VECTORS > 264 - .long vector264, vector265, vector266, vector267 -#endif -#if PPC_NUM_VECTORS > 268 - .long vector268, vector269, vector270, vector271 -#endif -#if PPC_NUM_VECTORS > 272 - .long vector272, vector273, vector274, vector275 -#endif -#if PPC_NUM_VECTORS > 276 - .long vector276, vector277, vector278, vector279 -#endif -#if PPC_NUM_VECTORS > 280 - .long vector280, vector281, vector282, vector283 -#endif -#if PPC_NUM_VECTORS > 284 - .long vector284, vector285, vector286, vector287 -#endif -#if PPC_NUM_VECTORS > 288 - .long vector288, vector289, vector290, vector291 -#endif -#if PPC_NUM_VECTORS > 292 - .long vector292, vector293, vector294, vector295 -#endif -#if PPC_NUM_VECTORS > 296 - .long vector296, vector297, vector298, vector299 -#endif -#if PPC_NUM_VECTORS > 300 - .long vector300, vector301, vector302, vector303 -#endif -#if PPC_NUM_VECTORS > 304 - .long vector304, vector305, vector306, vector307 -#endif -#if PPC_NUM_VECTORS > 308 - .long vector308, vector309, vector310, vector311 -#endif -#if PPC_NUM_VECTORS > 312 - .long vector312, vector313, vector314, vector315 -#endif -#if PPC_NUM_VECTORS > 316 - .long vector316, vector317, vector318, vector319 -#endif -#if PPC_NUM_VECTORS > 320 - .long vector320, vector321, vector322, vector323 -#endif -#if PPC_NUM_VECTORS > 324 - .long vector324, vector325, vector326, vector327 -#endif -#if PPC_NUM_VECTORS > 328 - .long vector328, vector329, vector330, vector331 -#endif -#if PPC_NUM_VECTORS > 332 - .long vector332, vector333, vector334, vector335 -#endif -#if PPC_NUM_VECTORS > 336 - .long vector336, vector337, vector338, vector339 -#endif -#if PPC_NUM_VECTORS > 340 - .long vector340, vector341, vector342, vector343 -#endif -#if PPC_NUM_VECTORS > 344 - .long vector344, vector345, vector346, vector347 -#endif -#if PPC_NUM_VECTORS > 348 - .long vector348, vector349, vector350, vector351 -#endif -#if PPC_NUM_VECTORS > 352 - .long vector352, vector353, vector354, vector355 -#endif -#if PPC_NUM_VECTORS > 356 - .long vector356, vector357, vector358, vector359 -#endif -#if PPC_NUM_VECTORS > 360 - .long vector360, vector361, vector362, vector363 -#endif -#if PPC_NUM_VECTORS > 364 - .long vector364, vector365, vector366, vector367 -#endif -#if PPC_NUM_VECTORS > 368 - .long vector368, vector369, vector370, vector371 -#endif -#if PPC_NUM_VECTORS > 372 - .long vector372, vector373, vector374, vector375 -#endif -#if PPC_NUM_VECTORS > 376 - .long vector376, vector377, vector378, vector379 -#endif -#if PPC_NUM_VECTORS > 380 - .long vector380, vector381, vector382, vector383 -#endif -#if PPC_NUM_VECTORS > 384 - .long vector384, vector385, vector386, vector387 -#endif -#if PPC_NUM_VECTORS > 388 - .long vector388, vector389, vector390, vector391 -#endif -#if PPC_NUM_VECTORS > 392 - .long vector392, vector393, vector394, vector395 -#endif -#if PPC_NUM_VECTORS > 396 - .long vector396, vector397, vector398, vector399 -#endif -#if PPC_NUM_VECTORS > 400 - .long vector400, vector401, vector402, vector403 -#endif -#if PPC_NUM_VECTORS > 404 - .long vector404, vector405, vector406, vector407 -#endif -#if PPC_NUM_VECTORS > 408 - .long vector408, vector409, vector410, vector411 -#endif -#if PPC_NUM_VECTORS > 412 - .long vector412, vector413, vector414, vector415 -#endif -#if PPC_NUM_VECTORS > 416 - .long vector416, vector417, vector418, vector419 -#endif -#if PPC_NUM_VECTORS > 420 - .long vector420, vector421, vector422, vector423 -#endif -#if PPC_NUM_VECTORS > 424 - .long vector424, vector425, vector426, vector427 -#endif -#if PPC_NUM_VECTORS > 428 - .long vector428, vector429, vector430, vector431 -#endif -#if PPC_NUM_VECTORS > 432 - .long vector432, vector433, vector434, vector435 -#endif -#if PPC_NUM_VECTORS > 436 - .long vector436, vector437, vector438, vector439 -#endif -#if PPC_NUM_VECTORS > 440 - .long vector440, vector441, vector442, vector443 -#endif -#if PPC_NUM_VECTORS > 444 - .long vector444, vector445, vector446, vector447 -#endif -#if PPC_NUM_VECTORS > 448 - .long vector448, vector449, vector450, vector451 -#endif -#if PPC_NUM_VECTORS > 452 - .long vector452, vector453, vector454, vector455 -#endif -#if PPC_NUM_VECTORS > 456 - .long vector456, vector457, vector458, vector459 -#endif -#if PPC_NUM_VECTORS > 460 - .long vector460, vector461, vector462, vector463 -#endif -#if PPC_NUM_VECTORS > 464 - .long vector464, vector465, vector466, vector467 -#endif -#if PPC_NUM_VECTORS > 468 - .long vector468, vector469, vector470, vector471 -#endif -#if PPC_NUM_VECTORS > 472 - .long vector472, vector473, vector474, vector475 -#endif -#if PPC_NUM_VECTORS > 476 - .long vector476, vector477, vector478, vector479 -#endif -#if PPC_NUM_VECTORS > 480 - .long vector480, vector481, vector482, vector483 -#endif -#if PPC_NUM_VECTORS > 484 - .long vector484, vector485, vector486, vector487 -#endif -#if PPC_NUM_VECTORS > 488 - .long vector488, vector489, vector490, vector491 -#endif -#if PPC_NUM_VECTORS > 492 - .long vector492, vector493, vector494, vector495 -#endif -#if PPC_NUM_VECTORS > 496 - .long vector496, vector497, vector498, vector499 -#endif -#if PPC_NUM_VECTORS > 500 - .long vector500, vector501, vector502, vector503 -#endif -#if PPC_NUM_VECTORS > 504 - .long vector504, vector505, vector506, vector507 -#endif -#if PPC_NUM_VECTORS > 508 - .long vector508, vector509, vector510, vector511 -#endif -#if PPC_NUM_VECTORS > 512 - .long vector512, vector513, vector514, vector515 -#endif -#if PPC_NUM_VECTORS > 516 - .long vector516, vector517, vector518, vector519 -#endif -#if PPC_NUM_VECTORS > 520 - .long vector520, vector521, vector522, vector523 -#endif -#if PPC_NUM_VECTORS > 524 - .long vector524, vector525, vector526, vector527 -#endif -#if PPC_NUM_VECTORS > 528 - .long vector528, vector529, vector530, vector531 -#endif -#if PPC_NUM_VECTORS > 532 - .long vector532, vector533, vector534, vector535 -#endif -#if PPC_NUM_VECTORS > 536 - .long vector536, vector537, vector538, vector539 -#endif -#if PPC_NUM_VECTORS > 540 - .long vector540, vector541, vector542, vector543 -#endif -#if PPC_NUM_VECTORS > 544 - .long vector544, vector545, vector546, vector547 -#endif -#if PPC_NUM_VECTORS > 548 - .long vector548, vector549, vector550, vector551 -#endif -#if PPC_NUM_VECTORS > 552 - .long vector552, vector553, vector554, vector555 -#endif -#if PPC_NUM_VECTORS > 556 - .long vector556, vector557, vector558, vector559 -#endif -#if PPC_NUM_VECTORS > 560 - .long vector560, vector561, vector562, vector563 -#endif -#if PPC_NUM_VECTORS > 564 - .long vector564, vector565, vector566, vector567 -#endif -#if PPC_NUM_VECTORS > 568 - .long vector568, vector569, vector570, vector571 -#endif -#if PPC_NUM_VECTORS > 572 - .long vector572, vector573, vector574, vector575 -#endif -#if PPC_NUM_VECTORS > 576 - .long vector576, vector577, vector578, vector579 -#endif -#if PPC_NUM_VECTORS > 580 - .long vector580, vector581, vector582, vector583 -#endif -#if PPC_NUM_VECTORS > 584 - .long vector584, vector585, vector586, vector587 -#endif -#if PPC_NUM_VECTORS > 588 - .long vector588, vector589, vector590, vector591 -#endif -#if PPC_NUM_VECTORS > 592 - .long vector592, vector593, vector594, vector595 -#endif -#if PPC_NUM_VECTORS > 596 - .long vector596, vector597, vector598, vector599 -#endif -#if PPC_NUM_VECTORS > 600 - .long vector600, vector601, vector602, vector603 -#endif -#if PPC_NUM_VECTORS > 604 - .long vector604, vector605, vector606, vector607 -#endif -#if PPC_NUM_VECTORS > 608 - .long vector608, vector609, vector610, vector611 -#endif -#if PPC_NUM_VECTORS > 612 - .long vector612, vector613, vector614, vector615 -#endif -#if PPC_NUM_VECTORS > 616 - .long vector616, vector617, vector618, vector619 -#endif -#if PPC_NUM_VECTORS > 620 - .long vector620, vector621, vector622, vector623 -#endif -#if PPC_NUM_VECTORS > 624 - .long vector624, vector625, vector626, vector627 -#endif -#if PPC_NUM_VECTORS > 628 - .long vector628, vector629, vector630, vector631 -#endif -#if PPC_NUM_VECTORS > 632 - .long vector632, vector633, vector634, vector635 -#endif -#if PPC_NUM_VECTORS > 636 - .long vector636, vector637, vector638, vector639 -#endif -#if PPC_NUM_VECTORS > 640 - .long vector640, vector641, vector642, vector643 -#endif -#if PPC_NUM_VECTORS > 644 - .long vector644, vector645, vector646, vector647 -#endif -#if PPC_NUM_VECTORS > 648 - .long vector648, vector649, vector650, vector651 -#endif -#if PPC_NUM_VECTORS > 652 - .long vector652, vector653, vector654, vector655 -#endif -#if PPC_NUM_VECTORS > 656 - .long vector656, vector657, vector658, vector659 -#endif -#if PPC_NUM_VECTORS > 660 - .long vector660, vector661, vector662, vector663 -#endif -#if PPC_NUM_VECTORS > 664 - .long vector664, vector665, vector666, vector667 -#endif -#if PPC_NUM_VECTORS > 668 - .long vector668, vector669, vector670, vector671 -#endif -#if PPC_NUM_VECTORS > 672 - .long vector672, vector673, vector674, vector675 -#endif -#if PPC_NUM_VECTORS > 676 - .long vector676, vector677, vector678, vector679 -#endif -#if PPC_NUM_VECTORS > 680 - .long vector680, vector681, vector682, vector683 -#endif -#if PPC_NUM_VECTORS > 684 - .long vector684, vector685, vector686, vector687 -#endif -#if PPC_NUM_VECTORS > 688 - .long vector688, vector689, vector690, vector691 -#endif -#if PPC_NUM_VECTORS > 692 - .long vector692, vector693, vector694, vector695 -#endif -#if PPC_NUM_VECTORS > 696 - .long vector696, vector697, vector698, vector699 -#endif -#if PPC_NUM_VECTORS > 700 - .long vector700, vector701, vector702, vector703 -#endif -#if PPC_NUM_VECTORS > 704 - .long vector704, vector705, vector706, vector707 -#endif -#if PPC_NUM_VECTORS > 708 - .long vector708, vector709, vector710, vector711 -#endif -#if PPC_NUM_VECTORS > 712 - .long vector712, vector713, vector714, vector715 -#endif -#if PPC_NUM_VECTORS > 716 - .long vector716, vector717, vector718, vector719 -#endif -#if PPC_NUM_VECTORS > 720 - .long vector720, vector721, vector722, vector723 -#endif -#if PPC_NUM_VECTORS > 724 - .long vector724, vector725, vector726, vector727 -#endif -#if PPC_NUM_VECTORS > 728 - .long vector728, vector729, vector730, vector731 -#endif -#if PPC_NUM_VECTORS > 732 - .long vector732, vector733, vector734, vector735 -#endif -#if PPC_NUM_VECTORS > 736 - .long vector736, vector737, vector738, vector739 -#endif -#if PPC_NUM_VECTORS > 740 - .long vector740, vector741, vector742, vector743 -#endif -#if PPC_NUM_VECTORS > 744 - .long vector744, vector745, vector746, vector747 -#endif -#if PPC_NUM_VECTORS > 748 - .long vector748, vector749, vector750, vector751 -#endif -#if PPC_NUM_VECTORS > 752 - .long vector752, vector753, vector754, vector755 -#endif -#if PPC_NUM_VECTORS > 756 - .long vector756, vector757, vector758, vector759 -#endif -#if PPC_NUM_VECTORS > 760 - .long vector760, vector761, vector762, vector763 -#endif -#if PPC_NUM_VECTORS > 764 - .long vector764, vector765, vector766, vector767 -#endif -#if PPC_NUM_VECTORS > 768 - .long vector768, vector769, vector770, vector771 -#endif -#if PPC_NUM_VECTORS > 772 - .long vector772, vector773, vector774, vector775 -#endif -#if PPC_NUM_VECTORS > 776 - .long vector776, vector777, vector778, vector779 -#endif -#if PPC_NUM_VECTORS > 780 - .long vector780, vector781, vector782, vector783 -#endif -#if PPC_NUM_VECTORS > 784 - .long vector784, vector785, vector786, vector787 -#endif -#if PPC_NUM_VECTORS > 788 - .long vector788, vector789, vector790, vector791 -#endif -#if PPC_NUM_VECTORS > 792 - .long vector792, vector793, vector794, vector795 -#endif -#if PPC_NUM_VECTORS > 796 - .long vector796, vector797, vector798, vector799 -#endif -#if PPC_NUM_VECTORS > 800 - .long vector800, vector801, vector802, vector803 -#endif -#if PPC_NUM_VECTORS > 804 - .long vector804, vector805, vector806, vector807 -#endif -#if PPC_NUM_VECTORS > 808 - .long vector808, vector809, vector810, vector811 -#endif -#if PPC_NUM_VECTORS > 812 - .long vector812, vector813, vector814, vector815 -#endif -#if PPC_NUM_VECTORS > 816 - .long vector816, vector817, vector818, vector819 -#endif -#if PPC_NUM_VECTORS > 820 - .long vector820, vector821, vector822, vector823 -#endif -#if PPC_NUM_VECTORS > 824 - .long vector824, vector825, vector826, vector827 -#endif -#if PPC_NUM_VECTORS > 828 - .long vector828, vector829, vector830, vector831 -#endif -#if PPC_NUM_VECTORS > 832 - .long vector832, vector833, vector834, vector835 -#endif -#if PPC_NUM_VECTORS > 836 - .long vector836, vector837, vector838, vector839 -#endif -#if PPC_NUM_VECTORS > 840 - .long vector840, vector841, vector842, vector843 -#endif -#if PPC_NUM_VECTORS > 844 - .long vector844, vector845, vector846, vector847 -#endif -#if PPC_NUM_VECTORS > 848 - .long vector848, vector849, vector850, vector851 -#endif -#if PPC_NUM_VECTORS > 852 - .long vector852, vector853, vector854, vector855 -#endif -#if PPC_NUM_VECTORS > 856 - .long vector856, vector857, vector858, vector859 -#endif -#if PPC_NUM_VECTORS > 860 - .long vector860, vector861, vector862, vector863 -#endif -#if PPC_NUM_VECTORS > 864 - .long vector864, vector865, vector866, vector867 -#endif -#if PPC_NUM_VECTORS > 868 - .long vector868, vector869, vector870, vector871 -#endif -#if PPC_NUM_VECTORS > 872 - .long vector872, vector873, vector874, vector875 -#endif -#if PPC_NUM_VECTORS > 876 - .long vector876, vector877, vector878, vector879 -#endif -#if PPC_NUM_VECTORS > 880 - .long vector880, vector881, vector882, vector883 -#endif -#if PPC_NUM_VECTORS > 884 - .long vector884, vector885, vector886, vector887 -#endif -#if PPC_NUM_VECTORS > 888 - .long vector888, vector889, vector890, vector891 -#endif -#if PPC_NUM_VECTORS > 892 - .long vector892, vector893, vector894, vector895 -#endif -#if PPC_NUM_VECTORS > 896 - .long vector896, vector897, vector898, vector899 -#endif -#if PPC_NUM_VECTORS > 900 - .long vector900, vector901, vector902, vector903 -#endif -#if PPC_NUM_VECTORS > 904 - .long vector904, vector905, vector906, vector907 -#endif -#if PPC_NUM_VECTORS > 908 - .long vector908, vector909, vector910, vector911 -#endif -#if PPC_NUM_VECTORS > 912 - .long vector912, vector913, vector914, vector915 -#endif -#if PPC_NUM_VECTORS > 916 - .long vector916, vector917, vector918, vector919 -#endif -#if PPC_NUM_VECTORS > 920 - .long vector920, vector921, vector922, vector923 -#endif -#if PPC_NUM_VECTORS > 924 - .long vector924, vector925, vector926, vector927 -#endif -#if PPC_NUM_VECTORS > 928 - .long vector928, vector929, vector930, vector931 -#endif -#if PPC_NUM_VECTORS > 932 - .long vector932, vector933, vector934, vector935 -#endif -#if PPC_NUM_VECTORS > 936 - .long vector936, vector937, vector938, vector939 -#endif -#if PPC_NUM_VECTORS > 940 - .long vector940, vector941, vector942, vector943 -#endif -#if PPC_NUM_VECTORS > 944 - .long vector944, vector945, vector946, vector947 -#endif -#if PPC_NUM_VECTORS > 948 - .long vector948, vector949, vector950, vector951 -#endif -#if PPC_NUM_VECTORS > 952 - .long vector952, vector953, vector954, vector955 -#endif -#if PPC_NUM_VECTORS > 956 - .long vector956, vector957, vector958, vector959 -#endif -#if PPC_NUM_VECTORS > 960 - .long vector960, vector961, vector962, vector963 -#endif -#if PPC_NUM_VECTORS > 964 - .long vector964, vector965, vector966, vector967 -#endif -#if PPC_NUM_VECTORS > 968 - .long vector968, vector969, vector970, vector971 -#endif -#if PPC_NUM_VECTORS > 972 - .long vector972, vector973, vector974, vector975 -#endif -#if PPC_NUM_VECTORS > 976 - .long vector976, vector977, vector978, vector979 -#endif -#if PPC_NUM_VECTORS > 980 - .long vector980, vector981, vector982, vector983 -#endif -#if PPC_NUM_VECTORS > 984 - .long vector984, vector985, vector986, vector987 -#endif -#if PPC_NUM_VECTORS > 988 - .long vector988, vector989, vector990, vector991 -#endif -#if PPC_NUM_VECTORS > 992 - .long vector992, vector993, vector994, vector995 -#endif -#if PPC_NUM_VECTORS > 996 - .long vector996, vector997, vector998, vector999 -#endif -#if PPC_NUM_VECTORS > 1000 - .long vector1000, vector1001, vector1002, vector1003 -#endif -#if PPC_NUM_VECTORS > 1004 - .long vector1004, vector1005, vector1006, vector1007 -#endif -#if PPC_NUM_VECTORS > 1008 - .long vector1008, vector1009, vector1010, vector1011 -#endif -#if PPC_NUM_VECTORS > 1012 - .long vector1012, vector1013, vector1014, vector1015 -#endif -#if PPC_NUM_VECTORS > 1016 - .long vector1016, vector1017, vector1018, vector1019 -#endif -#if PPC_NUM_VECTORS > 1020 - .long vector1020, vector1021, vector1022, vector1023 -#endif - - .text - .align 2 - - .weak vector0, vector1, vector2, vector3 -#if PPC_NUM_VECTORS > 4 - .weak vector4, vector5, vector6, vector7 -#endif -#if PPC_NUM_VECTORS > 8 - .weak vector8, vector9, vector10, vector11 -#endif -#if PPC_NUM_VECTORS > 12 - .weak vector12, vector13, vector14, vector15 -#endif -#if PPC_NUM_VECTORS > 16 - .weak vector16, vector17, vector18, vector19 -#endif -#if PPC_NUM_VECTORS > 20 - .weak vector20, vector21, vector22, vector23 -#endif -#if PPC_NUM_VECTORS > 24 - .weak vector24, vector25, vector26, vector27 -#endif -#if PPC_NUM_VECTORS > 28 - .weak vector28, vector29, vector30, vector31 -#endif -#if PPC_NUM_VECTORS > 32 - .weak vector32, vector33, vector34, vector35 -#endif -#if PPC_NUM_VECTORS > 36 - .weak vector36, vector37, vector38, vector39 -#endif -#if PPC_NUM_VECTORS > 40 - .weak vector40, vector41, vector42, vector43 -#endif -#if PPC_NUM_VECTORS > 44 - .weak vector44, vector45, vector46, vector47 -#endif -#if PPC_NUM_VECTORS > 48 - .weak vector48, vector49, vector50, vector51 -#endif -#if PPC_NUM_VECTORS > 52 - .weak vector52, vector53, vector54, vector55 -#endif -#if PPC_NUM_VECTORS > 56 - .weak vector56, vector57, vector58, vector59 -#endif -#if PPC_NUM_VECTORS > 60 - .weak vector60, vector61, vector62, vector63 -#endif -#if PPC_NUM_VECTORS > 64 - .weak vector64, vector65, vector66, vector67 -#endif -#if PPC_NUM_VECTORS > 68 - .weak vector68, vector69, vector70, vector71 -#endif -#if PPC_NUM_VECTORS > 72 - .weak vector72, vector73, vector74, vector75 -#endif -#if PPC_NUM_VECTORS > 76 - .weak vector76, vector77, vector78, vector79 -#endif -#if PPC_NUM_VECTORS > 80 - .weak vector80, vector81, vector82, vector83 -#endif -#if PPC_NUM_VECTORS > 84 - .weak vector84, vector85, vector86, vector87 -#endif -#if PPC_NUM_VECTORS > 88 - .weak vector88, vector89, vector90, vector91 -#endif -#if PPC_NUM_VECTORS > 92 - .weak vector92, vector93, vector94, vector95 -#endif -#if PPC_NUM_VECTORS > 96 - .weak vector96, vector97, vector98, vector99 -#endif -#if PPC_NUM_VECTORS > 100 - .weak vector100, vector101, vector102, vector103 -#endif -#if PPC_NUM_VECTORS > 104 - .weak vector104, vector105, vector106, vector107 -#endif -#if PPC_NUM_VECTORS > 108 - .weak vector108, vector109, vector110, vector111 -#endif -#if PPC_NUM_VECTORS > 112 - .weak vector112, vector113, vector114, vector115 -#endif -#if PPC_NUM_VECTORS > 116 - .weak vector116, vector117, vector118, vector119 -#endif -#if PPC_NUM_VECTORS > 120 - .weak vector120, vector121, vector122, vector123 -#endif -#if PPC_NUM_VECTORS > 124 - .weak vector124, vector125, vector126, vector127 -#endif -#if PPC_NUM_VECTORS > 128 - .weak vector128, vector129, vector130, vector131 -#endif -#if PPC_NUM_VECTORS > 132 - .weak vector132, vector133, vector134, vector135 -#endif -#if PPC_NUM_VECTORS > 136 - .weak vector136, vector137, vector138, vector139 -#endif -#if PPC_NUM_VECTORS > 140 - .weak vector140, vector141, vector142, vector143 -#endif -#if PPC_NUM_VECTORS > 144 - .weak vector144, vector145, vector146, vector147 -#endif -#if PPC_NUM_VECTORS > 148 - .weak vector148, vector149, vector150, vector151 -#endif -#if PPC_NUM_VECTORS > 152 - .weak vector152, vector153, vector154, vector155 -#endif -#if PPC_NUM_VECTORS > 156 - .weak vector156, vector157, vector158, vector159 -#endif -#if PPC_NUM_VECTORS > 160 - .weak vector160, vector161, vector162, vector163 -#endif -#if PPC_NUM_VECTORS > 164 - .weak vector164, vector165, vector166, vector167 -#endif -#if PPC_NUM_VECTORS > 168 - .weak vector168, vector169, vector170, vector171 -#endif -#if PPC_NUM_VECTORS > 172 - .weak vector172, vector173, vector174, vector175 -#endif -#if PPC_NUM_VECTORS > 176 - .weak vector176, vector177, vector178, vector179 -#endif -#if PPC_NUM_VECTORS > 180 - .weak vector180, vector181, vector182, vector183 -#endif -#if PPC_NUM_VECTORS > 184 - .weak vector184, vector185, vector186, vector187 -#endif -#if PPC_NUM_VECTORS > 188 - .weak vector188, vector189, vector190, vector191 -#endif -#if PPC_NUM_VECTORS > 192 - .weak vector192, vector193, vector194, vector195 -#endif -#if PPC_NUM_VECTORS > 196 - .weak vector196, vector197, vector198, vector199 -#endif -#if PPC_NUM_VECTORS > 200 - .weak vector200, vector201, vector202, vector203 -#endif -#if PPC_NUM_VECTORS > 204 - .weak vector204, vector205, vector206, vector207 -#endif -#if PPC_NUM_VECTORS > 208 - .weak vector208, vector209, vector210, vector211 -#endif -#if PPC_NUM_VECTORS > 212 - .weak vector212, vector213, vector214, vector215 -#endif -#if PPC_NUM_VECTORS > 216 - .weak vector216, vector217, vector218, vector219 -#endif -#if PPC_NUM_VECTORS > 220 - .weak vector220, vector221, vector222, vector223 -#endif -#if PPC_NUM_VECTORS > 224 - .weak vector224, vector225, vector226, vector227 -#endif -#if PPC_NUM_VECTORS > 228 - .weak vector228, vector229, vector230, vector231 -#endif -#if PPC_NUM_VECTORS > 232 - .weak vector232, vector233, vector234, vector235 -#endif -#if PPC_NUM_VECTORS > 236 - .weak vector236, vector237, vector238, vector239 -#endif -#if PPC_NUM_VECTORS > 240 - .weak vector240, vector241, vector242, vector243 -#endif -#if PPC_NUM_VECTORS > 244 - .weak vector244, vector245, vector246, vector247 -#endif -#if PPC_NUM_VECTORS > 248 - .weak vector248, vector249, vector250, vector251 -#endif -#if PPC_NUM_VECTORS > 252 - .weak vector252, vector253, vector254, vector255 -#endif -#if PPC_NUM_VECTORS > 256 - .weak vector256, vector257, vector258, vector259 -#endif -#if PPC_NUM_VECTORS > 260 - .weak vector260, vector261, vector262, vector263 -#endif -#if PPC_NUM_VECTORS > 264 - .weak vector264, vector265, vector266, vector267 -#endif -#if PPC_NUM_VECTORS > 268 - .weak vector268, vector269, vector270, vector271 -#endif -#if PPC_NUM_VECTORS > 272 - .weak vector272, vector273, vector274, vector275 -#endif -#if PPC_NUM_VECTORS > 276 - .weak vector276, vector277, vector278, vector279 -#endif -#if PPC_NUM_VECTORS > 280 - .weak vector280, vector281, vector282, vector283 -#endif -#if PPC_NUM_VECTORS > 284 - .weak vector284, vector285, vector286, vector287 -#endif -#if PPC_NUM_VECTORS > 288 - .weak vector288, vector289, vector290, vector291 -#endif -#if PPC_NUM_VECTORS > 292 - .weak vector292, vector293, vector294, vector295 -#endif -#if PPC_NUM_VECTORS > 296 - .weak vector296, vector297, vector298, vector299 -#endif -#if PPC_NUM_VECTORS > 300 - .weak vector300, vector301, vector302, vector303 -#endif -#if PPC_NUM_VECTORS > 304 - .weak vector304, vector305, vector306, vector307 -#endif -#if PPC_NUM_VECTORS > 308 - .weak vector308, vector309, vector310, vector311 -#endif -#if PPC_NUM_VECTORS > 312 - .weak vector312, vector313, vector314, vector315 -#endif -#if PPC_NUM_VECTORS > 316 - .weak vector316, vector317, vector318, vector319 -#endif -#if PPC_NUM_VECTORS > 320 - .weak vector320, vector321, vector322, vector323 -#endif -#if PPC_NUM_VECTORS > 324 - .weak vector324, vector325, vector326, vector327 -#endif -#if PPC_NUM_VECTORS > 328 - .weak vector328, vector329, vector330, vector331 -#endif -#if PPC_NUM_VECTORS > 332 - .weak vector332, vector333, vector334, vector335 -#endif -#if PPC_NUM_VECTORS > 336 - .weak vector336, vector337, vector338, vector339 -#endif -#if PPC_NUM_VECTORS > 340 - .weak vector340, vector341, vector342, vector343 -#endif -#if PPC_NUM_VECTORS > 344 - .weak vector344, vector345, vector346, vector347 -#endif -#if PPC_NUM_VECTORS > 348 - .weak vector348, vector349, vector350, vector351 -#endif -#if PPC_NUM_VECTORS > 352 - .weak vector352, vector353, vector354, vector355 -#endif -#if PPC_NUM_VECTORS > 356 - .weak vector356, vector357, vector358, vector359 -#endif -#if PPC_NUM_VECTORS > 360 - .weak vector360, vector361, vector362, vector363 -#endif -#if PPC_NUM_VECTORS > 364 - .weak vector364, vector365, vector366, vector367 -#endif -#if PPC_NUM_VECTORS > 368 - .weak vector368, vector369, vector370, vector371 -#endif -#if PPC_NUM_VECTORS > 372 - .weak vector372, vector373, vector374, vector375 -#endif -#if PPC_NUM_VECTORS > 376 - .weak vector376, vector377, vector378, vector379 -#endif -#if PPC_NUM_VECTORS > 380 - .weak vector380, vector381, vector382, vector383 -#endif -#if PPC_NUM_VECTORS > 384 - .weak vector384, vector385, vector386, vector387 -#endif -#if PPC_NUM_VECTORS > 388 - .weak vector388, vector389, vector390, vector391 -#endif -#if PPC_NUM_VECTORS > 392 - .weak vector392, vector393, vector394, vector395 -#endif -#if PPC_NUM_VECTORS > 396 - .weak vector396, vector397, vector398, vector399 -#endif -#if PPC_NUM_VECTORS > 400 - .weak vector400, vector401, vector402, vector403 -#endif -#if PPC_NUM_VECTORS > 404 - .weak vector404, vector405, vector406, vector407 -#endif -#if PPC_NUM_VECTORS > 408 - .weak vector408, vector409, vector410, vector411 -#endif -#if PPC_NUM_VECTORS > 412 - .weak vector412, vector413, vector414, vector415 -#endif -#if PPC_NUM_VECTORS > 416 - .weak vector416, vector417, vector418, vector419 -#endif -#if PPC_NUM_VECTORS > 420 - .weak vector420, vector421, vector422, vector423 -#endif -#if PPC_NUM_VECTORS > 424 - .weak vector424, vector425, vector426, vector427 -#endif -#if PPC_NUM_VECTORS > 428 - .weak vector428, vector429, vector430, vector431 -#endif -#if PPC_NUM_VECTORS > 432 - .weak vector432, vector433, vector434, vector435 -#endif -#if PPC_NUM_VECTORS > 436 - .weak vector436, vector437, vector438, vector439 -#endif -#if PPC_NUM_VECTORS > 440 - .weak vector440, vector441, vector442, vector443 -#endif -#if PPC_NUM_VECTORS > 444 - .weak vector444, vector445, vector446, vector447 -#endif -#if PPC_NUM_VECTORS > 448 - .weak vector448, vector449, vector450, vector451 -#endif -#if PPC_NUM_VECTORS > 452 - .weak vector452, vector453, vector454, vector455 -#endif -#if PPC_NUM_VECTORS > 456 - .weak vector456, vector457, vector458, vector459 -#endif -#if PPC_NUM_VECTORS > 460 - .weak vector460, vector461, vector462, vector463 -#endif -#if PPC_NUM_VECTORS > 464 - .weak vector464, vector465, vector466, vector467 -#endif -#if PPC_NUM_VECTORS > 468 - .weak vector468, vector469, vector470, vector471 -#endif -#if PPC_NUM_VECTORS > 472 - .weak vector472, vector473, vector474, vector475 -#endif -#if PPC_NUM_VECTORS > 476 - .weak vector476, vector477, vector478, vector479 -#endif -#if PPC_NUM_VECTORS > 480 - .weak vector480, vector481, vector482, vector483 -#endif -#if PPC_NUM_VECTORS > 484 - .weak vector484, vector485, vector486, vector487 -#endif -#if PPC_NUM_VECTORS > 488 - .weak vector488, vector489, vector490, vector491 -#endif -#if PPC_NUM_VECTORS > 492 - .weak vector492, vector493, vector494, vector495 -#endif -#if PPC_NUM_VECTORS > 496 - .weak vector496, vector497, vector498, vector499 -#endif -#if PPC_NUM_VECTORS > 500 - .weak vector500, vector501, vector502, vector503 -#endif -#if PPC_NUM_VECTORS > 504 - .weak vector504, vector505, vector506, vector507 -#endif -#if PPC_NUM_VECTORS > 508 - .weak vector508, vector509, vector510, vector511 -#endif -#if PPC_NUM_VECTORS > 512 - .weak vector512, vector513, vector514, vector515 -#endif -#if PPC_NUM_VECTORS > 516 - .weak vector516, vector517, vector518, vector519 -#endif -#if PPC_NUM_VECTORS > 520 - .weak vector520, vector521, vector522, vector523 -#endif -#if PPC_NUM_VECTORS > 524 - .weak vector524, vector525, vector526, vector527 -#endif -#if PPC_NUM_VECTORS > 528 - .weak vector528, vector529, vector530, vector531 -#endif -#if PPC_NUM_VECTORS > 532 - .weak vector532, vector533, vector534, vector535 -#endif -#if PPC_NUM_VECTORS > 536 - .weak vector536, vector537, vector538, vector539 -#endif -#if PPC_NUM_VECTORS > 540 - .weak vector540, vector541, vector542, vector543 -#endif -#if PPC_NUM_VECTORS > 544 - .weak vector544, vector545, vector546, vector547 -#endif -#if PPC_NUM_VECTORS > 548 - .weak vector548, vector549, vector550, vector551 -#endif -#if PPC_NUM_VECTORS > 552 - .weak vector552, vector553, vector554, vector555 -#endif -#if PPC_NUM_VECTORS > 556 - .weak vector556, vector557, vector558, vector559 -#endif -#if PPC_NUM_VECTORS > 560 - .weak vector560, vector561, vector562, vector563 -#endif -#if PPC_NUM_VECTORS > 564 - .weak vector564, vector565, vector566, vector567 -#endif -#if PPC_NUM_VECTORS > 568 - .weak vector568, vector569, vector570, vector571 -#endif -#if PPC_NUM_VECTORS > 572 - .weak vector572, vector573, vector574, vector575 -#endif -#if PPC_NUM_VECTORS > 576 - .weak vector576, vector577, vector578, vector579 -#endif -#if PPC_NUM_VECTORS > 580 - .weak vector580, vector581, vector582, vector583 -#endif -#if PPC_NUM_VECTORS > 584 - .weak vector584, vector585, vector586, vector587 -#endif -#if PPC_NUM_VECTORS > 588 - .weak vector588, vector589, vector590, vector591 -#endif -#if PPC_NUM_VECTORS > 592 - .weak vector592, vector593, vector594, vector595 -#endif -#if PPC_NUM_VECTORS > 596 - .weak vector596, vector597, vector598, vector599 -#endif -#if PPC_NUM_VECTORS > 600 - .weak vector600, vector601, vector602, vector603 -#endif -#if PPC_NUM_VECTORS > 604 - .weak vector604, vector605, vector606, vector607 -#endif -#if PPC_NUM_VECTORS > 608 - .weak vector608, vector609, vector610, vector611 -#endif -#if PPC_NUM_VECTORS > 612 - .weak vector612, vector613, vector614, vector615 -#endif -#if PPC_NUM_VECTORS > 616 - .weak vector616, vector617, vector618, vector619 -#endif -#if PPC_NUM_VECTORS > 620 - .weak vector620, vector621, vector622, vector623 -#endif -#if PPC_NUM_VECTORS > 624 - .weak vector624, vector625, vector626, vector627 -#endif -#if PPC_NUM_VECTORS > 628 - .weak vector628, vector629, vector630, vector631 -#endif -#if PPC_NUM_VECTORS > 632 - .weak vector632, vector633, vector634, vector635 -#endif -#if PPC_NUM_VECTORS > 636 - .weak vector636, vector637, vector638, vector639 -#endif -#if PPC_NUM_VECTORS > 640 - .weak vector640, vector641, vector642, vector643 -#endif -#if PPC_NUM_VECTORS > 644 - .weak vector644, vector645, vector646, vector647 -#endif -#if PPC_NUM_VECTORS > 648 - .weak vector648, vector649, vector650, vector651 -#endif -#if PPC_NUM_VECTORS > 652 - .weak vector652, vector653, vector654, vector655 -#endif -#if PPC_NUM_VECTORS > 656 - .weak vector656, vector657, vector658, vector659 -#endif -#if PPC_NUM_VECTORS > 660 - .weak vector660, vector661, vector662, vector663 -#endif -#if PPC_NUM_VECTORS > 664 - .weak vector664, vector665, vector666, vector667 -#endif -#if PPC_NUM_VECTORS > 668 - .weak vector668, vector669, vector670, vector671 -#endif -#if PPC_NUM_VECTORS > 672 - .weak vector672, vector673, vector674, vector675 -#endif -#if PPC_NUM_VECTORS > 676 - .weak vector676, vector677, vector678, vector679 -#endif -#if PPC_NUM_VECTORS > 680 - .weak vector680, vector681, vector682, vector683 -#endif -#if PPC_NUM_VECTORS > 684 - .weak vector684, vector685, vector686, vector687 -#endif -#if PPC_NUM_VECTORS > 688 - .weak vector688, vector689, vector690, vector691 -#endif -#if PPC_NUM_VECTORS > 692 - .weak vector692, vector693, vector694, vector695 -#endif -#if PPC_NUM_VECTORS > 696 - .weak vector696, vector697, vector698, vector699 -#endif -#if PPC_NUM_VECTORS > 700 - .weak vector700, vector701, vector702, vector703 -#endif -#if PPC_NUM_VECTORS > 704 - .weak vector704, vector705, vector706, vector707 -#endif -#if PPC_NUM_VECTORS > 708 - .weak vector708, vector709, vector710, vector711 -#endif -#if PPC_NUM_VECTORS > 712 - .weak vector712, vector713, vector714, vector715 -#endif -#if PPC_NUM_VECTORS > 716 - .weak vector716, vector717, vector718, vector719 -#endif -#if PPC_NUM_VECTORS > 720 - .weak vector720, vector721, vector722, vector723 -#endif -#if PPC_NUM_VECTORS > 724 - .weak vector724, vector725, vector726, vector727 -#endif -#if PPC_NUM_VECTORS > 728 - .weak vector728, vector729, vector730, vector731 -#endif -#if PPC_NUM_VECTORS > 732 - .weak vector732, vector733, vector734, vector735 -#endif -#if PPC_NUM_VECTORS > 736 - .weak vector736, vector737, vector738, vector739 -#endif -#if PPC_NUM_VECTORS > 740 - .weak vector740, vector741, vector742, vector743 -#endif -#if PPC_NUM_VECTORS > 744 - .weak vector744, vector745, vector746, vector747 -#endif -#if PPC_NUM_VECTORS > 748 - .weak vector748, vector749, vector750, vector751 -#endif -#if PPC_NUM_VECTORS > 752 - .weak vector752, vector753, vector754, vector755 -#endif -#if PPC_NUM_VECTORS > 756 - .weak vector756, vector757, vector758, vector759 -#endif -#if PPC_NUM_VECTORS > 760 - .weak vector760, vector761, vector762, vector763 -#endif -#if PPC_NUM_VECTORS > 764 - .weak vector764, vector765, vector766, vector767 -#endif -#if PPC_NUM_VECTORS > 768 - .weak vector768, vector769, vector770, vector771 -#endif -#if PPC_NUM_VECTORS > 772 - .weak vector772, vector773, vector774, vector775 -#endif -#if PPC_NUM_VECTORS > 776 - .weak vector776, vector777, vector778, vector779 -#endif -#if PPC_NUM_VECTORS > 780 - .weak vector780, vector781, vector782, vector783 -#endif -#if PPC_NUM_VECTORS > 784 - .weak vector784, vector785, vector786, vector787 -#endif -#if PPC_NUM_VECTORS > 788 - .weak vector788, vector789, vector790, vector791 -#endif -#if PPC_NUM_VECTORS > 792 - .weak vector792, vector793, vector794, vector795 -#endif -#if PPC_NUM_VECTORS > 796 - .weak vector796, vector797, vector798, vector799 -#endif -#if PPC_NUM_VECTORS > 800 - .weak vector800, vector801, vector802, vector803 -#endif -#if PPC_NUM_VECTORS > 804 - .weak vector804, vector805, vector806, vector807 -#endif -#if PPC_NUM_VECTORS > 808 - .weak vector808, vector809, vector810, vector811 -#endif -#if PPC_NUM_VECTORS > 812 - .weak vector812, vector813, vector814, vector815 -#endif -#if PPC_NUM_VECTORS > 816 - .weak vector816, vector817, vector818, vector819 -#endif -#if PPC_NUM_VECTORS > 820 - .weak vector820, vector821, vector822, vector823 -#endif -#if PPC_NUM_VECTORS > 824 - .weak vector824, vector825, vector826, vector827 -#endif -#if PPC_NUM_VECTORS > 828 - .weak vector828, vector829, vector830, vector831 -#endif -#if PPC_NUM_VECTORS > 832 - .weak vector832, vector833, vector834, vector835 -#endif -#if PPC_NUM_VECTORS > 836 - .weak vector836, vector837, vector838, vector839 -#endif -#if PPC_NUM_VECTORS > 840 - .weak vector840, vector841, vector842, vector843 -#endif -#if PPC_NUM_VECTORS > 844 - .weak vector844, vector845, vector846, vector847 -#endif -#if PPC_NUM_VECTORS > 848 - .weak vector848, vector849, vector850, vector851 -#endif -#if PPC_NUM_VECTORS > 852 - .weak vector852, vector853, vector854, vector855 -#endif -#if PPC_NUM_VECTORS > 856 - .weak vector856, vector857, vector858, vector859 -#endif -#if PPC_NUM_VECTORS > 860 - .weak vector860, vector861, vector862, vector863 -#endif -#if PPC_NUM_VECTORS > 864 - .weak vector864, vector865, vector866, vector867 -#endif -#if PPC_NUM_VECTORS > 868 - .weak vector868, vector869, vector870, vector871 -#endif -#if PPC_NUM_VECTORS > 872 - .weak vector872, vector873, vector874, vector875 -#endif -#if PPC_NUM_VECTORS > 876 - .weak vector876, vector877, vector878, vector879 -#endif -#if PPC_NUM_VECTORS > 880 - .weak vector880, vector881, vector882, vector883 -#endif -#if PPC_NUM_VECTORS > 884 - .weak vector884, vector885, vector886, vector887 -#endif -#if PPC_NUM_VECTORS > 888 - .weak vector888, vector889, vector890, vector891 -#endif -#if PPC_NUM_VECTORS > 892 - .weak vector892, vector893, vector894, vector895 -#endif -#if PPC_NUM_VECTORS > 896 - .weak vector896, vector897, vector898, vector899 -#endif -#if PPC_NUM_VECTORS > 900 - .weak vector900, vector901, vector902, vector903 -#endif -#if PPC_NUM_VECTORS > 904 - .weak vector904, vector905, vector906, vector907 -#endif -#if PPC_NUM_VECTORS > 908 - .weak vector908, vector909, vector910, vector911 -#endif -#if PPC_NUM_VECTORS > 912 - .weak vector912, vector913, vector914, vector915 -#endif -#if PPC_NUM_VECTORS > 916 - .weak vector916, vector917, vector918, vector919 -#endif -#if PPC_NUM_VECTORS > 920 - .weak vector920, vector921, vector922, vector923 -#endif -#if PPC_NUM_VECTORS > 924 - .weak vector924, vector925, vector926, vector927 -#endif -#if PPC_NUM_VECTORS > 928 - .weak vector928, vector929, vector930, vector931 -#endif -#if PPC_NUM_VECTORS > 932 - .weak vector932, vector933, vector934, vector935 -#endif -#if PPC_NUM_VECTORS > 936 - .weak vector936, vector937, vector938, vector939 -#endif -#if PPC_NUM_VECTORS > 940 - .weak vector940, vector941, vector942, vector943 -#endif -#if PPC_NUM_VECTORS > 944 - .weak vector944, vector945, vector946, vector947 -#endif -#if PPC_NUM_VECTORS > 948 - .weak vector948, vector949, vector950, vector951 -#endif -#if PPC_NUM_VECTORS > 952 - .weak vector952, vector953, vector954, vector955 -#endif -#if PPC_NUM_VECTORS > 956 - .weak vector956, vector957, vector958, vector959 -#endif -#if PPC_NUM_VECTORS > 960 - .weak vector960, vector961, vector962, vector963 -#endif -#if PPC_NUM_VECTORS > 964 - .weak vector964, vector965, vector966, vector967 -#endif -#if PPC_NUM_VECTORS > 968 - .weak vector968, vector969, vector970, vector971 -#endif -#if PPC_NUM_VECTORS > 972 - .weak vector972, vector973, vector974, vector975 -#endif -#if PPC_NUM_VECTORS > 976 - .weak vector976, vector977, vector978, vector979 -#endif -#if PPC_NUM_VECTORS > 980 - .weak vector980, vector981, vector982, vector983 -#endif -#if PPC_NUM_VECTORS > 984 - .weak vector984, vector985, vector986, vector987 -#endif -#if PPC_NUM_VECTORS > 988 - .weak vector988, vector989, vector990, vector991 -#endif -#if PPC_NUM_VECTORS > 992 - .weak vector992, vector993, vector994, vector995 -#endif -#if PPC_NUM_VECTORS > 996 - .weak vector996, vector997, vector998, vector999 -#endif -#if PPC_NUM_VECTORS > 1000 - .weak vector1000, vector1001, vector1002, vector1003 -#endif -#if PPC_NUM_VECTORS > 1004 - .weak vector1004, vector1005, vector1006, vector1007 -#endif -#if PPC_NUM_VECTORS > 1008 - .weak vector1008, vector1009, vector1010, vector1011 -#endif -#if PPC_NUM_VECTORS > 1012 - .weak vector1012, vector1013, vector1014, vector1015 -#endif -#if PPC_NUM_VECTORS > 1016 - .weak vector1016, vector1017, vector1018, vector1019 -#endif -#if PPC_NUM_VECTORS > 1020 - .weak vector1020, vector1021, vector1022, vector1023 -#endif - -vector0: -vector1: -vector2: -vector3: -vector4: -vector5: -vector6: -vector7: -vector8: -vector9: -vector10: -vector11: -vector12: -vector13: -vector14: -vector15: -vector16: -vector17: -vector18: -vector19: -vector20: -vector21: -vector22: -vector23: -vector24: -vector25: -vector26: -vector27: -vector28: -vector29: -vector30: -vector31: -vector32: -vector33: -vector34: -vector35: -vector36: -vector37: -vector38: -vector39: -vector40: -vector41: -vector42: -vector43: -vector44: -vector45: -vector46: -vector47: -vector48: -vector49: -vector50: -vector51: -vector52: -vector53: -vector54: -vector55: -vector56: -vector57: -vector58: -vector59: -vector60: -vector61: -vector62: -vector63: -vector64: -vector65: -vector66: -vector67: -vector68: -vector69: -vector70: -vector71: -vector72: -vector73: -vector74: -vector75: -vector76: -vector77: -vector78: -vector79: -vector80: -vector81: -vector82: -vector83: -vector84: -vector85: -vector86: -vector87: -vector88: -vector89: -vector90: -vector91: -vector92: -vector93: -vector94: -vector95: -vector96: -vector97: -vector98: -vector99: -vector100: -vector101: -vector102: -vector103: -vector104: -vector105: -vector106: -vector107: -vector108: -vector109: -vector110: -vector111: -vector112: -vector113: -vector114: -vector115: -vector116: -vector117: -vector118: -vector119: -vector120: -vector121: -vector122: -vector123: -vector124: -vector125: -vector126: -vector127: -vector128: -vector129: -vector130: -vector131: -vector132: -vector133: -vector134: -vector135: -vector136: -vector137: -vector138: -vector139: -vector140: -vector141: -vector142: -vector143: -vector144: -vector145: -vector146: -vector147: -vector148: -vector149: -vector150: -vector151: -vector152: -vector153: -vector154: -vector155: -vector156: -vector157: -vector158: -vector159: -vector160: -vector161: -vector162: -vector163: -vector164: -vector165: -vector166: -vector167: -vector168: -vector169: -vector170: -vector171: -vector172: -vector173: -vector174: -vector175: -vector176: -vector177: -vector178: -vector179: -vector180: -vector181: -vector182: -vector183: -vector184: -vector185: -vector186: -vector187: -vector188: -vector189: -vector190: -vector191: -vector192: -vector193: -vector194: -vector195: -vector196: -vector197: -vector198: -vector199: -vector200: -vector201: -vector202: -vector203: -vector204: -vector205: -vector206: -vector207: -vector208: -vector209: -vector210: -vector211: -vector212: -vector213: -vector214: -vector215: -vector216: -vector217: -vector218: -vector219: -vector220: -vector221: -vector222: -vector223: -vector224: -vector225: -vector226: -vector227: -vector228: -vector229: -vector230: -vector231: -vector232: -vector233: -vector234: -vector235: -vector236: -vector237: -vector238: -vector239: -vector240: -vector241: -vector242: -vector243: -vector244: -vector245: -vector246: -vector247: -vector248: -vector249: -vector250: -vector251: -vector252: -vector253: -vector254: -vector255: -vector256: -vector257: -vector258: -vector259: -vector260: -vector261: -vector262: -vector263: -vector264: -vector265: -vector266: -vector267: -vector268: -vector269: -vector270: -vector271: -vector272: -vector273: -vector274: -vector275: -vector276: -vector277: -vector278: -vector279: -vector280: -vector281: -vector282: -vector283: -vector284: -vector285: -vector286: -vector287: -vector288: -vector289: -vector290: -vector291: -vector292: -vector293: -vector294: -vector295: -vector296: -vector297: -vector298: -vector299: -vector300: -vector301: -vector302: -vector303: -vector304: -vector305: -vector306: -vector307: -vector308: -vector309: -vector310: -vector311: -vector312: -vector313: -vector314: -vector315: -vector316: -vector317: -vector318: -vector319: -vector320: -vector321: -vector322: -vector323: -vector324: -vector325: -vector326: -vector327: -vector328: -vector329: -vector330: -vector331: -vector332: -vector333: -vector334: -vector335: -vector336: -vector337: -vector338: -vector339: -vector340: -vector341: -vector342: -vector343: -vector344: -vector345: -vector346: -vector347: -vector348: -vector349: -vector350: -vector351: -vector352: -vector353: -vector354: -vector355: -vector356: -vector357: -vector358: -vector359: -vector360: -vector361: -vector362: -vector363: -vector364: -vector365: -vector366: -vector367: -vector368: -vector369: -vector370: -vector371: -vector372: -vector373: -vector374: -vector375: -vector376: -vector377: -vector378: -vector379: -vector380: -vector381: -vector382: -vector383: -vector384: -vector385: -vector386: -vector387: -vector388: -vector389: -vector390: -vector391: -vector392: -vector393: -vector394: -vector395: -vector396: -vector397: -vector398: -vector399: -vector400: -vector401: -vector402: -vector403: -vector404: -vector405: -vector406: -vector407: -vector408: -vector409: -vector410: -vector411: -vector412: -vector413: -vector414: -vector415: -vector416: -vector417: -vector418: -vector419: -vector420: -vector421: -vector422: -vector423: -vector424: -vector425: -vector426: -vector427: -vector428: -vector429: -vector430: -vector431: -vector432: -vector433: -vector434: -vector435: -vector436: -vector437: -vector438: -vector439: -vector440: -vector441: -vector442: -vector443: -vector444: -vector445: -vector446: -vector447: -vector448: -vector449: -vector450: -vector451: -vector452: -vector453: -vector454: -vector455: -vector456: -vector457: -vector458: -vector459: -vector460: -vector461: -vector462: -vector463: -vector464: -vector465: -vector466: -vector467: -vector468: -vector469: -vector470: -vector471: -vector472: -vector473: -vector474: -vector475: -vector476: -vector477: -vector478: -vector479: -vector480: -vector481: -vector482: -vector483: -vector484: -vector485: -vector486: -vector487: -vector488: -vector489: -vector490: -vector491: -vector492: -vector493: -vector494: -vector495: -vector496: -vector497: -vector498: -vector499: -vector500: -vector501: -vector502: -vector503: -vector504: -vector505: -vector506: -vector507: -vector508: -vector509: -vector510: -vector511: -vector512: -vector513: -vector514: -vector515: -vector516: -vector517: -vector518: -vector519: -vector520: -vector521: -vector522: -vector523: -vector524: -vector525: -vector526: -vector527: -vector528: -vector529: -vector530: -vector531: -vector532: -vector533: -vector534: -vector535: -vector536: -vector537: -vector538: -vector539: -vector540: -vector541: -vector542: -vector543: -vector544: -vector545: -vector546: -vector547: -vector548: -vector549: -vector550: -vector551: -vector552: -vector553: -vector554: -vector555: -vector556: -vector557: -vector558: -vector559: -vector560: -vector561: -vector562: -vector563: -vector564: -vector565: -vector566: -vector567: -vector568: -vector569: -vector570: -vector571: -vector572: -vector573: -vector574: -vector575: -vector576: -vector577: -vector578: -vector579: -vector580: -vector581: -vector582: -vector583: -vector584: -vector585: -vector586: -vector587: -vector588: -vector589: -vector590: -vector591: -vector592: -vector593: -vector594: -vector595: -vector596: -vector597: -vector598: -vector599: -vector600: -vector601: -vector602: -vector603: -vector604: -vector605: -vector606: -vector607: -vector608: -vector609: -vector610: -vector611: -vector612: -vector613: -vector614: -vector615: -vector616: -vector617: -vector618: -vector619: -vector620: -vector621: -vector622: -vector623: -vector624: -vector625: -vector626: -vector627: -vector628: -vector629: -vector630: -vector631: -vector632: -vector633: -vector634: -vector635: -vector636: -vector637: -vector638: -vector639: -vector640: -vector641: -vector642: -vector643: -vector644: -vector645: -vector646: -vector647: -vector648: -vector649: -vector650: -vector651: -vector652: -vector653: -vector654: -vector655: -vector656: -vector657: -vector658: -vector659: -vector660: -vector661: -vector662: -vector663: -vector664: -vector665: -vector666: -vector667: -vector668: -vector669: -vector670: -vector671: -vector672: -vector673: -vector674: -vector675: -vector676: -vector677: -vector678: -vector679: -vector680: -vector681: -vector682: -vector683: -vector684: -vector685: -vector686: -vector687: -vector688: -vector689: -vector690: -vector691: -vector692: -vector693: -vector694: -vector695: -vector696: -vector697: -vector698: -vector699: -vector700: -vector701: -vector702: -vector703: -vector704: -vector705: -vector706: -vector707: -vector708: -vector709: -vector710: -vector711: -vector712: -vector713: -vector714: -vector715: -vector716: -vector717: -vector718: -vector719: -vector720: -vector721: -vector722: -vector723: -vector724: -vector725: -vector726: -vector727: -vector728: -vector729: -vector730: -vector731: -vector732: -vector733: -vector734: -vector735: -vector736: -vector737: -vector738: -vector739: -vector740: -vector741: -vector742: -vector743: -vector744: -vector745: -vector746: -vector747: -vector748: -vector749: -vector750: -vector751: -vector752: -vector753: -vector754: -vector755: -vector756: -vector757: -vector758: -vector759: -vector760: -vector761: -vector762: -vector763: -vector764: -vector765: -vector766: -vector767: -vector768: -vector769: -vector770: -vector771: -vector772: -vector773: -vector774: -vector775: -vector776: -vector777: -vector778: -vector779: -vector780: -vector781: -vector782: -vector783: -vector784: -vector785: -vector786: -vector787: -vector788: -vector789: -vector790: -vector791: -vector792: -vector793: -vector794: -vector795: -vector796: -vector797: -vector798: -vector799: -vector800: -vector801: -vector802: -vector803: -vector804: -vector805: -vector806: -vector807: -vector808: -vector809: -vector810: -vector811: -vector812: -vector813: -vector814: -vector815: -vector816: -vector817: -vector818: -vector819: -vector820: -vector821: -vector822: -vector823: -vector824: -vector825: -vector826: -vector827: -vector828: -vector829: -vector830: -vector831: -vector832: -vector833: -vector834: -vector835: -vector836: -vector837: -vector838: -vector839: -vector840: -vector841: -vector842: -vector843: -vector844: -vector845: -vector846: -vector847: -vector848: -vector849: -vector850: -vector851: -vector852: -vector853: -vector854: -vector855: -vector856: -vector857: -vector858: -vector859: -vector860: -vector861: -vector862: -vector863: -vector864: -vector865: -vector866: -vector867: -vector868: -vector869: -vector870: -vector871: -vector872: -vector873: -vector874: -vector875: -vector876: -vector877: -vector878: -vector879: -vector880: -vector881: -vector882: -vector883: -vector884: -vector885: -vector886: -vector887: -vector888: -vector889: -vector890: -vector891: -vector892: -vector893: -vector894: -vector895: -vector896: -vector897: -vector898: -vector899: -vector900: -vector901: -vector902: -vector903: -vector904: -vector905: -vector906: -vector907: -vector908: -vector909: -vector910: -vector911: -vector912: -vector913: -vector914: -vector915: -vector916: -vector917: -vector918: -vector919: -vector920: -vector921: -vector922: -vector923: -vector924: -vector925: -vector926: -vector927: -vector928: -vector929: -vector930: -vector931: -vector932: -vector933: -vector934: -vector935: -vector936: -vector937: -vector938: -vector939: -vector940: -vector941: -vector942: -vector943: -vector944: -vector945: -vector946: -vector947: -vector948: -vector949: -vector950: -vector951: -vector952: -vector953: -vector954: -vector955: -vector956: -vector957: -vector958: -vector959: -vector960: -vector961: -vector962: -vector963: -vector964: -vector965: -vector966: -vector967: -vector968: -vector969: -vector970: -vector971: -vector972: -vector973: -vector974: -vector975: -vector976: -vector977: -vector978: -vector979: -vector980: -vector981: -vector982: -vector983: -vector984: -vector985: -vector986: -vector987: -vector988: -vector989: -vector990: -vector991: -vector992: -vector993: -vector994: -vector995: -vector996: -vector997: -vector998: -vector999: -vector1000: -vector1001: -vector1002: -vector1003: -vector1004: -vector1005: -vector1006: -vector1007: -vector1008: -vector1009: -vector1010: -vector1011: -vector1012: -vector1013: -vector1014: -vector1015: -vector1016: -vector1017: -vector1018: -vector1019: -vector1020: -vector1021: -vector1022: -vector1023: - b _unhandled_irq - - .weak _unhandled_irq - .type _unhandled_irq, @function -_unhandled_irq: - b _unhandled_irq - -#endif /* !defined(__DOXYGEN__) */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC560BCxx/boot.h b/os/common/ports/e200/devices/SPC560BCxx/boot.h deleted file mode 100644 index 7af28f997..000000000 --- a/os/common/ports/e200/devices/SPC560BCxx/boot.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file boot.h - * @brief Boot parameters for the SPC560BCxx. - * @{ - */ - -#ifndef _BOOT_H_ -#define _BOOT_H_ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/** - * @name BUCSR registers definitions - * @{ - */ -#define BUCSR_BPEN 0x00000001 -#define BUCSR_BALLOC_BFI 0x00000200 -/** @} */ - -/** - * @name MSR register definitions - * @{ - */ -#define MSR_WE 0x00040000 -#define MSR_CE 0x00020000 -#define MSR_EE 0x00008000 -#define MSR_PR 0x00004000 -#define MSR_ME 0x00001000 -#define MSR_DE 0x00000200 -#define MSR_IS 0x00000020 -#define MSR_DS 0x00000010 -#define MSR_RI 0x00000002 -/** @} */ - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/* - * BUCSR default settings. - */ -#if !defined(BOOT_BUCSR_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BALLOC_BFI) -#endif - -/* - * MSR default settings. - */ -#if !defined(BOOT_MSR_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_MSR_DEFAULT (MSR_WE | MSR_CE | MSR_ME) -#endif - -/* - * Boot default settings. - */ -#if !defined(BOOT_PERFORM_CORE_INIT) || defined(__DOXYGEN__) -#define BOOT_PERFORM_CORE_INIT 1 -#endif - -/* - * VLE mode default settings. - */ -#if !defined(BOOT_USE_VLE) || defined(__DOXYGEN__) -#define BOOT_USE_VLE 1 -#endif - -/* - * RAM relocation flag. - */ -#if !defined(BOOT_RELOCATE_IN_RAM) || defined(__DOXYGEN__) -#define BOOT_RELOCATE_IN_RAM 0 -#endif - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _BOOT_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC560BCxx/boot.s b/os/common/ports/e200/devices/SPC560BCxx/boot.s deleted file mode 100644 index 089095be2..000000000 --- a/os/common/ports/e200/devices/SPC560BCxx/boot.s +++ /dev/null @@ -1,217 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC560BCxx/boot.s - * @brief SPC560BCxx boot-related code. - * - * @addtogroup PPC_BOOT - * @{ - */ - -#include "boot.h" - -#if !defined(__DOXYGEN__) - - /* BAM record.*/ - .section .boot, "ax" - - .long 0x015A0000 - .long _reset_address - - .align 2 - .globl _reset_address - .type _reset_address, @function -_reset_address: -#if BOOT_PERFORM_CORE_INIT - bl _coreinit -#endif - bl _ivinit - -#if BOOT_RELOCATE_IN_RAM - /* - * Image relocation in RAM. - */ - lis %r4, __ram_reloc_start__@h - ori %r4, %r4, __ram_reloc_start__@l - lis %r5, __ram_reloc_dest__@h - ori %r5, %r5, __ram_reloc_dest__@l - lis %r6, __ram_reloc_end__@h - ori %r6, %r6, __ram_reloc_end__@l -.relloop: - cmpl cr0, %r4, %r6 - bge cr0, .relend - lwz %r7, 0(%r4) - addi %r4, %r4, 4 - stw %r7, 0(%r5) - addi %r5, %r5, 4 - b .relloop -.relend: - lis %r3, _boot_address@h - ori %r3, %r3, _boot_address@l - mtctr %r3 - bctrl -#else - b _boot_address -#endif - -#if BOOT_PERFORM_CORE_INIT - .align 2 -_coreinit: - /* - * RAM clearing, this device requires a write to all RAM location in - * order to initialize the ECC detection hardware, this is going to - * slow down the startup but there is no way around. - */ - xor %r0, %r0, %r0 - xor %r1, %r1, %r1 - xor %r2, %r2, %r2 - xor %r3, %r3, %r3 - xor %r4, %r4, %r4 - xor %r5, %r5, %r5 - xor %r6, %r6, %r6 - xor %r7, %r7, %r7 - xor %r8, %r8, %r8 - xor %r9, %r9, %r9 - xor %r10, %r10, %r10 - xor %r11, %r11, %r11 - xor %r12, %r12, %r12 - xor %r13, %r13, %r13 - xor %r14, %r14, %r14 - xor %r15, %r15, %r15 - xor %r16, %r16, %r16 - xor %r17, %r17, %r17 - xor %r18, %r18, %r18 - xor %r19, %r19, %r19 - xor %r20, %r20, %r20 - xor %r21, %r21, %r21 - xor %r22, %r22, %r22 - xor %r23, %r23, %r23 - xor %r24, %r24, %r24 - xor %r25, %r25, %r25 - xor %r26, %r26, %r26 - xor %r27, %r27, %r27 - xor %r28, %r28, %r28 - xor %r29, %r29, %r29 - xor %r30, %r30, %r30 - xor %r31, %r31, %r31 - lis %r4, __ram_start__@h - ori %r4, %r4, __ram_start__@l - lis %r5, __ram_end__@h - ori %r5, %r5, __ram_end__@l -.cleareccloop: - cmpl %cr0, %r4, %r5 - bge %cr0, .cleareccend - stmw %r16, 0(%r4) - addi %r4, %r4, 64 - b .cleareccloop -.cleareccend: - - /* - * Branch prediction enabled. - */ - li %r3, BOOT_BUCSR_DEFAULT - mtspr 1013, %r3 /* BUCSR */ - - blr -#endif /* BOOT_PERFORM_CORE_INIT */ - - /* - * Exception vectors initialization. - */ - .align 2 -_ivinit: - /* MSR initialization.*/ - lis %r3, BOOT_MSR_DEFAULT@h - ori %r3, %r3, BOOT_MSR_DEFAULT@l - mtMSR %r3 - - /* IVPR initialization.*/ - lis %r3, __ivpr_base__@h - ori %r3, %r3, __ivpr_base__@l - mtIVPR %r3 - - blr - - .section .ivors, "ax" - - .globl IVORS -IVORS: - b _IVOR0 - .align 4 - b _IVOR1 - .align 4 - b _IVOR2 - .align 4 - b _IVOR3 - .align 4 - b _IVOR4 - .align 4 - b _IVOR5 - .align 4 - b _IVOR6 - .align 4 - b _IVOR7 - .align 4 - b _IVOR8 - .align 4 - b _IVOR9 - .align 4 - b _IVOR10 - .align 4 - b _IVOR11 - .align 4 - b _IVOR12 - .align 4 - b _IVOR13 - .align 4 - b _IVOR14 - .align 4 - b _IVOR15 - - .section .handlers, "ax" - - /* - * Default IVOR handlers. - */ - .align 2 - .weak _IVOR0, _IVOR1, _IVOR2, _IVOR3, _IVOR4, _IVOR5 - .weak _IVOR6, _IVOR7, _IVOR8, _IVOR9, _IVOR10, _IVOR11 - .weak _IVOR12, _IVOR13, _IVOR14, _IVOR15 -_IVOR0: -_IVOR1: -_IVOR2: -_IVOR3: -_IVOR5: -_IVOR6: -_IVOR7: -_IVOR8: -_IVOR9: -_IVOR11: -_IVOR12: -_IVOR13: -_IVOR14: -_IVOR15: - .global _unhandled_exception -_unhandled_exception: - b _unhandled_exception - -#endif /* !defined(__DOXYGEN__) */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC560BCxx/intc.h b/os/common/ports/e200/devices/SPC560BCxx/intc.h deleted file mode 100644 index 668eac387..000000000 --- a/os/common/ports/e200/devices/SPC560BCxx/intc.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC560BCxx/intc.h - * @brief SPC560BCxx INTC module header. - * - * @addtogroup INTC - * @{ - */ - -#ifndef _INTC_H_ -#define _INTC_H_ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/** - * @name INTC addresses - * @{ - */ -#define INTC_BASE 0xFFF48000 -#define INTC_IACKR_ADDR (INTC_BASE + 0x10) -#define INTC_EOIR_ADDR (INTC_BASE + 0x18) -/** @} */ - -/** - * @brief INTC priority levels. - */ -#define INTC_PRIORITY_LEVELS 16U - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/** - * @name INTC-related macros - * @{ - */ -#define INTC_BCR (*((volatile uint32_t *)(INTC_BASE + 0))) -#define INTC_CPR(n) (*((volatile uint32_t *)(INTC_BASE + 8 + ((n) * sizeof (uint32_t))))) -#define INTC_IACKR(n) (*((volatile uint32_t *)(INTC_BASE + 0x10 + ((n) * sizeof (uint32_t))))) -#define INTC_EOIR(n) (*((volatile uint32_t *)(INTC_BASE + 0x18 + ((n) * sizeof (uint32_t))))) -#define INTC_PSR(n) (*((volatile uint8_t *)(INTC_BASE + 0x40 + ((n) * sizeof (uint8_t))))) -/** @} */ - -/** - * @brief Core selection macros for PSR register. - */ -#define INTC_PSR_CORE0 0x00 - -/** - * @brief PSR register content helper - */ -#define INTC_PSR_ENABLE(cores, prio) ((uint32_t)(cores) | (uint32_t)(prio)) - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _INTC_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC560BCxx/ppcparams.h b/os/common/ports/e200/devices/SPC560BCxx/ppcparams.h deleted file mode 100644 index 2e89aa8fb..000000000 --- a/os/common/ports/e200/devices/SPC560BCxx/ppcparams.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC560BCxx/ppcparams.h - * @brief PowerPC parameters for the SPC560BCxx. - * - * @defgroup PPC_SPC560BCxx SPC560BCxx Specific Parameters - * @ingroup PPC_SPECIFIC - * @details This file contains the PowerPC specific parameters for the - * SPC560BCxx platform. - * @{ - */ - -#ifndef _PPCPARAMS_H_ -#define _PPCPARAMS_H_ - -/** - * @brief Family identification macro. - */ -#define PPC_SPC560BCxx - -/** - * @brief PPC core model. - */ -#define PPC_VARIANT PPC_VARIANT_e200z0 - -/** - * @brief Number of cores. - */ -#define PPC_CORE_NUMBER 1 - -/** - * @brief Number of writable bits in IVPR register. - */ -#define PPC_IVPR_BITS 20 - -/** - * @brief IVORx registers support. - */ -#define PPC_SUPPORTS_IVORS FALSE - -/** - * @brief Book E instruction set support. - */ -#define PPC_SUPPORTS_BOOKE FALSE - -/** - * @brief VLE instruction set support. - */ -#define PPC_SUPPORTS_VLE TRUE - -/** - * @brief Supports VLS Load/Store Multiple Volatile instructions. - */ -#define PPC_SUPPORTS_VLE_MULTI TRUE - -/** - * @brief Supports the decrementer timer. - */ -#define PPC_SUPPORTS_DECREMENTER FALSE - -/** - * @brief Number of interrupt sources. - */ -#define PPC_NUM_VECTORS 217 - -#endif /* _PPCPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC560Bxx/boot.h b/os/common/ports/e200/devices/SPC560Bxx/boot.h deleted file mode 100644 index f6482d0af..000000000 --- a/os/common/ports/e200/devices/SPC560Bxx/boot.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file boot.h - * @brief Boot parameters for the SPC560Bxx. - * @{ - */ - -#ifndef _BOOT_H_ -#define _BOOT_H_ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/** - * @name BUCSR registers definitions - * @{ - */ -#define BUCSR_BPEN 0x00000001 -#define BUCSR_BALLOC_BFI 0x00000200 -/** @} */ - -/** - * @name MSR register definitions - * @{ - */ -#define MSR_WE 0x00040000 -#define MSR_CE 0x00020000 -#define MSR_EE 0x00008000 -#define MSR_PR 0x00004000 -#define MSR_ME 0x00001000 -#define MSR_DE 0x00000200 -#define MSR_IS 0x00000020 -#define MSR_DS 0x00000010 -#define MSR_RI 0x00000002 -/** @} */ - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/* - * BUCSR default settings. - */ -#if !defined(BOOT_BUCSR_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BALLOC_BFI) -#endif - -/* - * MSR default settings. - */ -#if !defined(BOOT_MSR_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_MSR_DEFAULT (MSR_WE | MSR_CE | MSR_ME) -#endif - -/* - * Boot default settings. - */ -#if !defined(BOOT_PERFORM_CORE_INIT) || defined(__DOXYGEN__) -#define BOOT_PERFORM_CORE_INIT 1 -#endif - -/* - * VLE mode default settings. - */ -#if !defined(BOOT_USE_VLE) || defined(__DOXYGEN__) -#define BOOT_USE_VLE 1 -#endif - -/* - * RAM relocation flag. - */ -#if !defined(BOOT_RELOCATE_IN_RAM) || defined(__DOXYGEN__) -#define BOOT_RELOCATE_IN_RAM 0 -#endif - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _BOOT_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC560Bxx/boot.s b/os/common/ports/e200/devices/SPC560Bxx/boot.s deleted file mode 100644 index 7cf3349e5..000000000 --- a/os/common/ports/e200/devices/SPC560Bxx/boot.s +++ /dev/null @@ -1,217 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC560Bxx/boot.s - * @brief SPC560Bxx boot-related code. - * - * @addtogroup PPC_BOOT - * @{ - */ - -#include "boot.h" - -#if !defined(__DOXYGEN__) - - /* BAM record.*/ - .section .boot, "ax" - - .long 0x015A0000 - .long _reset_address - - .align 2 - .globl _reset_address - .type _reset_address, @function -_reset_address: -#if BOOT_PERFORM_CORE_INIT - bl _coreinit -#endif - bl _ivinit - -#if BOOT_RELOCATE_IN_RAM - /* - * Image relocation in RAM. - */ - lis %r4, __ram_reloc_start__@h - ori %r4, %r4, __ram_reloc_start__@l - lis %r5, __ram_reloc_dest__@h - ori %r5, %r5, __ram_reloc_dest__@l - lis %r6, __ram_reloc_end__@h - ori %r6, %r6, __ram_reloc_end__@l -.relloop: - cmpl cr0, %r4, %r6 - bge cr0, .relend - lwz %r7, 0(%r4) - addi %r4, %r4, 4 - stw %r7, 0(%r5) - addi %r5, %r5, 4 - b .relloop -.relend: - lis %r3, _boot_address@h - ori %r3, %r3, _boot_address@l - mtctr %r3 - bctrl -#else - b _boot_address -#endif - -#if BOOT_PERFORM_CORE_INIT - .align 2 -_coreinit: - /* - * RAM clearing, this device requires a write to all RAM location in - * order to initialize the ECC detection hardware, this is going to - * slow down the startup but there is no way around. - */ - xor %r0, %r0, %r0 - xor %r1, %r1, %r1 - xor %r2, %r2, %r2 - xor %r3, %r3, %r3 - xor %r4, %r4, %r4 - xor %r5, %r5, %r5 - xor %r6, %r6, %r6 - xor %r7, %r7, %r7 - xor %r8, %r8, %r8 - xor %r9, %r9, %r9 - xor %r10, %r10, %r10 - xor %r11, %r11, %r11 - xor %r12, %r12, %r12 - xor %r13, %r13, %r13 - xor %r14, %r14, %r14 - xor %r15, %r15, %r15 - xor %r16, %r16, %r16 - xor %r17, %r17, %r17 - xor %r18, %r18, %r18 - xor %r19, %r19, %r19 - xor %r20, %r20, %r20 - xor %r21, %r21, %r21 - xor %r22, %r22, %r22 - xor %r23, %r23, %r23 - xor %r24, %r24, %r24 - xor %r25, %r25, %r25 - xor %r26, %r26, %r26 - xor %r27, %r27, %r27 - xor %r28, %r28, %r28 - xor %r29, %r29, %r29 - xor %r30, %r30, %r30 - xor %r31, %r31, %r31 - lis %r4, __ram_start__@h - ori %r4, %r4, __ram_start__@l - lis %r5, __ram_end__@h - ori %r5, %r5, __ram_end__@l -.cleareccloop: - cmpl %cr0, %r4, %r5 - bge %cr0, .cleareccend - stmw %r16, 0(%r4) - addi %r4, %r4, 64 - b .cleareccloop -.cleareccend: - - /* - * Branch prediction enabled. - */ - li %r3, BOOT_BUCSR_DEFAULT - mtspr 1013, %r3 /* BUCSR */ - - blr -#endif /* BOOT_PERFORM_CORE_INIT */ - - /* - * Exception vectors initialization. - */ - .align 2 -_ivinit: - /* MSR initialization.*/ - lis %r3, BOOT_MSR_DEFAULT@h - ori %r3, %r3, BOOT_MSR_DEFAULT@l - mtMSR %r3 - - /* IVPR initialization.*/ - lis %r3, __ivpr_base__@h - ori %r3, %r3, __ivpr_base__@l - mtIVPR %r3 - - blr - - .section .ivors, "ax" - - .globl IVORS -IVORS: - b _IVOR0 - .align 4 - b _IVOR1 - .align 4 - b _IVOR2 - .align 4 - b _IVOR3 - .align 4 - b _IVOR4 - .align 4 - b _IVOR5 - .align 4 - b _IVOR6 - .align 4 - b _IVOR7 - .align 4 - b _IVOR8 - .align 4 - b _IVOR9 - .align 4 - b _IVOR10 - .align 4 - b _IVOR11 - .align 4 - b _IVOR12 - .align 4 - b _IVOR13 - .align 4 - b _IVOR14 - .align 4 - b _IVOR15 - - .section .handlers, "ax" - - /* - * Default IVOR handlers. - */ - .align 2 - .weak _IVOR0, _IVOR1, _IVOR2, _IVOR3, _IVOR4, _IVOR5 - .weak _IVOR6, _IVOR7, _IVOR8, _IVOR9, _IVOR10, _IVOR11 - .weak _IVOR12, _IVOR13, _IVOR14, _IVOR15 -_IVOR0: -_IVOR1: -_IVOR2: -_IVOR3: -_IVOR5: -_IVOR6: -_IVOR7: -_IVOR8: -_IVOR9: -_IVOR11: -_IVOR12: -_IVOR13: -_IVOR14: -_IVOR15: - .global _unhandled_exception -_unhandled_exception: - b _unhandled_exception - -#endif /* !defined(__DOXYGEN__) */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC560Bxx/intc.h b/os/common/ports/e200/devices/SPC560Bxx/intc.h deleted file mode 100644 index bde2c94aa..000000000 --- a/os/common/ports/e200/devices/SPC560Bxx/intc.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC560Bxx/intc.h - * @brief SPC560Bxx INTC module header. - * - * @addtogroup INTC - * @{ - */ - -#ifndef _INTC_H_ -#define _INTC_H_ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/** - * @name INTC addresses - * @{ - */ -#define INTC_BASE 0xFFF48000 -#define INTC_IACKR_ADDR (INTC_BASE + 0x10) -#define INTC_EOIR_ADDR (INTC_BASE + 0x18) -/** @} */ - -/** - * @brief INTC priority levels. - */ -#define INTC_PRIORITY_LEVELS 16U - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/** - * @name INTC-related macros - * @{ - */ -#define INTC_BCR (*((volatile uint32_t *)(INTC_BASE + 0))) -#define INTC_CPR(n) (*((volatile uint32_t *)(INTC_BASE + 8 + ((n) * sizeof (uint32_t))))) -#define INTC_IACKR(n) (*((volatile uint32_t *)(INTC_BASE + 0x10 + ((n) * sizeof (uint32_t))))) -#define INTC_EOIR(n) (*((volatile uint32_t *)(INTC_BASE + 0x18 + ((n) * sizeof (uint32_t))))) -#define INTC_PSR(n) (*((volatile uint8_t *)(INTC_BASE + 0x40 + ((n) * sizeof (uint8_t))))) -/** @} */ - -/** - * @brief Core selection macros for PSR register. - */ -#define INTC_PSR_CORE0 0x00 - -/** - * @brief PSR register content helper - */ -#define INTC_PSR_ENABLE(cores, prio) ((uint32_t)(cores) | (uint32_t)(prio)) - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _INTC_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC560Bxx/ppcparams.h b/os/common/ports/e200/devices/SPC560Bxx/ppcparams.h deleted file mode 100644 index 6a1761421..000000000 --- a/os/common/ports/e200/devices/SPC560Bxx/ppcparams.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC560Bxx/ppcparams.h - * @brief PowerPC parameters for the SPC560Bxx. - * - * @defgroup PPC_SPC560Bxx SPC560Bxx Specific Parameters - * @ingroup PPC_SPECIFIC - * @details This file contains the PowerPC specific parameters for the - * SPC560Bxx platform. - * @{ - */ - -#ifndef _PPCPARAMS_H_ -#define _PPCPARAMS_H_ - -/** - * @brief Family identification macro. - */ -#define PPC_SPC560Bxx - -/** - * @brief PPC core model. - */ -#define PPC_VARIANT PPC_VARIANT_e200z0 - -/** - * @brief Number of cores. - */ -#define PPC_CORE_NUMBER 1 - -/** - * @brief Number of writable bits in IVPR register. - */ -#define PPC_IVPR_BITS 20 - -/** - * @brief IVORx registers support. - */ -#define PPC_SUPPORTS_IVORS FALSE - -/** - * @brief Book E instruction set support. - */ -#define PPC_SUPPORTS_BOOKE FALSE - -/** - * @brief VLE instruction set support. - */ -#define PPC_SUPPORTS_VLE TRUE - -/** - * @brief Supports VLS Load/Store Multiple Volatile instructions. - */ -#define PPC_SUPPORTS_VLE_MULTI TRUE - -/** - * @brief Supports the decrementer timer. - */ -#define PPC_SUPPORTS_DECREMENTER FALSE - -/** - * @brief Number of interrupt sources. - */ -#define PPC_NUM_VECTORS 234 - -#endif /* _PPCPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC560Dxx/boot.h b/os/common/ports/e200/devices/SPC560Dxx/boot.h deleted file mode 100644 index 9650c7a10..000000000 --- a/os/common/ports/e200/devices/SPC560Dxx/boot.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file boot.h - * @brief Boot parameters for the SPC560Dxx. - * @{ - */ - -#ifndef _BOOT_H_ -#define _BOOT_H_ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/** - * @name BUCSR registers definitions - * @{ - */ -#define BUCSR_BPEN 0x00000001 -#define BUCSR_BALLOC_BFI 0x00000200 -/** @} */ - -/** - * @name MSR register definitions - * @{ - */ -#define MSR_WE 0x00040000 -#define MSR_CE 0x00020000 -#define MSR_EE 0x00008000 -#define MSR_PR 0x00004000 -#define MSR_ME 0x00001000 -#define MSR_DE 0x00000200 -#define MSR_IS 0x00000020 -#define MSR_DS 0x00000010 -#define MSR_RI 0x00000002 -/** @} */ - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/* - * BUCSR default settings. - */ -#if !defined(BOOT_BUCSR_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BALLOC_BFI) -#endif - -/* - * MSR default settings. - */ -#if !defined(BOOT_MSR_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_MSR_DEFAULT (MSR_WE | MSR_CE | MSR_ME) -#endif - -/* - * Boot default settings. - */ -#if !defined(BOOT_PERFORM_CORE_INIT) || defined(__DOXYGEN__) -#define BOOT_PERFORM_CORE_INIT 1 -#endif - -/* - * VLE mode default settings. - */ -#if !defined(BOOT_USE_VLE) || defined(__DOXYGEN__) -#define BOOT_USE_VLE 1 -#endif - -/* - * RAM relocation flag. - */ -#if !defined(BOOT_RELOCATE_IN_RAM) || defined(__DOXYGEN__) -#define BOOT_RELOCATE_IN_RAM 0 -#endif - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _BOOT_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC560Dxx/boot.s b/os/common/ports/e200/devices/SPC560Dxx/boot.s deleted file mode 100644 index 601f14f20..000000000 --- a/os/common/ports/e200/devices/SPC560Dxx/boot.s +++ /dev/null @@ -1,217 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC560Dxx/boot.s - * @brief SPC560Dxx boot-related code. - * - * @addtogroup PPC_BOOT - * @{ - */ - -#include "boot.h" - -#if !defined(__DOXYGEN__) - - /* BAM record.*/ - .section .boot, "ax" - - .long 0x015A0000 - .long _reset_address - - .align 2 - .globl _reset_address - .type _reset_address, @function -_reset_address: -#if BOOT_PERFORM_CORE_INIT - bl _coreinit -#endif - bl _ivinit - -#if BOOT_RELOCATE_IN_RAM - /* - * Image relocation in RAM. - */ - lis r4, __ram_reloc_start__@h - ori r4, r4, __ram_reloc_start__@l - lis r5, __ram_reloc_dest__@h - ori r5, r5, __ram_reloc_dest__@l - lis r6, __ram_reloc_end__@h - ori r6, r6, __ram_reloc_end__@l -.relloop: - cmpl cr0, r4, r6 - bge cr0, .relend - lwz r7, 0(r4) - addi r4, r4, 4 - stw r7, 0(r5) - addi r5, r5, 4 - b .relloop -.relend: - lis r3, _boot_address@h - ori r3, r3, _boot_address@l - mtctr r3 - bctrl -#else - b _boot_address -#endif - -#if BOOT_PERFORM_CORE_INIT - .align 2 -_coreinit: - /* - * RAM clearing, this device requires a write to all RAM location in - * order to initialize the ECC detection hardware, this is going to - * slow down the startup but there is no way around. - */ - xor r0, r0, r0 - xor r1, r1, r1 - xor r2, r2, r2 - xor r3, r3, r3 - xor r4, r4, r4 - xor r5, r5, r5 - xor r6, r6, r6 - xor r7, r7, r7 - xor r8, r8, r8 - xor r9, r9, r9 - xor r10, r10, r10 - xor r11, r11, r11 - xor r12, r12, r12 - xor r13, r13, r13 - xor r14, r14, r14 - xor r15, r15, r15 - xor r16, r16, r16 - xor r17, r17, r17 - xor r18, r18, r18 - xor r19, r19, r19 - xor r20, r20, r20 - xor r21, r21, r21 - xor r22, r22, r22 - xor r23, r23, r23 - xor r24, r24, r24 - xor r25, r25, r25 - xor r26, r26, r26 - xor r27, r27, r27 - xor r28, r28, r28 - xor r29, r29, r29 - xor r30, r30, r30 - xor r31, r31, r31 - lis r4, __ram_start__@h - ori r4, r4, __ram_start__@l - lis r5, __ram_end__@h - ori r5, r5, __ram_end__@l -.cleareccloop: - cmpl cr0, r4, r5 - bge cr0, .cleareccend - stmw r16, 0(r4) - addi r4, r4, 64 - b .cleareccloop -.cleareccend: - - /* - * Branch prediction enabled. - */ - li r3, BOOT_BUCSR_DEFAULT - mtspr 1013, r3 /* BUCSR */ - - blr -#endif /* BOOT_PERFORM_CORE_INIT */ - - /* - * Exception vectors initialization. - */ - .align 2 -_ivinit: - /* MSR initialization.*/ - lis r3, BOOT_MSR_DEFAULT@h - ori r3, r3, BOOT_MSR_DEFAULT@l - mtMSR r3 - - /* IVPR initialization.*/ - lis r3, __ivpr_base__@h - ori r3, r3, __ivpr_base__@l - mtIVPR r3 - - blr - - .section .ivors, "ax" - - .globl IVORS -IVORS: - b _IVOR0 - .align 4 - b _IVOR1 - .align 4 - b _IVOR2 - .align 4 - b _IVOR3 - .align 4 - b _IVOR4 - .align 4 - b _IVOR5 - .align 4 - b _IVOR6 - .align 4 - b _IVOR7 - .align 4 - b _IVOR8 - .align 4 - b _IVOR9 - .align 4 - b _IVOR10 - .align 4 - b _IVOR11 - .align 4 - b _IVOR12 - .align 4 - b _IVOR13 - .align 4 - b _IVOR14 - .align 4 - b _IVOR15 - - .section .handlers, "ax" - - /* - * Default IVOR handlers. - */ - .align 2 - .weak _IVOR0, _IVOR1, _IVOR2, _IVOR3, _IVOR4, _IVOR5 - .weak _IVOR6, _IVOR7, _IVOR8, _IVOR9, _IVOR10, _IVOR11 - .weak _IVOR12, _IVOR13, _IVOR14, _IVOR15 -_IVOR0: -_IVOR1: -_IVOR2: -_IVOR3: -_IVOR5: -_IVOR6: -_IVOR7: -_IVOR8: -_IVOR9: -_IVOR11: -_IVOR12: -_IVOR13: -_IVOR14: -_IVOR15: - .global _unhandled_exception -_unhandled_exception: - b _unhandled_exception - -#endif /* !defined(__DOXYGEN__) */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC560Dxx/boot_cw.s b/os/common/ports/e200/devices/SPC560Dxx/boot_cw.s deleted file mode 100644 index a2b268a17..000000000 --- a/os/common/ports/e200/devices/SPC560Dxx/boot_cw.s +++ /dev/null @@ -1,203 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC560Dxx/boot.s - * @brief SPC560Dxx boot-related code. - * - * @addtogroup PPC_BOOT - * @{ - */ - -#include "boot.h" - -#if !defined(__DOXYGEN__) - - .extern _boot_address - .extern __ram_start__ - .extern __ram_end__ - .extern __ivpr_base__ - - .extern _IVOR0, _IVOR1, _IVOR2, _IVOR3, _IVOR4, _IVOR5 - .extern _IVOR6, _IVOR7, _IVOR8, _IVOR9, _IVOR10, _IVOR11 - .extern _IVOR12, _IVOR13, _IVOR14, _IVOR15 - - /* BAM record.*/ - .section .boot, 16 - - .long 0x015A0000 - .long _reset_address - - .align 4 - .globl _reset_address - .type _reset_address, @function -_reset_address: -#if BOOT_PERFORM_CORE_INIT - se_bl _coreinit -#endif - se_bl _ivinit - -#if BOOT_RELOCATE_IN_RAM - /* - * Image relocation in RAM. - */ - e_lis r4, __ram_reloc_start__@h - e_or2i r4, r4, __ram_reloc_start__@l - e_lis r5, __ram_reloc_dest__@h - e_or2i r5, r5, __ram_reloc_dest__@l - e_lis r6, __ram_reloc_end__@h - e_or2i r6, r6, __ram_reloc_end__@l -.relloop: - se_cmpl r4, r6 - se_bge .relend - se_lwz r7, 0(r4) - se_addi r4, 4 - se_stw r7, 0(r5) - se_addi r5, 4 - se_b .relloop -.relend: - e_lis r3, _boot_address@h - e_or2i r3, _boot_address@l - mtctr r3 - se_bctrl -#else - e_b _boot_address -#endif - -#if BOOT_PERFORM_CORE_INIT - .align 4 -_coreinit: - /* - * RAM clearing, this device requires a write to all RAM location in - * order to initialize the ECC detection hardware, this is going to - * slow down the startup but there is no way around. - */ - xor r0, r0, r0 - xor r1, r1, r1 - xor r2, r2, r2 - xor r3, r3, r3 - xor r4, r4, r4 - xor r5, r5, r5 - xor r6, r6, r6 - xor r7, r7, r7 - xor r8, r8, r8 - xor r9, r9, r9 - xor r10, r10, r10 - xor r11, r11, r11 - xor r12, r12, r12 - xor r13, r13, r13 - xor r14, r14, r14 - xor r15, r15, r15 - xor r16, r16, r16 - xor r17, r17, r17 - xor r18, r18, r18 - xor r19, r19, r19 - xor r20, r20, r20 - xor r21, r21, r21 - xor r22, r22, r22 - xor r23, r23, r23 - xor r24, r24, r24 - xor r25, r25, r25 - xor r26, r26, r26 - xor r27, r27, r27 - xor r28, r28, r28 - xor r29, r29, r29 - xor r30, r30, r30 - xor r31, r31, r31 - e_lis r4, __ram_start__@h - e_or2i r4, __ram_start__@l - e_lis r5, __ram_end__@h - e_or2i r5, __ram_end__@l -.cleareccloop: - se_cmpl r4, r5 - se_bge .cleareccend - e_stmw r16, 0(r4) - e_addi r4, r4, 64 - se_b .cleareccloop -.cleareccend: - - /* - * Branch prediction enabled. - */ - e_li r3, BOOT_BUCSR_DEFAULT - mtspr 1013, r3 /* BUCSR */ - - se_blr -#endif /* BOOT_PERFORM_CORE_INIT */ - - /* - * Exception vectors initialization. - */ - .align 4 -_ivinit: - /* MSR initialization.*/ - e_lis r3, BOOT_MSR_DEFAULT@h - e_ori r3, r3, BOOT_MSR_DEFAULT@l - mtMSR r3 - - /* IVPR initialization.*/ - e_lis r3, __ivpr_base__@h - e_or2i r3, __ivpr_base__@l - mtIVPR r3 - - se_blr - - .section .ivors, text_vle - .align 16 - .globl IVORS -IVORS: - e_b _IVOR0 - .align 16 - e_b _IVOR1 - .align 16 - e_b _IVOR2 - .align 16 - e_b _IVOR3 - .align 16 - e_b _IVOR4 - .align 16 - e_b _IVOR5 - .align 16 - e_b _IVOR6 - .align 16 - e_b _IVOR7 - .align 16 - e_b _IVOR8 - .align 16 - e_b _IVOR9 - .align 16 - e_b _IVOR10 - .align 16 - e_b _IVOR11 - .align 16 - e_b _IVOR12 - .align 16 - e_b _IVOR13 - .align 16 - e_b _IVOR14 - .align 16 - e_b _IVOR15 - - .section .handlers, text_vle - .align 16 - - -#endif /* !defined(__DOXYGEN__) */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC560Dxx/intc.h b/os/common/ports/e200/devices/SPC560Dxx/intc.h deleted file mode 100644 index 6c3bbec60..000000000 --- a/os/common/ports/e200/devices/SPC560Dxx/intc.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC560Dxx/intc.h - * @brief SPC560Dxx INTC module header. - * - * @addtogroup INTC - * @{ - */ - -#ifndef _INTC_H_ -#define _INTC_H_ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/** - * @name INTC addresses - * @{ - */ -#define INTC_BASE 0xFFF48000 -#define INTC_IACKR_ADDR (INTC_BASE + 0x10) -#define INTC_EOIR_ADDR (INTC_BASE + 0x18) -/** @} */ - -/** - * @brief INTC priority levels. - */ -#define INTC_PRIORITY_LEVELS 16U - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/** - * @name INTC-related macros - * @{ - */ -#define INTC_BCR (*((volatile uint32_t *)(INTC_BASE + 0))) -#define INTC_CPR(n) (*((volatile uint32_t *)(INTC_BASE + 8 + ((n) * sizeof (uint32_t))))) -#define INTC_IACKR(n) (*((volatile uint32_t *)(INTC_BASE + 0x10 + ((n) * sizeof (uint32_t))))) -#define INTC_EOIR(n) (*((volatile uint32_t *)(INTC_BASE + 0x18 + ((n) * sizeof (uint32_t))))) -#define INTC_PSR(n) (*((volatile uint8_t *)(INTC_BASE + 0x40 + ((n) * sizeof (uint8_t))))) -/** @} */ - -/** - * @brief Core selection macros for PSR register. - */ -#define INTC_PSR_CORE0 0x00 - -/** - * @brief PSR register content helper - */ -#define INTC_PSR_ENABLE(cores, prio) ((uint32_t)(cores) | (uint32_t)(prio)) - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _INTC_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC560Dxx/ppcparams.h b/os/common/ports/e200/devices/SPC560Dxx/ppcparams.h deleted file mode 100644 index 4a62a0772..000000000 --- a/os/common/ports/e200/devices/SPC560Dxx/ppcparams.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC560Dxx/ppcparams.h - * @brief PowerPC parameters for the SPC560Dxx. - * - * @defgroup PPC_SPC560Dxx SPC560Dxx Specific Parameters - * @ingroup PPC_SPECIFIC - * @details This file contains the PowerPC specific parameters for the - * SPC560Dxx platform. - * @{ - */ - -#ifndef _PPCPARAMS_H_ -#define _PPCPARAMS_H_ - -/** - * @brief Family identification macro. - */ -#define PPC_SPC560Dxx - -/** - * @brief PPC core model. - */ -#define PPC_VARIANT PPC_VARIANT_e200z0 - -/** - * @brief Number of cores. - */ -#define PPC_CORE_NUMBER 1 - -/** - * @brief Number of writable bits in IVPR register. - */ -#define PPC_IVPR_BITS 20 - -/** - * @brief IVORx registers support. - */ -#define PPC_SUPPORTS_IVORS FALSE - -/** - * @brief Book E instruction set support. - */ -#define PPC_SUPPORTS_BOOKE FALSE - -/** - * @brief VLE instruction set support. - */ -#define PPC_SUPPORTS_VLE TRUE - -/** - * @brief Supports VLS Load/Store Multiple Volatile instructions. - */ -#define PPC_SUPPORTS_VLE_MULTI TRUE - -/** - * @brief Supports the decrementer timer. - */ -#define PPC_SUPPORTS_DECREMENTER FALSE - -/** - * @brief Number of interrupt sources. - */ -#define PPC_NUM_VECTORS 155 - -#endif /* _PPCPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC560Pxx/boot.h b/os/common/ports/e200/devices/SPC560Pxx/boot.h deleted file mode 100644 index 2c104d402..000000000 --- a/os/common/ports/e200/devices/SPC560Pxx/boot.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file boot.h - * @brief Boot parameters for the SPC560Pxx. - * @{ - */ - -#ifndef _BOOT_H_ -#define _BOOT_H_ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/** - * @name BUCSR registers definitions - * @{ - */ -#define BUCSR_BPEN 0x00000001 -#define BUCSR_BALLOC_BFI 0x00000200 -/** @} */ - -/** - * @name MSR register definitions - * @{ - */ -#define MSR_WE 0x00040000 -#define MSR_CE 0x00020000 -#define MSR_EE 0x00008000 -#define MSR_PR 0x00004000 -#define MSR_ME 0x00001000 -#define MSR_DE 0x00000200 -#define MSR_IS 0x00000020 -#define MSR_DS 0x00000010 -#define MSR_RI 0x00000002 -/** @} */ - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/* - * BUCSR default settings. - */ -#if !defined(BOOT_BUCSR_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BALLOC_BFI) -#endif - -/* - * MSR default settings. - */ -#if !defined(BOOT_MSR_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_MSR_DEFAULT (MSR_WE | MSR_CE | MSR_ME) -#endif - -/* - * Boot default settings. - */ -#if !defined(BOOT_PERFORM_CORE_INIT) || defined(__DOXYGEN__) -#define BOOT_PERFORM_CORE_INIT 1 -#endif - -/* - * VLE mode default settings. - */ -#if !defined(BOOT_USE_VLE) || defined(__DOXYGEN__) -#define BOOT_USE_VLE 1 -#endif - -/* - * RAM relocation flag. - */ -#if !defined(BOOT_RELOCATE_IN_RAM) || defined(__DOXYGEN__) -#define BOOT_RELOCATE_IN_RAM 0 -#endif - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _BOOT_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC560Pxx/boot.s b/os/common/ports/e200/devices/SPC560Pxx/boot.s deleted file mode 100644 index cdbecf616..000000000 --- a/os/common/ports/e200/devices/SPC560Pxx/boot.s +++ /dev/null @@ -1,217 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC560Pxx/boot.s - * @brief SPC560Pxx boot-related code. - * - * @addtogroup PPC_BOOT - * @{ - */ - -#include "boot.h" - -#if !defined(__DOXYGEN__) - - /* BAM record.*/ - .section .boot, "ax" - - .long 0x015A0000 - .long _reset_address - - .align 2 - .globl _reset_address - .type _reset_address, @function -_reset_address: -#if BOOT_PERFORM_CORE_INIT - bl _coreinit -#endif - bl _ivinit - -#if BOOT_RELOCATE_IN_RAM - /* - * Image relocation in RAM. - */ - lis %r4, __ram_reloc_start__@h - ori %r4, %r4, __ram_reloc_start__@l - lis %r5, __ram_reloc_dest__@h - ori %r5, %r5, __ram_reloc_dest__@l - lis %r6, __ram_reloc_end__@h - ori %r6, %r6, __ram_reloc_end__@l -.relloop: - cmpl cr0, %r4, %r6 - bge cr0, .relend - lwz %r7, 0(%r4) - addi %r4, %r4, 4 - stw %r7, 0(%r5) - addi %r5, %r5, 4 - b .relloop -.relend: - lis %r3, _boot_address@h - ori %r3, %r3, _boot_address@l - mtctr %r3 - bctrl -#else - b _boot_address -#endif - -#if BOOT_PERFORM_CORE_INIT - .align 2 -_coreinit: - /* - * RAM clearing, this device requires a write to all RAM location in - * order to initialize the ECC detection hardware, this is going to - * slow down the startup but there is no way around. - */ - xor %r0, %r0, %r0 - xor %r1, %r1, %r1 - xor %r2, %r2, %r2 - xor %r3, %r3, %r3 - xor %r4, %r4, %r4 - xor %r5, %r5, %r5 - xor %r6, %r6, %r6 - xor %r7, %r7, %r7 - xor %r8, %r8, %r8 - xor %r9, %r9, %r9 - xor %r10, %r10, %r10 - xor %r11, %r11, %r11 - xor %r12, %r12, %r12 - xor %r13, %r13, %r13 - xor %r14, %r14, %r14 - xor %r15, %r15, %r15 - xor %r16, %r16, %r16 - xor %r17, %r17, %r17 - xor %r18, %r18, %r18 - xor %r19, %r19, %r19 - xor %r20, %r20, %r20 - xor %r21, %r21, %r21 - xor %r22, %r22, %r22 - xor %r23, %r23, %r23 - xor %r24, %r24, %r24 - xor %r25, %r25, %r25 - xor %r26, %r26, %r26 - xor %r27, %r27, %r27 - xor %r28, %r28, %r28 - xor %r29, %r29, %r29 - xor %r30, %r30, %r30 - xor %r31, %r31, %r31 - lis %r4, __ram_start__@h - ori %r4, %r4, __ram_start__@l - lis %r5, __ram_end__@h - ori %r5, %r5, __ram_end__@l -.cleareccloop: - cmpl %cr0, %r4, %r5 - bge %cr0, .cleareccend - stmw %r16, 0(%r4) - addi %r4, %r4, 64 - b .cleareccloop -.cleareccend: - - /* - * Branch prediction enabled. - */ - li %r3, BOOT_BUCSR_DEFAULT - mtspr 1013, %r3 /* BUCSR */ - - blr -#endif /* BOOT_PERFORM_CORE_INIT */ - - /* - * Exception vectors initialization. - */ - .align 2 -_ivinit: - /* MSR initialization.*/ - lis %r3, BOOT_MSR_DEFAULT@h - ori %r3, %r3, BOOT_MSR_DEFAULT@l - mtMSR %r3 - - /* IVPR initialization.*/ - lis %r3, __ivpr_base__@h - ori %r3, %r3, __ivpr_base__@l - mtIVPR %r3 - - blr - - .section .ivors, "ax" - - .globl IVORS -IVORS: - b _IVOR0 - .align 4 - b _IVOR1 - .align 4 - b _IVOR2 - .align 4 - b _IVOR3 - .align 4 - b _IVOR4 - .align 4 - b _IVOR5 - .align 4 - b _IVOR6 - .align 4 - b _IVOR7 - .align 4 - b _IVOR8 - .align 4 - b _IVOR9 - .align 4 - b _IVOR10 - .align 4 - b _IVOR11 - .align 4 - b _IVOR12 - .align 4 - b _IVOR13 - .align 4 - b _IVOR14 - .align 4 - b _IVOR15 - - .section .handlers, "ax" - - /* - * Default IVOR handlers. - */ - .align 2 - .weak _IVOR0, _IVOR1, _IVOR2, _IVOR3, _IVOR4, _IVOR5 - .weak _IVOR6, _IVOR7, _IVOR8, _IVOR9, _IVOR10, _IVOR11 - .weak _IVOR12, _IVOR13, _IVOR14, _IVOR15 -_IVOR0: -_IVOR1: -_IVOR2: -_IVOR3: -_IVOR5: -_IVOR6: -_IVOR7: -_IVOR8: -_IVOR9: -_IVOR11: -_IVOR12: -_IVOR13: -_IVOR14: -_IVOR15: - .global _unhandled_exception -_unhandled_exception: - b _unhandled_exception - -#endif /* !defined(__DOXYGEN__) */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC560Pxx/intc.h b/os/common/ports/e200/devices/SPC560Pxx/intc.h deleted file mode 100644 index 75440fb75..000000000 --- a/os/common/ports/e200/devices/SPC560Pxx/intc.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC560Pxx/intc.h - * @brief SPC560Pxx INTC module header. - * - * @addtogroup INTC - * @{ - */ - -#ifndef _INTC_H_ -#define _INTC_H_ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/** - * @name INTC addresses - * @{ - */ -#define INTC_BASE 0xFFF48000 -#define INTC_IACKR_ADDR (INTC_BASE + 0x10) -#define INTC_EOIR_ADDR (INTC_BASE + 0x18) -/** @} */ - -/** - * @brief INTC priority levels. - */ -#define INTC_PRIORITY_LEVELS 16U - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/** - * @name INTC-related macros - * @{ - */ -#define INTC_BCR (*((volatile uint32_t *)(INTC_BASE + 0))) -#define INTC_CPR(n) (*((volatile uint32_t *)(INTC_BASE + 8 + ((n) * sizeof (uint32_t))))) -#define INTC_IACKR(n) (*((volatile uint32_t *)(INTC_BASE + 0x10 + ((n) * sizeof (uint32_t))))) -#define INTC_EOIR(n) (*((volatile uint32_t *)(INTC_BASE + 0x18 + ((n) * sizeof (uint32_t))))) -#define INTC_PSR(n) (*((volatile uint8_t *)(INTC_BASE + 0x40 + ((n) * sizeof (uint8_t))))) -/** @} */ - -/** - * @brief Core selection macros for PSR register. - */ -#define INTC_PSR_CORE0 0x00 - -/** - * @brief PSR register content helper - */ -#define INTC_PSR_ENABLE(cores, prio) ((uint32_t)(cores) | (uint32_t)(prio)) - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _INTC_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC560Pxx/ppcparams.h b/os/common/ports/e200/devices/SPC560Pxx/ppcparams.h deleted file mode 100644 index 9bd1c565a..000000000 --- a/os/common/ports/e200/devices/SPC560Pxx/ppcparams.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC560Pxx/ppcparams.h - * @brief PowerPC parameters for the SPC560Pxx. - * - * @defgroup PPC_SPC560Pxx SPC560Pxx Specific Parameters - * @ingroup PPC_SPECIFIC - * @details This file contains the PowerPC specific parameters for the - * SPC560Pxx platform. - * @{ - */ - -#ifndef _PPCPARAMS_H_ -#define _PPCPARAMS_H_ - -/** - * @brief Family identification macro. - */ -#define PPC_SPC560Pxx - -/** - * @brief PPC core model. - */ -#define PPC_VARIANT PPC_VARIANT_e200z0 - -/** - * @brief Number of cores. - */ -#define PPC_CORE_NUMBER 1 - -/** - * @brief Number of writable bits in IVPR register. - */ -#define PPC_IVPR_BITS 20 - -/** - * @brief IVORx registers support. - */ -#define PPC_SUPPORTS_IVORS FALSE - -/** - * @brief Book E instruction set support. - */ -#define PPC_SUPPORTS_BOOKE FALSE - -/** - * @brief VLE instruction set support. - */ -#define PPC_SUPPORTS_VLE TRUE - -/** - * @brief Supports VLS Load/Store Multiple Volatile instructions. - */ -#define PPC_SUPPORTS_VLE_MULTI TRUE - -/** - * @brief Supports the decrementer timer. - */ -#define PPC_SUPPORTS_DECREMENTER FALSE - -/** - * @brief Number of interrupt sources. - */ -#define PPC_NUM_VECTORS 261 - -#endif /* _PPCPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC563Mxx/boot.h b/os/common/ports/e200/devices/SPC563Mxx/boot.h deleted file mode 100644 index a5fd71c62..000000000 --- a/os/common/ports/e200/devices/SPC563Mxx/boot.h +++ /dev/null @@ -1,122 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file boot.h - * @brief Boot parameters for the SPC563Mxx. - * @{ - */ - -#ifndef _BOOT_H_ -#define _BOOT_H_ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/** - * @name BUCSR registers definitions - * @{ - */ -#define BUCSR_BPEN 0x00000001 -#define BUCSR_BALLOC_BFI 0x00000200 -/** @} */ - -/** - * @name MSR register definitions - * @{ - */ -#define MSR_UCLE 0x04000000 -#define MSR_SPE 0x02000000 -#define MSR_WE 0x00040000 -#define MSR_CE 0x00020000 -#define MSR_EE 0x00008000 -#define MSR_PR 0x00004000 -#define MSR_FP 0x00002000 -#define MSR_ME 0x00001000 -#define MSR_FE0 0x00000800 -#define MSR_DE 0x00000200 -#define MSR_FE1 0x00000100 -#define MSR_IS 0x00000020 -#define MSR_DS 0x00000010 -#define MSR_RI 0x00000002 -/** @} */ - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/* - * BUCSR default settings. - */ -#if !defined(BOOT_BUCSR_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BALLOC_BFI) -#endif - -/* - * MSR default settings. - */ -#if !defined(BOOT_MSR_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_MSR_DEFAULT (MSR_SPE | MSR_WE | MSR_CE | MSR_ME) -#endif - -/* - * Boot default settings. - */ -#if !defined(BOOT_PERFORM_CORE_INIT) || defined(__DOXYGEN__) -#define BOOT_PERFORM_CORE_INIT 1 -#endif - -/* - * VLE mode default settings. - */ -#if !defined(BOOT_USE_VLE) || defined(__DOXYGEN__) -#define BOOT_USE_VLE 1 -#endif - -/* - * RAM relocation flag. - */ -#if !defined(BOOT_RELOCATE_IN_RAM) || defined(__DOXYGEN__) -#define BOOT_RELOCATE_IN_RAM 0 -#endif - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _BOOT_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC563Mxx/boot.s b/os/common/ports/e200/devices/SPC563Mxx/boot.s deleted file mode 100644 index d9627dd39..000000000 --- a/os/common/ports/e200/devices/SPC563Mxx/boot.s +++ /dev/null @@ -1,191 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC563Mxx/boot.s - * @brief SPC563Mxx boot-related code. - * - * @addtogroup PPC_BOOT - * @{ - */ - -#include "boot.h" - -#if !defined(__DOXYGEN__) - - /* BAM record.*/ - .section .boot, "ax" - -#if BOOT_USE_VLE - .long 0x015A0000 -#else - .long 0x005A0000 -#endif - .long _reset_address - - .align 2 - .globl _reset_address - .type _reset_address, @function -_reset_address: -#if BOOT_PERFORM_CORE_INIT - bl _coreinit -#endif - bl _ivinit - -#if BOOT_RELOCATE_IN_RAM - /* - * Image relocation in RAM. - */ - lis %r4, __ram_reloc_start__@h - ori %r4, %r4, __ram_reloc_start__@l - lis %r5, __ram_reloc_dest__@h - ori %r5, %r5, __ram_reloc_dest__@l - lis %r6, __ram_reloc_end__@h - ori %r6, %r6, __ram_reloc_end__@l -.relloop: - cmpl cr0, %r4, %r6 - bge cr0, .relend - lwz %r7, 0(%r4) - addi %r4, %r4, 4 - stw %r7, 0(%r5) - addi %r5, %r5, 4 - b .relloop -.relend: - lis %r3, _boot_address@h - ori %r3, %r3, _boot_address@l - mtctr %r3 - bctrl -#else - b _boot_address -#endif - -#if BOOT_PERFORM_CORE_INIT - .align 2 -_coreinit: - /* - * RAM clearing, this device requires a write to all RAM location in - * order to initialize the ECC detection hardware, this is going to - * slow down the startup but there is no way around. - */ - xor %r0, %r0, %r0 - xor %r1, %r1, %r1 - xor %r2, %r2, %r2 - xor %r3, %r3, %r3 - xor %r4, %r4, %r4 - xor %r5, %r5, %r5 - xor %r6, %r6, %r6 - xor %r7, %r7, %r7 - xor %r8, %r8, %r8 - xor %r9, %r9, %r9 - xor %r10, %r10, %r10 - xor %r11, %r11, %r11 - xor %r12, %r12, %r12 - xor %r13, %r13, %r13 - xor %r14, %r14, %r14 - xor %r15, %r15, %r15 - xor %r16, %r16, %r16 - xor %r17, %r17, %r17 - xor %r18, %r18, %r18 - xor %r19, %r19, %r19 - xor %r20, %r20, %r20 - xor %r21, %r21, %r21 - xor %r22, %r22, %r22 - xor %r23, %r23, %r23 - xor %r24, %r24, %r24 - xor %r25, %r25, %r25 - xor %r26, %r26, %r26 - xor %r27, %r27, %r27 - xor %r28, %r28, %r28 - xor %r29, %r29, %r29 - xor %r30, %r30, %r30 - xor %r31, %r31, %r31 - lis %r4, __ram_start__@h - ori %r4, %r4, __ram_start__@l - lis %r5, __ram_end__@h - ori %r5, %r5, __ram_end__@l -.cleareccloop: - cmpl %cr0, %r4, %r5 - bge %cr0, .cleareccend - stmw %r16, 0(%r4) - addi %r4, %r4, 64 - b .cleareccloop -.cleareccend: - - /* - * Branch prediction enabled. - */ - li %r3, BOOT_BUCSR_DEFAULT - mtspr 1013, %r3 /* BUCSR */ - - blr -#endif /* BOOT_PERFORM_CORE_INIT */ - - /* - * Exception vectors initialization. - */ -_ivinit: - /* MSR initialization.*/ - lis %r3, BOOT_MSR_DEFAULT@h - ori %r3, %r3, BOOT_MSR_DEFAULT@l - mtMSR %r3 - - /* IVPR initialization.*/ - lis %r3, __ivpr_base__@h - ori %r3, %r3, __ivpr_base__@l - mtIVPR %r3 - - /* IVORs initialization.*/ - lis %r3, _unhandled_exception@h - ori %r3, %r3, _unhandled_exception@l - - mtspr 400, %r3 /* IVOR0-15 */ - mtspr 401, %r3 - mtspr 402, %r3 - mtspr 403, %r3 - mtspr 404, %r3 - mtspr 405, %r3 - mtspr 406, %r3 - mtspr 407, %r3 - mtspr 408, %r3 - mtspr 409, %r3 - mtspr 410, %r3 - mtspr 411, %r3 - mtspr 412, %r3 - mtspr 413, %r3 - mtspr 414, %r3 - mtspr 415, %r3 - mtspr 528, %r3 /* IVOR32-34 */ - mtspr 529, %r3 - mtspr 530, %r3 - - blr - - .section .handlers, "ax" - - /* - * Unhandled exceptions handler. - */ - .weak _unhandled_exception - .type _unhandled_exception, @function -_unhandled_exception: - b _unhandled_exception - -#endif /* !defined(__DOXYGEN__) */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC563Mxx/intc.h b/os/common/ports/e200/devices/SPC563Mxx/intc.h deleted file mode 100644 index b7a5d920a..000000000 --- a/os/common/ports/e200/devices/SPC563Mxx/intc.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC563Mxx/intc.h - * @brief SPC563Mxx INTC module header. - * - * @addtogroup INTC - * @{ - */ - -#ifndef _INTC_H_ -#define _INTC_H_ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/** - * @name INTC addresses - * @{ - */ -#define INTC_BASE 0xFFF48000 -#define INTC_IACKR_ADDR (INTC_BASE + 0x10) -#define INTC_EOIR_ADDR (INTC_BASE + 0x18) -/** @} */ - -/** - * @brief INTC priority levels. - */ -#define INTC_PRIORITY_LEVELS 16U - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/** - * @name INTC-related macros - * @{ - */ -#define INTC_BCR (*((volatile uint32_t *)(INTC_BASE + 0))) -#define INTC_CPR(n) (*((volatile uint32_t *)(INTC_BASE + 8 + ((n) * sizeof (uint32_t))))) -#define INTC_IACKR(n) (*((volatile uint32_t *)(INTC_BASE + 0x10 + ((n) * sizeof (uint32_t))))) -#define INTC_EOIR(n) (*((volatile uint32_t *)(INTC_BASE + 0x18 + ((n) * sizeof (uint32_t))))) -#define INTC_PSR(n) (*((volatile uint8_t *)(INTC_BASE + 0x40 + ((n) * sizeof (uint8_t))))) -/** @} */ - -/** - * @brief Core selection macros for PSR register. - */ -#define INTC_PSR_CORE0 0x00 - -/** - * @brief PSR register content helper - */ -#define INTC_PSR_ENABLE(cores, prio) ((uint32_t)(cores) | (uint32_t)(prio)) - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _INTC_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC563Mxx/ppcparams.h b/os/common/ports/e200/devices/SPC563Mxx/ppcparams.h deleted file mode 100644 index 315e53f0b..000000000 --- a/os/common/ports/e200/devices/SPC563Mxx/ppcparams.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC563Mxx/ppcparams.h - * @brief PowerPC parameters for the SPC563Mxx. - * - * @defgroup PPC_SPC563Mxx SPC563Mxx Specific Parameters - * @ingroup PPC_SPECIFIC - * @details This file contains the PowerPC specific parameters for the - * SPC563Mxx platform. - * @{ - */ - -#ifndef _PPCPARAMS_H_ -#define _PPCPARAMS_H_ - -/** - * @brief Family identification macro. - */ -#define PPC_SPC563Mxx - -/** - * @brief PPC core model. - */ -#define PPC_VARIANT PPC_VARIANT_e200z3 - -/** - * @brief Number of cores. - */ -#define PPC_CORE_NUMBER 1 - -/** - * @brief Number of writable bits in IVPR register. - */ -#define PPC_IVPR_BITS 16 - -/** - * @brief IVORx registers support. - */ -#define PPC_SUPPORTS_IVORS TRUE - -/** - * @brief Book E instruction set support. - */ -#define PPC_SUPPORTS_BOOKE TRUE - -/** - * @brief VLE instruction set support. - */ -#define PPC_SUPPORTS_VLE TRUE - -/** - * @brief Supports VLS Load/Store Multiple Volatile instructions. - */ -#define PPC_SUPPORTS_VLE_MULTI TRUE - -/** - * @brief Supports the decrementer timer. - */ -#define PPC_SUPPORTS_DECREMENTER TRUE - -/** - * @brief Number of interrupt sources. - */ -#define PPC_NUM_VECTORS 360 - -#endif /* _PPCPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC564Axx/boot.h b/os/common/ports/e200/devices/SPC564Axx/boot.h deleted file mode 100644 index 14a13840b..000000000 --- a/os/common/ports/e200/devices/SPC564Axx/boot.h +++ /dev/null @@ -1,245 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file boot.h - * @brief Boot parameters for the SPC564Axx. - * @{ - */ - -#ifndef _BOOT_H_ -#define _BOOT_H_ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/** - * @name MASx registers definitions - * @{ - */ -#define MAS0_TBLMAS_TBL 0x10000000 -#define MAS0_ESEL_MASK 0x000F0000 -#define MAS0_ESEL(n) ((n) << 16) - -#define MAS1_VALID 0x80000000 -#define MAS1_IPROT 0x40000000 -#define MAS1_TID_MASK 0x00FF0000 -#define MAS1_TS 0x00001000 -#define MAS1_TSISE_MASK 0x00000F80 -#define MAS1_TSISE_1K 0x00000000 -#define MAS1_TSISE_2K 0x00000080 -#define MAS1_TSISE_4K 0x00000100 -#define MAS1_TSISE_8K 0x00000180 -#define MAS1_TSISE_16K 0x00000200 -#define MAS1_TSISE_32K 0x00000280 -#define MAS1_TSISE_64K 0x00000300 -#define MAS1_TSISE_128K 0x00000380 -#define MAS1_TSISE_256K 0x00000400 -#define MAS1_TSISE_512K 0x00000480 -#define MAS1_TSISE_1M 0x00000500 -#define MAS1_TSISE_2M 0x00000580 -#define MAS1_TSISE_4M 0x00000600 -#define MAS1_TSISE_8M 0x00000680 -#define MAS1_TSISE_16M 0x00000700 -#define MAS1_TSISE_32M 0x00000780 -#define MAS1_TSISE_64M 0x00000800 -#define MAS1_TSISE_128M 0x00000880 -#define MAS1_TSISE_256M 0x00000900 -#define MAS1_TSISE_512M 0x00000980 -#define MAS1_TSISE_1G 0x00000A00 -#define MAS1_TSISE_2G 0x00000A80 -#define MAS1_TSISE_4G 0x00000B00 - -#define MAS2_EPN_MASK 0xFFFFFC00 -#define MAS2_EPN(n) ((n) & MAS2_EPN_MASK) -#define MAS2_EBOOK 0x00000000 -#define MAS2_VLE 0x00000020 -#define MAS2_W 0x00000010 -#define MAS2_I 0x00000008 -#define MAS2_M 0x00000004 -#define MAS2_G 0x00000002 -#define MAS2_E 0x00000001 - -#define MAS3_RPN_MASK 0xFFFFFC00 -#define MAS3_RPN(n) ((n) & MAS3_RPN_MASK) -#define MAS3_U0 0x00000200 -#define MAS3_U1 0x00000100 -#define MAS3_U2 0x00000080 -#define MAS3_U3 0x00000040 -#define MAS3_UX 0x00000020 -#define MAS3_SX 0x00000010 -#define MAS3_UW 0x00000008 -#define MAS3_SW 0x00000004 -#define MAS3_UR 0x00000002 -#define MAS3_SR 0x00000001 -/** @} */ - -/** - * @name BUCSR registers definitions - * @{ - */ -#define BUCSR_BPEN 0x00000001 -#define BUCSR_BPRED_MASK 0x00000006 -#define BUCSR_BPRED_0 0x00000000 -#define BUCSR_BPRED_1 0x00000002 -#define BUCSR_BPRED_2 0x00000004 -#define BUCSR_BPRED_3 0x00000006 -#define BUCSR_BALLOC_MASK 0x00000030 -#define BUCSR_BALLOC_0 0x00000000 -#define BUCSR_BALLOC_1 0x00000010 -#define BUCSR_BALLOC_2 0x00000020 -#define BUCSR_BALLOC_3 0x00000030 -#define BUCSR_BALLOC_BFI 0x00000200 -/** @} */ - -/** - * @name LICSR1 registers definitions - * @{ - */ -#define LICSR1_ICE 0x00000001 -#define LICSR1_ICINV 0x00000002 -#define LICSR1_ICORG 0x00000010 -/** @} */ - -/** - * @name MSR register definitions - * @{ - */ -#define MSR_UCLE 0x04000000 -#define MSR_SPE 0x02000000 -#define MSR_WE 0x00040000 -#define MSR_CE 0x00020000 -#define MSR_EE 0x00008000 -#define MSR_PR 0x00004000 -#define MSR_FP 0x00002000 -#define MSR_ME 0x00001000 -#define MSR_FE0 0x00000800 -#define MSR_DE 0x00000200 -#define MSR_FE1 0x00000100 -#define MSR_IS 0x00000020 -#define MSR_DS 0x00000010 -#define MSR_RI 0x00000002 -/** @} */ - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/* - * TLB default settings. - */ -#define TLB0_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(0)) -#define TLB0_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_256K) -#define TLB0_MAS2 (MAS2_EPN(0x40000000) | MAS2_VLE) -#define TLB0_MAS3 (MAS3_RPN(0x40000000) | \ - MAS3_UX | MAS3_SX | MAS3_UW | MAS3_SW | \ - MAS3_UR | MAS3_SR) - -#define TLB1_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(1)) -#define TLB1_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_4M) -#define TLB1_MAS2 (MAS2_EPN(0x00000000) | MAS2_VLE) -#define TLB1_MAS3 (MAS3_RPN(0x00000000) | \ - MAS3_UX | MAS3_SX | MAS3_UW | MAS3_SW | \ - MAS3_UR | MAS3_SR) - -#define TLB2_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(2)) -#define TLB2_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) -#define TLB2_MAS2 (MAS2_EPN(0xC3F00000) | MAS2_I) -#define TLB2_MAS3 (MAS3_RPN(0xC3F00000) | \ - MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) - -#define TLB3_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(3)) -#define TLB3_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) -#define TLB3_MAS2 (MAS2_EPN(0xFFE00000) | MAS2_I) -#define TLB3_MAS3 (MAS3_RPN(0xFFE00000) | \ - MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) - -#define TLB4_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(4)) -#define TLB4_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) -#define TLB4_MAS2 (MAS2_EPN(0xFFF00000) | MAS2_I) -#define TLB4_MAS3 (MAS3_RPN(0xFFF00000) | \ - MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) - -/* - * BUCSR default settings. - */ -#if !defined(BOOT_BUCSR_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BPRED_0 | \ - BUCSR_BALLOC_0 | BUCSR_BALLOC_BFI) -#endif - -/* - * LICSR1 default settings. - */ -#if !defined(BOOT_LICSR1_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_LICSR1_DEFAULT (LICSR1_ICE | LICSR1_ICORG) -#endif - -/* - * MSR default settings. - */ -#if !defined(BOOT_MSR_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_MSR_DEFAULT (MSR_SPE | MSR_WE | MSR_CE | MSR_ME) -#endif - -/* - * Boot default settings. - */ -#if !defined(BOOT_PERFORM_CORE_INIT) || defined(__DOXYGEN__) -#define BOOT_PERFORM_CORE_INIT 1 -#endif - -/* - * VLE mode default settings. - */ -#if !defined(BOOT_USE_VLE) || defined(__DOXYGEN__) -#define BOOT_USE_VLE 1 -#endif - -/* - * RAM relocation flag. - */ -#if !defined(BOOT_RELOCATE_IN_RAM) || defined(__DOXYGEN__) -#define BOOT_RELOCATE_IN_RAM 0 -#endif - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _BOOT_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC564Axx/boot.s b/os/common/ports/e200/devices/SPC564Axx/boot.s deleted file mode 100644 index 549f926ec..000000000 --- a/os/common/ports/e200/devices/SPC564Axx/boot.s +++ /dev/null @@ -1,356 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC564Axx/boot.s - * @brief SPC564Axx boot-related code. - * - * @addtogroup PPC_BOOT - * @{ - */ - -#include "boot.h" - -#if !defined(__DOXYGEN__) - - /* BAM record.*/ - .section .boot, "ax" - -#if BOOT_USE_VLE - .long 0x015A0000 -#else - .long 0x005A0000 -#endif - .long _reset_address - - .align 2 - .globl _reset_address - .type _reset_address, @function -_reset_address: -#if BOOT_PERFORM_CORE_INIT - bl _coreinit -#endif - bl _ivinit - -#if BOOT_RELOCATE_IN_RAM - /* - * Image relocation in RAM. - */ - lis %r4, __ram_reloc_start__@h - ori %r4, %r4, __ram_reloc_start__@l - lis %r5, __ram_reloc_dest__@h - ori %r5, %r5, __ram_reloc_dest__@l - lis %r6, __ram_reloc_end__@h - ori %r6, %r6, __ram_reloc_end__@l -.relloop: - cmpl cr0, %r4, %r6 - bge cr0, .relend - lwz %r7, 0(%r4) - addi %r4, %r4, 4 - stw %r7, 0(%r5) - addi %r5, %r5, 4 - b .relloop -.relend: - lis %r3, _boot_address@h - ori %r3, %r3, _boot_address@l - mtctr %r3 - bctrl -#else - b _boot_address -#endif - -#if BOOT_PERFORM_CORE_INIT - .align 2 -_ramcode: - tlbwe - isync - blr - - .align 2 -_coreinit: - /* - * Invalidating all TLBs except TLB1. - */ - lis %r3, 0 - mtspr 625, %r3 /* MAS1 */ - mtspr 626, %r3 /* MAS2 */ - mtspr 627, %r3 /* MAS3 */ - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(0))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(2))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(3))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(4))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(5))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(6))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(7))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(8))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(9))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(10))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(11))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(12))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(13))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(14))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(15))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - - /* - * TLB0 allocated to internal RAM. - */ - lis %r3, TLB0_MAS0@h - mtspr 624, %r3 /* MAS0 */ - lis %r3, TLB0_MAS1@h - ori %r3, %r3, TLB0_MAS1@l - mtspr 625, %r3 /* MAS1 */ - lis %r3, TLB0_MAS2@h - ori %r3, %r3, TLB0_MAS2@l - mtspr 626, %r3 /* MAS2 */ - lis %r3, TLB0_MAS3@h - ori %r3, %r3, TLB0_MAS3@l - mtspr 627, %r3 /* MAS3 */ - tlbwe - - /* - * TLB2 allocated to internal Peripherals Bridge A. - */ - lis %r3, TLB2_MAS0@h - mtspr 624, %r3 /* MAS0 */ - lis %r3, TLB2_MAS1@h - ori %r3, %r3, TLB2_MAS1@l - mtspr 625, %r3 /* MAS1 */ - lis %r3, TLB2_MAS2@h - ori %r3, %r3, TLB2_MAS2@l - mtspr 626, %r3 /* MAS2 */ - lis %r3, TLB2_MAS3@h - ori %r3, %r3, TLB2_MAS3@l - mtspr 627, %r3 /* MAS3 */ - tlbwe - - /* - * TLB3 allocated to internal Peripherals Bridge B. - */ - lis %r3, TLB3_MAS0@h - mtspr 624, %r3 /* MAS0 */ - lis %r3, TLB3_MAS1@h - ori %r3, %r3, TLB3_MAS1@l - mtspr 625, %r3 /* MAS1 */ - lis %r3, TLB3_MAS2@h - ori %r3, %r3, TLB3_MAS2@l - mtspr 626, %r3 /* MAS2 */ - lis %r3, TLB3_MAS3@h - ori %r3, %r3, TLB3_MAS3@l - mtspr 627, %r3 /* MAS3 */ - tlbwe - - /* - * TLB4 allocated to on-platform peripherals. - */ - lis %r3, TLB4_MAS0@h - mtspr 624, %r3 /* MAS0 */ - lis %r3, TLB4_MAS1@h - ori %r3, %r3, TLB4_MAS1@l - mtspr 625, %r3 /* MAS1 */ - lis %r3, TLB4_MAS2@h - ori %r3, %r3, TLB4_MAS2@l - mtspr 626, %r3 /* MAS2 */ - lis %r3, TLB4_MAS3@h - ori %r3, %r3, TLB4_MAS3@l - mtspr 627, %r3 /* MAS3 */ - tlbwe - - /* - * RAM clearing, this device requires a write to all RAM location in - * order to initialize the ECC detection hardware, this is going to - * slow down the startup but there is no way around. - */ - xor %r0, %r0, %r0 - xor %r1, %r1, %r1 - xor %r2, %r2, %r2 - xor %r3, %r3, %r3 - xor %r4, %r4, %r4 - xor %r5, %r5, %r5 - xor %r6, %r6, %r6 - xor %r7, %r7, %r7 - xor %r8, %r8, %r8 - xor %r9, %r9, %r9 - xor %r10, %r10, %r10 - xor %r11, %r11, %r11 - xor %r12, %r12, %r12 - xor %r13, %r13, %r13 - xor %r14, %r14, %r14 - xor %r15, %r15, %r15 - xor %r16, %r16, %r16 - xor %r17, %r17, %r17 - xor %r18, %r18, %r18 - xor %r19, %r19, %r19 - xor %r20, %r20, %r20 - xor %r21, %r21, %r21 - xor %r22, %r22, %r22 - xor %r23, %r23, %r23 - xor %r24, %r24, %r24 - xor %r25, %r25, %r25 - xor %r26, %r26, %r26 - xor %r27, %r27, %r27 - xor %r28, %r28, %r28 - xor %r29, %r29, %r29 - xor %r30, %r30, %r30 - xor %r31, %r31, %r31 - lis %r4, __ram_start__@h - ori %r4, %r4, __ram_start__@l - lis %r5, __ram_end__@h - ori %r5, %r5, __ram_end__@l -.cleareccloop: - cmpl %cr0, %r4, %r5 - bge %cr0, .cleareccend - stmw %r16, 0(%r4) - addi %r4, %r4, 64 - b .cleareccloop -.cleareccend: - - /* - * *Finally* the TLB1 is re-allocated to flash, note, the final phase - * is executed from RAM. - */ - lis %r3, TLB1_MAS0@h - mtspr 624, %r3 /* MAS0 */ - lis %r3, TLB1_MAS1@h - ori %r3, %r3, TLB1_MAS1@l - mtspr 625, %r3 /* MAS1 */ - lis %r3, TLB1_MAS2@h - ori %r3, %r3, TLB1_MAS2@l - mtspr 626, %r3 /* MAS2 */ - lis %r3, TLB1_MAS3@h - ori %r3, %r3, TLB1_MAS3@l - mtspr 627, %r3 /* MAS3 */ - mflr %r4 - lis %r6, _ramcode@h - ori %r6, %r6, _ramcode@l - lis %r7, 0x40010000@h - mtctr %r7 - lwz %r3, 0(%r6) - stw %r3, 0(%r7) - lwz %r3, 4(%r6) - stw %r3, 4(%r7) - lwz %r3, 8(%r6) - stw %r3, 8(%r7) - bctrl - mtlr %r4 - - /* - * Branch prediction enabled. - */ - li %r3, BOOT_BUCSR_DEFAULT - mtspr 1013, %r3 /* BUCSR */ - - /* - * Cache invalidated and then enabled. - */ - li %r3, LICSR1_ICINV - mtspr 1011, %r3 /* LICSR1 */ -.inv: mfspr %r3, 1011 /* LICSR1 */ - andi. %r3, %r3, LICSR1_ICINV - bne .inv - lis %r3, BOOT_LICSR1_DEFAULT@h - ori %r3, %r3, BOOT_LICSR1_DEFAULT@l - mtspr 1011, %r3 /* LICSR1 */ - - blr -#endif /* BOOT_PERFORM_CORE_INIT */ - - /* - * Exception vectors initialization. - */ - .align 2 -_ivinit: - /* MSR initialization.*/ - lis %r3, BOOT_MSR_DEFAULT@h - ori %r3, %r3, BOOT_MSR_DEFAULT@l - mtMSR %r3 - - /* IVPR initialization.*/ - lis %r3, __ivpr_base__@h - ori %r3, %r3, __ivpr_base__@l - mtIVPR %r3 - - /* IVORs initialization.*/ - lis %r3, _unhandled_exception@h - ori %r3, %r3, _unhandled_exception@l - - mtspr 400, %r3 /* IVOR0-15 */ - mtspr 401, %r3 - mtspr 402, %r3 - mtspr 403, %r3 - mtspr 404, %r3 - mtspr 405, %r3 - mtspr 406, %r3 - mtspr 407, %r3 - mtspr 408, %r3 - mtspr 409, %r3 - mtspr 410, %r3 - mtspr 411, %r3 - mtspr 412, %r3 - mtspr 413, %r3 - mtspr 414, %r3 - mtspr 415, %r3 - mtspr 528, %r3 /* IVOR32-34 */ - mtspr 529, %r3 - mtspr 530, %r3 - - blr - - .section .handlers, "ax" - - /* - * Unhandled exceptions handler. - */ - .weak _unhandled_exception - .type _unhandled_exception, @function -_unhandled_exception: - b _unhandled_exception - -#endif /* !defined(__DOXYGEN__) */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC564Axx/intc.h b/os/common/ports/e200/devices/SPC564Axx/intc.h deleted file mode 100644 index 7f34613d9..000000000 --- a/os/common/ports/e200/devices/SPC564Axx/intc.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC564Axx/intc.h - * @brief SPC564Axx INTC module header. - * - * @addtogroup INTC - * @{ - */ - -#ifndef _INTC_H_ -#define _INTC_H_ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/** - * @name INTC addresses - * @{ - */ -#define INTC_BASE 0xFFF48000 -#define INTC_IACKR_ADDR (INTC_BASE + 0x10) -#define INTC_EOIR_ADDR (INTC_BASE + 0x18) -/** @} */ - -/** - * @brief INTC priority levels. - */ -#define INTC_PRIORITY_LEVELS 16U - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/** - * @name INTC-related macros - * @{ - */ -#define INTC_BCR (*((volatile uint32_t *)(INTC_BASE + 0))) -#define INTC_CPR(n) (*((volatile uint32_t *)(INTC_BASE + 8 + ((n) * sizeof (uint32_t))))) -#define INTC_IACKR(n) (*((volatile uint32_t *)(INTC_BASE + 0x10 + ((n) * sizeof (uint32_t))))) -#define INTC_EOIR(n) (*((volatile uint32_t *)(INTC_BASE + 0x18 + ((n) * sizeof (uint32_t))))) -#define INTC_PSR(n) (*((volatile uint8_t *)(INTC_BASE + 0x40 + ((n) * sizeof (uint8_t))))) -/** @} */ - -/** - * @brief Core selection macros for PSR register. - */ -#define INTC_PSR_CORE0 0x00 - -/** - * @brief PSR register content helper - */ -#define INTC_PSR_ENABLE(cores, prio) ((uint32_t)(cores) | (uint32_t)(prio)) - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _INTC_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC564Axx/ppcparams.h b/os/common/ports/e200/devices/SPC564Axx/ppcparams.h deleted file mode 100644 index ed4716b99..000000000 --- a/os/common/ports/e200/devices/SPC564Axx/ppcparams.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC564Axx/ppcparams.h - * @brief PowerPC parameters for the SPC564Axx. - * - * @defgroup PPC_SPC564Axx SPC564Axx Specific Parameters - * @ingroup PPC_SPECIFIC - * @details This file contains the PowerPC specific parameters for the - * SPC564Axx platform. - * @{ - */ - -#ifndef _PPCPARAMS_H_ -#define _PPCPARAMS_H_ - -/** - * @brief Family identification macro. - */ -#define PPC_SPC564Axx - -/** - * @brief PPC core model. - */ -#define PPC_VARIANT PPC_VARIANT_e200z4 - -/** - * @brief Number of cores. - */ -#define PPC_CORE_NUMBER 1 - -/** - * @brief Number of writable bits in IVPR register. - */ -#define PPC_IVPR_BITS 16 - -/** - * @brief IVORx registers support. - */ -#define PPC_SUPPORTS_IVORS TRUE - -/** - * @brief Book E instruction set support. - */ -#define PPC_SUPPORTS_BOOKE TRUE - -/** - * @brief VLE instruction set support. - */ -#define PPC_SUPPORTS_VLE TRUE - -/** - * @brief Supports VLS Load/Store Multiple Volatile instructions. - */ -#define PPC_SUPPORTS_VLE_MULTI TRUE - -/** - * @brief Supports the decrementer timer. - */ -#define PPC_SUPPORTS_DECREMENTER TRUE - -/** - * @brief Number of interrupt sources. - */ -#define PPC_NUM_VECTORS 486 - -#endif /* _PPCPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC56ECxx/boot.h b/os/common/ports/e200/devices/SPC56ECxx/boot.h deleted file mode 100644 index 4c50922b8..000000000 --- a/os/common/ports/e200/devices/SPC56ECxx/boot.h +++ /dev/null @@ -1,251 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file boot.h - * @brief Boot parameters for the SPC56ECxx. - * @{ - */ - -#ifndef _BOOT_H_ -#define _BOOT_H_ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/** - * @name MASx registers definitions - * @{ - */ -#define MAS0_TBLMAS_TBL 0x10000000 -#define MAS0_ESEL_MASK 0x000F0000 -#define MAS0_ESEL(n) ((n) << 16) - -#define MAS1_VALID 0x80000000 -#define MAS1_IPROT 0x40000000 -#define MAS1_TID_MASK 0x00FF0000 -#define MAS1_TS 0x00001000 -#define MAS1_TSISE_MASK 0x00000F80 -#define MAS1_TSISE_1K 0x00000000 -#define MAS1_TSISE_2K 0x00000080 -#define MAS1_TSISE_4K 0x00000100 -#define MAS1_TSISE_8K 0x00000180 -#define MAS1_TSISE_16K 0x00000200 -#define MAS1_TSISE_32K 0x00000280 -#define MAS1_TSISE_64K 0x00000300 -#define MAS1_TSISE_128K 0x00000380 -#define MAS1_TSISE_256K 0x00000400 -#define MAS1_TSISE_512K 0x00000480 -#define MAS1_TSISE_1M 0x00000500 -#define MAS1_TSISE_2M 0x00000580 -#define MAS1_TSISE_4M 0x00000600 -#define MAS1_TSISE_8M 0x00000680 -#define MAS1_TSISE_16M 0x00000700 -#define MAS1_TSISE_32M 0x00000780 -#define MAS1_TSISE_64M 0x00000800 -#define MAS1_TSISE_128M 0x00000880 -#define MAS1_TSISE_256M 0x00000900 -#define MAS1_TSISE_512M 0x00000980 -#define MAS1_TSISE_1G 0x00000A00 -#define MAS1_TSISE_2G 0x00000A80 -#define MAS1_TSISE_4G 0x00000B00 - -#define MAS2_EPN_MASK 0xFFFFFC00 -#define MAS2_EPN(n) ((n) & MAS2_EPN_MASK) -#define MAS2_EBOOK 0x00000000 -#define MAS2_VLE 0x00000020 -#define MAS2_W 0x00000010 -#define MAS2_I 0x00000008 -#define MAS2_M 0x00000004 -#define MAS2_G 0x00000002 -#define MAS2_E 0x00000001 - -#define MAS3_RPN_MASK 0xFFFFFC00 -#define MAS3_RPN(n) ((n) & MAS3_RPN_MASK) -#define MAS3_U0 0x00000200 -#define MAS3_U1 0x00000100 -#define MAS3_U2 0x00000080 -#define MAS3_U3 0x00000040 -#define MAS3_UX 0x00000020 -#define MAS3_SX 0x00000010 -#define MAS3_UW 0x00000008 -#define MAS3_SW 0x00000004 -#define MAS3_UR 0x00000002 -#define MAS3_SR 0x00000001 -/** @} */ - -/** - * @name BUCSR registers definitions - * @{ - */ -#define BUCSR_BPEN 0x00000001 -#define BUCSR_BPRED_MASK 0x00000006 -#define BUCSR_BPRED_0 0x00000000 -#define BUCSR_BPRED_1 0x00000002 -#define BUCSR_BPRED_2 0x00000004 -#define BUCSR_BPRED_3 0x00000006 -#define BUCSR_BALLOC_MASK 0x00000030 -#define BUCSR_BALLOC_0 0x00000000 -#define BUCSR_BALLOC_1 0x00000010 -#define BUCSR_BALLOC_2 0x00000020 -#define BUCSR_BALLOC_3 0x00000030 -#define BUCSR_BALLOC_BFI 0x00000200 -/** @} */ - -/** - * @name LICSR1 registers definitions - * @{ - */ -#define LICSR1_ICE 0x00000001 -#define LICSR1_ICINV 0x00000002 -#define LICSR1_ICORG 0x00000010 -/** @} */ - -/** - * @name MSR register definitions - * @{ - */ -#define MSR_UCLE 0x04000000 -#define MSR_SPE 0x02000000 -#define MSR_WE 0x00040000 -#define MSR_CE 0x00020000 -#define MSR_EE 0x00008000 -#define MSR_PR 0x00004000 -#define MSR_FP 0x00002000 -#define MSR_ME 0x00001000 -#define MSR_FE0 0x00000800 -#define MSR_DE 0x00000200 -#define MSR_FE1 0x00000100 -#define MSR_IS 0x00000020 -#define MSR_DS 0x00000010 -#define MSR_RI 0x00000002 -/** @} */ - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/* - * TLB default settings. - */ -#define TLB0_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(0)) -#define TLB0_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_4M) -#define TLB0_MAS2 (MAS2_EPN(0x00000000) | MAS2_VLE) -#define TLB0_MAS3 (MAS3_RPN(0x00000000) | \ - MAS3_UX | MAS3_SX | MAS3_UW | MAS3_SW | \ - MAS3_UR | MAS3_SR) - -#define TLB1_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(1)) -#define TLB1_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_256K) -#define TLB1_MAS2 (MAS2_EPN(0x40000000) | MAS2_VLE) -#define TLB1_MAS3 (MAS3_RPN(0x40000000) | \ - MAS3_UX | MAS3_SX | MAS3_UW | MAS3_SW | \ - MAS3_UR | MAS3_SR) - -#define TLB2_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(2)) -#define TLB2_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) -#define TLB2_MAS2 (MAS2_EPN(0xC3F00000) | MAS2_I) -#define TLB2_MAS3 (MAS3_RPN(0xC3F00000) | \ - MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) - -#define TLB3_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(3)) -#define TLB3_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) -#define TLB3_MAS2 (MAS2_EPN(0xFFE00000) | MAS2_I) -#define TLB3_MAS3 (MAS3_RPN(0xFFE00000) | \ - MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) - -#define TLB4_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(4)) -#define TLB4_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) -#define TLB4_MAS2 (MAS2_EPN(0x8FF00000) | MAS2_I) -#define TLB4_MAS3 (MAS3_RPN(0x8FF00000) | \ - MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) - -#define TLB5_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(5)) -#define TLB5_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) -#define TLB5_MAS2 (MAS2_EPN(0xFFF00000) | MAS2_I) -#define TLB5_MAS3 (MAS3_RPN(0xFFF00000) | \ - MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) - -/* - * BUCSR default settings. - */ -#if !defined(BOOT_BUCSR_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BPRED_0 | \ - BUCSR_BALLOC_0 | BUCSR_BALLOC_BFI) -#endif - -/* - * LICSR1 default settings. - */ -#if !defined(BOOT_LICSR1_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_LICSR1_DEFAULT (LICSR1_ICE | LICSR1_ICORG) -#endif - -/* - * MSR default settings. - */ -#if !defined(BOOT_MSR_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_MSR_DEFAULT (MSR_SPE | MSR_WE | MSR_CE | MSR_ME) -#endif - -/* - * Boot default settings. - */ -#if !defined(BOOT_PERFORM_CORE_INIT) || defined(__DOXYGEN__) -#define BOOT_PERFORM_CORE_INIT 1 -#endif - -/* - * VLE mode default settings. - */ -#if !defined(BOOT_USE_VLE) || defined(__DOXYGEN__) -#define BOOT_USE_VLE 1 -#endif - -/* - * RAM relocation flag. - */ -#if !defined(BOOT_RELOCATE_IN_RAM) || defined(__DOXYGEN__) -#define BOOT_RELOCATE_IN_RAM 0 -#endif - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _BOOT_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC56ECxx/boot.s b/os/common/ports/e200/devices/SPC56ECxx/boot.s deleted file mode 100644 index 26cfcaaec..000000000 --- a/os/common/ports/e200/devices/SPC56ECxx/boot.s +++ /dev/null @@ -1,406 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC56ECxx/boot.s - * @brief SPC56ECxx boot-related code. - * - * @addtogroup PPC_BOOT - * @{ - */ - -#include "boot.h" - -#if !defined(__DOXYGEN__) - - /* BAM record.*/ - .section .boot, "ax" - -#if BOOT_USE_VLE - .long 0x015A0000 -#else - .long 0x005A0000 -#endif - .long _reset_address - - .align 2 - .globl _reset_address - .type _reset_address, @function -_reset_address: -#if BOOT_PERFORM_CORE_INIT - bl _coreinit -#endif - bl _ivinit - -#if BOOT_RELOCATE_IN_RAM - /* - * Image relocation in RAM. - */ - lis %r4, __ram_reloc_start__@h - ori %r4, %r4, __ram_reloc_start__@l - lis %r5, __ram_reloc_dest__@h - ori %r5, %r5, __ram_reloc_dest__@l - lis %r6, __ram_reloc_end__@h - ori %r6, %r6, __ram_reloc_end__@l -.relloop: - cmpl cr0, %r4, %r6 - bge cr0, .relend - lwz %r7, 0(%r4) - addi %r4, %r4, 4 - stw %r7, 0(%r5) - addi %r5, %r5, 4 - b .relloop -.relend: - lis %r3, _boot_address@h - ori %r3, %r3, _boot_address@l - mtctr %r3 - bctrl -#else - b _boot_address -#endif - -#if BOOT_PERFORM_CORE_INIT - .align 2 -_ramcode: - tlbwe - isync - blr - - .align 2 -_coreinit: - /* - * Invalidating all TLBs except TLB0. - */ - lis %r3, 0 - mtspr 625, %r3 /* MAS1 */ - mtspr 626, %r3 /* MAS2 */ - mtspr 627, %r3 /* MAS3 */ - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(1))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(2))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(3))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(4))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(5))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(6))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(7))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(8))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(9))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(10))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(11))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(12))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(13))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(14))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(15))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - - /* - * TLB1 allocated to internal RAM. - */ - lis %r3, TLB1_MAS0@h - mtspr 624, %r3 /* MAS0 */ - lis %r3, TLB1_MAS1@h - ori %r3, %r3, TLB1_MAS1@l - mtspr 625, %r3 /* MAS1 */ - lis %r3, TLB1_MAS2@h - ori %r3, %r3, TLB1_MAS2@l - mtspr 626, %r3 /* MAS2 */ - lis %r3, TLB1_MAS3@h - ori %r3, %r3, TLB1_MAS3@l - mtspr 627, %r3 /* MAS3 */ - tlbwe - - /* - * TLB2 allocated to internal Peripherals Bridge A. - */ - lis %r3, TLB2_MAS0@h - mtspr 624, %r3 /* MAS0 */ - lis %r3, TLB2_MAS1@h - ori %r3, %r3, TLB2_MAS1@l - mtspr 625, %r3 /* MAS1 */ - lis %r3, TLB2_MAS2@h - ori %r3, %r3, TLB2_MAS2@l - mtspr 626, %r3 /* MAS2 */ - lis %r3, TLB2_MAS3@h - ori %r3, %r3, TLB2_MAS3@l - mtspr 627, %r3 /* MAS3 */ - tlbwe - - /* - * TLB3 allocated to internal Peripherals Bridge B. - */ - lis %r3, TLB3_MAS0@h - mtspr 624, %r3 /* MAS0 */ - lis %r3, TLB3_MAS1@h - ori %r3, %r3, TLB3_MAS1@l - mtspr 625, %r3 /* MAS1 */ - lis %r3, TLB3_MAS2@h - ori %r3, %r3, TLB3_MAS2@l - mtspr 626, %r3 /* MAS2 */ - lis %r3, TLB3_MAS3@h - ori %r3, %r3, TLB3_MAS3@l - mtspr 627, %r3 /* MAS3 */ - tlbwe - - /* - * TLB4 allocated to on-platform peripherals. - */ - lis %r3, TLB4_MAS0@h - mtspr 624, %r3 /* MAS0 */ - lis %r3, TLB4_MAS1@h - ori %r3, %r3, TLB4_MAS1@l - mtspr 625, %r3 /* MAS1 */ - lis %r3, TLB4_MAS2@h - ori %r3, %r3, TLB4_MAS2@l - mtspr 626, %r3 /* MAS2 */ - lis %r3, TLB4_MAS3@h - ori %r3, %r3, TLB4_MAS3@l - mtspr 627, %r3 /* MAS3 */ - tlbwe - - /* - * TLB5 allocated to on-platform peripherals. - */ - lis %r3, TLB5_MAS0@h - mtspr 624, %r3 /* MAS0 */ - lis %r3, TLB5_MAS1@h - ori %r3, %r3, TLB5_MAS1@l - mtspr 625, %r3 /* MAS1 */ - lis %r3, TLB5_MAS2@h - ori %r3, %r3, TLB5_MAS2@l - mtspr 626, %r3 /* MAS2 */ - lis %r3, TLB5_MAS3@h - ori %r3, %r3, TLB5_MAS3@l - mtspr 627, %r3 /* MAS3 */ - tlbwe - - /* - * RAM clearing, this device requires a write to all RAM location in - * order to initialize the ECC detection hardware, this is going to - * slow down the startup but there is no way around. - */ - xor %r0, %r0, %r0 - xor %r1, %r1, %r1 - xor %r2, %r2, %r2 - xor %r3, %r3, %r3 - xor %r4, %r4, %r4 - xor %r5, %r5, %r5 - xor %r6, %r6, %r6 - xor %r7, %r7, %r7 - xor %r8, %r8, %r8 - xor %r9, %r9, %r9 - xor %r10, %r10, %r10 - xor %r11, %r11, %r11 - xor %r12, %r12, %r12 - xor %r13, %r13, %r13 - xor %r14, %r14, %r14 - xor %r15, %r15, %r15 - xor %r16, %r16, %r16 - xor %r17, %r17, %r17 - xor %r18, %r18, %r18 - xor %r19, %r19, %r19 - xor %r20, %r20, %r20 - xor %r21, %r21, %r21 - xor %r22, %r22, %r22 - xor %r23, %r23, %r23 - xor %r24, %r24, %r24 - xor %r25, %r25, %r25 - xor %r26, %r26, %r26 - xor %r27, %r27, %r27 - xor %r28, %r28, %r28 - xor %r29, %r29, %r29 - xor %r30, %r30, %r30 - xor %r31, %r31, %r31 - lis %r4, __ram_start__@h - ori %r4, %r4, __ram_start__@l - lis %r5, __ram_end__@h - ori %r5, %r5, __ram_end__@l -.cleareccloop: - cmpl %cr0, %r4, %r5 - bge %cr0, .cleareccend - stmw %r16, 0(%r4) - addi %r4, %r4, 64 - b .cleareccloop -.cleareccend: - - /* - * Special function registers clearing, required in order to avoid - * possible problems with lockstep mode. - */ - mtcrf 0xFF, %r31 - mtspr 9, %r31 /* CTR */ - mtspr 22, %r31 /* DEC */ - mtspr 26, %r31 /* SRR0-1 */ - mtspr 27, %r31 - mtspr 54, %r31 /* DECAR */ - mtspr 58, %r31 /* CSRR0-1 */ - mtspr 59, %r31 - mtspr 61, %r31 /* DEAR */ - mtspr 256, %r31 /* USPRG0 */ - mtspr 272, %r31 /* SPRG1-7 */ - mtspr 273, %r31 - mtspr 274, %r31 - mtspr 275, %r31 - mtspr 276, %r31 - mtspr 277, %r31 - mtspr 278, %r31 - mtspr 279, %r31 - mtspr 285, %r31 /* TBU */ - mtspr 284, %r31 /* TBL */ -#if 0 - mtspr 318, %r31 /* DVC1-2 */ - mtspr 319, %r31 -#endif - mtspr 562, %r31 /* DBCNT */ - mtspr 570, %r31 /* MCSRR0 */ - mtspr 571, %r31 /* MCSRR1 */ - mtspr 604, %r31 /* SPRG8-9 */ - mtspr 605, %r31 - - /* - * *Finally* the TLB0 is re-allocated to flash, note, the final phase - * is executed from RAM. - */ - lis %r3, TLB0_MAS0@h - mtspr 624, %r3 /* MAS0 */ - lis %r3, TLB0_MAS1@h - ori %r3, %r3, TLB0_MAS1@l - mtspr 625, %r3 /* MAS1 */ - lis %r3, TLB0_MAS2@h - ori %r3, %r3, TLB0_MAS2@l - mtspr 626, %r3 /* MAS2 */ - lis %r3, TLB0_MAS3@h - ori %r3, %r3, TLB0_MAS3@l - mtspr 627, %r3 /* MAS3 */ - mflr %r4 - lis %r6, _ramcode@h - ori %r6, %r6, _ramcode@l - lis %r7, 0x40010000@h - mtctr %r7 - lwz %r3, 0(%r6) - stw %r3, 0(%r7) - lwz %r3, 4(%r6) - stw %r3, 4(%r7) - lwz %r3, 8(%r6) - stw %r3, 8(%r7) - bctrl - mtlr %r4 - - /* - * Branch prediction enabled. - */ - li %r3, BOOT_BUCSR_DEFAULT - mtspr 1013, %r3 /* BUCSR */ - - /* - * Cache invalidated and then enabled. - */ - li %r3, LICSR1_ICINV - mtspr 1011, %r3 /* LICSR1 */ -.inv: mfspr %r3, 1011 /* LICSR1 */ - andi. %r3, %r3, LICSR1_ICINV - bne .inv - lis %r3, BOOT_LICSR1_DEFAULT@h - ori %r3, %r3, BOOT_LICSR1_DEFAULT@l - mtspr 1011, %r3 /* LICSR1 */ - - blr -#endif /* BOOT_PERFORM_CORE_INIT */ - - /* - * Exception vectors initialization. - */ - .align 2 -_ivinit: - /* MSR initialization.*/ - lis %r3, BOOT_MSR_DEFAULT@h - ori %r3, %r3, BOOT_MSR_DEFAULT@l - mtMSR %r3 - - /* IVPR initialization.*/ - lis %r3, __ivpr_base__@h - ori %r3, %r3, __ivpr_base__@l - mtIVPR %r3 - - /* IVORs initialization.*/ - lis %r3, _unhandled_exception@h - ori %r3, %r3, _unhandled_exception@l - - mtspr 400, %r3 /* IVOR0-15 */ - mtspr 401, %r3 - mtspr 402, %r3 - mtspr 403, %r3 - mtspr 404, %r3 - mtspr 405, %r3 - mtspr 406, %r3 - mtspr 407, %r3 - mtspr 408, %r3 - mtspr 409, %r3 - mtspr 410, %r3 - mtspr 411, %r3 - mtspr 412, %r3 - mtspr 413, %r3 - mtspr 414, %r3 - mtspr 415, %r3 - mtspr 528, %r3 /* IVOR32-34 */ - mtspr 529, %r3 - mtspr 530, %r3 - - blr - - .section .handlers, "ax" - - /* - * Unhandled exceptions handler. - */ - .weak _unhandled_exception - .type _unhandled_exception, @function -_unhandled_exception: - b _unhandled_exception - -#endif /* !defined(__DOXYGEN__) */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC56ECxx/boot_cw.s b/os/common/ports/e200/devices/SPC56ECxx/boot_cw.s deleted file mode 100644 index b6698607b..000000000 --- a/os/common/ports/e200/devices/SPC56ECxx/boot_cw.s +++ /dev/null @@ -1,403 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC56ECxx/boot.s - * @brief SPC56ECxx boot-related code. - * - * @addtogroup PPC_BOOT - * @{ - */ - -#include "boot.h" - -#if !defined(__DOXYGEN__) - - .extern _boot_address - .extern __ram_start__ - .extern __ram_end__ - .extern __ivpr_base__ - - .extern _unhandled_exception - - /* BAM record.*/ - .section .boot, 16 - -#if BOOT_USE_VLE - .long 0x015A0000 -#else - .long 0x005A0000 -#endif - .long _reset_address - - .align 4 - .globl _reset_address - .type _reset_address, @function -_reset_address: -#if BOOT_PERFORM_CORE_INIT - e_bl _coreinit -#endif - e_bl _ivinit - -#if BOOT_RELOCATE_IN_RAM - /* - * Image relocation in RAM. - */ - e_lis r4, __ram_reloc_start__@h - e_or2i r4, r4, __ram_reloc_start__@l - e_lis r5, __ram_reloc_dest__@h - e_or2i r5, r5, __ram_reloc_dest__@l - e_lis r6, __ram_reloc_end__@h - e_or2i r6, r6, __ram_reloc_end__@l -.relloop: - se_cmpl r4, r6 - se_bge .relend - se_lwz r7, 0(r4) - se_addi r4, 4 - se_stw r7, 0(r5) - se_addi r5, 4 - se_b .relloop -.relend: - e_lis r3, _boot_address@h - e_or2i r3, _boot_address@l - mtctr r3 - se_bctrl -#else - e_b _boot_address -#endif - -#if BOOT_PERFORM_CORE_INIT - .align 4 -_ramcode: - tlbwe - se_isync - se_blr - - .align 2 -_coreinit: - /* - * Invalidating all TLBs except TLB0. - */ - e_lis r3, 0 - mtspr 625, r3 /* MAS1 */ - mtspr 626, r3 /* MAS2 */ - mtspr 627, r3 /* MAS3 */ - e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(1))@h - mtspr 624, r3 /* MAS0 */ - tlbwe - e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(2))@h - mtspr 624, r3 /* MAS0 */ - tlbwe - e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(3))@h - mtspr 624, r3 /* MAS0 */ - tlbwe - e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(4))@h - mtspr 624, r3 /* MAS0 */ - tlbwe - e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(5))@h - mtspr 624, r3 /* MAS0 */ - tlbwe - e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(6))@h - mtspr 624, r3 /* MAS0 */ - tlbwe - e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(7))@h - mtspr 624, r3 /* MAS0 */ - tlbwe - e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(8))@h - mtspr 624, r3 /* MAS0 */ - tlbwe - e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(9))@h - mtspr 624, r3 /* MAS0 */ - tlbwe - e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(10))@h - mtspr 624, r3 /* MAS0 */ - tlbwe - e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(11))@h - mtspr 624, r3 /* MAS0 */ - tlbwe - e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(12))@h - mtspr 624, r3 /* MAS0 */ - tlbwe - e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(13))@h - mtspr 624, r3 /* MAS0 */ - tlbwe - e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(14))@h - mtspr 624, r3 /* MAS0 */ - tlbwe - e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(15))@h - mtspr 624, r3 /* MAS0 */ - tlbwe - - /* - * TLB1 allocated to internal RAM. - */ - e_lis r3, TLB1_MAS0@h - mtspr 624, r3 /* MAS0 */ - e_lis r3, TLB1_MAS1@h - e_or2i r3, TLB1_MAS1@l - mtspr 625, r3 /* MAS1 */ - e_lis r3, TLB1_MAS2@h - e_or2i r3, TLB1_MAS2@l - mtspr 626, r3 /* MAS2 */ - e_lis r3, TLB1_MAS3@h - e_or2i r3, TLB1_MAS3@l - mtspr 627, r3 /* MAS3 */ - tlbwe - - /* - * TLB2 allocated to internal Peripherals Bridge A. - */ - e_lis r3, TLB2_MAS0@h - mtspr 624, r3 /* MAS0 */ - e_lis r3, TLB2_MAS1@h - e_or2i r3, TLB2_MAS1@l - mtspr 625, r3 /* MAS1 */ - e_lis r3, TLB2_MAS2@h - e_or2i r3, TLB2_MAS2@l - mtspr 626, r3 /* MAS2 */ - e_lis r3, TLB2_MAS3@h - e_or2i r3, TLB2_MAS3@l - mtspr 627, r3 /* MAS3 */ - tlbwe - - /* - * TLB3 allocated to internal Peripherals Bridge B. - */ - e_lis r3, TLB3_MAS0@h - mtspr 624, r3 /* MAS0 */ - e_lis r3, TLB3_MAS1@h - e_or2i r3, TLB3_MAS1@l - mtspr 625, r3 /* MAS1 */ - e_lis r3, TLB3_MAS2@h - e_or2i r3, TLB3_MAS2@l - mtspr 626, r3 /* MAS2 */ - e_lis r3, TLB3_MAS3@h - e_or2i r3, TLB3_MAS3@l - mtspr 627, r3 /* MAS3 */ - tlbwe - - /* - * TLB4 allocated to on-platform peripherals. - */ - e_lis r3, TLB4_MAS0@h - mtspr 624, r3 /* MAS0 */ - e_lis r3, TLB4_MAS1@h - e_or2i r3, TLB4_MAS1@l - mtspr 625, r3 /* MAS1 */ - e_lis r3, TLB4_MAS2@h - e_or2i r3, TLB4_MAS2@l - mtspr 626, r3 /* MAS2 */ - e_lis r3, TLB4_MAS3@h - e_or2i r3, TLB4_MAS3@l - mtspr 627, r3 /* MAS3 */ - tlbwe - - /* - * TLB5 allocated to on-platform peripherals. - */ - e_lis r3, TLB5_MAS0@h - mtspr 624, r3 /* MAS0 */ - e_lis r3, TLB5_MAS1@h - e_or2i r3, TLB5_MAS1@l - mtspr 625, r3 /* MAS1 */ - e_lis r3, TLB5_MAS2@h - e_or2i r3, TLB5_MAS2@l - mtspr 626, r3 /* MAS2 */ - e_lis r3, TLB5_MAS3@h - e_or2i r3, TLB5_MAS3@l - mtspr 627, r3 /* MAS3 */ - tlbwe - - /* - * RAM clearing, this device requires a write to all RAM location in - * order to initialize the ECC detection hardware, this is going to - * slow down the startup but there is no way around. - */ - xor r0, r0, r0 - xor r1, r1, r1 - xor r2, r2, r2 - xor r3, r3, r3 - xor r4, r4, r4 - xor r5, r5, r5 - xor r6, r6, r6 - xor r7, r7, r7 - xor r8, r8, r8 - xor r9, r9, r9 - xor r10, r10, r10 - xor r11, r11, r11 - xor r12, r12, r12 - xor r13, r13, r13 - xor r14, r14, r14 - xor r15, r15, r15 - xor r16, r16, r16 - xor r17, r17, r17 - xor r18, r18, r18 - xor r19, r19, r19 - xor r20, r20, r20 - xor r21, r21, r21 - xor r22, r22, r22 - xor r23, r23, r23 - xor r24, r24, r24 - xor r25, r25, r25 - xor r26, r26, r26 - xor r27, r27, r27 - xor r28, r28, r28 - xor r29, r29, r29 - xor r30, r30, r30 - xor r31, r31, r31 - e_lis r4, __ram_start__@h - e_or2i r4, __ram_start__@l - e_lis r5, __ram_end__@h - e_or2i r5, __ram_end__@l -.cleareccloop: - se_cmpl r4, r5 - se_bge .cleareccend - e_stmw r16, 0(r4) - e_addi r4, r4, 64 - se_b .cleareccloop -.cleareccend: - - /* - * Special function registers clearing, required in order to avoid - * possible problems with lockstep mode. - */ - mtcrf 0xFF, r31 - mtspr 9, r31 /* CTR */ - mtspr 22, r31 /* DEC */ - mtspr 26, r31 /* SRR0-1 */ - mtspr 27, r31 - mtspr 54, r31 /* DECAR */ - mtspr 58, r31 /* CSRR0-1 */ - mtspr 59, r31 - mtspr 61, r31 /* DEAR */ - mtspr 256, r31 /* USPRG0 */ - mtspr 272, r31 /* SPRG1-7 */ - mtspr 273, r31 - mtspr 274, r31 - mtspr 275, r31 - mtspr 276, r31 - mtspr 277, r31 - mtspr 278, r31 - mtspr 279, r31 - mtspr 285, r31 /* TBU */ - mtspr 284, r31 /* TBL */ -#if 0 - mtspr 318, r31 /* DVC1-2 */ - mtspr 319, r31 -#endif - mtspr 562, r31 /* DBCNT */ - mtspr 570, r31 /* MCSRR0 */ - mtspr 571, r31 /* MCSRR1 */ - mtspr 604, r31 /* SPRG8-9 */ - mtspr 605, r31 - - /* - * *Finally* the TLB0 is re-allocated to flash, note, the final phase - * is executed from RAM. - */ - e_lis r3, TLB0_MAS0@h - mtspr 624, r3 /* MAS0 */ - e_lis r3, TLB0_MAS1@h - e_or2i r3, TLB0_MAS1@l - mtspr 625, r3 /* MAS1 */ - e_lis r3, TLB0_MAS2@h - e_or2i r3, TLB0_MAS2@l - mtspr 626, r3 /* MAS2 */ - e_lis r3, TLB0_MAS3@h - e_or2i r3, TLB0_MAS3@l - mtspr 627, r3 /* MAS3 */ - se_mflr r4 - e_lis r6, _ramcode@h - e_or2i r6, _ramcode@l - e_lis r7, 0x40010000@h - mtctr r7 - se_lwz r3, 0(r6) - se_stw r3, 0(r7) - se_lwz r3, 4(r6) - se_stw r3, 4(r7) - se_lwz r3, 8(r6) - se_stw r3, 8(r7) - se_bctrl - mtlr r4 - - /* - * Branch prediction enabled. - */ - e_li r3, BOOT_BUCSR_DEFAULT - mtspr 1013, r3 /* BUCSR */ - - /* - * Cache invalidated and then enabled. - */ - se_li r3, LICSR1_ICINV - mtspr 1011, r3 /* LICSR1 */ -.inv: mfspr r3, 1011 /* LICSR1 */ - e_andi. r3, r3, LICSR1_ICINV - se_bne .inv - e_lis r3, BOOT_LICSR1_DEFAULT@h - e_or2i r3, BOOT_LICSR1_DEFAULT@l - mtspr 1011, r3 /* LICSR1 */ - - se_blr -#endif /* BOOT_PERFORM_CORE_INIT */ - - /* - * Exception vectors initialization. - */ - .align 4 -_ivinit: - /* MSR initialization.*/ - e_lis r3, BOOT_MSR_DEFAULT@h - e_ori r3, r3, BOOT_MSR_DEFAULT@l - mtMSR r3 - - /* IVPR initialization.*/ - e_lis r3, __ivpr_base__@h - e_or2i r3, __ivpr_base__@l - mtIVPR r3 - - /* IVORs initialization.*/ - e_lis r3, _unhandled_exception@h - e_or2i r3, _unhandled_exception@l - - mtspr 400, r3 /* IVOR0-15 */ - mtspr 401, r3 - mtspr 402, r3 - mtspr 403, r3 - mtspr 404, r3 - mtspr 405, r3 - mtspr 406, r3 - mtspr 407, r3 - mtspr 408, r3 - mtspr 409, r3 - mtspr 410, r3 - mtspr 411, r3 - mtspr 412, r3 - mtspr 413, r3 - mtspr 414, r3 - mtspr 415, r3 - mtspr 528, r3 /* IVOR32-34 */ - mtspr 529, r3 - mtspr 530, r3 - - se_blr - -#endif /* !defined(__DOXYGEN__) */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC56ECxx/intc.h b/os/common/ports/e200/devices/SPC56ECxx/intc.h deleted file mode 100644 index bb8b13dbc..000000000 --- a/os/common/ports/e200/devices/SPC56ECxx/intc.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC56ECxx/intc.h - * @brief SPC56ECxx INTC module header. - * - * @addtogroup INTC - * @{ - */ - -#ifndef _INTC_H_ -#define _INTC_H_ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/** - * @name INTC addresses - * @{ - */ -#define INTC_BASE 0xFFF48000 -#define INTC_IACKR_ADDR (INTC_BASE + 0x10) -#define INTC_EOIR_ADDR (INTC_BASE + 0x18) -/** @} */ - -/** - * @brief INTC priority levels. - */ -#define INTC_PRIORITY_LEVELS 16U - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/** - * @name INTC-related macros - * @{ - */ -#define INTC_BCR (*((volatile uint32_t *)(INTC_BASE + 0))) -#define INTC_CPR(n) (*((volatile uint32_t *)(INTC_BASE + 8 + ((n) * sizeof (uint32_t))))) -#define INTC_IACKR(n) (*((volatile uint32_t *)(INTC_BASE + 0x10 + ((n) * sizeof (uint32_t))))) -#define INTC_EOIR(n) (*((volatile uint32_t *)(INTC_BASE + 0x18 + ((n) * sizeof (uint32_t))))) -#define INTC_PSR(n) (*((volatile uint8_t *)(INTC_BASE + 0x40 + ((n) * sizeof (uint8_t))))) -/** @} */ - -/** - * @brief Core selection macros for PSR register. - */ -#define INTC_PSR_CORE0 0x00 -#define INTC_PSR_CORE1 0xC0 -#define INTC_PSR_CORES01 0x40 - -/** - * @brief PSR register content helper - */ -#define INTC_PSR_ENABLE(cores, prio) ((uint32_t)(cores) | (uint32_t)(prio)) - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _INTC_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC56ECxx/ppcparams.h b/os/common/ports/e200/devices/SPC56ECxx/ppcparams.h deleted file mode 100644 index 90538fecb..000000000 --- a/os/common/ports/e200/devices/SPC56ECxx/ppcparams.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC56ECxx/ppcparams.h - * @brief PowerPC parameters for the SPC56ECxx. - * - * @defgroup PPC_SPC56ECxx SPC56ECxx Specific Parameters - * @ingroup PPC_SPECIFIC - * @details This file contains the PowerPC specific parameters for the - * SPC56ECxx platform. - * @{ - */ - -#ifndef _PPCPARAMS_H_ -#define _PPCPARAMS_H_ - -/** - * @brief Family identification macro. - */ -#define PPC_SPC56ECxx - -/** - * @brief PPC core model. - */ -#define PPC_VARIANT PPC_VARIANT_e200z4 - -/** - * @brief Number of cores. - */ -#define PPC_CORE_NUMBER 1 - -/** - * @brief Number of writable bits in IVPR register. - */ -#define PPC_IVPR_BITS 16 - -/** - * @brief IVORx registers support. - */ -#define PPC_SUPPORTS_IVORS TRUE - -/** - * @brief Book E instruction set support. - */ -#define PPC_SUPPORTS_BOOKE TRUE - -/** - * @brief VLE instruction set support. - */ -#define PPC_SUPPORTS_VLE TRUE - -/** - * @brief Supports VLS Load/Store Multiple Volatile instructions. - */ -#define PPC_SUPPORTS_VLE_MULTI TRUE - -/** - * @brief Supports the decrementer timer. - */ -#define PPC_SUPPORTS_DECREMENTER TRUE - -/** - * @brief Number of interrupt sources. - */ -#define PPC_NUM_VECTORS 279 - -#endif /* _PPCPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC56ELxx/boot.h b/os/common/ports/e200/devices/SPC56ELxx/boot.h deleted file mode 100644 index aeb2bc0bc..000000000 --- a/os/common/ports/e200/devices/SPC56ELxx/boot.h +++ /dev/null @@ -1,251 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file boot.h - * @brief Boot parameters for the SPC56ELxx. - * @{ - */ - -#ifndef _BOOT_H_ -#define _BOOT_H_ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/** - * @name MASx registers definitions - * @{ - */ -#define MAS0_TBLMAS_TBL 0x10000000 -#define MAS0_ESEL_MASK 0x000F0000 -#define MAS0_ESEL(n) ((n) << 16) - -#define MAS1_VALID 0x80000000 -#define MAS1_IPROT 0x40000000 -#define MAS1_TID_MASK 0x00FF0000 -#define MAS1_TS 0x00001000 -#define MAS1_TSISE_MASK 0x00000F80 -#define MAS1_TSISE_1K 0x00000000 -#define MAS1_TSISE_2K 0x00000080 -#define MAS1_TSISE_4K 0x00000100 -#define MAS1_TSISE_8K 0x00000180 -#define MAS1_TSISE_16K 0x00000200 -#define MAS1_TSISE_32K 0x00000280 -#define MAS1_TSISE_64K 0x00000300 -#define MAS1_TSISE_128K 0x00000380 -#define MAS1_TSISE_256K 0x00000400 -#define MAS1_TSISE_512K 0x00000480 -#define MAS1_TSISE_1M 0x00000500 -#define MAS1_TSISE_2M 0x00000580 -#define MAS1_TSISE_4M 0x00000600 -#define MAS1_TSISE_8M 0x00000680 -#define MAS1_TSISE_16M 0x00000700 -#define MAS1_TSISE_32M 0x00000780 -#define MAS1_TSISE_64M 0x00000800 -#define MAS1_TSISE_128M 0x00000880 -#define MAS1_TSISE_256M 0x00000900 -#define MAS1_TSISE_512M 0x00000980 -#define MAS1_TSISE_1G 0x00000A00 -#define MAS1_TSISE_2G 0x00000A80 -#define MAS1_TSISE_4G 0x00000B00 - -#define MAS2_EPN_MASK 0xFFFFFC00 -#define MAS2_EPN(n) ((n) & MAS2_EPN_MASK) -#define MAS2_EBOOK 0x00000000 -#define MAS2_VLE 0x00000020 -#define MAS2_W 0x00000010 -#define MAS2_I 0x00000008 -#define MAS2_M 0x00000004 -#define MAS2_G 0x00000002 -#define MAS2_E 0x00000001 - -#define MAS3_RPN_MASK 0xFFFFFC00 -#define MAS3_RPN(n) ((n) & MAS3_RPN_MASK) -#define MAS3_U0 0x00000200 -#define MAS3_U1 0x00000100 -#define MAS3_U2 0x00000080 -#define MAS3_U3 0x00000040 -#define MAS3_UX 0x00000020 -#define MAS3_SX 0x00000010 -#define MAS3_UW 0x00000008 -#define MAS3_SW 0x00000004 -#define MAS3_UR 0x00000002 -#define MAS3_SR 0x00000001 -/** @} */ - -/** - * @name BUCSR registers definitions - * @{ - */ -#define BUCSR_BPEN 0x00000001 -#define BUCSR_BPRED_MASK 0x00000006 -#define BUCSR_BPRED_0 0x00000000 -#define BUCSR_BPRED_1 0x00000002 -#define BUCSR_BPRED_2 0x00000004 -#define BUCSR_BPRED_3 0x00000006 -#define BUCSR_BALLOC_MASK 0x00000030 -#define BUCSR_BALLOC_0 0x00000000 -#define BUCSR_BALLOC_1 0x00000010 -#define BUCSR_BALLOC_2 0x00000020 -#define BUCSR_BALLOC_3 0x00000030 -#define BUCSR_BALLOC_BFI 0x00000200 -/** @} */ - -/** - * @name LICSR1 registers definitions - * @{ - */ -#define LICSR1_ICE 0x00000001 -#define LICSR1_ICINV 0x00000002 -#define LICSR1_ICORG 0x00000010 -/** @} */ - -/** - * @name MSR register definitions - * @{ - */ -#define MSR_UCLE 0x04000000 -#define MSR_SPE 0x02000000 -#define MSR_WE 0x00040000 -#define MSR_CE 0x00020000 -#define MSR_EE 0x00008000 -#define MSR_PR 0x00004000 -#define MSR_FP 0x00002000 -#define MSR_ME 0x00001000 -#define MSR_FE0 0x00000800 -#define MSR_DE 0x00000200 -#define MSR_FE1 0x00000100 -#define MSR_IS 0x00000020 -#define MSR_DS 0x00000010 -#define MSR_RI 0x00000002 -/** @} */ - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/* - * TLB default settings. - */ -#define TLB0_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(0)) -#define TLB0_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_2M) -#define TLB0_MAS2 (MAS2_EPN(0x00000000) | MAS2_VLE) -#define TLB0_MAS3 (MAS3_RPN(0x00000000) | \ - MAS3_UX | MAS3_SX | MAS3_UW | MAS3_SW | \ - MAS3_UR | MAS3_SR) - -#define TLB1_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(1)) -#define TLB1_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_256K) -#define TLB1_MAS2 (MAS2_EPN(0x40000000) | MAS2_VLE) -#define TLB1_MAS3 (MAS3_RPN(0x40000000) | \ - MAS3_UX | MAS3_SX | MAS3_UW | MAS3_SW | \ - MAS3_UR | MAS3_SR) - -#define TLB2_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(2)) -#define TLB2_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) -#define TLB2_MAS2 (MAS2_EPN(0xC3F00000) | MAS2_I) -#define TLB2_MAS3 (MAS3_RPN(0xC3F00000) | \ - MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) - -#define TLB3_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(3)) -#define TLB3_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) -#define TLB3_MAS2 (MAS2_EPN(0xFFE00000) | MAS2_I) -#define TLB3_MAS3 (MAS3_RPN(0xFFE00000) | \ - MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) - -#define TLB4_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(4)) -#define TLB4_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) -#define TLB4_MAS2 (MAS2_EPN(0x8FF00000) | MAS2_I) -#define TLB4_MAS3 (MAS3_RPN(0x8FF00000) | \ - MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) - -#define TLB5_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(5)) -#define TLB5_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) -#define TLB5_MAS2 (MAS2_EPN(0xFFF00000) | MAS2_I) -#define TLB5_MAS3 (MAS3_RPN(0xFFF00000) | \ - MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) - -/* - * BUCSR default settings. - */ -#if !defined(BOOT_BUCSR_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BPRED_0 | \ - BUCSR_BALLOC_0 | BUCSR_BALLOC_BFI) -#endif - -/* - * LICSR1 default settings. - */ -#if !defined(BOOT_LICSR1_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_LICSR1_DEFAULT (LICSR1_ICE | LICSR1_ICORG) -#endif - -/* - * MSR default settings. - */ -#if !defined(BOOT_MSR_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_MSR_DEFAULT (MSR_SPE | MSR_WE | MSR_CE | MSR_ME) -#endif - -/* - * Boot default settings. - */ -#if !defined(BOOT_PERFORM_CORE_INIT) || defined(__DOXYGEN__) -#define BOOT_PERFORM_CORE_INIT 1 -#endif - -/* - * VLE mode default settings. - */ -#if !defined(BOOT_USE_VLE) || defined(__DOXYGEN__) -#define BOOT_USE_VLE 1 -#endif - -/* - * RAM relocation flag. - */ -#if !defined(BOOT_RELOCATE_IN_RAM) || defined(__DOXYGEN__) -#define BOOT_RELOCATE_IN_RAM 0 -#endif - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _BOOT_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC56ELxx/boot.s b/os/common/ports/e200/devices/SPC56ELxx/boot.s deleted file mode 100644 index 1508f0c17..000000000 --- a/os/common/ports/e200/devices/SPC56ELxx/boot.s +++ /dev/null @@ -1,408 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC56ELxx/boot.s - * @brief SPC56ELxx boot-related code. - * - * @addtogroup PPC_BOOT - * @{ - */ - -#include "boot.h" - -#if !defined(__DOXYGEN__) - - /* BAM record.*/ - .section .boot, "ax" - -#if BOOT_USE_VLE - .long 0x015A0000 -#else - .long 0x005A0000 -#endif - .long _reset_address - - .align 2 - .globl _reset_address - .type _reset_address, @function -_reset_address: - bl _coreinit - bl _ivinit - -#if BOOT_RELOCATE_IN_RAM - /* - * Image relocation in RAM. - */ - lis %r4, __ram_reloc_start__@h - ori %r4, %r4, __ram_reloc_start__@l - lis %r5, __ram_reloc_dest__@h - ori %r5, %r5, __ram_reloc_dest__@l - lis %r6, __ram_reloc_end__@h - ori %r6, %r6, __ram_reloc_end__@l -.relloop: - cmpl cr0, %r4, %r6 - bge cr0, .relend - lwz %r7, 0(%r4) - addi %r4, %r4, 4 - stw %r7, 0(%r5) - addi %r5, %r5, 4 - b .relloop -.relend: - lis %r3, _boot_address@h - ori %r3, %r3, _boot_address@l - mtctr %r3 - bctrl -#else - b _boot_address -#endif - -#if BOOT_PERFORM_CORE_INIT - .align 2 -_ramcode: - tlbwe - isync - blr -#endif /* BOOT_PERFORM_CORE_INIT */ - - .align 2 -_coreinit: -#if BOOT_PERFORM_CORE_INIT - /* - * Invalidating all TLBs except TLB0. - */ - lis %r3, 0 - mtspr 625, %r3 /* MAS1 */ - mtspr 626, %r3 /* MAS2 */ - mtspr 627, %r3 /* MAS3 */ - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(1))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(2))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(3))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(4))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(5))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(6))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(7))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(8))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(9))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(10))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(11))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(12))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(13))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(14))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(15))@h - mtspr 624, %r3 /* MAS0 */ - tlbwe - - /* - * TLB1 allocated to internal RAM. - */ - lis %r3, TLB1_MAS0@h - mtspr 624, %r3 /* MAS0 */ - lis %r3, TLB1_MAS1@h - ori %r3, %r3, TLB1_MAS1@l - mtspr 625, %r3 /* MAS1 */ - lis %r3, TLB1_MAS2@h - ori %r3, %r3, TLB1_MAS2@l - mtspr 626, %r3 /* MAS2 */ - lis %r3, TLB1_MAS3@h - ori %r3, %r3, TLB1_MAS3@l - mtspr 627, %r3 /* MAS3 */ - tlbwe - - /* - * TLB2 allocated to internal Peripherals Bridge A. - */ - lis %r3, TLB2_MAS0@h - mtspr 624, %r3 /* MAS0 */ - lis %r3, TLB2_MAS1@h - ori %r3, %r3, TLB2_MAS1@l - mtspr 625, %r3 /* MAS1 */ - lis %r3, TLB2_MAS2@h - ori %r3, %r3, TLB2_MAS2@l - mtspr 626, %r3 /* MAS2 */ - lis %r3, TLB2_MAS3@h - ori %r3, %r3, TLB2_MAS3@l - mtspr 627, %r3 /* MAS3 */ - tlbwe - - /* - * TLB3 allocated to internal Peripherals Bridge B. - */ - lis %r3, TLB3_MAS0@h - mtspr 624, %r3 /* MAS0 */ - lis %r3, TLB3_MAS1@h - ori %r3, %r3, TLB3_MAS1@l - mtspr 625, %r3 /* MAS1 */ - lis %r3, TLB3_MAS2@h - ori %r3, %r3, TLB3_MAS2@l - mtspr 626, %r3 /* MAS2 */ - lis %r3, TLB3_MAS3@h - ori %r3, %r3, TLB3_MAS3@l - mtspr 627, %r3 /* MAS3 */ - tlbwe - - /* - * TLB4 allocated to on-platform peripherals. - */ - lis %r3, TLB4_MAS0@h - mtspr 624, %r3 /* MAS0 */ - lis %r3, TLB4_MAS1@h - ori %r3, %r3, TLB4_MAS1@l - mtspr 625, %r3 /* MAS1 */ - lis %r3, TLB4_MAS2@h - ori %r3, %r3, TLB4_MAS2@l - mtspr 626, %r3 /* MAS2 */ - lis %r3, TLB4_MAS3@h - ori %r3, %r3, TLB4_MAS3@l - mtspr 627, %r3 /* MAS3 */ - tlbwe - - /* - * TLB5 allocated to on-platform peripherals. - */ - lis %r3, TLB5_MAS0@h - mtspr 624, %r3 /* MAS0 */ - lis %r3, TLB5_MAS1@h - ori %r3, %r3, TLB5_MAS1@l - mtspr 625, %r3 /* MAS1 */ - lis %r3, TLB5_MAS2@h - ori %r3, %r3, TLB5_MAS2@l - mtspr 626, %r3 /* MAS2 */ - lis %r3, TLB5_MAS3@h - ori %r3, %r3, TLB5_MAS3@l - mtspr 627, %r3 /* MAS3 */ - tlbwe - - /* - * RAM clearing, this device requires a write to all RAM location in - * order to initialize the ECC detection hardware, this is going to - * slow down the startup but there is no way around. - */ - xor %r0, %r0, %r0 - xor %r1, %r1, %r1 - xor %r2, %r2, %r2 - xor %r3, %r3, %r3 - xor %r4, %r4, %r4 - xor %r5, %r5, %r5 - xor %r6, %r6, %r6 - xor %r7, %r7, %r7 - xor %r8, %r8, %r8 - xor %r9, %r9, %r9 - xor %r10, %r10, %r10 - xor %r11, %r11, %r11 - xor %r12, %r12, %r12 - xor %r13, %r13, %r13 - xor %r14, %r14, %r14 - xor %r15, %r15, %r15 - xor %r16, %r16, %r16 - xor %r17, %r17, %r17 - xor %r18, %r18, %r18 - xor %r19, %r19, %r19 - xor %r20, %r20, %r20 - xor %r21, %r21, %r21 - xor %r22, %r22, %r22 - xor %r23, %r23, %r23 - xor %r24, %r24, %r24 - xor %r25, %r25, %r25 - xor %r26, %r26, %r26 - xor %r27, %r27, %r27 - xor %r28, %r28, %r28 - xor %r29, %r29, %r29 - xor %r30, %r30, %r30 - xor %r31, %r31, %r31 - lis %r4, __ram_start__@h - ori %r4, %r4, __ram_start__@l - lis %r5, __ram_end__@h - ori %r5, %r5, __ram_end__@l -.cleareccloop: - cmpl %cr0, %r4, %r5 - bge %cr0, .cleareccend - stmw %r16, 0(%r4) - addi %r4, %r4, 64 - b .cleareccloop -.cleareccend: -#endif /* BOOT_PERFORM_CORE_INIT */ - - /* - * Special function registers clearing, required in order to avoid - * possible problems with lockstep mode. - */ - mtcrf 0xFF, %r31 - mtspr 9, %r31 /* CTR */ - mtspr 22, %r31 /* DEC */ - mtspr 26, %r31 /* SRR0-1 */ - mtspr 27, %r31 - mtspr 54, %r31 /* DECAR */ - mtspr 58, %r31 /* CSRR0-1 */ - mtspr 59, %r31 - mtspr 61, %r31 /* DEAR */ - mtspr 256, %r31 /* USPRG0 */ - mtspr 272, %r31 /* SPRG1-7 */ - mtspr 273, %r31 - mtspr 274, %r31 - mtspr 275, %r31 - mtspr 276, %r31 - mtspr 277, %r31 - mtspr 278, %r31 - mtspr 279, %r31 - mtspr 285, %r31 /* TBU */ - mtspr 284, %r31 /* TBL */ -#if 0 - mtspr 318, %r31 /* DVC1-2 */ - mtspr 319, %r31 -#endif - mtspr 562, %r31 /* DBCNT */ - mtspr 570, %r31 /* MCSRR0 */ - mtspr 571, %r31 /* MCSRR1 */ - mtspr 604, %r31 /* SPRG8-9 */ - mtspr 605, %r31 - -#if BOOT_PERFORM_CORE_INIT - /* - * *Finally* the TLB0 is re-allocated to flash, note, the final phase - * is executed from RAM. - */ - lis %r3, TLB0_MAS0@h - mtspr 624, %r3 /* MAS0 */ - lis %r3, TLB0_MAS1@h - ori %r3, %r3, TLB0_MAS1@l - mtspr 625, %r3 /* MAS1 */ - lis %r3, TLB0_MAS2@h - ori %r3, %r3, TLB0_MAS2@l - mtspr 626, %r3 /* MAS2 */ - lis %r3, TLB0_MAS3@h - ori %r3, %r3, TLB0_MAS3@l - mtspr 627, %r3 /* MAS3 */ - mflr %r4 - lis %r6, _ramcode@h - ori %r6, %r6, _ramcode@l - lis %r7, 0x40010000@h - mtctr %r7 - lwz %r3, 0(%r6) - stw %r3, 0(%r7) - lwz %r3, 4(%r6) - stw %r3, 4(%r7) - lwz %r3, 8(%r6) - stw %r3, 8(%r7) - bctrl - mtlr %r4 -#endif /* BOOT_PERFORM_CORE_INIT */ - - /* - * Branch prediction enabled. - */ - li %r3, BOOT_BUCSR_DEFAULT - mtspr 1013, %r3 /* BUCSR */ - - /* - * Cache invalidated and then enabled. - */ - li %r3, LICSR1_ICINV - mtspr 1011, %r3 /* LICSR1 */ -.inv: mfspr %r3, 1011 /* LICSR1 */ - andi. %r3, %r3, LICSR1_ICINV - bne .inv - lis %r3, BOOT_LICSR1_DEFAULT@h - ori %r3, %r3, BOOT_LICSR1_DEFAULT@l - mtspr 1011, %r3 /* LICSR1 */ - - blr - - /* - * Exception vectors initialization. - */ - .align 2 -_ivinit: - /* MSR initialization.*/ - lis %r3, BOOT_MSR_DEFAULT@h - ori %r3, %r3, BOOT_MSR_DEFAULT@l - mtMSR %r3 - - /* IVPR initialization.*/ - lis %r3, __ivpr_base__@h - ori %r3, %r3, __ivpr_base__@l - mtIVPR %r3 - - /* IVORs initialization.*/ - lis %r3, _unhandled_exception@h - ori %r3, %r3, _unhandled_exception@l - - mtspr 400, %r3 /* IVOR0-15 */ - mtspr 401, %r3 - mtspr 402, %r3 - mtspr 403, %r3 - mtspr 404, %r3 - mtspr 405, %r3 - mtspr 406, %r3 - mtspr 407, %r3 - mtspr 408, %r3 - mtspr 409, %r3 - mtspr 410, %r3 - mtspr 411, %r3 - mtspr 412, %r3 - mtspr 413, %r3 - mtspr 414, %r3 - mtspr 415, %r3 - mtspr 528, %r3 /* IVOR32-34 */ - mtspr 529, %r3 - mtspr 530, %r3 - - blr - - .section .handlers, "ax" - - /* - * Unhandled exceptions handler. - */ - .weak _unhandled_exception - .type _unhandled_exception, @function -_unhandled_exception: - b _unhandled_exception - -#endif /* !defined(__DOXYGEN__) */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC56ELxx/intc.h b/os/common/ports/e200/devices/SPC56ELxx/intc.h deleted file mode 100644 index bb4c98f57..000000000 --- a/os/common/ports/e200/devices/SPC56ELxx/intc.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC56ELxx/intc.h - * @brief SPC56ELxx INTC module header. - * - * @addtogroup INTC - * @{ - */ - -#ifndef _INTC_H_ -#define _INTC_H_ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/** - * @name INTC addresses - * @{ - */ -#define INTC_BASE 0xFFF48000 -#define INTC_IACKR_ADDR (INTC_BASE + 0x10) -#define INTC_EOIR_ADDR (INTC_BASE + 0x18) -/** @} */ - -/** - * @brief INTC priority levels. - */ -#define INTC_PRIORITY_LEVELS 16U - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/** - * @name INTC-related macros - * @{ - */ -#define INTC_BCR (*((volatile uint32_t *)(INTC_BASE + 0))) -#define INTC_CPR(n) (*((volatile uint32_t *)(INTC_BASE + 8 + ((n) * sizeof (uint32_t))))) -#define INTC_IACKR(n) (*((volatile uint32_t *)(INTC_BASE + 0x10 + ((n) * sizeof (uint32_t))))) -#define INTC_EOIR(n) (*((volatile uint32_t *)(INTC_BASE + 0x18 + ((n) * sizeof (uint32_t))))) -#define INTC_PSR(n) (*((volatile uint8_t *)(INTC_BASE + 0x40 + ((n) * sizeof (uint8_t))))) -/** @} */ - -/** - * @brief Core selection macros for PSR register. - */ -#define INTC_PSR_CORE0 0x00 - -/** - * @brief PSR register content helper - */ -#define INTC_PSR_ENABLE(cores, prio) ((uint32_t)(cores) | (uint32_t)(prio)) - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _INTC_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC56ELxx/ppcparams.h b/os/common/ports/e200/devices/SPC56ELxx/ppcparams.h deleted file mode 100644 index c7bceb487..000000000 --- a/os/common/ports/e200/devices/SPC56ELxx/ppcparams.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC56ELxx/ppcparams.h - * @brief PowerPC parameters for the SPC56ELxx. - * - * @defgroup PPC_SPC56ELxx SPC56ELxx Specific Parameters - * @ingroup PPC_SPECIFIC - * @details This file contains the PowerPC specific parameters for the - * SPC56ELxx platform. - * @{ - */ - -#ifndef _PPCPARAMS_H_ -#define _PPCPARAMS_H_ - -/** - * @brief Family identification macro. - */ -#define PPC_SPC56ELxx - -/** - * @brief PPC core model. - */ -#define PPC_VARIANT PPC_VARIANT_e200z4 - -/** - * @brief Number of cores. - */ -#define PPC_CORE_NUMBER 1 - -/** - * @brief Number of writable bits in IVPR register. - */ -#define PPC_IVPR_BITS 16 - -/** - * @brief IVORx registers support. - */ -#define PPC_SUPPORTS_IVORS TRUE - -/** - * @brief Book E instruction set support. - */ -#define PPC_SUPPORTS_BOOKE TRUE - -/** - * @brief VLE instruction set support. - */ -#define PPC_SUPPORTS_VLE TRUE - -/** - * @brief Supports VLS Load/Store Multiple Volatile instructions. - */ -#define PPC_SUPPORTS_VLE_MULTI TRUE - -/** - * @brief Supports the decrementer timer. - */ -#define PPC_SUPPORTS_DECREMENTER TRUE - -/** - * @brief Number of interrupt sources. - */ -#define PPC_NUM_VECTORS 256 - -#endif /* _PPCPARAMS_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC57EMxx_HSM/boot.h b/os/common/ports/e200/devices/SPC57EMxx_HSM/boot.h deleted file mode 100644 index e00933bbf..000000000 --- a/os/common/ports/e200/devices/SPC57EMxx_HSM/boot.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file boot.h - * @brief Boot parameters for the SPC57EMxx_HSM. - * @{ - */ - -#ifndef _BOOT_H_ -#define _BOOT_H_ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/** - * @name BUCSR registers definitions - * @{ - */ -#define BUCSR_BPEN 0x00000001 -#define BUCSR_BALLOC_BFI 0x00000200 -/** @} */ - -/** - * @name MSR register definitions - * @{ - */ -#define MSR_WE 0x00040000 -#define MSR_CE 0x00020000 -#define MSR_EE 0x00008000 -#define MSR_PR 0x00004000 -#define MSR_ME 0x00001000 -#define MSR_DE 0x00000200 -#define MSR_IS 0x00000020 -#define MSR_DS 0x00000010 -#define MSR_RI 0x00000002 -/** @} */ - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/* - * BUCSR default settings. - */ -#if !defined(BOOT_BUCSR_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BALLOC_BFI) -#endif - -/* - * MSR default settings. - */ -#if !defined(BOOT_MSR_DEFAULT) || defined(__DOXYGEN__) -#define BOOT_MSR_DEFAULT (MSR_WE | MSR_CE | MSR_ME) -#endif - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _BOOT_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC57EMxx_HSM/boot.s b/os/common/ports/e200/devices/SPC57EMxx_HSM/boot.s deleted file mode 100644 index 3aa286d58..000000000 --- a/os/common/ports/e200/devices/SPC57EMxx_HSM/boot.s +++ /dev/null @@ -1,211 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC57EMxx_HSM/boot.s - * @brief SPC57EMxx_HSM boot-related code. - * - * @addtogroup PPC_BOOT - * @{ - */ - -#include "boot.h" - -#define HSBI_CCR 0xA3F14004 -#define HSBI_CCR_CE 0x00000001 -#define HSBI_CCR_INV 0x00000002 - -#if !defined(__DOXYGEN__) - - /* Boot record.*/ - .section .boot, "ax" - - .long 0xFFFF0000 - .long 0xFFFF0000 - .long 0xFFFFFFFF - .long _reset_address - .long 0xFFFFFFFF - .long 0xFFFFFFFF - .long 0xFFFFFFFF - .long 0xFFFFFFFF - - .align 2 - .globl _reset_address - .type _reset_address, @function -_reset_address: - bl _coreinit - bl _ivinit - b _boot_address - - .align 2 -_coreinit: -#if 0 - /* - * Cache invalidate and enable. - */ - lis %r7, HSBI_CCR@h - ori %r7, %r7, HSBI_CCR@l - li %r0, HSBI_CCR_INV | HSBI_CCR_CE - stw %r0, 0(%r7) -.inv: - lwz %r0, 0(%r7) - andi. %r0, %r0, HSBI_CCR_INV - bne+ %cr0, .inv -#endif - - /* - * RAM clearing, this device requires a write to all RAM location in - * order to initialize the ECC detection hardware, this is going to - * slow down the startup but there is no way around. - */ - xor %r0, %r0, %r0 - xor %r1, %r1, %r1 - xor %r2, %r2, %r2 - xor %r3, %r3, %r3 - xor %r4, %r4, %r4 - xor %r5, %r5, %r5 - xor %r6, %r6, %r6 - xor %r7, %r7, %r7 - xor %r8, %r8, %r8 - xor %r9, %r9, %r9 - xor %r10, %r10, %r10 - xor %r11, %r11, %r11 - xor %r12, %r12, %r12 - xor %r13, %r13, %r13 - xor %r14, %r14, %r14 - xor %r15, %r15, %r15 - xor %r16, %r16, %r16 - xor %r17, %r17, %r17 - xor %r18, %r18, %r18 - xor %r19, %r19, %r19 - xor %r20, %r20, %r20 - xor %r21, %r21, %r21 - xor %r22, %r22, %r22 - xor %r23, %r23, %r23 - xor %r24, %r24, %r24 - xor %r25, %r25, %r25 - xor %r26, %r26, %r26 - xor %r27, %r27, %r27 - xor %r28, %r28, %r28 - xor %r29, %r29, %r29 - xor %r30, %r30, %r30 - xor %r31, %r31, %r31 - lis %r4, __ram_start__@h - ori %r4, %r4, __ram_start__@l - lis %r5, __ram_end__@h - ori %r5, %r5, __ram_end__@l -.cleareccloop: - cmpl %cr0, %r4, %r5 - bge %cr0, .cleareccend - stmw %r16, 0(%r4) - addi %r4, %r4, 64 - b .cleareccloop -.cleareccend: - - /* - * Branch prediction enabled. - */ - li %r3, BUCSR_DEFAULT - mtspr 1013, %r3 /* BUCSR */ - - blr - - /* - * Exception vectors initialization. - */ - .align 2 -_ivinit: - /* MSR initialization.*/ - lis %r3, MSR_DEFAULT@h - ori %r3, %r3, MSR_DEFAULT@l - mtMSR %r3 - - /* IVPR initialization.*/ - lis %r3, __ivpr_base__@h - ori %r3, %r3, __ivpr_base__@l - mtIVPR %r3 - - blr - - .section .ivors, "ax" - - .globl IVORS -IVORS: -IVOR0: b _IVOR0 - .align 4 -IVOR1: b _IVOR1 - .align 4 -IVOR2: b _IVOR2 - .align 4 -IVOR3: b _IVOR3 - .align 4 -IVOR4: b _IVOR4 - .align 4 -IVOR5: b _IVOR5 - .align 4 -IVOR6: b _IVOR6 - .align 4 -IVOR7: b _IVOR7 - .align 4 -IVOR8: b _IVOR8 - .align 4 -IVOR9: b _IVOR9 - .align 4 -IVOR10: b _IVOR10 - .align 4 -IVOR11: b _IVOR11 - .align 4 -IVOR12: b _IVOR12 - .align 4 -IVOR13: b _IVOR13 - .align 4 -IVOR14: b _IVOR14 - .align 4 -IVOR15: b _IVOR15 - - .section .handlers, "ax" - - /* - * Default IVOR handlers. - */ - .align 2 - .weak _IVOR0, _IVOR1, _IVOR2, _IVOR3, _IVOR4, _IVOR5 - .weak _IVOR6, _IVOR7, _IVOR8, _IVOR9, _IVOR10, _IVOR11 - .weak _IVOR12, _IVOR13, _IVOR14, _IVOR15 -_IVOR0: -_IVOR1: -_IVOR2: -_IVOR3: -_IVOR5: -_IVOR6: -_IVOR7: -_IVOR8: -_IVOR9: -_IVOR11: -_IVOR12: -_IVOR13: -_IVOR14: -_IVOR15: - .global _unhandled_exception -_unhandled_exception: - b _unhandled_exception - -#endif /* !defined(__DOXYGEN__) */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC57EMxx_HSM/intc.h b/os/common/ports/e200/devices/SPC57EMxx_HSM/intc.h deleted file mode 100644 index ef660f195..000000000 --- a/os/common/ports/e200/devices/SPC57EMxx_HSM/intc.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC57EMxx_HSM/intc.h - * @brief SPC57EMxx_HSM INTC module header. - * - * @addtogroup INTC - * @{ - */ - -#ifndef _INTC_H_ -#define _INTC_H_ - -/*===========================================================================*/ -/* Module constants. */ -/*===========================================================================*/ - -/** - * @name INTC addresses - * @{ - */ -#define INTC_BASE 0xA3F48000 -#define INTC_IACKR_ADDR (INTC_BASE + 0x20) -#define INTC_EOIR_ADDR (INTC_BASE + 0x30) -/** @} */ - -/** - * @brief INTC priority levels. - */ -#define INTC_PRIORITY_LEVELS 16U - -/*===========================================================================*/ -/* Module pre-compile time settings. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Derived constants and error checks. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module data structures and types. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module macros. */ -/*===========================================================================*/ - -/** - * @name INTC-related macros - * @{ - */ -#define INTC_BCR (*((volatile uint32_t *)(INTC_BASE + 0))) -#define INTC_MPROT (*((volatile uint32_t *)(INTC_BASE + 4))) -#define INTC_CPR(n) (*((volatile uint32_t *)(INTC_BASE + 0x10 + ((n) * sizeof (uint32_t))))) -#define INTC_IACKR(n) (*((volatile uint32_t *)(INTC_BASE + 0x20 + ((n) * sizeof (uint32_t))))) -#define INTC_EOIR(n) (*((volatile uint32_t *)(INTC_BASE + 0x30 + ((n) * sizeof (uint32_t))))) -#define INTC_PSR(n) (*((volatile uint16_t *)(INTC_BASE + 0x60 + ((n) * sizeof (uint16_t))))) -/** @} */ - -/** - * @brief Core selection macros for PSR register. - */ -#define INTC_PSR_CORE4 0x8000 - -/** - * @brief PSR register content helper - */ -#define INTC_PSR_ENABLE(cores, prio) ((uint32_t)(cores) | (uint32_t)(prio)) - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ - -#endif /* _INTC_H_ */ - -/** @} */ diff --git a/os/common/ports/e200/devices/SPC57EMxx_HSM/ppcparams.h b/os/common/ports/e200/devices/SPC57EMxx_HSM/ppcparams.h deleted file mode 100644 index 96ee29e27..000000000 --- a/os/common/ports/e200/devices/SPC57EMxx_HSM/ppcparams.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @file SPC57EMxx_HSM/ppcparams.h - * @brief PowerPC parameters for the SPC57EMxx_HSM. - * - * @defgroup PPC_SPC57EMxx_HSM SPC57EMxx_HSM Specific Parameters - * @ingroup PPC_SPECIFIC - * @details This file contains the PowerPC specific parameters for the - * SPC57EMxx_HSM platform. - * @{ - */ - -#ifndef _PPCPARAMS_H_ -#define _PPCPARAMS_H_ - -/** - * @brief Family identification macro. - */ -#define PPC_SPC560Dxx - -/** - * @brief Alternate identification macro. - */ -#define PPC_SPC57EMxx_HSM - -/** - * @brief PPC core model. - */ -#define PPC_VARIANT PPC_VARIANT_e200z0 - -/** - * @brief Number of cores. - */ -#define PPC_CORE_NUMBER 1 - -/** - * @brief Number of writable bits in IVPR register. - */ -#define PPC_IVPR_BITS 20 - -/** - * @brief IVORx registers support. - */ -#define PPC_SUPPORTS_IVORS FALSE - -/** - * @brief Book E instruction set support. - */ -#define PPC_SUPPORTS_BOOKE FALSE - -/** - * @brief VLE instruction set support. - */ -#define PPC_SUPPORTS_VLE TRUE - -/** - * @brief Supports VLS Load/Store Multiple Volatile instructions. - */ -#define PPC_SUPPORTS_VLE_MULTI TRUE - -/** - * @brief Supports the decrementer timer. - */ -#define PPC_SUPPORTS_DECREMENTER FALSE - -/** - * @brief Number of interrupt sources. - */ -#define PPC_NUM_VECTORS 64 - -#endif /* _PPCPARAMS_H_ */ - -/** @} */ diff --git a/os/common/startup/ARM/compilers/GCC/crt0.s b/os/common/startup/ARM/compilers/GCC/crt0.s new file mode 100644 index 000000000..dea01fb83 --- /dev/null +++ b/os/common/startup/ARM/compilers/GCC/crt0.s @@ -0,0 +1,155 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file crt0.s + * @brief Generic ARM startup file. + * + * @addtogroup ARM_GCC_STARTUP + * @{ + */ + +#if !defined(__DOXYGEN__) + + .set MODE_USR, 0x10 + .set MODE_FIQ, 0x11 + .set MODE_IRQ, 0x12 + .set MODE_SVC, 0x13 + .set MODE_ABT, 0x17 + .set MODE_UND, 0x1B + .set MODE_SYS, 0x1F + + .set I_BIT, 0x80 + .set F_BIT, 0x40 + + .text + .code 32 + .balign 4 + +/* + * Reset handler. + */ + .global Reset_Handler +Reset_Handler: + /* + * Stack pointers initialization. + */ + ldr r0, =__stacks_end__ + /* Undefined */ + msr CPSR_c, #MODE_UND | I_BIT | F_BIT + mov sp, r0 + ldr r1, =__und_stack_size__ + sub r0, r0, r1 + /* Abort */ + msr CPSR_c, #MODE_ABT | I_BIT | F_BIT + mov sp, r0 + ldr r1, =__abt_stack_size__ + sub r0, r0, r1 + /* FIQ */ + msr CPSR_c, #MODE_FIQ | I_BIT | F_BIT + mov sp, r0 + ldr r1, =__fiq_stack_size__ + sub r0, r0, r1 + /* IRQ */ + msr CPSR_c, #MODE_IRQ | I_BIT | F_BIT + mov sp, r0 + ldr r1, =__irq_stack_size__ + sub r0, r0, r1 + /* Supervisor */ + msr CPSR_c, #MODE_SVC | I_BIT | F_BIT + mov sp, r0 + ldr r1, =__svc_stack_size__ + sub r0, r0, r1 + /* System */ + msr CPSR_c, #MODE_SYS | I_BIT | F_BIT + mov sp, r0 +// ldr r1, =__sys_stack_size__ +// sub r0, r0, r1 + /* + * Early initialization. + */ +#if !defined(THUMB_NO_INTERWORKING) + bl __early_init +#else /* defined(THUMB_NO_INTERWORKING) */ + add r0, pc, #1 + bx r0 + .code 16 + bl __early_init + mov r0, pc + bx r0 + .code 32 +#endif /* defined(THUMB_NO_INTERWORKING) */ + + /* + * Data initialization. + * NOTE: It assumes that the DATA size is a multiple of 4. + */ + ldr r1, =_textdata + ldr r2, =_data + ldr r3, =_edata +dataloop: + cmp r2, r3 + ldrlo r0, [r1], #4 + strlo r0, [r2], #4 + blo dataloop + /* + * BSS initialization. + * NOTE: It assumes that the BSS size is a multiple of 4. + */ + mov r0, #0 + ldr r1, =_bss_start + ldr r2, =_bss_end +bssloop: + cmp r1, r2 + strlo r0, [r1], #4 + blo bssloop + /* + * Late initialization. + */ +#if !defined(THUMB_NO_INTERWORKING) + bl __late_init +#else /* defined(THUMB_NO_INTERWORKING) */ + add r0, pc, #1 + bx r0 + .code 16 + bl __late_init + mov r0, pc + bx r0 + .code 32 +#endif /* defined(THUMB_NO_INTERWORKING) */ + + /* + * Main program invocation. + */ +#if defined(THUMB_NO_INTERWORKING) + add r0, pc, #1 + bx r0 + .code 16 + bl main + ldr r1, =__default_exit + bx r1 + .code 32 +#else /* !defined(THUMB_NO_INTERWORKING) */ + bl main + b __default_exit +#endif /* !defined(THUMB_NO_INTERWORKING) */ + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/common/startup/ARM/compilers/GCC/crt1.c b/os/common/startup/ARM/compilers/GCC/crt1.c new file mode 100644 index 000000000..68e22b95a --- /dev/null +++ b/os/common/startup/ARM/compilers/GCC/crt1.c @@ -0,0 +1,75 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file ARMCMx/compilers/GCC/crt1.c + * @brief Startup stub functions. + * + * @addtogroup ARMCMx_GCC_STARTUP + * @{ + */ + +#include + +/** + * @brief Early initialization. + * @details This hook is invoked immediately after the stack initialization + * and before the DATA and BSS segments initialization. The + * default behavior is to do nothing. + * @note This function is a weak symbol. + */ +#if !defined(__DOXYGEN__) +__attribute__((weak)) +#endif +/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ +void __early_init(void) {} +/*lint -restore*/ + +/** + * @brief Late initialization. + * @details This hook is invoked after the DATA and BSS segments + * initialization and before any static constructor. The + * default behavior is to do nothing. + * @note This function is a weak symbol. + */ +#if !defined(__DOXYGEN__) +__attribute__((weak)) +#endif +/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ +void __late_init(void) {} +/*lint -restore*/ + +/** + * @brief Default @p main() function exit handler. + * @details This handler is invoked or the @p main() function exit. The + * default behavior is to enter an infinite loop. + * @note This function is a weak symbol. + */ +#if !defined(__DOXYGEN__) +__attribute__((noreturn, weak)) +#endif +/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ +void __default_exit(void) { +/*lint -restore*/ + + while (true) { + } +} + +/** @} */ diff --git a/os/common/startup/ARM/compilers/GCC/ld/LPC2148.ld b/os/common/startup/ARM/compilers/GCC/ld/LPC2148.ld new file mode 100644 index 000000000..1dbab64b5 --- /dev/null +++ b/os/common/startup/ARM/compilers/GCC/ld/LPC2148.ld @@ -0,0 +1,46 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * LPC2148 memory setup. + */ +MEMORY +{ + flash : org = 0x00000000, len = 512k - 12k + ram0 : org = 0x40000200, len = 32k - 0x200 - 288 + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for stacks. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("STACKS_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARM/compilers/GCC/mk/startup_lpc214x.mk b/os/common/startup/ARM/compilers/GCC/mk/startup_lpc214x.mk new file mode 100644 index 000000000..4f1af1875 --- /dev/null +++ b/os/common/startup/ARM/compilers/GCC/mk/startup_lpc214x.mk @@ -0,0 +1,9 @@ +# List of the ChibiOS generic LPC214x file. +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARM/compilers/GCC/crt1.c + +STARTUPASM = $(CHIBIOS)/os/common/ports/ARM/compilers/GCC/vectors.s \ + $(CHIBIOS)/os/common/ports/ARM/compilers/GCC/crt0.s + +STARTUPINC = ${CHIBIOS}/os/common/ports/ARM/devices/LPC214x + +STARTUPLD = ${CHIBIOS}/os/common/ports/ARM/compilers/GCC/ld diff --git a/os/common/startup/ARM/compilers/GCC/rules.ld b/os/common/startup/ARM/compilers/GCC/rules.ld new file mode 100644 index 000000000..6bda5170c --- /dev/null +++ b/os/common/startup/ARM/compilers/GCC/rules.ld @@ -0,0 +1,224 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +__stacks_total_size__ = __und_stack_size__ + __abt_stack_size__ + __fiq_stack_size__ + __irq_stack_size__ + __svc_stack_size__ + __sys_stack_size__; + +__ram0_start__ = ORIGIN(ram0); +__ram0_size__ = LENGTH(ram0); +__ram0_end__ = __ram0_start__ + __ram0_size__; +__ram1_start__ = ORIGIN(ram1); +__ram1_size__ = LENGTH(ram1); +__ram1_end__ = __ram1_start__ + __ram1_size__; +__ram2_start__ = ORIGIN(ram2); +__ram2_size__ = LENGTH(ram2); +__ram2_end__ = __ram2_start__ + __ram2_size__; +__ram3_start__ = ORIGIN(ram3); +__ram3_size__ = LENGTH(ram3); +__ram3_end__ = __ram3_start__ + __ram3_size__; +__ram4_start__ = ORIGIN(ram4); +__ram4_size__ = LENGTH(ram4); +__ram4_end__ = __ram4_start__ + __ram4_size__; +__ram5_start__ = ORIGIN(ram5); +__ram5_size__ = LENGTH(ram5); +__ram5_end__ = __ram5_start__ + __ram5_size__; +__ram6_start__ = ORIGIN(ram6); +__ram6_size__ = LENGTH(ram6); +__ram6_end__ = __ram6_start__ + __ram6_size__; +__ram7_start__ = ORIGIN(ram7); +__ram7_size__ = LENGTH(ram7); +__ram7_end__ = __ram7_start__ + __ram7_size__; + +ENTRY(Reset_Handler) + +SECTIONS +{ + . = 0; + _text = .; + + startup : ALIGN(16) SUBALIGN(16) + { + KEEP(*(.vectors)) + } > flash + + constructors : ALIGN(4) SUBALIGN(4) + { + PROVIDE(__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE(__init_array_end = .); + } > flash + + destructors : ALIGN(4) SUBALIGN(4) + { + PROVIDE(__fini_array_start = .); + KEEP(*(.fini_array)) + KEEP(*(SORT(.fini_array.*))) + PROVIDE(__fini_array_end = .); + } > flash + + .text : ALIGN(16) SUBALIGN(16) + { + *(.text) + *(.text.*) + *(.rodata) + *(.rodata.*) + *(.glue_7t) + *(.glue_7) + *(.gcc*) + } > flash + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > flash + + .ARM.exidx : { + PROVIDE(__exidx_start = .); + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + PROVIDE(__exidx_end = .); + } > flash + + .eh_frame_hdr : + { + *(.eh_frame_hdr) + } > flash + + .eh_frame : ONLY_IF_RO + { + *(.eh_frame) + } > flash + + .textalign : ONLY_IF_RO + { + . = ALIGN(8); + } > flash + + . = ALIGN(4); + _etext = .; + _textdata = _etext; + + .stacks : + { + . = ALIGN(8); + __stacks_base__ = .; + . += __stacks_total_size__; + . = ALIGN(8); + __stacks_end__ = .; + } > STACKS_RAM + + .data : ALIGN(4) + { + . = ALIGN(4); + PROVIDE(_data = .); + *(.data) + *(.data.*) + *(.ramtext) + . = ALIGN(4); + PROVIDE(_edata = .); + } > DATA_RAM AT > flash + + .bss : ALIGN(4) + { + . = ALIGN(4); + PROVIDE(_bss_start = .); + *(.bss) + *(.bss.*) + *(COMMON) + . = ALIGN(4); + PROVIDE(_bss_end = .); + PROVIDE(end = .); + } > BSS_RAM + + .ram0 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + *(.ram0) + *(.ram0.*) + . = ALIGN(4); + __ram0_free__ = .; + } > ram0 + + .ram1 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + *(.ram1) + *(.ram1.*) + . = ALIGN(4); + __ram1_free__ = .; + } > ram1 + + .ram2 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + *(.ram2) + *(.ram2.*) + . = ALIGN(4); + __ram2_free__ = .; + } > ram2 + + .ram3 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + *(.ram3) + *(.ram3.*) + . = ALIGN(4); + __ram3_free__ = .; + } > ram3 + + .ram4 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + *(.ram4) + *(.ram4.*) + . = ALIGN(4); + __ram4_free__ = .; + } > ram4 + + .ram5 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + *(.ram5) + *(.ram5.*) + . = ALIGN(4); + __ram5_free__ = .; + } > ram5 + + .ram6 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + *(.ram6) + *(.ram6.*) + . = ALIGN(4); + __ram6_free__ = .; + } > ram6 + + .ram7 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + *(.ram7) + *(.ram7.*) + . = ALIGN(4); + __ram7_free__ = .; + } > ram7 +} + +/* Heap default boundaries, it is defaulted to be the non-used part + of ram0 region.*/ +__heap_base__ = __ram0_free__; +__heap_end__ = __ram0_end__; diff --git a/os/common/startup/ARM/compilers/GCC/rules.mk b/os/common/startup/ARM/compilers/GCC/rules.mk new file mode 100644 index 000000000..b8f66a99e --- /dev/null +++ b/os/common/startup/ARM/compilers/GCC/rules.mk @@ -0,0 +1,307 @@ +# ARM Cortex-Mx common makefile scripts and rules. + +############################################################################## +# Processing options coming from the upper Makefile. +# + +# Compiler options +OPT = $(USE_OPT) +COPT = $(USE_COPT) +CPPOPT = $(USE_CPPOPT) + +# Garbage collection +ifeq ($(USE_LINK_GC),yes) + OPT += -ffunction-sections -fdata-sections -fno-common + LDOPT := ,--gc-sections +else + LDOPT := +endif + +# Linker extra options +ifneq ($(USE_LDOPT),) + LDOPT := $(LDOPT),$(USE_LDOPT) +endif + +# Link time optimizations +ifeq ($(USE_LTO),yes) + OPT += -flto +endif + +# Undefined state stack size +ifeq ($(USE_UND_STACKSIZE),) + LDOPT := $(LDOPT),--defsym=__und_stack_size__=8 +else + LDOPT := $(LDOPT),--defsym=__und_stack_size__=$(USE_UND_STACKSIZE) +endif + +# Abort stack size +ifeq ($(USE_ABT_STACKSIZE),) + LDOPT := $(LDOPT),--defsym=__abt_stack_size__=8 +else + LDOPT := $(LDOPT),--defsym=__abt_stack_size__=$(USE_ABT_STACKSIZE) +endif + +# FIQ stack size +ifeq ($(USE_FIQ_STACKSIZE),) + LDOPT := $(LDOPT),--defsym=__fiq_stack_size__=64 +else + LDOPT := $(LDOPT),--defsym=__fiq_stack_size__=$(USE_FIQ_STACKSIZE) +endif + +# IRQ stack size +ifeq ($(USE_IRQ_STACKSIZE),) + LDOPT := $(LDOPT),--defsym=__irq_stack_size__=0x400 +else + LDOPT := $(LDOPT),--defsym=__irq_stack_size__=$(USE_IRQ_STACKSIZE) +endif + +# Supervisor stack size +ifeq ($(USE_SUPERVISOR_STACKSIZE),) + LDOPT := $(LDOPT),--defsym=__svc_stack_size__=8 +else + LDOPT := $(LDOPT),--defsym=__svc_stack_size__=$(USE_SUPERVISOR_STACKSIZE) +endif + +# System stack size +ifeq ($(USE_SYSTEM_STACKSIZE),) + LDOPT := $(LDOPT),--defsym=__sys_stack_size__=0x400 +else + LDOPT := $(LDOPT),--defsym=__sys_stack_size__=$(USE_SYSTEM_STACKSIZE) +endif + +# Output directory and files +ifeq ($(BUILDDIR),) + BUILDDIR = build +endif +ifeq ($(BUILDDIR),.) + BUILDDIR = build +endif +OUTFILES = $(BUILDDIR)/$(PROJECT).elf $(BUILDDIR)/$(PROJECT).hex \ + $(BUILDDIR)/$(PROJECT).bin $(BUILDDIR)/$(PROJECT).dmp \ + $(BUILDDIR)/$(PROJECT).list + + +# Source files groups and paths +ifeq ($(USE_THUMB),yes) + TCSRC += $(CSRC) + TCPPSRC += $(CPPSRC) +else + ACSRC += $(CSRC) + ACPPSRC += $(CPPSRC) +endif +ASRC = $(ACSRC)$(ACPPSRC) +TSRC = $(TCSRC)$(TCPPSRC) +SRCPATHS = $(sort $(dir $(ASMXSRC)) $(dir $(ASMSRC)) $(dir $(ASRC)) $(dir $(TSRC))) + +# Various directories +OBJDIR = $(BUILDDIR)/obj +LSTDIR = $(BUILDDIR)/lst + +# Object files groups +ACOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ACSRC:.c=.o))) +ACPPOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ACPPSRC:.cpp=.o))) +TCOBJS = $(addprefix $(OBJDIR)/, $(notdir $(TCSRC:.c=.o))) +TCPPOBJS = $(addprefix $(OBJDIR)/, $(notdir $(TCPPSRC:.cpp=.o))) +ASMOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ASMSRC:.s=.o))) +ASMXOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ASMXSRC:.S=.o))) +OBJS = $(ASMXOBJS) $(ASMOBJS) $(ACOBJS) $(TCOBJS) $(ACPPOBJS) $(TCPPOBJS) + +# Paths +IINCDIR = $(patsubst %,-I%,$(INCDIR) $(DINCDIR) $(UINCDIR)) +LLIBDIR = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR)) + +# Macros +DEFS = $(DDEFS) $(UDEFS) +ADEFS = $(DADEFS) $(UADEFS) + +# Libs +LIBS = $(DLIBS) $(ULIBS) + +# Various settings +MCFLAGS = -mcpu=$(MCU) +ODFLAGS = -x --syms +ASFLAGS = $(MCFLAGS) -Wa,-amhls=$(LSTDIR)/$(notdir $(<:.s=.lst)) $(ADEFS) +ASXFLAGS = $(MCFLAGS) -Wa,-amhls=$(LSTDIR)/$(notdir $(<:.S=.lst)) $(ADEFS) +CFLAGS = $(MCFLAGS) $(OPT) $(COPT) $(CWARN) -Wa,-alms=$(LSTDIR)/$(notdir $(<:.c=.lst)) $(DEFS) +CPPFLAGS = $(MCFLAGS) $(OPT) $(CPPOPT) $(CPPWARN) -Wa,-alms=$(LSTDIR)/$(notdir $(<:.cpp=.lst)) $(DEFS) +LDFLAGS = $(MCFLAGS) $(OPT) -nostartfiles $(LLIBDIR) -Wl,-Map=$(BUILDDIR)/$(PROJECT).map,--cref,--no-warn-mismatch,--library-path=$(RULESPATH),--script=$(LDSCRIPT)$(LDOPT) + +# Thumb interwork enabled only if needed because it kills performance. +ifneq ($(TSRC),) + CFLAGS += -DTHUMB_PRESENT + CPPFLAGS += -DTHUMB_PRESENT + ASFLAGS += -DTHUMB_PRESENT + ifneq ($(ASRC),) + # Mixed ARM and THUMB mode. + CFLAGS += -mthumb-interwork + CPPFLAGS += -mthumb-interwork + ASFLAGS += -mthumb-interwork + LDFLAGS += -mthumb-interwork + else + # Pure THUMB mode, THUMB C code cannot be called by ARM asm code directly. + CFLAGS += -mno-thumb-interwork -DTHUMB_NO_INTERWORKING + CPPFLAGS += -mno-thumb-interwork -DTHUMB_NO_INTERWORKING + ASFLAGS += -mno-thumb-interwork -DTHUMB_NO_INTERWORKING -mthumb + LDFLAGS += -mno-thumb-interwork -mthumb + endif +else + # Pure ARM mode + CFLAGS += -mno-thumb-interwork + CPPFLAGS += -mno-thumb-interwork + ASFLAGS += -mno-thumb-interwork + LDFLAGS += -mno-thumb-interwork +endif + +# Generate dependency information +ASFLAGS += -MD -MP -MF .dep/$(@F).d +CFLAGS += -MD -MP -MF .dep/$(@F).d +CPPFLAGS += -MD -MP -MF .dep/$(@F).d + +# Paths where to search for sources +VPATH = $(SRCPATHS) + +# +# Makefile rules +# + +all: PRE_MAKE_ALL_RULE_HOOK $(OBJS) $(OUTFILES) POST_MAKE_ALL_RULE_HOOK + +PRE_MAKE_ALL_RULE_HOOK: + +POST_MAKE_ALL_RULE_HOOK: + +$(OBJS): | $(BUILDDIR) $(OBJDIR) $(LSTDIR) + +$(BUILDDIR): +ifneq ($(USE_VERBOSE_COMPILE),yes) + @echo Compiler Options + @echo $(CC) -c $(CFLAGS) -I. $(IINCDIR) main.c -o main.o + @echo +endif + @mkdir -p $(BUILDDIR) + +$(OBJDIR): + @mkdir -p $(OBJDIR) + +$(LSTDIR): + @mkdir -p $(LSTDIR) + +$(ACPPOBJS) : $(OBJDIR)/%.o : %.cpp Makefile +ifeq ($(USE_VERBOSE_COMPILE),yes) + @echo + $(CPPC) -c $(CPPFLAGS) $(AOPT) -I. $(IINCDIR) $< -o $@ +else + @echo Compiling $( $@ + $(SZ) $< +else + @echo Creating $@ + @$(OD) $(ODFLAGS) $< > $@ + @echo + @$(SZ) $< +endif + +%.list: %.elf +ifeq ($(USE_VERBOSE_COMPILE),yes) + $(OD) -S $< > $@ +else + @echo Creating $@ + @$(OD) -S $< > $@ + @echo + @echo Done +endif + +lib: $(OBJS) $(BUILDDIR)/lib$(PROJECT).a + +$(BUILDDIR)/lib$(PROJECT).a: $(OBJS) + @$(AR) -r $@ $^ + @echo + @echo Done + +clean: + @echo Cleaning + -rm -fR .dep $(BUILDDIR) + @echo + @echo Done + +# +# Include the dependency files, should be the last of the makefile +# +-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) + +# *** EOF *** diff --git a/os/common/startup/ARM/compilers/GCC/vectors.s b/os/common/startup/ARM/compilers/GCC/vectors.s new file mode 100644 index 000000000..971c42cdc --- /dev/null +++ b/os/common/startup/ARM/compilers/GCC/vectors.s @@ -0,0 +1,101 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file ARM/compilers/GCC/vectors.s + * @brief Interrupt vectors for ARM devices. + * + * @defgroup ARM_VECTORS ARM Exception Vectors + * @{ + */ + +#if defined(__DOXYGEN__) +/** + * @brief Unhandled exceptions handler. + * @details Any undefined exception vector points to this function by default. + * This function simply stops the system into an infinite loop. + * @note The default implementation is a weak symbol, the application + * can override the default implementation. + * + * @notapi + */ +void _unhandled_exception(void) {} +#endif + +#if !defined(__DOXYGEN__) + + .section .vectors, "ax" + .code 32 + .balign 4 + +/* + * System entry points. + */ + .global _start +_start: + ldr pc, _reset + ldr pc, _undefined + ldr pc, _swi + ldr pc, _prefetch + ldr pc, _abort + nop + ldr pc, _irq + ldr pc, _fiq + +_reset: + .word Reset_Handler +_undefined: + .word Und_Handler +_swi: + .word Swi_Handler +_prefetch: + .word Prefetch_Handler +_abort: + .word Abort_Handler +_fiq: + .word Fiq_Handler +_irq: + .word Irq_Handler + +/* + * Default exceptions handlers. The handlers are declared weak in order to be + * replaced by the real handling code. Everything is defaulted to an infinite + * loop. + */ + .weak Reset_Handler +Reset_Handler: + .weak Und_Handler +Und_Handler: + .weak Swi_Handler +Swi_Handler: + .weak Prefetch_Handler +Prefetch_Handler: + .weak Abort_Handler +Abort_Handler: + .weak Fiq_Handler +Fiq_Handler: + .weak Irq_Handler +Irq_Handler: + .weak _unhandled_exception +_unhandled_exception: + b _unhandled_exception + +#endif + +/** @} */ diff --git a/os/common/startup/ARM/devices/LPC214x/armparams.h b/os/common/startup/ARM/devices/LPC214x/armparams.h new file mode 100644 index 000000000..9033e9e38 --- /dev/null +++ b/os/common/startup/ARM/devices/LPC214x/armparams.h @@ -0,0 +1,65 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file armparams.h + * @brief ARM parameters for the LPC214x. + * + * @defgroup ARM_LPC214x LPC214x Specific Parameters + * @ingroup ARM_SPECIFIC + * @details This file contains the ARM specific parameters for the + * LPC214x platform. + * @{ + */ + +#ifndef _ARMPARAMS_H_ +#define _ARMPARAMS_H_ + +/** + * @brief ARM core model. + */ +#define ARM_CORE ARM_CORE_ARM7TDMI + +/** + * @brief Thumb-capable. + */ +#define ARM_SUPPORTS_THUMB 1 + +/** + * @brief Thumb2-capable. + */ +#define ARM_SUPPORTS_THUMB2 0 + +/** + * @brief Implementation of the wait-for-interrupt state enter. + */ +#define ARM_WFI_IMPL (PCON = 1) + +#if !defined(_FROM_ASM_) || defined(__DOXYGEN__) +/** + * @brief Address of the IRQ vector register in the interrupt controller. + */ +#define ARM_IRQ_VECTOR_REG 0xFFFFF030U +#else +#define ARM_IRQ_VECTOR_REG 0xFFFFF030 +#endif + +#endif /* _ARMPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/ARM/devices/LPC214x/lpc214x.h b/os/common/startup/ARM/devices/LPC214x/lpc214x.h new file mode 100644 index 000000000..4e0bc4fdb --- /dev/null +++ b/os/common/startup/ARM/devices/LPC214x/lpc214x.h @@ -0,0 +1,526 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file lpc214x.h + * @brief LPC214x register definitions. + */ + +#ifndef _LPC214X_H_ +#define _LPC214X_H_ + +typedef volatile uint8_t IOREG8; +typedef volatile uint16_t IOREG16; +typedef volatile uint32_t IOREG32; + +/* + * System. + */ +#define MEMMAP (*((IOREG32 *)0xE01FC040)) +#define PCON (*((IOREG32 *)0xE01FC0C0)) +#define PCONP (*((IOREG32 *)0xE01FC0C4)) +#define VPBDIV (*((IOREG32 *)0xE01FC100)) +#define EXTINT (*((IOREG32 *)0xE01FC140)) +#define INTWAKE (*((IOREG32 *)0xE01FC144)) +#define EXTMODE (*((IOREG32 *)0xE01FC148)) +#define EXTPOLAR (*((IOREG32 *)0xE01FC14C)) +#define RSID (*((IOREG32 *)0xE01FC180)) +#define CSPR (*((IOREG32 *)0xE01FC184)) +#define SCS (*((IOREG32 *)0xE01FC1A0)) + +#define VPD_D4 0 +#define VPD_D1 1 +#define VPD_D2 2 +#define VPD_RESERVED 3 + +#define PCTIM0 (1 << 1) +#define PCTIM1 (1 << 2) +#define PCUART0 (1 << 3) +#define PCUART1 (1 << 4) +#define PCPWM0 (1 << 5) +#define PCI2C0 (1 << 7) +#define PCSPI0 (1 << 8) +#define PCRTC (1 << 9) +#define PCSPI1 (1 << 10) +#define PCAD0 (1 << 12) +#define PCI2C1 (1 << 19) +#define PCAD1 (1 << 20) +#define PCUSB (1 << 31) +#define PCALL (PCTIM0 | PCTIM1 | PCUART0 | PCUART1 | \ + PCPWM0 | PCI2C0 | PCSPI0 | PCRTC | PCSPI1 | \ + PCAD0 | PCI2C1 | PCAD1 | PCUSB) + +#define EINT0 1 +#define EINT1 2 +#define EINT2 4 +#define EINT3 8 + +#define EXTWAKE0 1 +#define EXTWAKE1 2 +#define EXTWAKE2 4 +#define EXTWAKE3 8 +#define USBWAKE 0x20 +#define BODWAKE 0x4000 +#define RTCWAKE 0x8000 + +#define EXTMODE0 1 +#define EXTMODE1 2 +#define EXTMODE2 4 +#define EXTMODE3 8 + +#define EXTPOLAR0 1 +#define EXTPOLAR1 2 +#define EXTPOLAR2 4 +#define EXTPOLAR3 8 + +typedef struct { + IOREG32 PLL_CON; + IOREG32 PLL_CFG; + IOREG32 PLL_STAT; + IOREG32 PLL_FEED; +} PLL; + +#define PLL0Base ((PLL *)0xE01FC080) +#define PLL1Base ((PLL *)0xE01FC0A0) +#define PLL0CON (PLL0Base->PLL_CON) +#define PLL0CFG (PLL0Base->PLL_CFG) +#define PLL0STAT (PLL0Base->PLL_STAT) +#define PLL0FEED (PLL0Base->PLL_FEED) +#define PLL1CON (PLL1Base->PLL_CON) +#define PLL1CFG (PLL1Base->PLL_CFG) +#define PLL1STAT (PLL1Base->PLL_STAT) +#define PLL1FEED (PLL1Base->PLL_FEED) + +/* + * Pins. + */ +typedef struct { + IOREG32 PS_SEL0; + IOREG32 PS_SEL1; + IOREG32 _dummy[3]; + IOREG32 PS_SEL2; +} PS; + +#define PSBase ((PS *)0xE002C000) +#define PINSEL0 (PSBase->PS_SEL0) +#define PINSEL1 (PSBase->PS_SEL1) +#define PINSEL2 (PSBase->PS_SEL2) + +/* + * VIC + */ +#define SOURCE_WDT 0 +#define SOURCE_ARMCore0 2 +#define SOURCE_ARMCore1 3 +#define SOURCE_Timer0 4 +#define SOURCE_Timer1 5 +#define SOURCE_UART0 6 +#define SOURCE_UART1 7 +#define SOURCE_PWM0 8 +#define SOURCE_I2C0 9 +#define SOURCE_SPI0 10 +#define SOURCE_SPI1 11 +#define SOURCE_PLL 12 +#define SOURCE_RTC 13 +#define SOURCE_EINT0 14 +#define SOURCE_EINT1 15 +#define SOURCE_EINT2 16 +#define SOURCE_EINT3 17 +#define SOURCE_ADC0 18 +#define SOURCE_I2C1 19 +#define SOURCE_BOD 20 +#define SOURCE_ADC1 21 +#define SOURCE_USB 22 + +#define INTMASK(n) (1 << (n)) +#define ALLINTMASK (INTMASK(SOURCE_WDT) | INTMASK(SOURCE_ARMCore0) | \ + INTMASK(SOURCE_ARMCore1) | INTMASK(SOURCE_Timer0) | \ + INTMASK(SOURCE_Timer1) | INTMASK(SOURCE_UART0) | \ + INTMASK(SOURCE_UART1) | INTMASK(SOURCE_PWM0) | \ + INTMASK(SOURCE_I2C0) | INTMASK(SOURCE_SPI0) | \ + INTMASK(SOURCE_SPI1) | INTMASK(SOURCE_PLL) | \ + INTMASK(SOURCE_RTC) | INTMASK(SOURCE_EINT0) | \ + INTMASK(SOURCE_EINT1) | INTMASK(SOURCE_EINT2) | \ + INTMASK(SOURCE_EINT3) | INTMASK(SOURCE_ADC0) | \ + INTMASK(SOURCE_I2C1) | INTMASK(SOURCE_BOD) | \ + INTMASK(SOURCE_ADC1) | INTMASK(SOURCE_USB)) + +typedef struct { + IOREG32 VIC_IRQStatus; + IOREG32 VIC_FIQStatus; + IOREG32 VIC_RawIntr; + IOREG32 VIC_IntSelect; + IOREG32 VIC_IntEnable; + IOREG32 VIC_IntEnClear; + IOREG32 VIC_SoftInt; + IOREG32 VIC_SoftIntClear; + IOREG32 VIC_Protection; + IOREG32 unused1[3]; + IOREG32 VIC_VectAddr; + IOREG32 VIC_DefVectAddr; + IOREG32 unused2[50]; + IOREG32 VIC_VectAddrs[16]; + IOREG32 unused3[48]; + IOREG32 VIC_VectCntls[16]; +} VIC; + +#define VICBase ((VIC *)0xFFFFF000) +#define VICVectorsBase ((IOREG32 *)0xFFFFF100) +#define VICControlsBase ((IOREG32 *)0xFFFFF200) + +#define VICIRQStatus (VICBase->VIC_IRQStatus) +#define VICFIQStatus (VICBase->VIC_FIQStatus) +#define VICRawIntr (VICBase->VIC_RawIntr) +#define VICIntSelect (VICBase->VIC_IntSelect) +#define VICIntEnable (VICBase->VIC_IntEnable) +#define VICIntEnClear (VICBase->VIC_IntEnClear) +#define VICSoftInt (VICBase->VIC_SoftInt) +#define VICSoftIntClear (VICBase->VIC_SoftIntClear) +#define VICProtection (VICBase->VIC_Protection) +#define VICVectAddr (VICBase->VIC_VectAddr) +#define VICDefVectAddr (VICBase->VIC_DefVectAddr) + +#define VICVectAddrs(n) (VICBase->VIC_VectAddrs[n]) +#define VICVectCntls(n) (VICBase->VIC_VectCntls[n]) + +/* + * MAM. + */ +typedef struct { + IOREG32 MAM_Control; + IOREG32 MAM_Timing; +} MAM; + +#define MAMBase ((MAM *)0xE01FC000) +#define MAMCR (MAMBase->MAM_Control) +#define MAMTIM (MAMBase->MAM_Timing) + +/* + * GPIO - FIO. + */ +typedef struct { + IOREG32 IO_PIN; + IOREG32 IO_SET; + IOREG32 IO_DIR; + IOREG32 IO_CLR; +} GPIO; + +#define GPIO0Base ((GPIO *)0xE0028000) +#define IO0PIN (GPIO0Base->IO_PIN) +#define IO0SET (GPIO0Base->IO_SET) +#define IO0DIR (GPIO0Base->IO_DIR) +#define IO0CLR (GPIO0Base->IO_CLR) + +#define GPIO1Base ((GPIO *)0xE0028010) +#define IO1PIN (GPIO1Base->IO_PIN) +#define IO1SET (GPIO1Base->IO_SET) +#define IO1DIR (GPIO1Base->IO_DIR) +#define IO1CLR (GPIO1Base->IO_CLR) + +typedef struct { + IOREG32 FIO_DIR; + IOREG32 unused1; + IOREG32 unused2; + IOREG32 unused3; + IOREG32 FIO_MASK; + IOREG32 FIO_PIN; + IOREG32 FIO_SET; + IOREG32 FIO_CLR; +} FIO; + +#define FIO0Base ((FIO *)0x3FFFC000) +#define FIO0DIR (FIO0Base->FIO_DIR) +#define FIO0MASK (FIO0Base->FIO_MASK) +#define FIO0PIN (FIO0Base->FIO_PIN) +#define FIO0SET (FIO0Base->FIO_SET) +#define FIO0CLR (FIO0Base->FIO_CLR) + +#define FIO1Base ((FIO *)0x3FFFC020) +#define FIO1DIR (FIO1Base->FIO_DIR) +#define FIO1MASK (FIO1Base->FIO_MASK) +#define FIO1PIN (FIO1Base->FIO_PIN) +#define FIO1SET (FIO1Base->FIO_SET) +#define FIO1CLR (FIO1Base->FIO_CLR) + +/* + * UART. + */ +typedef struct { + union { + IOREG32 UART_RBR; + IOREG32 UART_THR; + IOREG32 UART_DLL; + }; + union { + IOREG32 UART_IER; + IOREG32 UART_DLM; + }; + union { + IOREG32 UART_IIR; + IOREG32 UART_FCR; + }; + IOREG32 UART_LCR; + IOREG32 UART_MCR; + IOREG32 UART_LSR; + IOREG32 unused18; + IOREG32 UART_SCR; + IOREG32 UART_ACR; + IOREG32 unused24; + IOREG32 UART_FDR; + IOREG32 unused2C; + IOREG32 UART_TER; +} UART; + +#define U0Base ((UART *)0xE000C000) +#define U0RBR (U0Base->UART_RBR) +#define U0THR (U0Base->UART_THR) +#define U0DLL (U0Base->UART_DLL) +#define U0IER (U0Base->UART_IER) +#define U0DLM (U0Base->UART_DLM) +#define U0IIR (U0Base->UART_IIR) +#define U0FCR (U0Base->UART_FCR) +#define U0LCR (U0Base->UART_LCR) +#define U0LSR (U0Base->UART_LSR) +#define U0SCR (U0Base->UART_SCR) +#define U0ACR (U0Base->UART_ACR) +#define U0FDR (U0Base->UART_FDR) +#define U0TER (U0Base->UART_TER) + +#define U1Base ((UART *)0xE0010000) +#define U1RBR (U1Base->UART_RBR) +#define U1THR (U1Base->UART_THR) +#define U1DLL (U1Base->UART_DLL) +#define U1IER (U1Base->UART_IER) +#define U1DLM (U1Base->UART_DLM) +#define U1IIR (U1Base->UART_IIR) +#define U1FCR (U1Base->UART_FCR) +#define U1MCR (U1Base->UART_MCR) +#define U1LCR (U1Base->UART_LCR) +#define U1LSR (U1Base->UART_LSR) +#define U1SCR (U1Base->UART_SCR) +#define U1ACR (U1Base->UART_ACR) +#define U1FDR (U1Base->UART_FDR) +#define U1TER (U1Base->UART_TER) + +#define IIR_SRC_MASK 0x0F +#define IIR_SRC_NONE 0x01 +#define IIR_SRC_TX 0x02 +#define IIR_SRC_RX 0x04 +#define IIR_SRC_ERROR 0x06 +#define IIR_SRC_TIMEOUT 0x0C + +#define IER_RBR 1 +#define IER_THRE 2 +#define IER_STATUS 4 + +#define IIR_INT_PENDING 1 + +#define LCR_WL5 0 +#define LCR_WL6 1 +#define LCR_WL7 2 +#define LCR_WL8 3 +#define LCR_STOP1 0 +#define LCR_STOP2 4 +#define LCR_NOPARITY 0 +#define LCR_PARITYODD 0x08 +#define LCR_PARITYEVEN 0x18 +#define LCR_PARITYONE 0x28 +#define LCR_PARITYZERO 0x38 +#define LCR_BREAK_ON 0x40 +#define LCR_DLAB 0x80 + +#define FCR_ENABLE 1 +#define FCR_RXRESET 2 +#define FCR_TXRESET 4 +#define FCR_TRIGGER0 0 +#define FCR_TRIGGER1 0x40 +#define FCR_TRIGGER2 0x80 +#define FCR_TRIGGER3 0xC0 + +#define LSR_RBR_FULL 1 +#define LSR_OVERRUN 2 +#define LSR_PARITY 4 +#define LSR_FRAMING 8 +#define LSR_BREAK 0x10 +#define LSR_THRE 0x20 +#define LSR_TEMT 0x40 +#define LSR_RXFE 0x80 + +#define TER_ENABLE 0x80 + +/* + * SSP. + */ +typedef struct { + IOREG32 SSP_CR0; + IOREG32 SSP_CR1; + IOREG32 SSP_DR; + IOREG32 SSP_SR; + IOREG32 SSP_CPSR; + IOREG32 SSP_IMSC; + IOREG32 SSP_RIS; + IOREG32 SSP_MIS; + IOREG32 SSP_ICR; +} SSP; + +#define SSPBase ((SSP *)0xE0068000) +#define SSPCR0 (SSPBase->SSP_CR0) +#define SSPCR1 (SSPBase->SSP_CR1) +#define SSPDR (SSPBase->SSP_DR) +#define SSPSR (SSPBase->SSP_SR) +#define SSPCPSR (SSPBase->SSP_CPSR) +#define SSPIMSC (SSPBase->SSP_IMSC) +#define SSPRIS (SSPBase->SSP_RIS) +#define SSPMIS (SSPBase->SSP_MIS) +#define SSPICR (SSPBase->SSP_ICR) + +#define CR0_DSSMASK 0x0F +#define CR0_DSS4BIT 3 +#define CR0_DSS5BIT 4 +#define CR0_DSS6BIT 5 +#define CR0_DSS7BIT 6 +#define CR0_DSS8BIT 7 +#define CR0_DSS9BIT 8 +#define CR0_DSS10BIT 9 +#define CR0_DSS11BIT 0xA +#define CR0_DSS12BIT 0xB +#define CR0_DSS13BIT 0xC +#define CR0_DSS14BIT 0xD +#define CR0_DSS15BIT 0xE +#define CR0_DSS16BIT 0xF +#define CR0_FRFSPI 0 +#define CR0_FRFSSI 0x10 +#define CR0_FRFMW 0x20 +#define CR0_CPOL 0x40 +#define CR0_CPHA 0x80 +#define CR0_CLOCKRATE(n) ((n) << 8) + +#define CR1_LBM 1 +#define CR1_SSE 2 +#define CR1_MS 4 +#define CR1_SOD 8 + +#define SR_TFE 1 +#define SR_TNF 2 +#define SR_RNE 4 +#define SR_RFF 8 +#define SR_BSY 0x10 + +#define IMSC_ROR 1 +#define IMSC_RT 2 +#define IMSC_RX 4 +#define IMSC_TX 8 + +#define RIS_ROR 1 +#define RIS_RT 2 +#define RIS_RX 4 +#define RIS_TX 8 + +#define MIS_ROR 1 +#define MIS_RT 2 +#define MIS_RX 4 +#define MIS_TX 8 + +#define ICR_ROR 1 +#define ICR_RT 2 + +/* + * Timers/Counters. + */ +typedef struct { + IOREG32 TC_IR; + IOREG32 TC_TCR; + IOREG32 TC_TC; + IOREG32 TC_PR; + IOREG32 TC_PC; + IOREG32 TC_MCR; + IOREG32 TC_MR0; + IOREG32 TC_MR1; + IOREG32 TC_MR2; + IOREG32 TC_MR3; + IOREG32 TC_CCR; + IOREG32 TC_CR0; + IOREG32 TC_CR1; + IOREG32 TC_CR2; + IOREG32 TC_CR3; + IOREG32 TC_EMR; + IOREG32 TC_CTCR; +} TC; + +#define T0Base ((TC *)0xE0004000) +#define T0IR (T0Base->TC_IR) +#define T0TCR (T0Base->TC_TCR) +#define T0TC (T0Base->TC_TC) +#define T0PR (T0Base->TC_PR) +#define T0PC (T0Base->TC_PC) +#define T0MCR (T0Base->TC_MCR) +#define T0MR0 (T0Base->TC_MR0) +#define T0MR1 (T0Base->TC_MR1) +#define T0MR2 (T0Base->TC_MR2) +#define T0MR3 (T0Base->TC_MR3) +#define T0CCR (T0Base->TC_CCR) +#define T0CR0 (T0Base->TC_CR0) +#define T0CR1 (T0Base->TC_CR1) +#define T0CR2 (T0Base->TC_CR2) +#define T0CR3 (T0Base->TC_CR3) +#define T0EMR (T0Base->TC_EMR) +#define T0CTCR (T0Base->TC_CTCR) + +#define T1Base ((TC *)0xE0008000) +#define T1IR (T1Base->TC_IR) +#define T1TCR (T1Base->TC_TCR) +#define T1TC (T1Base->TC_TC) +#define T1PR (T1Base->TC_PR) +#define T1PC (T1Base->TC_PC) +#define T1MCR (T1Base->TC_MCR) +#define T1MR0 (T1Base->TC_MR0) +#define T1MR1 (T1Base->TC_MR1) +#define T1MR2 (T1Base->TC_MR2) +#define T1MR3 (T1Base->TC_MR3) +#define T1CCR (T1Base->TC_CCR) +#define T1CR0 (T1Base->TC_CR0) +#define T1CR1 (T1Base->TC_CR1) +#define T1CR2 (T1Base->TC_CR2) +#define T1CR3 (T1Base->TC_CR3) +#define T1EMR (T1Base->TC_EMR) +#define T1CTCR (T1Base->TC_CTCR) + +/* + * Watchdog. + */ +typedef struct { + IOREG32 WD_MOD; + IOREG32 WD_TC; + IOREG32 WD_FEED; + IOREG32 WD_TV; +} WD; + +#define WDBase ((WD *)0xE0000000) +#define WDMOD (WDBase->WD_MOD) +#define WDTC (WDBase->WD_TC) +#define WDFEED (WDBase->WD_FEED) +#define WDTV (WDBase->WD_TV) + +/* + * DAC. + */ +#define DACR (*((IOREG32 *)0xE006C000)) + +#endif /* _LPC214X_H_ */ + diff --git a/os/common/startup/ARMCMx/compilers/GCC/crt0_v6m.s b/os/common/startup/ARMCMx/compilers/GCC/crt0_v6m.s new file mode 100644 index 000000000..c3ca9faa5 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/crt0_v6m.s @@ -0,0 +1,259 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file crt0_v6m.s + * @brief Generic ARMv6-M (Cortex-M0/M1) startup file for ChibiOS. + * + * @addtogroup ARMCMx_GCC_STARTUP_V6M + * @{ + */ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +#if !defined(FALSE) || defined(__DOXYGEN__) +#define FALSE 0 +#endif + +#if !defined(TRUE) || defined(__DOXYGEN__) +#define TRUE 1 +#endif + +#define CONTROL_MODE_PRIVILEGED 0 +#define CONTROL_MODE_UNPRIVILEGED 1 +#define CONTROL_USE_MSP 0 +#define CONTROL_USE_PSP 2 + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/** + * @brief Control special register initialization value. + * @details The system is setup to run in privileged mode using the PSP + * stack (dual stack mode). + */ +#if !defined(CRT0_CONTROL_INIT) || defined(__DOXYGEN__) +#define CRT0_CONTROL_INIT (CONTROL_USE_PSP | \ + CONTROL_MODE_PRIVILEGED) +#endif + +/** + * @brief Core initialization switch. + */ +#if !defined(CRT0_INIT_CORE) || defined(__DOXYGEN__) +#define CRT0_INIT_CORE TRUE +#endif + +/** + * @brief Stack segments initialization switch. + */ +#if !defined(CRT0_STACKS_FILL_PATTERN) || defined(__DOXYGEN__) +#define CRT0_STACKS_FILL_PATTERN 0x55555555 +#endif + +/** + * @brief Stack segments initialization switch. + */ +#if !defined(CRT0_INIT_STACKS) || defined(__DOXYGEN__) +#define CRT0_INIT_STACKS TRUE +#endif + +/** + * @brief DATA segment initialization switch. + */ +#if !defined(CRT0_INIT_DATA) || defined(__DOXYGEN__) +#define CRT0_INIT_DATA TRUE +#endif + +/** + * @brief BSS segment initialization switch. + */ +#if !defined(CRT0_INIT_BSS) || defined(__DOXYGEN__) +#define CRT0_INIT_BSS TRUE +#endif + +/** + * @brief RAM areas initialization switch. + */ +#if !defined(CRT0_INIT_RAM_AREAS) || defined(__DOXYGEN__) +#define CRT0_INIT_RAM_AREAS TRUE +#endif + +/** + * @brief Constructors invocation switch. + */ +#if !defined(CRT0_CALL_CONSTRUCTORS) || defined(__DOXYGEN__) +#define CRT0_CALL_CONSTRUCTORS TRUE +#endif + +/** + * @brief Destructors invocation switch. + */ +#if !defined(CRT0_CALL_DESTRUCTORS) || defined(__DOXYGEN__) +#define CRT0_CALL_DESTRUCTORS TRUE +#endif + +/*===========================================================================*/ +/* Code section. */ +/*===========================================================================*/ + +#if !defined(__DOXYGEN__) + + .cpu cortex-m0 + .fpu softvfp + + .thumb + .text + +/* + * Reset handler. + */ + .align 2 + .thumb_func + .global Reset_Handler +Reset_Handler: + /* Interrupts are globally masked initially.*/ + cpsid i + + /* PSP stack pointers initialization.*/ + ldr r0, =__process_stack_end__ + msr PSP, r0 + + /* CPU mode initialization as configured.*/ + movs r0, #CRT0_CONTROL_INIT + msr CONTROL, r0 + isb + +#if CRT0_INIT_CORE == TRUE + /* Core initialization.*/ + bl __core_init +#endif + + /* Early initialization..*/ + bl __early_init + +#if CRT0_INIT_STACKS == TRUE + ldr r0, =CRT0_STACKS_FILL_PATTERN + /* Main Stack initialization. Note, it assumes that the + stack size is a multiple of 4 so the linker file must + ensure this.*/ + ldr r1, =__main_stack_base__ + ldr r2, =__main_stack_end__ +msloop: + cmp r1, r2 + bge endmsloop + str r0, [r1] + add r1, r1, #4 + b msloop +endmsloop: + /* Process Stack initialization. Note, it assumes that the + stack size is a multiple of 4 so the linker file must + ensure this.*/ + ldr r1, =__process_stack_base__ + ldr r2, =__process_stack_end__ +psloop: + cmp r1, r2 + bge endpsloop + str r0, [r1] + add r1, r1, #4 + b psloop +endpsloop: +#endif + +#if CRT0_INIT_DATA == TRUE + /* Data initialization. Note, it assumes that the DATA size + is a multiple of 4 so the linker file must ensure this.*/ + ldr r1, =_textdata + ldr r2, =_data + ldr r3, =_edata +dloop: + cmp r2, r3 + bge enddloop + ldr r0, [r1] + str r0, [r2] + add r1, r1, #4 + add r2, r2, #4 + b dloop +enddloop: +#endif + +#if CRT0_INIT_BSS == TRUE + /* BSS initialization. Note, it assumes that the DATA size + is a multiple of 4 so the linker file must ensure this.*/ + movs r0, #0 + ldr r1, =_bss_start + ldr r2, =_bss_end +bloop: + cmp r1, r2 + bge endbloop + str r0, [r1] + add r1, r1, #4 + b bloop +endbloop: +#endif + +#if CRT0_INIT_RAM_AREAS == TRUE + /* RAM areas initialization.*/ + bl __init_ram_areas +#endif + + /* Late initialization..*/ + bl __late_init + +#if CRT0_CALL_CONSTRUCTORS == TRUE + /* Constructors invocation.*/ + ldr r4, =__init_array_start + ldr r5, =__init_array_end +initloop: + cmp r4, r5 + bge endinitloop + ldr r1, [r4] + blx r1 + add r4, r4, #4 + b initloop +endinitloop: +#endif + + /* Main program invocation, r0 contains the returned value.*/ + bl main + +#if CRT0_CALL_DESTRUCTORS == TRUE + /* Destructors invocation.*/ + ldr r4, =__fini_array_start + ldr r5, =__fini_array_end +finiloop: + cmp r4, r5 + bge endfiniloop + ldr r1, [r4] + blx r1 + add r4, r4, #4 + b finiloop +endfiniloop: +#endif + + /* Branching to the defined exit handler.*/ + ldr r1, =__default_exit + bx r1 + +#endif + +/** @} */ diff --git a/os/common/startup/ARMCMx/compilers/GCC/crt0_v7m.s b/os/common/startup/ARMCMx/compilers/GCC/crt0_v7m.s new file mode 100644 index 000000000..c7792f954 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/crt0_v7m.s @@ -0,0 +1,322 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file crt0_v7m.s + * @brief Generic ARMv7-M (Cortex-M3/M4/M7) startup file for ChibiOS. + * + * @addtogroup ARMCMx_GCC_STARTUP_V7M + * @{ + */ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +#if !defined(FALSE) || defined(__DOXYGEN__) +#define FALSE 0 +#endif + +#if !defined(TRUE) || defined(__DOXYGEN__) +#define TRUE 1 +#endif + +#define CONTROL_MODE_PRIVILEGED 0 +#define CONTROL_MODE_UNPRIVILEGED 1 +#define CONTROL_USE_MSP 0 +#define CONTROL_USE_PSP 2 +#define CONTROL_FPCA 4 + +#define FPCCR_ASPEN (1 << 31) +#define FPCCR_LSPEN (1 << 30) + +#define SCB_CPACR 0xE000ED88 +#define SCB_FPCCR 0xE000EF34 +#define SCB_FPDSCR 0xE000EF3C + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/** + * @brief FPU initialization switch. + */ +#if !defined(CRT0_INIT_FPU) || defined(__DOXYGEN__) +#if defined(CORTEX_USE_FPU) || defined(__DOXYGEN__) +#define CRT0_INIT_FPU CORTEX_USE_FPU +#else +#define CRT0_INIT_FPU FALSE +#endif +#endif + +/** + * @brief Control special register initialization value. + * @details The system is setup to run in privileged mode using the PSP + * stack (dual stack mode). + */ +#if !defined(CRT0_CONTROL_INIT) || defined(__DOXYGEN__) +#define CRT0_CONTROL_INIT (CONTROL_USE_PSP | \ + CONTROL_MODE_PRIVILEGED) +#endif + +/** + * @brief Core initialization switch. + */ +#if !defined(CRT0_INIT_CORE) || defined(__DOXYGEN__) +#define CRT0_INIT_CORE TRUE +#endif + +/** + * @brief Stack segments initialization switch. + */ +#if !defined(CRT0_STACKS_FILL_PATTERN) || defined(__DOXYGEN__) +#define CRT0_STACKS_FILL_PATTERN 0x55555555 +#endif + +/** + * @brief Stack segments initialization switch. + */ +#if !defined(CRT0_INIT_STACKS) || defined(__DOXYGEN__) +#define CRT0_INIT_STACKS TRUE +#endif + +/** + * @brief DATA segment initialization switch. + */ +#if !defined(CRT0_INIT_DATA) || defined(__DOXYGEN__) +#define CRT0_INIT_DATA TRUE +#endif + +/** + * @brief BSS segment initialization switch. + */ +#if !defined(CRT0_INIT_BSS) || defined(__DOXYGEN__) +#define CRT0_INIT_BSS TRUE +#endif + +/** + * @brief RAM areas initialization switch. + */ +#if !defined(CRT0_INIT_RAM_AREAS) || defined(__DOXYGEN__) +#define CRT0_INIT_RAM_AREAS TRUE +#endif + +/** + * @brief Constructors invocation switch. + */ +#if !defined(CRT0_CALL_CONSTRUCTORS) || defined(__DOXYGEN__) +#define CRT0_CALL_CONSTRUCTORS TRUE +#endif + +/** + * @brief Destructors invocation switch. + */ +#if !defined(CRT0_CALL_DESTRUCTORS) || defined(__DOXYGEN__) +#define CRT0_CALL_DESTRUCTORS TRUE +#endif + +/** + * @brief FPU FPCCR register initialization value. + * @note Only used if @p CRT0_INIT_FPU is equal to @p TRUE. + */ +#if !defined(CRT0_FPCCR_INIT) || defined(__DOXYGEN__) +#define CRT0_FPCCR_INIT (FPCCR_ASPEN | FPCCR_LSPEN) +#endif + +/** + * @brief CPACR register initialization value. + * @note Only used if @p CRT0_INIT_FPU is equal to @p TRUE. + */ +#if !defined(CRT0_CPACR_INIT) || defined(__DOXYGEN__) +#define CRT0_CPACR_INIT 0x00F00000 +#endif + +/*===========================================================================*/ +/* Code section. */ +/*===========================================================================*/ + +#if !defined(__DOXYGEN__) + + .syntax unified + .cpu cortex-m3 +#if CRT0_INIT_FPU == TRUE + .fpu fpv4-sp-d16 +#else + .fpu softvfp +#endif + + .thumb + .text + +/* + * Reset handler. + */ + .align 2 + .thumb_func + .global Reset_Handler +Reset_Handler: + /* Interrupts are globally masked initially.*/ + cpsid i + + /* PSP stack pointers initialization.*/ + ldr r0, =__process_stack_end__ + msr PSP, r0 + +#if CRT0_INIT_FPU == TRUE + /* FPU FPCCR initialization.*/ + movw r0, #CRT0_FPCCR_INIT & 0xFFFF + movt r0, #CRT0_FPCCR_INIT >> 16 + movw r1, #SCB_FPCCR & 0xFFFF + movt r1, #SCB_FPCCR >> 16 + str r0, [r1] + dsb + isb + + /* CPACR initialization.*/ + movw r0, #CRT0_CPACR_INIT & 0xFFFF + movt r0, #CRT0_CPACR_INIT >> 16 + movw r1, #SCB_CPACR & 0xFFFF + movt r1, #SCB_CPACR >> 16 + str r0, [r1] + dsb + isb + + /* FPU FPSCR initially cleared.*/ + mov r0, #0 + vmsr FPSCR, r0 + + /* FPU FPDSCR initially cleared.*/ + movw r1, #SCB_FPDSCR & 0xFFFF + movt r1, #SCB_FPDSCR >> 16 + str r0, [r1] + + /* Enforcing FPCA bit in the CONTROL register.*/ + movs r0, #CRT0_CONTROL_INIT | CONTROL_FPCA + +#else + movs r0, #CRT0_CONTROL_INIT +#endif + + /* CONTROL register initialization as configured.*/ + msr CONTROL, r0 + isb + +#if CRT0_INIT_CORE == TRUE + /* Core initialization.*/ + bl __core_init +#endif + + /* Early initialization.*/ + bl __early_init + +#if CRT0_INIT_STACKS == TRUE + ldr r0, =CRT0_STACKS_FILL_PATTERN + /* Main Stack initialization. Note, it assumes that the + stack size is a multiple of 4 so the linker file must + ensure this.*/ + ldr r1, =__main_stack_base__ + ldr r2, =__main_stack_end__ +msloop: + cmp r1, r2 + itt lo + strlo r0, [r1], #4 + blo msloop + + /* Process Stack initialization. Note, it assumes that the + stack size is a multiple of 4 so the linker file must + ensure this.*/ + ldr r1, =__process_stack_base__ + ldr r2, =__process_stack_end__ +psloop: + cmp r1, r2 + itt lo + strlo r0, [r1], #4 + blo psloop +#endif + +#if CRT0_INIT_DATA == TRUE + /* Data initialization. Note, it assumes that the DATA size + is a multiple of 4 so the linker file must ensure this.*/ + ldr r1, =_textdata_start + ldr r2, =_data_start + ldr r3, =_data_end +dloop: + cmp r2, r3 + ittt lo + ldrlo r0, [r1], #4 + strlo r0, [r2], #4 + blo dloop +#endif + +#if CRT0_INIT_BSS == TRUE + /* BSS initialization. Note, it assumes that the DATA size + is a multiple of 4 so the linker file must ensure this.*/ + movs r0, #0 + ldr r1, =_bss_start + ldr r2, =_bss_end +bloop: + cmp r1, r2 + itt lo + strlo r0, [r1], #4 + blo bloop +#endif + +#if CRT0_INIT_RAM_AREAS == TRUE + /* RAM areas initialization.*/ + bl __init_ram_areas +#endif + + /* Late initialization..*/ + bl __late_init + +#if CRT0_CALL_CONSTRUCTORS == TRUE + /* Constructors invocation.*/ + ldr r4, =__init_array_start + ldr r5, =__init_array_end +initloop: + cmp r4, r5 + bge endinitloop + ldr r1, [r4], #4 + blx r1 + b initloop +endinitloop: +#endif + + /* Main program invocation, r0 contains the returned value.*/ + bl main + +#if CRT0_CALL_DESTRUCTORS == TRUE + /* Destructors invocation.*/ + ldr r4, =__fini_array_start + ldr r5, =__fini_array_end +finiloop: + cmp r4, r5 + bge endfiniloop + ldr r1, [r4], #4 + blx r1 + b finiloop +endfiniloop: +#endif + + /* Branching to the defined exit handler.*/ + b __default_exit + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/common/startup/ARMCMx/compilers/GCC/crt1.c b/os/common/startup/ARMCMx/compilers/GCC/crt1.c new file mode 100644 index 000000000..c47214e39 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/crt1.c @@ -0,0 +1,221 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file ARMCMx/compilers/GCC/crt1.c + * @brief Startup stub functions. + * + * @addtogroup ARMCMx_GCC_STARTUP + * @{ + */ + +#include + +#include "cmparams.h" + +/*===========================================================================*/ +/* Module local definitions. */ +/*===========================================================================*/ + +#if !defined(CRT1_AREAS_NUMBER) || defined(__DOXYGEN__) +#define CRT1_AREAS_NUMBER 8 +#endif + +#if (CRT1_AREAS_NUMBER < 0) || (CRT1_AREAS_NUMBER > 8) +#error "CRT1_AREAS_NUMBER must be within 0 and 8" +#endif + +/*===========================================================================*/ +/* Module exported variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module local types. */ +/*===========================================================================*/ + +/** + * @brief Type of an area to be initialized. + */ +typedef struct { + uint32_t *init_text_area; + uint32_t *init_area; + uint32_t *clear_area; + uint32_t *no_init_area; +} ram_init_area_t; + +/*===========================================================================*/ +/* Module local variables. */ +/*===========================================================================*/ + +#if (CRT1_AREAS_NUMBER > 0) || defined(__DOXYGEN__) +extern uint32_t __ram0_init_text__, __ram0_init__, __ram0_clear__, __ram0_noinit__; +#endif +#if (CRT1_AREAS_NUMBER > 1) || defined(__DOXYGEN__) +extern uint32_t __ram1_init_text__, __ram1_init__, __ram1_clear__, __ram1_noinit__; +#endif +#if (CRT1_AREAS_NUMBER > 2) || defined(__DOXYGEN__) +extern uint32_t __ram2_init_text__, __ram2_init__, __ram2_clear__, __ram2_noinit__; +#endif +#if (CRT1_AREAS_NUMBER > 3) || defined(__DOXYGEN__) +extern uint32_t __ram3_init_text__, __ram3_init__, __ram3_clear__, __ram3_noinit__; +#endif +#if (CRT1_AREAS_NUMBER > 4) || defined(__DOXYGEN__) +extern uint32_t __ram4_init_text__, __ram4_init__, __ram4_clear__, __ram4_noinit__; +#endif +#if (CRT1_AREAS_NUMBER > 5) || defined(__DOXYGEN__) +extern uint32_t __ram5_init_text__, __ram5_init__, __ram5_clear__, __ram5_noinit__; +#endif +#if (CRT1_AREAS_NUMBER > 6) || defined(__DOXYGEN__) +extern uint32_t __ram6_init_text__, __ram6_init__, __ram6_clear__, __ram6_noinit__; +#endif +#if (CRT1_AREAS_NUMBER > 7) || defined(__DOXYGEN__) +extern uint32_t __ram7_init_text__, __ram7_init__, __ram7_clear__, __ram7_noinit__; +#endif + +/** + * @brief Static table of areas to be initialized. + */ +#if (CRT1_AREAS_NUMBER > 0) || defined(__DOXYGEN__) +static const ram_init_area_t ram_areas[CRT1_AREAS_NUMBER] = { + {&__ram0_init_text__, &__ram0_init__, &__ram0_clear__, &__ram0_noinit__}, +#if (CRT1_AREAS_NUMBER > 1) || defined(__DOXYGEN__) + {&__ram1_init_text__, &__ram1_init__, &__ram1_clear__, &__ram1_noinit__}, +#endif +#if (CRT1_AREAS_NUMBER > 2) || defined(__DOXYGEN__) + {&__ram2_init_text__, &__ram2_init__, &__ram2_clear__, &__ram2_noinit__}, +#endif +#if (CRT1_AREAS_NUMBER > 3) || defined(__DOXYGEN__) + {&__ram3_init_text__, &__ram3_init__, &__ram3_clear__, &__ram3_noinit__}, +#endif +#if (CRT1_AREAS_NUMBER > 4) || defined(__DOXYGEN__) + {&__ram4_init_text__, &__ram4_init__, &__ram4_clear__, &__ram4_noinit__}, +#endif +#if (CRT1_AREAS_NUMBER > 5) || defined(__DOXYGEN__) + {&__ram5_init_text__, &__ram5_init__, &__ram5_clear__, &__ram5_noinit__}, +#endif +#if (CRT1_AREAS_NUMBER > 6) || defined(__DOXYGEN__) + {&__ram6_init_text__, &__ram6_init__, &__ram6_clear__, &__ram6_noinit__}, +#endif +#if (CRT1_AREAS_NUMBER > 7) || defined(__DOXYGEN__) + {&__ram7_init_text__, &__ram7_init__, &__ram7_clear__, &__ram7_noinit__}, +#endif +}; +#endif + +/*===========================================================================*/ +/* Module local functions. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module exported functions. */ +/*===========================================================================*/ + +/** + * @brief Architecture-dependent core initialization. + * @details This hook is invoked immediately after the stack initialization + * and before the DATA and BSS segments initialization. + * @note This function is a weak symbol. + */ +#if !defined(__DOXYGEN__) +__attribute__((weak)) +#endif +/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ +void __core_init(void) { + +#if __CORTEX_M == 7 + SCB_EnableICache(); + SCB_EnableDCache(); +#endif +} + +/** + * @brief Early initialization. + * @details This hook is invoked immediately after the stack and core + * initialization and before the DATA and BSS segments + * initialization. + * @note This function is a weak symbol. + */ +#if !defined(__DOXYGEN__) +__attribute__((weak)) +#endif +/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ +void __early_init(void) {} +/*lint -restore*/ + +/** + * @brief Late initialization. + * @details This hook is invoked after the DATA and BSS segments + * initialization and before any static constructor. The + * default behavior is to do nothing. + * @note This function is a weak symbol. + */ +#if !defined(__DOXYGEN__) +__attribute__((weak)) +#endif +/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ +void __late_init(void) {} +/*lint -restore*/ + +/** + * @brief Default @p main() function exit handler. + * @details This handler is invoked or the @p main() function exit. The + * default behavior is to enter an infinite loop. + * @note This function is a weak symbol. + */ +#if !defined(__DOXYGEN__) +__attribute__((noreturn, weak)) +#endif +/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ +void __default_exit(void) { +/*lint -restore*/ + + while (true) { + } +} + +/** + * @brief Performs the initialization of the various RAM areas. + */ +void __init_ram_areas(void) { + const ram_init_area_t *rap = ram_areas; + +#if CRT1_AREAS_NUMBER > 0 + do { + uint32_t *tp = rap->init_text_area; + uint32_t *p = rap->init_area; + + /* Copying initialization data.*/ + while (p < rap->clear_area) { + *p = *tp; + p++; + tp++; + } + + /* Zeroing clear area.*/ + while (p < rap->no_init_area) { + *p = 0; + p++; + } + rap++; + } + while (rap < &ram_areas[CRT1_AREAS_NUMBER]); +#endif +} + +/** @} */ diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/KL25Z128.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/KL25Z128.ld new file mode 100644 index 000000000..b0d6def1e --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/KL25Z128.ld @@ -0,0 +1,392 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * KL25Z128 memory setup. + */ +MEMORY +{ + flash0 : org = 0x00000000, len = 0x100 + flashcfg : org = 0x00000400, len = 0x10 + flash : org = 0x00000410, len = 128k - 0x410 + ram0 : org = 0x1FFFF000, len = 16k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +REGION_ALIAS("MAIN_STACK_RAM", ram0); +REGION_ALIAS("PROCESS_STACK_RAM", ram0); +REGION_ALIAS("DATA_RAM", ram0); +REGION_ALIAS("BSS_RAM", ram0); +REGION_ALIAS("HEAP_RAM", ram0); + +__ram0_start__ = ORIGIN(ram0); +__ram0_size__ = LENGTH(ram0); +__ram0_end__ = __ram0_start__ + __ram0_size__; +__ram1_start__ = ORIGIN(ram1); +__ram1_size__ = LENGTH(ram1); +__ram1_end__ = __ram1_start__ + __ram1_size__; +__ram2_start__ = ORIGIN(ram2); +__ram2_size__ = LENGTH(ram2); +__ram2_end__ = __ram2_start__ + __ram2_size__; +__ram3_start__ = ORIGIN(ram3); +__ram3_size__ = LENGTH(ram3); +__ram3_end__ = __ram3_start__ + __ram3_size__; +__ram4_start__ = ORIGIN(ram4); +__ram4_size__ = LENGTH(ram4); +__ram4_end__ = __ram4_start__ + __ram4_size__; +__ram5_start__ = ORIGIN(ram5); +__ram5_size__ = LENGTH(ram5); +__ram5_end__ = __ram5_start__ + __ram5_size__; +__ram6_start__ = ORIGIN(ram6); +__ram6_size__ = LENGTH(ram6); +__ram6_end__ = __ram6_start__ + __ram6_size__; +__ram7_start__ = ORIGIN(ram7); +__ram7_size__ = LENGTH(ram7); +__ram7_end__ = __ram7_start__ + __ram7_size__; + +ENTRY(Reset_Handler) + +SECTIONS +{ + . = 0; + + startup : ALIGN(16) SUBALIGN(16) + { + KEEP(*(.vectors)) + } > flash0 + + .cfmprotect : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.cfmconfig)) + } > flashcfg + + _text = .; + + constructors : ALIGN(4) SUBALIGN(4) + { + __init_array_start = .; + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + __init_array_end = .; + } > flash + + destructors : ALIGN(4) SUBALIGN(4) + { + __fini_array_start = .; + KEEP(*(.fini_array)) + KEEP(*(SORT(.fini_array.*))) + __fini_array_end = .; + } > flash + + .text : ALIGN(16) SUBALIGN(16) + { + *(.text) + *(.text.*) + *(.rodata) + *(.rodata.*) + *(.glue_7t) + *(.glue_7) + *(.gcc*) + } > flash + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > flash + + .ARM.exidx : { + __exidx_start = .; + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + __exidx_end = .; + } > flash + + .eh_frame_hdr : + { + *(.eh_frame_hdr) + } > flash + + .eh_frame : ONLY_IF_RO + { + *(.eh_frame) + } > flash + + .textalign : ONLY_IF_RO + { + . = ALIGN(8); + } > flash + + /* Legacy symbol, not used anywhere.*/ + . = ALIGN(4); + PROVIDE(_etext = .); + + /* Special section for exceptions stack.*/ + .mstack : + { + . = ALIGN(8); + __main_stack_base__ = .; + . += __main_stack_size__; + . = ALIGN(8); + __main_stack_end__ = .; + } > MAIN_STACK_RAM + + /* Special section for process stack.*/ + .pstack : + { + __process_stack_base__ = .; + __main_thread_stack_base__ = .; + . += __process_stack_size__; + . = ALIGN(8); + __process_stack_end__ = .; + __main_thread_stack_end__ = .; + } > PROCESS_STACK_RAM + + .data : ALIGN(4) + { + . = ALIGN(4); + PROVIDE(_textdata = LOADADDR(.data)); + PROVIDE(_data = .); + _textdata_start = LOADADDR(.data); + _data_start = .; + *(.data) + *(.data.*) + *(.ramtext) + . = ALIGN(4); + PROVIDE(_edata = .); + _data_end = .; + } > DATA_RAM AT > flash + + .bss (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + _bss_start = .; + *(.bss) + *(.bss.*) + *(COMMON) + . = ALIGN(4); + _bss_end = .; + PROVIDE(end = .); + } > BSS_RAM + + .ram0_init : ALIGN(4) + { + . = ALIGN(4); + __ram0_init_text__ = LOADADDR(.ram0_init); + __ram0_init__ = .; + *(.ram0_init) + *(.ram0_init.*) + . = ALIGN(4); + } > ram0 AT > flash + + .ram0 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram0_clear__ = .; + *(.ram0_clear) + *(.ram0_clear.*) + . = ALIGN(4); + __ram0_noinit__ = .; + *(.ram0) + *(.ram0.*) + . = ALIGN(4); + __ram0_free__ = .; + } > ram0 + + .ram1_init : ALIGN(4) + { + . = ALIGN(4); + __ram1_init_text__ = LOADADDR(.ram1_init); + __ram1_init__ = .; + *(.ram1_init) + *(.ram1_init.*) + . = ALIGN(4); + } > ram1 AT > flash + + .ram1 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram1_clear__ = .; + *(.ram1_clear) + *(.ram1_clear.*) + . = ALIGN(4); + __ram1_noinit__ = .; + *(.ram1) + *(.ram1.*) + . = ALIGN(4); + __ram1_free__ = .; + } > ram1 + + .ram2_init : ALIGN(4) + { + . = ALIGN(4); + __ram2_init_text__ = LOADADDR(.ram2_init); + __ram2_init__ = .; + *(.ram2_init) + *(.ram2_init.*) + . = ALIGN(4); + } > ram2 AT > flash + + .ram2 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram2_clear__ = .; + *(.ram2_clear) + *(.ram2_clear.*) + . = ALIGN(4); + __ram2_noinit__ = .; + *(.ram2) + *(.ram2.*) + . = ALIGN(4); + __ram2_free__ = .; + } > ram2 + + .ram3_init : ALIGN(4) + { + . = ALIGN(4); + __ram3_init_text__ = LOADADDR(.ram3_init); + __ram3_init__ = .; + *(.ram3_init) + *(.ram3_init.*) + . = ALIGN(4); + } > ram3 AT > flash + + .ram3 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram3_clear__ = .; + *(.ram3_clear) + *(.ram3_clear.*) + . = ALIGN(4); + __ram3_noinit__ = .; + *(.ram3) + *(.ram3.*) + . = ALIGN(4); + __ram3_free__ = .; + } > ram3 + + .ram4_init : ALIGN(4) + { + . = ALIGN(4); + __ram4_init_text__ = LOADADDR(.ram4_init); + __ram4_init__ = .; + *(.ram4_init) + *(.ram4_init.*) + . = ALIGN(4); + } > ram4 AT > flash + + .ram4 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram4_clear__ = .; + *(.ram4_clear) + *(.ram4_clear.*) + . = ALIGN(4); + __ram4_noinit__ = .; + *(.ram4) + *(.ram4.*) + . = ALIGN(4); + __ram4_free__ = .; + } > ram4 + + .ram5_init : ALIGN(4) + { + . = ALIGN(4); + __ram5_init_text__ = LOADADDR(.ram5_init); + __ram5_init__ = .; + *(.ram5_init) + *(.ram5_init.*) + . = ALIGN(4); + } > ram5 AT > flash + + .ram5 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram5_clear__ = .; + *(.ram5_clear) + *(.ram5_clear.*) + . = ALIGN(4); + __ram5_noinit__ = .; + *(.ram5) + *(.ram5.*) + . = ALIGN(4); + __ram5_free__ = .; + } > ram5 + + .ram6_init : ALIGN(4) + { + . = ALIGN(4); + __ram6_init_text__ = LOADADDR(.ram6_init); + __ram6_init__ = .; + *(.ram6_init) + *(.ram6_init.*) + . = ALIGN(4); + } > ram6 AT > flash + + .ram6 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram6_clear__ = .; + *(.ram6_clear) + *(.ram6_clear.*) + . = ALIGN(4); + __ram6_noinit__ = .; + *(.ram6) + *(.ram6.*) + . = ALIGN(4); + __ram6_free__ = .; + } > ram6 + + .ram7_init : ALIGN(4) + { + . = ALIGN(4); + __ram7_init_text__ = LOADADDR(.ram7_init); + __ram7_init__ = .; + *(.ram7_init) + *(.ram7_init.*) + . = ALIGN(4); + } > ram7 AT > flash + + .ram7 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram7_clear__ = .; + *(.ram7_clear) + *(.ram7_clear.*) + . = ALIGN(4); + __ram7_noinit__ = .; + *(.ram7) + *(.ram7.*) + . = ALIGN(4); + __ram7_free__ = .; + } > ram7 + + /* The default heap uses the (statically) unused part of a RAM section.*/ + .heap (NOLOAD) : + { + . = ALIGN(8); + __heap_base__ = .; + . = ORIGIN(HEAP_RAM) + LENGTH(HEAP_RAM); + __heap_end__ = .; + } > HEAP_RAM +} diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/MK20DX128.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/MK20DX128.ld new file mode 100644 index 000000000..d2350e749 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/MK20DX128.ld @@ -0,0 +1,392 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * MK20DX128 memory setup. + */ +MEMORY +{ + flash0 : org = 0x00000000, len = 0x100 + flashcfg : org = 0x00000400, len = 0x10 + flash : org = 0x00000410, len = 128k - 0x410 + ram0 : org = 0x1fffe000, len = 16k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +REGION_ALIAS("MAIN_STACK_RAM", ram0); +REGION_ALIAS("PROCESS_STACK_RAM", ram0); +REGION_ALIAS("DATA_RAM", ram0); +REGION_ALIAS("BSS_RAM", ram0); +REGION_ALIAS("HEAP_RAM", ram0); + +__ram0_start__ = ORIGIN(ram0); +__ram0_size__ = LENGTH(ram0); +__ram0_end__ = __ram0_start__ + __ram0_size__; +__ram1_start__ = ORIGIN(ram1); +__ram1_size__ = LENGTH(ram1); +__ram1_end__ = __ram1_start__ + __ram1_size__; +__ram2_start__ = ORIGIN(ram2); +__ram2_size__ = LENGTH(ram2); +__ram2_end__ = __ram2_start__ + __ram2_size__; +__ram3_start__ = ORIGIN(ram3); +__ram3_size__ = LENGTH(ram3); +__ram3_end__ = __ram3_start__ + __ram3_size__; +__ram4_start__ = ORIGIN(ram4); +__ram4_size__ = LENGTH(ram4); +__ram4_end__ = __ram4_start__ + __ram4_size__; +__ram5_start__ = ORIGIN(ram5); +__ram5_size__ = LENGTH(ram5); +__ram5_end__ = __ram5_start__ + __ram5_size__; +__ram6_start__ = ORIGIN(ram6); +__ram6_size__ = LENGTH(ram6); +__ram6_end__ = __ram6_start__ + __ram6_size__; +__ram7_start__ = ORIGIN(ram7); +__ram7_size__ = LENGTH(ram7); +__ram7_end__ = __ram7_start__ + __ram7_size__; + +ENTRY(Reset_Handler) + +SECTIONS +{ + . = 0; + + startup : ALIGN(16) SUBALIGN(16) + { + KEEP(*(.vectors)) + } > flash0 + + .cfmprotect : ALIGN(4) SUBALIGN(4) + { + KEEP(*(.cfmconfig)) + } > flashcfg + + _text = .; + + constructors : ALIGN(4) SUBALIGN(4) + { + __init_array_start = .; + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + __init_array_end = .; + } > flash + + destructors : ALIGN(4) SUBALIGN(4) + { + __fini_array_start = .; + KEEP(*(.fini_array)) + KEEP(*(SORT(.fini_array.*))) + __fini_array_end = .; + } > flash + + .text : ALIGN(16) SUBALIGN(16) + { + *(.text) + *(.text.*) + *(.rodata) + *(.rodata.*) + *(.glue_7t) + *(.glue_7) + *(.gcc*) + } > flash + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > flash + + .ARM.exidx : { + __exidx_start = .; + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + __exidx_end = .; + } > flash + + .eh_frame_hdr : + { + *(.eh_frame_hdr) + } > flash + + .eh_frame : ONLY_IF_RO + { + *(.eh_frame) + } > flash + + .textalign : ONLY_IF_RO + { + . = ALIGN(8); + } > flash + + /* Legacy symbol, not used anywhere.*/ + . = ALIGN(4); + PROVIDE(_etext = .); + + /* Special section for exceptions stack.*/ + .mstack : + { + . = ALIGN(8); + __main_stack_base__ = .; + . += __main_stack_size__; + . = ALIGN(8); + __main_stack_end__ = .; + } > MAIN_STACK_RAM + + /* Special section for process stack.*/ + .pstack : + { + __process_stack_base__ = .; + __main_thread_stack_base__ = .; + . += __process_stack_size__; + . = ALIGN(8); + __process_stack_end__ = .; + __main_thread_stack_end__ = .; + } > PROCESS_STACK_RAM + + .data : ALIGN(4) + { + . = ALIGN(4); + PROVIDE(_textdata = LOADADDR(.data)); + PROVIDE(_data = .); + _textdata_start = LOADADDR(.data); + _data_start = .; + *(.data) + *(.data.*) + *(.ramtext) + . = ALIGN(4); + PROVIDE(_edata = .); + _data_end = .; + } > DATA_RAM AT > flash + + .bss (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + _bss_start = .; + *(.bss) + *(.bss.*) + *(COMMON) + . = ALIGN(4); + _bss_end = .; + PROVIDE(end = .); + } > BSS_RAM + + .ram0_init : ALIGN(4) + { + . = ALIGN(4); + __ram0_init_text__ = LOADADDR(.ram0_init); + __ram0_init__ = .; + *(.ram0_init) + *(.ram0_init.*) + . = ALIGN(4); + } > ram0 AT > flash + + .ram0 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram0_clear__ = .; + *(.ram0_clear) + *(.ram0_clear.*) + . = ALIGN(4); + __ram0_noinit__ = .; + *(.ram0) + *(.ram0.*) + . = ALIGN(4); + __ram0_free__ = .; + } > ram0 + + .ram1_init : ALIGN(4) + { + . = ALIGN(4); + __ram1_init_text__ = LOADADDR(.ram1_init); + __ram1_init__ = .; + *(.ram1_init) + *(.ram1_init.*) + . = ALIGN(4); + } > ram1 AT > flash + + .ram1 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram1_clear__ = .; + *(.ram1_clear) + *(.ram1_clear.*) + . = ALIGN(4); + __ram1_noinit__ = .; + *(.ram1) + *(.ram1.*) + . = ALIGN(4); + __ram1_free__ = .; + } > ram1 + + .ram2_init : ALIGN(4) + { + . = ALIGN(4); + __ram2_init_text__ = LOADADDR(.ram2_init); + __ram2_init__ = .; + *(.ram2_init) + *(.ram2_init.*) + . = ALIGN(4); + } > ram2 AT > flash + + .ram2 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram2_clear__ = .; + *(.ram2_clear) + *(.ram2_clear.*) + . = ALIGN(4); + __ram2_noinit__ = .; + *(.ram2) + *(.ram2.*) + . = ALIGN(4); + __ram2_free__ = .; + } > ram2 + + .ram3_init : ALIGN(4) + { + . = ALIGN(4); + __ram3_init_text__ = LOADADDR(.ram3_init); + __ram3_init__ = .; + *(.ram3_init) + *(.ram3_init.*) + . = ALIGN(4); + } > ram3 AT > flash + + .ram3 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram3_clear__ = .; + *(.ram3_clear) + *(.ram3_clear.*) + . = ALIGN(4); + __ram3_noinit__ = .; + *(.ram3) + *(.ram3.*) + . = ALIGN(4); + __ram3_free__ = .; + } > ram3 + + .ram4_init : ALIGN(4) + { + . = ALIGN(4); + __ram4_init_text__ = LOADADDR(.ram4_init); + __ram4_init__ = .; + *(.ram4_init) + *(.ram4_init.*) + . = ALIGN(4); + } > ram4 AT > flash + + .ram4 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram4_clear__ = .; + *(.ram4_clear) + *(.ram4_clear.*) + . = ALIGN(4); + __ram4_noinit__ = .; + *(.ram4) + *(.ram4.*) + . = ALIGN(4); + __ram4_free__ = .; + } > ram4 + + .ram5_init : ALIGN(4) + { + . = ALIGN(4); + __ram5_init_text__ = LOADADDR(.ram5_init); + __ram5_init__ = .; + *(.ram5_init) + *(.ram5_init.*) + . = ALIGN(4); + } > ram5 AT > flash + + .ram5 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram5_clear__ = .; + *(.ram5_clear) + *(.ram5_clear.*) + . = ALIGN(4); + __ram5_noinit__ = .; + *(.ram5) + *(.ram5.*) + . = ALIGN(4); + __ram5_free__ = .; + } > ram5 + + .ram6_init : ALIGN(4) + { + . = ALIGN(4); + __ram6_init_text__ = LOADADDR(.ram6_init); + __ram6_init__ = .; + *(.ram6_init) + *(.ram6_init.*) + . = ALIGN(4); + } > ram6 AT > flash + + .ram6 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram6_clear__ = .; + *(.ram6_clear) + *(.ram6_clear.*) + . = ALIGN(4); + __ram6_noinit__ = .; + *(.ram6) + *(.ram6.*) + . = ALIGN(4); + __ram6_free__ = .; + } > ram6 + + .ram7_init : ALIGN(4) + { + . = ALIGN(4); + __ram7_init_text__ = LOADADDR(.ram7_init); + __ram7_init__ = .; + *(.ram7_init) + *(.ram7_init.*) + . = ALIGN(4); + } > ram7 AT > flash + + .ram7 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram7_clear__ = .; + *(.ram7_clear) + *(.ram7_clear.*) + . = ALIGN(4); + __ram7_noinit__ = .; + *(.ram7) + *(.ram7.*) + . = ALIGN(4); + __ram7_free__ = .; + } > ram7 + + /* The default heap uses the (statically) unused part of a RAM section.*/ + .heap (NOLOAD) : + { + . = ALIGN(8); + __heap_base__ = .; + . = ORIGIN(HEAP_RAM) + LENGTH(HEAP_RAM); + __heap_end__ = .; + } > HEAP_RAM +} diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F030x4.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F030x4.ld new file mode 100644 index 000000000..3a809ddb6 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F030x4.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F030x4 memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 16k + ram0 : org = 0x20000000, len = 4k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F030x6.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F030x6.ld new file mode 100644 index 000000000..71b738110 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F030x6.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F030x6 memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 32k + ram0 : org = 0x20000000, len = 4k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F030x8.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F030x8.ld new file mode 100644 index 000000000..429eba77a --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F030x8.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F030x8 memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 64k + ram0 : org = 0x20000000, len = 8k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F031x6.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F031x6.ld new file mode 100644 index 000000000..cb479f1b3 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F031x6.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F031x6 memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 32k + ram0 : org = 0x20000000, len = 4k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F042x6.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F042x6.ld new file mode 100644 index 000000000..b3e0f7390 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F042x6.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F042x6 memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 32k + ram0 : org = 0x20000000, len = 6k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F051x8.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F051x8.ld new file mode 100644 index 000000000..26466f115 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F051x8.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F051x8 memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 64k + ram0 : org = 0x20000000, len = 8k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F072xB.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F072xB.ld new file mode 100644 index 000000000..e44d43730 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F072xB.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F072xB memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 128k + ram0 : org = 0x20000000, len = 16k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F091xC.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F091xC.ld new file mode 100644 index 000000000..6d0ca2692 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F091xC.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F091xC memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 256k + ram0 : org = 0x20000000, len = 32k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F100xB.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F100xB.ld new file mode 100644 index 000000000..76c19c669 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F100xB.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * ST32F100xB memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 128k + ram0 : org = 0x20000000, len = 8k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103x8.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103x8.ld new file mode 100644 index 000000000..4ce14d925 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103x8.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * ST32F103x8 memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 64k + ram0 : org = 0x20000000, len = 20k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xB.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xB.ld new file mode 100644 index 000000000..22eba093e --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xB.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * ST32F103xB memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 128k + ram0 : org = 0x20000000, len = 20k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xD.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xD.ld new file mode 100644 index 000000000..1952b614c --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xD.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * ST32F103xE memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 384k + ram0 : org = 0x20000000, len = 64k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xE.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xE.ld new file mode 100644 index 000000000..8af8a3c7b --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xE.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * ST32F103xE memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 512k + ram0 : org = 0x20000000, len = 64k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xE_maplemini_bootloader.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xE_maplemini_bootloader.ld new file mode 100644 index 000000000..73fbc5209 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xE_maplemini_bootloader.ld @@ -0,0 +1,56 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * ST32F103xE memory setup for use with the maplemini bootloader. + * You will have to + * #define CORTEX_VTOR_INIT 0x5000 + * in your projects chconf.h + */ +MEMORY +{ + flash : org = 0x08005000, len = 512k - 0x5000 + ram0 : org = 0x20000C00, len = 64k - 0xC00 + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xG.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xG.ld new file mode 100644 index 000000000..f40b46ff1 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xG.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * ST32F103xG memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 1m + ram0 : org = 0x20000000, len = 96k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F107xC.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F107xC.ld new file mode 100644 index 000000000..f10a7a53b --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F107xC.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * ST32F107xC memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 256k + ram0 : org = 0x20000000, len = 64k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F207xG.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F207xG.ld new file mode 100644 index 000000000..644d358ab --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F207xG.ld @@ -0,0 +1,54 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F207xG memory setup. + * Note: Use of ram1 and ram2 is mutually exclusive with use of ram0. + */ +MEMORY +{ + flash : org = 0x08000000, len = 1M + ram0 : org = 0x20000000, len = 128k /* SRAM1 + SRAM2 */ + ram1 : org = 0x20000000, len = 112k /* SRAM1 */ + ram2 : org = 0x2001C000, len = 16k /* SRAM2 */ + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x10000000, len = 64k /* CCM SRAM */ + ram5 : org = 0x40024000, len = 4k /* BCKP SRAM */ + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F302x8.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F302x8.ld new file mode 100644 index 000000000..a78e033a6 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F302x8.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F302x8 memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 64k + ram0 : org = 0x20000000, len = 16k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F303x8.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F303x8.ld new file mode 100644 index 000000000..694ae5049 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F303x8.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F303x8 memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 64k + ram0 : org = 0x20000000, len = 12k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x10000000, len = 4k + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F303xC.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F303xC.ld new file mode 100644 index 000000000..518e96f0d --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F303xC.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F303xC memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 256k + ram0 : org = 0x20000000, len = 40k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x10000000, len = 8k + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F334x8.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F334x8.ld new file mode 100644 index 000000000..cfd9698e1 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F334x8.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F3334x8 memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 64k + ram0 : org = 0x20000000, len = 12k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x10000000, len = 4k + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F373xC.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F373xC.ld new file mode 100644 index 000000000..96d58449c --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F373xC.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F373xC memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 256k + ram0 : org = 0x20000000, len = 32k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F401xC.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F401xC.ld new file mode 100644 index 000000000..798e255bb --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F401xC.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F401xC memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 256k + ram0 : org = 0x20000000, len = 64k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F401xE.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F401xE.ld new file mode 100644 index 000000000..235ae50ea --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F401xE.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F401xE memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 512k + ram0 : org = 0x20000000, len = 96k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F405xG.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F405xG.ld new file mode 100644 index 000000000..151ec0dba --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F405xG.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F405xG memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 1M + ram0 : org = 0x20000000, len = 128k /* SRAM1 + SRAM2 */ + ram1 : org = 0x20000000, len = 112k /* SRAM1 */ + ram2 : org = 0x2001C000, len = 16k /* SRAM2 */ + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x10000000, len = 64k /* CCM SRAM */ + ram5 : org = 0x40024000, len = 4k /* BCKP SRAM */ + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F407xG.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F407xG.ld new file mode 100644 index 000000000..4ced890b6 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F407xG.ld @@ -0,0 +1,54 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F407xG memory setup. + * Note: Use of ram1 and ram2 is mutually exclusive with use of ram0. + */ +MEMORY +{ + flash : org = 0x08000000, len = 1M + ram0 : org = 0x20000000, len = 128k /* SRAM1 + SRAM2 */ + ram1 : org = 0x20000000, len = 112k /* SRAM1 */ + ram2 : org = 0x2001C000, len = 16k /* SRAM2 */ + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x10000000, len = 64k /* CCM SRAM */ + ram5 : org = 0x40024000, len = 4k /* BCKP SRAM */ + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F411xC.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F411xC.ld new file mode 100644 index 000000000..b3f91a45b --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F411xC.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F411xC memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 256k + ram0 : org = 0x20000000, len = 128k /* SRAM1 */ + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F411xE.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F411xE.ld new file mode 100644 index 000000000..010f8d4d2 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F411xE.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F411xE memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 512k + ram0 : org = 0x20000000, len = 128k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F429xI.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F429xI.ld new file mode 100644 index 000000000..81248e10c --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F429xI.ld @@ -0,0 +1,54 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * ST32F429xI memory setup. + * Note: Use of ram1, ram2 and ram3 is mutually exclusive with use of ram0. + */ +MEMORY +{ + flash : org = 0x08000000, len = 2M + ram0 : org = 0x20000000, len = 192k /* SRAM1 + SRAM2 + SRAM3 */ + ram1 : org = 0x20000000, len = 112k /* SRAM1 */ + ram2 : org = 0x2001C000, len = 16k /* SRAM2 */ + ram3 : org = 0x20020000, len = 64k /* SRAM3 */ + ram4 : org = 0x10000000, len = 64k /* CCM SRAM */ + ram5 : org = 0x40024000, len = 4k /* BCKP SRAM */ + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F746xG.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F746xG.ld new file mode 100644 index 000000000..b7c90bd0e --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F746xG.ld @@ -0,0 +1,66 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * ST32F746xG generic setup. + * + * RAM0 - Data, Heap. + * RAM3 - Main Stack, Process Stack, BSS, NOCACHE, ETH. + * + * Notes: + * BSS is placed in DTCM RAM in order to simplify DMA buffers management. + */ +MEMORY +{ + flash : org = 0x08000000, len = 1M + flash_itcm : org = 0x00200000, len = 1M + ram0 : org = 0x20010000, len = 256k /* SRAM1 + SRAM2 */ + ram1 : org = 0x20010000, len = 240k /* SRAM1 */ + ram2 : org = 0x2004C000, len = 16k /* SRAM2 */ + ram3 : org = 0x20000000, len = 64k /* DTCM-RAM */ + ram4 : org = 0x00000000, len = 16k /* ITCM-RAM */ + ram5 : org = 0x40024000, len = 4k /* BCKP SRAM */ + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram3); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram3); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram3); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +/* RAM region to be used for nocache segment.*/ +REGION_ALIAS("NOCACHE_RAM", ram3); + +/* RAM region to be used for eth segment.*/ +REGION_ALIAS("ETH_RAM", ram3); + +INCLUDE ld/rules_STM32F7xx.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F746xG_ETH.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F746xG_ETH.ld new file mode 100644 index 000000000..d4fa6ca8a --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F746xG_ETH.ld @@ -0,0 +1,66 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * ST32F746xG Ethernet setup. + * + * RAM1 - Data, Heap. + * RAM2 - ETH. + * RAM3 - Main Stack, Process Stack, BSS, NOCACHE. + * + * Notes: + * BSS is placed in DTCM RAM in order to simplify DMA buffers management. + */ +MEMORY +{ + flash : org = 0x08000000, len = 1M + ram0 : org = 0x20010000, len = 256k /* SRAM1 + SRAM2 */ + ram1 : org = 0x20010000, len = 240k /* SRAM1 */ + ram2 : org = 0x2004C000, len = 16k /* SRAM2 */ + ram3 : org = 0x20000000, len = 64k /* DTCM-RAM */ + ram4 : org = 0x00000000, len = 16k /* ITCM-RAM */ + ram5 : org = 0x40024000, len = 4k /* BCKP SRAM */ + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram3); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram3); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram1); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram3); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram1); + +/* RAM region to be used for nocache segment.*/ +REGION_ALIAS("NOCACHE_RAM", ram3); + +/* RAM region to be used for eth segment.*/ +REGION_ALIAS("ETH_RAM", ram2); + +INCLUDE rules_dma.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F746xG_MAX.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F746xG_MAX.ld new file mode 100644 index 000000000..21ba81fed --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F746xG_MAX.ld @@ -0,0 +1,68 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * ST32F746xG maximum RAM setup. + * + * RAM0 - Data, BSS, Heap. + * RAM3 - Main Stack, Process Stack, NOCACHE, ETH. + * + * Notes: + * BSS is placed in cached RAM, DMA buffers management is delegated to the + * application code. This setup maximizes the linear RAM available to BSS and + * Heap. + */ +MEMORY +{ + flash : org = 0x08000000, len = 1M + flash_itcm : org = 0x00200000, len = 1M + ram0 : org = 0x20010000, len = 256k /* SRAM1 + SRAM2 */ + ram1 : org = 0x20010000, len = 240k /* SRAM1 */ + ram2 : org = 0x2004C000, len = 16k /* SRAM2 */ + ram3 : org = 0x20000000, len = 64k /* DTCM-RAM */ + ram4 : org = 0x00000000, len = 16k /* ITCM-RAM */ + ram5 : org = 0x40024000, len = 4k /* BCKP SRAM */ + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram3); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram3); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +/* RAM region to be used for nocache segment.*/ +REGION_ALIAS("NOCACHE_RAM", ram3); + +/* RAM region to be used for eth segment.*/ +REGION_ALIAS("ETH_RAM", ram3); + +INCLUDE ld/rules_STM32F7xx.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L052x6.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L052x6.ld new file mode 100644 index 000000000..e5ebcb88a --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L052x6.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32L052x8 memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 16k + ram0 : org = 0x20000000, len = 8k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L052x8.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L052x8.ld new file mode 100644 index 000000000..faccde1ec --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L052x8.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32L052x8 memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 64k + ram0 : org = 0x20000000, len = 8k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L053x8.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L053x8.ld new file mode 100644 index 000000000..108e7f2c3 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L053x8.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32L053x8 memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 64k + ram0 : org = 0x20000000, len = 8k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L151x6.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L151x6.ld new file mode 100644 index 000000000..7709c2487 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L151x6.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32L151x6 memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 32k + ram0 : org = 0x20000000, len = 10k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L152xB.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L152xB.ld new file mode 100644 index 000000000..32ffdf596 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L152xB.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32L152xB memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 128k + ram0 : org = 0x20000000, len = 16k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L152xE.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L152xE.ld new file mode 100644 index 000000000..d6ad839a2 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L152xE.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32L152xB memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 512k + ram0 : org = 0x20000000, len = 80k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L476xG.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L476xG.ld new file mode 100644 index 000000000..060e79072 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32L476xG.ld @@ -0,0 +1,53 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * STM32F303xC memory setup. + */ +MEMORY +{ + flash : org = 0x08000000, len = 1M + ram0 : org = 0x20000000, len = 96k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x10000000, len = 32k + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : org = 0x00000000, len = 0 +} + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +INCLUDE rules.ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/rules_STM32F7xx.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/rules_STM32F7xx.ld new file mode 100644 index 000000000..0035c7ac3 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/ld/rules_STM32F7xx.ld @@ -0,0 +1,394 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +__ram0_start__ = ORIGIN(ram0); +__ram0_size__ = LENGTH(ram0); +__ram0_end__ = __ram0_start__ + __ram0_size__; +__ram1_start__ = ORIGIN(ram1); +__ram1_size__ = LENGTH(ram1); +__ram1_end__ = __ram1_start__ + __ram1_size__; +__ram2_start__ = ORIGIN(ram2); +__ram2_size__ = LENGTH(ram2); +__ram2_end__ = __ram2_start__ + __ram2_size__; +__ram3_start__ = ORIGIN(ram3); +__ram3_size__ = LENGTH(ram3); +__ram3_end__ = __ram3_start__ + __ram3_size__; +__ram4_start__ = ORIGIN(ram4); +__ram4_size__ = LENGTH(ram4); +__ram4_end__ = __ram4_start__ + __ram4_size__; +__ram5_start__ = ORIGIN(ram5); +__ram5_size__ = LENGTH(ram5); +__ram5_end__ = __ram5_start__ + __ram5_size__; +__ram6_start__ = ORIGIN(ram6); +__ram6_size__ = LENGTH(ram6); +__ram6_end__ = __ram6_start__ + __ram6_size__; +__ram7_start__ = ORIGIN(ram7); +__ram7_size__ = LENGTH(ram7); +__ram7_end__ = __ram7_start__ + __ram7_size__; + +ENTRY(Reset_Handler) + +SECTIONS +{ + . = 0; + _text = .; + + startup : ALIGN(16) SUBALIGN(16) + { + KEEP(*(.vectors)) + } > flash_itcm AT > flash + + constructors : ALIGN(4) SUBALIGN(4) + { + __init_array_start = .; + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + __init_array_end = .; + } > flash_itcm AT > flash + + destructors : ALIGN(4) SUBALIGN(4) + { + __fini_array_start = .; + KEEP(*(.fini_array)) + KEEP(*(SORT(.fini_array.*))) + __fini_array_end = .; + } > flash_itcm AT > flash + + .text : ALIGN(16) SUBALIGN(16) + { + *(.text) + *(.text.*) + *(.glue_7t) + *(.glue_7) + *(.gcc*) + } > flash_itcm AT > flash + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > flash_itcm AT > flash + + .ARM.exidx : { + __exidx_start = .; + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + __exidx_end = .; + } > flash_itcm AT > flash + + .eh_frame_hdr : + { + *(.eh_frame_hdr) + } > flash_itcm AT > flash + + .eh_frame : ONLY_IF_RO + { + *(.eh_frame) + } > flash_itcm AT > flash + + .textalign : ONLY_IF_RO + { + . = ALIGN(8); + } > flash_itcm AT > flash + + /* Constants are placed in the normal flash (non-ITCM) region because it + is desirable to make them DMA-accessible.*/ + .rodata : ALIGN(4) + { + . = ALIGN(4); + __rodata_base__ = .; + *(.rodata) + *(.rodata.*) + . = ALIGN(4); + __rodata_end__ = .; + } > flash + + /* Legacy symbol, not used anywhere.*/ + . = ALIGN(4); + PROVIDE(_etext = .); + + /* Special section for exceptions stack.*/ + .mstack : + { + . = ALIGN(8); + __main_stack_base__ = .; + . += __main_stack_size__; + . = ALIGN(8); + __main_stack_end__ = .; + } > MAIN_STACK_RAM + + /* Special section for process stack.*/ + .pstack : + { + __process_stack_base__ = .; + __main_thread_stack_base__ = .; + . += __process_stack_size__; + . = ALIGN(8); + __process_stack_end__ = .; + __main_thread_stack_end__ = .; + } > PROCESS_STACK_RAM + + /* Special section for non cache-able areas.*/ + .nocache (NOLOAD) : ALIGN(4) + { + __nocache_base__ = .; + *(.nocache) + *(.nocache.*) + *(.bss.__nocache_*) + . = ALIGN(4); + __nocache_end__ = .; + } > NOCACHE_RAM + + /* Special section for Ethernet DMA non cache-able areas.*/ + .eth (NOLOAD) : ALIGN(4) + { + __eth_base__ = .; + *(.eth) + *(.eth.*) + *(.bss.__eth_*) + . = ALIGN(4); + __eth_end__ = .; + } > ETH_RAM + + .data : ALIGN(4) + { + . = ALIGN(4); + PROVIDE(_textdata = LOADADDR(.data)); + PROVIDE(_data = .); + _textdata_start = LOADADDR(.data); + _data_start = .; + *(.data) + *(.data.*) + *(.ramtext) + . = ALIGN(4); + PROVIDE(_edata = .); + _data_end = .; + } > DATA_RAM AT > flash + + .bss (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + _bss_start = .; + *(.bss) + *(.bss.*) + *(COMMON) + . = ALIGN(4); + _bss_end = .; + PROVIDE(end = .); + } > BSS_RAM + + .ram0_init : ALIGN(4) + { + . = ALIGN(4); + __ram0_init_text__ = LOADADDR(.ram0_init); + __ram0_init__ = .; + *(.ram0_init) + *(.ram0_init.*) + . = ALIGN(4); + } > ram0 AT > flash + + .ram0 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram0_clear__ = .; + *(.ram0_clear) + *(.ram0_clear.*) + . = ALIGN(4); + __ram0_noinit__ = .; + *(.ram0) + *(.ram0.*) + . = ALIGN(4); + __ram0_free__ = .; + } > ram0 + + .ram1_init : ALIGN(4) + { + . = ALIGN(4); + __ram1_init_text__ = LOADADDR(.ram1_init); + __ram1_init__ = .; + *(.ram1_init) + *(.ram1_init.*) + . = ALIGN(4); + } > ram1 AT > flash + + .ram1 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram1_clear__ = .; + *(.ram1_clear) + *(.ram1_clear.*) + . = ALIGN(4); + __ram1_noinit__ = .; + *(.ram1) + *(.ram1.*) + . = ALIGN(4); + __ram1_free__ = .; + } > ram1 + + .ram2_init : ALIGN(4) + { + . = ALIGN(4); + __ram2_init_text__ = LOADADDR(.ram2_init); + __ram2_init__ = .; + *(.ram2_init) + *(.ram2_init.*) + . = ALIGN(4); + } > ram2 AT > flash + + .ram2 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram2_clear__ = .; + *(.ram2_clear) + *(.ram2_clear.*) + . = ALIGN(4); + __ram2_noinit__ = .; + *(.ram2) + *(.ram2.*) + . = ALIGN(4); + __ram2_free__ = .; + } > ram2 + + .ram3_init : ALIGN(4) + { + . = ALIGN(4); + __ram3_init_text__ = LOADADDR(.ram3_init); + __ram3_init__ = .; + *(.ram3_init) + *(.ram3_init.*) + . = ALIGN(4); + } > ram3 AT > flash + + .ram3 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram3_clear__ = .; + *(.ram3_clear) + *(.ram3_clear.*) + . = ALIGN(4); + __ram3_noinit__ = .; + *(.ram3) + *(.ram3.*) + . = ALIGN(4); + __ram3_free__ = .; + } > ram3 + + .ram4_init : ALIGN(4) + { + . = ALIGN(4); + __ram4_init_text__ = LOADADDR(.ram4_init); + __ram4_init__ = .; + *(.ram4_init) + *(.ram4_init.*) + . = ALIGN(4); + } > ram4 AT > flash + + .ram4 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram4_clear__ = .; + *(.ram4_clear) + *(.ram4_clear.*) + . = ALIGN(4); + __ram4_noinit__ = .; + *(.ram4) + *(.ram4.*) + . = ALIGN(4); + __ram4_free__ = .; + } > ram4 + + .ram5_init : ALIGN(4) + { + . = ALIGN(4); + __ram5_init_text__ = LOADADDR(.ram5_init); + __ram5_init__ = .; + *(.ram5_init) + *(.ram5_init.*) + . = ALIGN(4); + } > ram5 AT > flash + + .ram5 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram5_clear__ = .; + *(.ram5_clear) + *(.ram5_clear.*) + . = ALIGN(4); + __ram5_noinit__ = .; + *(.ram5) + *(.ram5.*) + . = ALIGN(4); + __ram5_free__ = .; + } > ram5 + + .ram6_init : ALIGN(4) + { + . = ALIGN(4); + __ram6_init_text__ = LOADADDR(.ram6_init); + __ram6_init__ = .; + *(.ram6_init) + *(.ram6_init.*) + . = ALIGN(4); + } > ram6 AT > flash + + .ram6 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram6_clear__ = .; + *(.ram6_clear) + *(.ram6_clear.*) + . = ALIGN(4); + __ram6_noinit__ = .; + *(.ram6) + *(.ram6.*) + . = ALIGN(4); + __ram6_free__ = .; + } > ram6 + + .ram7_init : ALIGN(4) + { + . = ALIGN(4); + __ram7_init_text__ = LOADADDR(.ram7_init); + __ram7_init__ = .; + *(.ram7_init) + *(.ram7_init.*) + . = ALIGN(4); + } > ram7 AT > flash + + .ram7 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram7_clear__ = .; + *(.ram7_clear) + *(.ram7_clear.*) + . = ALIGN(4); + __ram7_noinit__ = .; + *(.ram7) + *(.ram7.*) + . = ALIGN(4); + __ram7_free__ = .; + } > ram7 + + /* The default heap uses the (statically) unused part of a RAM section.*/ + .heap (NOLOAD) : + { + . = ALIGN(8); + __heap_base__ = .; + . = ORIGIN(HEAP_RAM) + LENGTH(HEAP_RAM); + __heap_end__ = .; + } > HEAP_RAM +} diff --git a/os/common/startup/ARMCMx/compilers/GCC/mk/startup_k20x.mk b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_k20x.mk new file mode 100644 index 000000000..b7ea0f3be --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_k20x.mk @@ -0,0 +1,12 @@ +# List of the ChibiOS generic K20x startup and CMSIS files. +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ + $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c + +STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s + +STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ + $(CHIBIOS)/os/common/ports/ARMCMx/devices/K20x \ + $(CHIBIOS)/os/ext/CMSIS/include \ + $(CHIBIOS)/os/ext/CMSIS/KINETIS + +STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/mk/startup_kl2x.mk b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_kl2x.mk new file mode 100644 index 000000000..a073da004 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_kl2x.mk @@ -0,0 +1,12 @@ +# List of the ChibiOS generic KL2x startup and CMSIS files. +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ + $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c + +STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s + +STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ + $(CHIBIOS)/os/common/ports/ARMCMx/devices/KL2x \ + $(CHIBIOS)/os/ext/CMSIS/include \ + $(CHIBIOS)/os/ext/CMSIS/KINETIS + +STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f0xx.mk b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f0xx.mk new file mode 100644 index 000000000..e705bd70f --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f0xx.mk @@ -0,0 +1,12 @@ +# List of the ChibiOS generic STM32F0xx startup and CMSIS files. +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ + $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c + +STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s + +STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ + $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32F0xx \ + $(CHIBIOS)/os/ext/CMSIS/include \ + $(CHIBIOS)/os/ext/CMSIS/ST/STM32F0xx + +STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk new file mode 100644 index 000000000..748075f99 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk @@ -0,0 +1,12 @@ +# List of the ChibiOS generic STM32F1xx startup and CMSIS files. +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ + $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c + +STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s + +STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ + $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32F1xx \ + $(CHIBIOS)/os/ext/CMSIS/include \ + $(CHIBIOS)/os/ext/CMSIS/ST/STM32F1xx + +STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f2xx.mk b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f2xx.mk new file mode 100644 index 000000000..9789041c2 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f2xx.mk @@ -0,0 +1,12 @@ +# List of the ChibiOS generic STM32F2xx startup and CMSIS files. +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ + $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c + +STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s + +STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ + $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32F2xx \ + $(CHIBIOS)/os/ext/CMSIS/include \ + $(CHIBIOS)/os/ext/CMSIS/ST/STM32F2xx + +STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f3xx.mk b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f3xx.mk new file mode 100644 index 000000000..6968d34a3 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f3xx.mk @@ -0,0 +1,12 @@ +# List of the ChibiOS generic STM32F3xx startup and CMSIS files. +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ + $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c + +STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s + +STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ + $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32F3xx \ + $(CHIBIOS)/os/ext/CMSIS/include \ + $(CHIBIOS)/os/ext/CMSIS/ST/STM32F3xx + +STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f4xx.mk b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f4xx.mk new file mode 100644 index 000000000..28744ffb5 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f4xx.mk @@ -0,0 +1,12 @@ +# List of the ChibiOS generic STM32F4xx startup and CMSIS files. +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ + $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c + +STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s + +STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ + $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32F4xx \ + $(CHIBIOS)/os/ext/CMSIS/include \ + $(CHIBIOS)/os/ext/CMSIS/ST/STM32F4xx + +STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f7xx.mk b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f7xx.mk new file mode 100644 index 000000000..b2a8b1f56 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f7xx.mk @@ -0,0 +1,12 @@ +# List of the ChibiOS generic STM32F7xx startup and CMSIS files. +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ + $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c + +STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s + +STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ + $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32F7xx \ + $(CHIBIOS)/os/ext/CMSIS/include \ + $(CHIBIOS)/os/ext/CMSIS/ST/STM32F7xx + +STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32l0xx.mk b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32l0xx.mk new file mode 100644 index 000000000..24c1ef054 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32l0xx.mk @@ -0,0 +1,12 @@ +# List of the ChibiOS generic STM32L0xx startup and CMSIS files. +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ + $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c + +STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s + +STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ + $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32L0xx \ + $(CHIBIOS)/os/ext/CMSIS/include \ + $(CHIBIOS)/os/ext/CMSIS/ST/STM32L0xx + +STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32l1xx.mk b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32l1xx.mk new file mode 100644 index 000000000..fcd588a9b --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32l1xx.mk @@ -0,0 +1,12 @@ +# List of the ChibiOS generic STM32L1xx startup and CMSIS files. +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ + $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c + +STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s + +STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ + $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32L1xx \ + $(CHIBIOS)/os/ext/CMSIS/include \ + $(CHIBIOS)/os/ext/CMSIS/ST/STM32L1xx + +STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32l4xx.mk b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32l4xx.mk new file mode 100644 index 000000000..a8a3ec441 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32l4xx.mk @@ -0,0 +1,12 @@ +# List of the ChibiOS generic STM32L4xx startup and CMSIS files. +STARTUPSRC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt1.c \ + $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/vectors.c + +STARTUPASM = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s + +STARTUPINC = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC \ + $(CHIBIOS)/os/common/ports/ARMCMx/devices/STM32L4xx \ + $(CHIBIOS)/os/ext/CMSIS/include \ + $(CHIBIOS)/os/ext/CMSIS/ST/STM32L4xx + +STARTUPLD = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/ld diff --git a/os/common/startup/ARMCMx/compilers/GCC/rules.ld b/os/common/startup/ARMCMx/compilers/GCC/rules.ld new file mode 100644 index 000000000..85d740b75 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/rules.ld @@ -0,0 +1,362 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +__ram0_start__ = ORIGIN(ram0); +__ram0_size__ = LENGTH(ram0); +__ram0_end__ = __ram0_start__ + __ram0_size__; +__ram1_start__ = ORIGIN(ram1); +__ram1_size__ = LENGTH(ram1); +__ram1_end__ = __ram1_start__ + __ram1_size__; +__ram2_start__ = ORIGIN(ram2); +__ram2_size__ = LENGTH(ram2); +__ram2_end__ = __ram2_start__ + __ram2_size__; +__ram3_start__ = ORIGIN(ram3); +__ram3_size__ = LENGTH(ram3); +__ram3_end__ = __ram3_start__ + __ram3_size__; +__ram4_start__ = ORIGIN(ram4); +__ram4_size__ = LENGTH(ram4); +__ram4_end__ = __ram4_start__ + __ram4_size__; +__ram5_start__ = ORIGIN(ram5); +__ram5_size__ = LENGTH(ram5); +__ram5_end__ = __ram5_start__ + __ram5_size__; +__ram6_start__ = ORIGIN(ram6); +__ram6_size__ = LENGTH(ram6); +__ram6_end__ = __ram6_start__ + __ram6_size__; +__ram7_start__ = ORIGIN(ram7); +__ram7_size__ = LENGTH(ram7); +__ram7_end__ = __ram7_start__ + __ram7_size__; + +ENTRY(Reset_Handler) + +SECTIONS +{ + . = 0; + _text = .; + + startup : ALIGN(16) SUBALIGN(16) + { + KEEP(*(.vectors)) + } > flash + + constructors : ALIGN(4) SUBALIGN(4) + { + __init_array_start = .; + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + __init_array_end = .; + } > flash + + destructors : ALIGN(4) SUBALIGN(4) + { + __fini_array_start = .; + KEEP(*(.fini_array)) + KEEP(*(SORT(.fini_array.*))) + __fini_array_end = .; + } > flash + + .text : ALIGN(16) SUBALIGN(16) + { + *(.text) + *(.text.*) + *(.rodata) + *(.rodata.*) + *(.glue_7t) + *(.glue_7) + *(.gcc*) + } > flash + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > flash + + .ARM.exidx : { + __exidx_start = .; + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + __exidx_end = .; + } > flash + + .eh_frame_hdr : + { + *(.eh_frame_hdr) + } > flash + + .eh_frame : ONLY_IF_RO + { + *(.eh_frame) + } > flash + + .textalign : ONLY_IF_RO + { + . = ALIGN(8); + } > flash + + /* Legacy symbol, not used anywhere.*/ + . = ALIGN(4); + PROVIDE(_etext = .); + + /* Special section for exceptions stack.*/ + .mstack : + { + . = ALIGN(8); + __main_stack_base__ = .; + . += __main_stack_size__; + . = ALIGN(8); + __main_stack_end__ = .; + } > MAIN_STACK_RAM + + /* Special section for process stack.*/ + .pstack : + { + __process_stack_base__ = .; + __main_thread_stack_base__ = .; + . += __process_stack_size__; + . = ALIGN(8); + __process_stack_end__ = .; + __main_thread_stack_end__ = .; + } > PROCESS_STACK_RAM + + .data : ALIGN(4) + { + . = ALIGN(4); + PROVIDE(_textdata = LOADADDR(.data)); + PROVIDE(_data = .); + _textdata_start = LOADADDR(.data); + _data_start = .; + *(.data) + *(.data.*) + *(.ramtext) + . = ALIGN(4); + PROVIDE(_edata = .); + _data_end = .; + } > DATA_RAM AT > flash + + .bss (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + _bss_start = .; + *(.bss) + *(.bss.*) + *(COMMON) + . = ALIGN(4); + _bss_end = .; + PROVIDE(end = .); + } > BSS_RAM + + .ram0_init : ALIGN(4) + { + . = ALIGN(4); + __ram0_init_text__ = LOADADDR(.ram0_init); + __ram0_init__ = .; + *(.ram0_init) + *(.ram0_init.*) + . = ALIGN(4); + } > ram0 AT > flash + + .ram0 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram0_clear__ = .; + *(.ram0_clear) + *(.ram0_clear.*) + . = ALIGN(4); + __ram0_noinit__ = .; + *(.ram0) + *(.ram0.*) + . = ALIGN(4); + __ram0_free__ = .; + } > ram0 + + .ram1_init : ALIGN(4) + { + . = ALIGN(4); + __ram1_init_text__ = LOADADDR(.ram1_init); + __ram1_init__ = .; + *(.ram1_init) + *(.ram1_init.*) + . = ALIGN(4); + } > ram1 AT > flash + + .ram1 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram1_clear__ = .; + *(.ram1_clear) + *(.ram1_clear.*) + . = ALIGN(4); + __ram1_noinit__ = .; + *(.ram1) + *(.ram1.*) + . = ALIGN(4); + __ram1_free__ = .; + } > ram1 + + .ram2_init : ALIGN(4) + { + . = ALIGN(4); + __ram2_init_text__ = LOADADDR(.ram2_init); + __ram2_init__ = .; + *(.ram2_init) + *(.ram2_init.*) + . = ALIGN(4); + } > ram2 AT > flash + + .ram2 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram2_clear__ = .; + *(.ram2_clear) + *(.ram2_clear.*) + . = ALIGN(4); + __ram2_noinit__ = .; + *(.ram2) + *(.ram2.*) + . = ALIGN(4); + __ram2_free__ = .; + } > ram2 + + .ram3_init : ALIGN(4) + { + . = ALIGN(4); + __ram3_init_text__ = LOADADDR(.ram3_init); + __ram3_init__ = .; + *(.ram3_init) + *(.ram3_init.*) + . = ALIGN(4); + } > ram3 AT > flash + + .ram3 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram3_clear__ = .; + *(.ram3_clear) + *(.ram3_clear.*) + . = ALIGN(4); + __ram3_noinit__ = .; + *(.ram3) + *(.ram3.*) + . = ALIGN(4); + __ram3_free__ = .; + } > ram3 + + .ram4_init : ALIGN(4) + { + . = ALIGN(4); + __ram4_init_text__ = LOADADDR(.ram4_init); + __ram4_init__ = .; + *(.ram4_init) + *(.ram4_init.*) + . = ALIGN(4); + } > ram4 AT > flash + + .ram4 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram4_clear__ = .; + *(.ram4_clear) + *(.ram4_clear.*) + . = ALIGN(4); + __ram4_noinit__ = .; + *(.ram4) + *(.ram4.*) + . = ALIGN(4); + __ram4_free__ = .; + } > ram4 + + .ram5_init : ALIGN(4) + { + . = ALIGN(4); + __ram5_init_text__ = LOADADDR(.ram5_init); + __ram5_init__ = .; + *(.ram5_init) + *(.ram5_init.*) + . = ALIGN(4); + } > ram5 AT > flash + + .ram5 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram5_clear__ = .; + *(.ram5_clear) + *(.ram5_clear.*) + . = ALIGN(4); + __ram5_noinit__ = .; + *(.ram5) + *(.ram5.*) + . = ALIGN(4); + __ram5_free__ = .; + } > ram5 + + .ram6_init : ALIGN(4) + { + . = ALIGN(4); + __ram6_init_text__ = LOADADDR(.ram6_init); + __ram6_init__ = .; + *(.ram6_init) + *(.ram6_init.*) + . = ALIGN(4); + } > ram6 AT > flash + + .ram6 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram6_clear__ = .; + *(.ram6_clear) + *(.ram6_clear.*) + . = ALIGN(4); + __ram6_noinit__ = .; + *(.ram6) + *(.ram6.*) + . = ALIGN(4); + __ram6_free__ = .; + } > ram6 + + .ram7_init : ALIGN(4) + { + . = ALIGN(4); + __ram7_init_text__ = LOADADDR(.ram7_init); + __ram7_init__ = .; + *(.ram7_init) + *(.ram7_init.*) + . = ALIGN(4); + } > ram7 AT > flash + + .ram7 (NOLOAD) : ALIGN(4) + { + . = ALIGN(4); + __ram7_clear__ = .; + *(.ram7_clear) + *(.ram7_clear.*) + . = ALIGN(4); + __ram7_noinit__ = .; + *(.ram7) + *(.ram7.*) + . = ALIGN(4); + __ram7_free__ = .; + } > ram7 + + /* The default heap uses the (statically) unused part of a RAM section.*/ + .heap (NOLOAD) : + { + . = ALIGN(8); + __heap_base__ = .; + . = ORIGIN(HEAP_RAM) + LENGTH(HEAP_RAM); + __heap_end__ = .; + } > HEAP_RAM +} diff --git a/os/common/startup/ARMCMx/compilers/GCC/rules.mk b/os/common/startup/ARMCMx/compilers/GCC/rules.mk new file mode 100644 index 000000000..2434be9cd --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/rules.mk @@ -0,0 +1,307 @@ +# ARM Cortex-Mx common makefile scripts and rules. + +############################################################################## +# Processing options coming from the upper Makefile. +# + +# Compiler options +OPT = $(USE_OPT) +COPT = $(USE_COPT) +CPPOPT = $(USE_CPPOPT) + +# Garbage collection +ifeq ($(USE_LINK_GC),yes) + OPT += -ffunction-sections -fdata-sections -fno-common + LDOPT := ,--gc-sections +else + LDOPT := +endif + +# Linker extra options +ifneq ($(USE_LDOPT),) + LDOPT := $(LDOPT),$(USE_LDOPT) +endif + +# Link time optimizations +ifeq ($(USE_LTO),yes) + OPT += -flto +endif + +# FPU-related options +ifeq ($(USE_FPU),) + USE_FPU = no +endif +ifneq ($(USE_FPU),no) + OPT += -mfloat-abi=$(USE_FPU) -mfpu=fpv4-sp-d16 -fsingle-precision-constant + DDEFS += -DCORTEX_USE_FPU=TRUE + DADEFS += -DCORTEX_USE_FPU=TRUE +else + DDEFS += -DCORTEX_USE_FPU=FALSE + DADEFS += -DCORTEX_USE_FPU=FALSE +endif + +# Process stack size +ifeq ($(USE_PROCESS_STACKSIZE),) + LDOPT := $(LDOPT),--defsym=__process_stack_size__=0x400 +else + LDOPT := $(LDOPT),--defsym=__process_stack_size__=$(USE_PROCESS_STACKSIZE) +endif + +# Exceptions stack size +ifeq ($(USE_EXCEPTIONS_STACKSIZE),) + LDOPT := $(LDOPT),--defsym=__main_stack_size__=0x400 +else + LDOPT := $(LDOPT),--defsym=__main_stack_size__=$(USE_EXCEPTIONS_STACKSIZE) +endif + +# Output directory and files +ifeq ($(BUILDDIR),) + BUILDDIR = build +endif +ifeq ($(BUILDDIR),.) + BUILDDIR = build +endif +OUTFILES = $(BUILDDIR)/$(PROJECT).elf \ + $(BUILDDIR)/$(PROJECT).hex \ + $(BUILDDIR)/$(PROJECT).bin \ + $(BUILDDIR)/$(PROJECT).dmp \ + $(BUILDDIR)/$(PROJECT).list + +ifdef SREC + OUTFILES += $(BUILDDIR)/$(PROJECT).srec +endif + +# Source files groups and paths +ifeq ($(USE_THUMB),yes) + TCSRC += $(CSRC) + TCPPSRC += $(CPPSRC) +else + ACSRC += $(CSRC) + ACPPSRC += $(CPPSRC) +endif +ASRC = $(ACSRC)$(ACPPSRC) +TSRC = $(TCSRC)$(TCPPSRC) +SRCPATHS = $(sort $(dir $(ASMXSRC)) $(dir $(ASMSRC)) $(dir $(ASRC)) $(dir $(TSRC))) + +# Various directories +OBJDIR = $(BUILDDIR)/obj +LSTDIR = $(BUILDDIR)/lst + +# Object files groups +ACOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ACSRC:.c=.o))) +ACPPOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ACPPSRC:.cpp=.o))) +TCOBJS = $(addprefix $(OBJDIR)/, $(notdir $(TCSRC:.c=.o))) +TCPPOBJS = $(addprefix $(OBJDIR)/, $(notdir $(TCPPSRC:.cpp=.o))) +ASMOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ASMSRC:.s=.o))) +ASMXOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ASMXSRC:.S=.o))) +OBJS = $(ASMXOBJS) $(ASMOBJS) $(ACOBJS) $(TCOBJS) $(ACPPOBJS) $(TCPPOBJS) + +# Paths +IINCDIR = $(patsubst %,-I%,$(INCDIR) $(DINCDIR) $(UINCDIR)) +LLIBDIR = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR)) + +# Macros +DEFS = $(DDEFS) $(UDEFS) +ADEFS = $(DADEFS) $(UADEFS) + +# Libs +LIBS = $(DLIBS) $(ULIBS) + +# Various settings +MCFLAGS = -mcpu=$(MCU) +ODFLAGS = -x --syms +ASFLAGS = $(MCFLAGS) -Wa,-amhls=$(LSTDIR)/$(notdir $(<:.s=.lst)) $(ADEFS) +ASXFLAGS = $(MCFLAGS) -Wa,-amhls=$(LSTDIR)/$(notdir $(<:.S=.lst)) $(ADEFS) +CFLAGS = $(MCFLAGS) $(OPT) $(COPT) $(CWARN) -Wa,-alms=$(LSTDIR)/$(notdir $(<:.c=.lst)) $(DEFS) +CPPFLAGS = $(MCFLAGS) $(OPT) $(CPPOPT) $(CPPWARN) -Wa,-alms=$(LSTDIR)/$(notdir $(<:.cpp=.lst)) $(DEFS) +LDFLAGS = $(MCFLAGS) $(OPT) -nostartfiles $(LLIBDIR) -Wl,-Map=$(BUILDDIR)/$(PROJECT).map,--cref,--no-warn-mismatch,--library-path=$(RULESPATH),--script=$(LDSCRIPT)$(LDOPT) + +# Thumb interwork enabled only if needed because it kills performance. +ifneq ($(TSRC),) + CFLAGS += -DTHUMB_PRESENT + CPPFLAGS += -DTHUMB_PRESENT + ASFLAGS += -DTHUMB_PRESENT + ifneq ($(ASRC),) + # Mixed ARM and THUMB mode. + CFLAGS += -mthumb-interwork + CPPFLAGS += -mthumb-interwork + ASFLAGS += -mthumb-interwork + LDFLAGS += -mthumb-interwork + else + # Pure THUMB mode, THUMB C code cannot be called by ARM asm code directly. + CFLAGS += -mno-thumb-interwork -DTHUMB_NO_INTERWORKING + CPPFLAGS += -mno-thumb-interwork -DTHUMB_NO_INTERWORKING + ASFLAGS += -mno-thumb-interwork -DTHUMB_NO_INTERWORKING -mthumb + LDFLAGS += -mno-thumb-interwork -mthumb + endif +else + # Pure ARM mode + CFLAGS += -mno-thumb-interwork + CPPFLAGS += -mno-thumb-interwork + ASFLAGS += -mno-thumb-interwork + LDFLAGS += -mno-thumb-interwork +endif + +# Generate dependency information +ASFLAGS += -MD -MP -MF .dep/$(@F).d +CFLAGS += -MD -MP -MF .dep/$(@F).d +CPPFLAGS += -MD -MP -MF .dep/$(@F).d + +# Paths where to search for sources +VPATH = $(SRCPATHS) + +# +# Makefile rules +# + +all: PRE_MAKE_ALL_RULE_HOOK $(OBJS) $(OUTFILES) POST_MAKE_ALL_RULE_HOOK + +PRE_MAKE_ALL_RULE_HOOK: + +POST_MAKE_ALL_RULE_HOOK: + +$(OBJS): | $(BUILDDIR) $(OBJDIR) $(LSTDIR) + +$(BUILDDIR): +ifneq ($(USE_VERBOSE_COMPILE),yes) + @echo Compiler Options + @echo $(CC) -c $(CFLAGS) -I. $(IINCDIR) main.c -o main.o + @echo +endif + @mkdir -p $(BUILDDIR) + +$(OBJDIR): + @mkdir -p $(OBJDIR) + +$(LSTDIR): + @mkdir -p $(LSTDIR) + +$(ACPPOBJS) : $(OBJDIR)/%.o : %.cpp Makefile +ifeq ($(USE_VERBOSE_COMPILE),yes) + @echo + $(CPPC) -c $(CPPFLAGS) $(AOPT) -I. $(IINCDIR) $< -o $@ +else + @echo Compiling $( $@ + $(SZ) $< +else + @echo Creating $@ + @$(OD) $(ODFLAGS) $< > $@ + @echo + @$(SZ) $< +endif + +%.list: %.elf +ifeq ($(USE_VERBOSE_COMPILE),yes) + $(OD) -S $< > $@ +else + @echo Creating $@ + @$(OD) -S $< > $@ + @echo + @echo Done +endif + +lib: $(OBJS) $(BUILDDIR)/lib$(PROJECT).a + +$(BUILDDIR)/lib$(PROJECT).a: $(OBJS) + @$(AR) -r $@ $^ + @echo + @echo Done + +clean: + @echo Cleaning + -rm -fR .dep $(BUILDDIR) + @echo + @echo Done + +# +# Include the dependency files, should be the last of the makefile +# +-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) + +# *** EOF *** diff --git a/os/common/startup/ARMCMx/compilers/GCC/vectors.c b/os/common/startup/ARMCMx/compilers/GCC/vectors.c new file mode 100644 index 000000000..d978d113c --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/vectors.c @@ -0,0 +1,632 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file ARMCMx/compilers/GCC/vectors.c + * @brief Interrupt vectors for Cortex-Mx devices. + * + * @defgroup ARMCMx_VECTORS Cortex-Mx Interrupt Vectors + * @{ + */ + +#include +#include + +#include "vectors.h" + +#if (CORTEX_NUM_VECTORS % 8) != 0 +#error "the constant CORTEX_NUM_VECTORS must be a multiple of 8" +#endif + +#if (CORTEX_NUM_VECTORS < 8) || (CORTEX_NUM_VECTORS > 240) +#error "the constant CORTEX_NUM_VECTORS must be between 8 and 240 inclusive" +#endif + +/** + * @brief Unhandled exceptions handler. + * @details Any undefined exception vector points to this function by default. + * This function simply stops the system into an infinite loop. + * + * @notapi + */ +/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ +void _unhandled_exception(void) { +/*lint -restore*/ + + while (true) { + } +} + +#if !defined(__DOXYGEN__) +extern uint32_t __main_stack_end__; +void Reset_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); +void NMI_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); +void HardFault_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); +void MemManage_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); +void BusFault_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); +void UsageFault_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1C(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector20(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector24(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector28(void) __attribute__((weak, alias("_unhandled_exception"))); +void SVC_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); +void DebugMon_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector34(void) __attribute__((weak, alias("_unhandled_exception"))); +void PendSV_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); +void SysTick_Handler(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector40(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector44(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector48(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector4C(void) __attribute__((weak, alias("_unhandled_exception"))); +#if CORTEX_NUM_VECTORS > 4 +void Vector50(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector54(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector58(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector5C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 8 +void Vector60(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector64(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector68(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector6C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 12 +void Vector70(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector74(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector78(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector7C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 16 +void Vector80(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector84(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector88(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector8C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 20 +void Vector90(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector94(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector98(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector9C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 24 +void VectorA0(void) __attribute__((weak, alias("_unhandled_exception"))); +void VectorA4(void) __attribute__((weak, alias("_unhandled_exception"))); +void VectorA8(void) __attribute__((weak, alias("_unhandled_exception"))); +void VectorAC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 28 +void VectorB0(void) __attribute__((weak, alias("_unhandled_exception"))); +void VectorB4(void) __attribute__((weak, alias("_unhandled_exception"))); +void VectorB8(void) __attribute__((weak, alias("_unhandled_exception"))); +void VectorBC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 32 +void VectorC0(void) __attribute__((weak, alias("_unhandled_exception"))); +void VectorC4(void) __attribute__((weak, alias("_unhandled_exception"))); +void VectorC8(void) __attribute__((weak, alias("_unhandled_exception"))); +void VectorCC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 36 +void VectorD0(void) __attribute__((weak, alias("_unhandled_exception"))); +void VectorD4(void) __attribute__((weak, alias("_unhandled_exception"))); +void VectorD8(void) __attribute__((weak, alias("_unhandled_exception"))); +void VectorDC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 40 +void VectorE0(void) __attribute__((weak, alias("_unhandled_exception"))); +void VectorE4(void) __attribute__((weak, alias("_unhandled_exception"))); +void VectorE8(void) __attribute__((weak, alias("_unhandled_exception"))); +void VectorEC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 44 +void VectorF0(void) __attribute__((weak, alias("_unhandled_exception"))); +void VectorF4(void) __attribute__((weak, alias("_unhandled_exception"))); +void VectorF8(void) __attribute__((weak, alias("_unhandled_exception"))); +void VectorFC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 48 +void Vector100(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector104(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector108(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector10C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 52 +void Vector110(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector114(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector118(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector11C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 56 +void Vector120(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector124(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector128(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector12C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 60 +void Vector130(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector134(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector138(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector13C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 64 +void Vector140(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector144(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector148(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector14C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 68 +void Vector150(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector154(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector158(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector15C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 72 +void Vector160(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector164(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector168(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector16C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 76 +void Vector170(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector174(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector178(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector17C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 80 +void Vector180(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector184(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector188(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector18C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 84 +void Vector190(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector194(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector198(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector19C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 88 +void Vector1A0(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1A4(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1A8(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1AC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 92 +void Vector1B0(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1B4(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1B8(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1BC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 96 +void Vector1C0(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1C4(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1C8(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1CC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 100 +void Vector1D0(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1D4(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1D8(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1DC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 104 +void Vector1E0(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1E4(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1E8(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1EC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 108 +void Vector1F0(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1F4(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1F8(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector1FC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 112 +void Vector200(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector204(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector208(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector20C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 116 +void Vector210(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector214(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector218(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector21C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 120 +void Vector220(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector224(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector228(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector22C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 124 +void Vector230(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector234(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector238(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector23C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 128 +void Vector240(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector244(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector248(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector24C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 132 +void Vector250(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector254(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector258(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector25C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 136 +void Vector260(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector264(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector268(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector26C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 140 +void Vector270(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector274(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector278(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector27C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 144 +void Vector280(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector284(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector288(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector28C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 148 +void Vector290(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector294(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector298(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector29C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 152 +void Vector2A0(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector2A4(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector2A8(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector2AC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 156 +void Vector2B0(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector2B4(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector2B8(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector2BC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 160 +void Vector2C0(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector2C4(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector2C8(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector2CC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 164 +void Vector2D0(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector2D4(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector2D8(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector2DC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 168 +void Vector2E0(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector2E4(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector2E8(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector2EC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 172 +void Vector2F0(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector2F4(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector2F8(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector2FC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 176 +void Vector300(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector304(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector308(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector30C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 180 +void Vector310(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector314(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector318(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector31C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 184 +void Vector320(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector324(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector328(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector32C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 188 +void Vector330(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector334(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector338(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector33C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 192 +void Vector340(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector344(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector348(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector34C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 196 +void Vector350(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector354(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector358(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector35C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 200 +void Vector360(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector364(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector368(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector36C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 204 +void Vector370(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector374(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector378(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector37C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 208 +void Vector380(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector384(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector388(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector38C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 212 +void Vector390(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector394(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector398(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector39C(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 216 +void Vector3A0(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector3A4(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector3A8(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector3AC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 220 +void Vector3B0(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector3B4(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector3B8(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector3BC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 224 +void Vector3C0(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector3C4(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector3C8(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector3CC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 228 +void Vector3D0(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector3D4(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector3D8(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector3DC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 232 +void Vector3E0(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector3E4(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector3E8(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector3EC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#if CORTEX_NUM_VECTORS > 236 +void Vector3F0(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector3F4(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector3F8(void) __attribute__((weak, alias("_unhandled_exception"))); +void Vector3FC(void) __attribute__((weak, alias("_unhandled_exception"))); +#endif +#endif /* !defined(__DOXYGEN__) */ + +/** + * @brief STM32 vectors table. + */ +#if !defined(__DOXYGEN__) +#if !defined(VECTORS_SECTION) +__attribute__ ((used, aligned(128), section(".vectors"))) +#else +__attribute__ ((used, aligned(128), section(VECTORS_SECTION))) +#endif +#endif +/*lint -save -e9075 [8.4] All symbols are invoked from asm context.*/ +vectors_t _vectors = { +/*lint -restore*/ + &__main_stack_end__,Reset_Handler, NMI_Handler, HardFault_Handler, + MemManage_Handler, BusFault_Handler, UsageFault_Handler, Vector1C, + Vector20, Vector24, Vector28, SVC_Handler, + DebugMon_Handler, Vector34, PendSV_Handler, SysTick_Handler, + { + Vector40, Vector44, Vector48, Vector4C, +#if CORTEX_NUM_VECTORS > 4 + Vector50, Vector54, Vector58, Vector5C, +#endif +#if CORTEX_NUM_VECTORS > 8 + Vector60, Vector64, Vector68, Vector6C, +#endif +#if CORTEX_NUM_VECTORS > 12 + Vector70, Vector74, Vector78, Vector7C, +#endif +#if CORTEX_NUM_VECTORS > 16 + Vector80, Vector84, Vector88, Vector8C, +#endif +#if CORTEX_NUM_VECTORS > 20 + Vector90, Vector94, Vector98, Vector9C, +#endif +#if CORTEX_NUM_VECTORS > 24 + VectorA0, VectorA4, VectorA8, VectorAC, +#endif +#if CORTEX_NUM_VECTORS > 28 + VectorB0, VectorB4, VectorB8, VectorBC, +#endif +#if CORTEX_NUM_VECTORS > 32 + VectorC0, VectorC4, VectorC8, VectorCC, +#endif +#if CORTEX_NUM_VECTORS > 36 + VectorD0, VectorD4, VectorD8, VectorDC, +#endif +#if CORTEX_NUM_VECTORS > 40 + VectorE0, VectorE4, VectorE8, VectorEC, +#endif +#if CORTEX_NUM_VECTORS > 44 + VectorF0, VectorF4, VectorF8, VectorFC, +#endif +#if CORTEX_NUM_VECTORS > 48 + Vector100, Vector104, Vector108, Vector10C, +#endif +#if CORTEX_NUM_VECTORS > 52 + Vector110, Vector114, Vector118, Vector11C, +#endif +#if CORTEX_NUM_VECTORS > 56 + Vector120, Vector124, Vector128, Vector12C, +#endif +#if CORTEX_NUM_VECTORS > 60 + Vector130, Vector134, Vector138, Vector13C, +#endif +#if CORTEX_NUM_VECTORS > 64 + Vector140, Vector144, Vector148, Vector14C, +#endif +#if CORTEX_NUM_VECTORS > 68 + Vector150, Vector154, Vector158, Vector15C, +#endif +#if CORTEX_NUM_VECTORS > 72 + Vector160, Vector164, Vector168, Vector16C, +#endif +#if CORTEX_NUM_VECTORS > 76 + Vector170, Vector174, Vector178, Vector17C, +#endif +#if CORTEX_NUM_VECTORS > 80 + Vector180, Vector184, Vector188, Vector18C, +#endif +#if CORTEX_NUM_VECTORS > 84 + Vector190, Vector194, Vector198, Vector19C, +#endif +#if CORTEX_NUM_VECTORS > 88 + Vector1A0, Vector1A4, Vector1A8, Vector1AC, +#endif +#if CORTEX_NUM_VECTORS > 92 + Vector1B0, Vector1B4, Vector1B8, Vector1BC, +#endif +#if CORTEX_NUM_VECTORS > 96 + Vector1C0, Vector1C4, Vector1C8, Vector1CC, +#endif +#if CORTEX_NUM_VECTORS > 100 + Vector1D0, Vector1D4, Vector1D8, Vector1DC, +#endif +#if CORTEX_NUM_VECTORS > 104 + Vector1E0, Vector1E4, Vector1E8, Vector1EC, +#endif +#if CORTEX_NUM_VECTORS > 108 + Vector1F0, Vector1F4, Vector1F8, Vector1FC, +#endif +#if CORTEX_NUM_VECTORS > 112 + Vector200, Vector204, Vector208, Vector20C, +#endif +#if CORTEX_NUM_VECTORS > 116 + Vector210, Vector214, Vector218, Vector21C, +#endif +#if CORTEX_NUM_VECTORS > 120 + Vector220, Vector224, Vector228, Vector22C, +#endif +#if CORTEX_NUM_VECTORS > 124 + Vector230, Vector234, Vector238, Vector23C, +#endif +#if CORTEX_NUM_VECTORS > 128 + Vector240, Vector244, Vector248, Vector24C, +#endif +#if CORTEX_NUM_VECTORS > 132 + Vector250, Vector254, Vector258, Vector25C, +#endif +#if CORTEX_NUM_VECTORS > 136 + Vector260, Vector264, Vector268, Vector26C, +#endif +#if CORTEX_NUM_VECTORS > 140 + Vector270, Vector274, Vector278, Vector27C, +#endif +#if CORTEX_NUM_VECTORS > 144 + Vector280, Vector284, Vector288, Vector28C, +#endif +#if CORTEX_NUM_VECTORS > 148 + Vector290, Vector294, Vector298, Vector29C, +#endif +#if CORTEX_NUM_VECTORS > 152 + Vector2A0, Vector2A4, Vector2A8, Vector2AC, +#endif +#if CORTEX_NUM_VECTORS > 156 + Vector2B0, Vector2B4, Vector2B8, Vector2BC, +#endif +#if CORTEX_NUM_VECTORS > 160 + Vector2C0, Vector2C4, Vector2C8, Vector2CC, +#endif +#if CORTEX_NUM_VECTORS > 164 + Vector2D0, Vector2D4, Vector2D8, Vector2DC, +#endif +#if CORTEX_NUM_VECTORS > 168 + Vector2E0, Vector2E4, Vector2E8, Vector2EC, +#endif +#if CORTEX_NUM_VECTORS > 172 + Vector2F0, Vector2F4, Vector2F8, Vector2FC, +#endif +#if CORTEX_NUM_VECTORS > 176 + Vector300, Vector304, Vector308, Vector30C, +#endif +#if CORTEX_NUM_VECTORS > 180 + Vector310, Vector314, Vector318, Vector31C, +#endif +#if CORTEX_NUM_VECTORS > 184 + Vector320, Vector324, Vector328, Vector32C, +#endif +#if CORTEX_NUM_VECTORS > 188 + Vector330, Vector334, Vector338, Vector33C, +#endif +#if CORTEX_NUM_VECTORS > 192 + Vector340, Vector344, Vector348, Vector34C, +#endif +#if CORTEX_NUM_VECTORS > 196 + Vector350, Vector354, Vector358, Vector35C, +#endif +#if CORTEX_NUM_VECTORS > 200 + Vector360, Vector364, Vector368, Vector36C, +#endif +#if CORTEX_NUM_VECTORS > 204 + Vector370, Vector374, Vector378, Vector37C, +#endif +#if CORTEX_NUM_VECTORS > 208 + Vector380, Vector384, Vector388, Vector38C, +#endif +#if CORTEX_NUM_VECTORS > 212 + Vector390, Vector394, Vector398, Vector39C, +#endif +#if CORTEX_NUM_VECTORS > 216 + Vector3A0, Vector3A4, Vector3A8, Vector3AC, +#endif +#if CORTEX_NUM_VECTORS > 220 + Vector3B0, Vector3B4, Vector3B8, Vector3BC, +#endif +#if CORTEX_NUM_VECTORS > 224 + Vector3C0, Vector3C4, Vector3C8, Vector3CC, +#endif +#if CORTEX_NUM_VECTORS > 228 + Vector3D0, Vector3D4, Vector3D8, Vector3DC +#endif +#if CORTEX_NUM_VECTORS > 232 + Vector3E0, Vector3E4, Vector3E8, Vector3EC +#endif +#if CORTEX_NUM_VECTORS > 236 + Vector3F0, Vector3F4, Vector3F8, Vector3FC +#endif + } +}; + +/** @} */ diff --git a/os/common/startup/ARMCMx/compilers/GCC/vectors.h b/os/common/startup/ARMCMx/compilers/GCC/vectors.h new file mode 100644 index 000000000..a86db615b --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/GCC/vectors.h @@ -0,0 +1,105 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file ARMCMx/compilers/GCC/vectors.h + * @brief Interrupt vectors for Cortex-Mx devices. + * + * @defgroup ARMCMx_VECTORS Cortex-Mx Interrupt Vectors + * @{ + */ + +#ifndef _VECTORS_H_ +#define _VECTORS_H_ + +#include "cmparams.h" + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +#if !defined(_FROM_ASM_) +/** + * @brief Type of an IRQ vector. + */ +typedef void (*irq_vector_t)(void); + +/** + * @brief Type of a structure representing the whole vectors table. + */ +typedef struct { + uint32_t *init_stack; + irq_vector_t reset_handler; + irq_vector_t nmi_handler; + irq_vector_t hardfault_handler; + irq_vector_t memmanage_handler; + irq_vector_t busfault_handler; + irq_vector_t usagefault_handler; + irq_vector_t vector1c; + irq_vector_t vector20; + irq_vector_t vector24; + irq_vector_t vector28; + irq_vector_t svc_handler; + irq_vector_t debugmonitor_handler; + irq_vector_t vector34; + irq_vector_t pendsv_handler; + irq_vector_t systick_handler; + irq_vector_t vectors[CORTEX_NUM_VECTORS]; +} vectors_t; +#endif /* !defined(_FROM_ASM_) */ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#if !defined(_FROM_ASM_) +extern vectors_t _vectors; +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _VECTORS_H_ */ + +/** @} */ diff --git a/os/common/startup/ARMCMx/compilers/IAR/cstartup.s b/os/common/startup/ARMCMx/compilers/IAR/cstartup.s new file mode 100644 index 000000000..6e5236f73 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/IAR/cstartup.s @@ -0,0 +1,82 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file ARMCMx/IAR/cstartup.s + * @brief Generic IAR Cortex-Mx startup file. + * + * @addtogroup ARMCMx_IAR_STARTUP + * @{ + */ + +#if !defined(__DOXYGEN__) + + MODULE ?cstartup + +CONTROL_MODE_PRIVILEGED SET 0 +CONTROL_MODE_UNPRIVILEGED SET 1 +CONTROL_USE_MSP SET 0 +CONTROL_USE_PSP SET 2 + + AAPCS INTERWORK, VFP_COMPATIBLE, ROPI + PRESERVE8 + + SECTION .intvec:CODE:NOROOT(3) + + SECTION CSTACK:DATA:NOROOT(3) + PUBLIC __main_thread_stack_base__ +__main_thread_stack_base__: + PUBLIC __heap_end__ +__heap_end__: + + SECTION SYSHEAP:DATA:NOROOT(3) + PUBLIC __heap_base__ +__heap_base__: + + PUBLIC __iar_program_start + EXTERN __vector_table + EXTWEAK __iar_init_core + EXTWEAK __iar_init_vfp + EXTERN __cmain + + SECTION .text:CODE:REORDER(2) + REQUIRE __vector_table + THUMB +__iar_program_start: + cpsid i + ldr r0, =SFE(CSTACK) + msr PSP, r0 + movs r0, #CONTROL_MODE_PRIVILEGED | CONTROL_USE_PSP + msr CONTROL, r0 + isb + bl __early_init + bl __iar_init_core + bl __iar_init_vfp + b __cmain + + SECTION .text:CODE:NOROOT:REORDER(2) + PUBWEAK __early_init +__early_init: + bx lr + + END + +#endif /* !defined(__DOXYGEN__) */ + +/**< @} */ diff --git a/os/common/startup/ARMCMx/compilers/IAR/vectors.s b/os/common/startup/ARMCMx/compilers/IAR/vectors.s new file mode 100644 index 000000000..51110dda9 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/IAR/vectors.s @@ -0,0 +1,1009 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file ARMCMx/IAR/vectors.c + * @brief Interrupt vectors for Cortex-Mx devices. + * + * @defgroup ARMCMx_IAR_VECTORS Cortex-Mx Interrupt Vectors + * @{ + */ + +#define _FROM_ASM_ +#include "cmparams.h" + +#if !defined(__DOXYGEN__) + +#if (CORTEX_NUM_VECTORS & 7) != 0 +#error "the constant CORTEX_NUM_VECTORS must be a multiple of 8" +#endif + +#if (CORTEX_NUM_VECTORS < 8) || (CORTEX_NUM_VECTORS > 240) +#error "the constant CORTEX_NUM_VECTORS must be between 8 and 240 inclusive" +#endif + + MODULE ?vectors + + AAPCS INTERWORK, VFP_COMPATIBLE, RWPI_COMPATIBLE + PRESERVE8 + + SECTION IRQSTACK:DATA:NOROOT(3) + SECTION .intvec:CODE:NOROOT(3) + + EXTERN __iar_program_start + PUBLIC __vector_table + + DATA + +__vector_table: + DCD SFE(IRQSTACK) + DCD __iar_program_start + DCD NMI_Handler + DCD HardFault_Handler + DCD MemManage_Handler + DCD BusFault_Handler + DCD UsageFault_Handler + DCD Vector1C + DCD Vector20 + DCD Vector24 + DCD Vector28 + DCD SVC_Handler + DCD DebugMon_Handler + DCD Vector34 + DCD PendSV_Handler + DCD SysTick_Handler + DCD Vector40 + DCD Vector44 + DCD Vector48 + DCD Vector4C + DCD Vector50 + DCD Vector54 + DCD Vector58 + DCD Vector5C +#if CORTEX_NUM_VECTORS > 8 + DCD Vector60 + DCD Vector64 + DCD Vector68 + DCD Vector6C + DCD Vector70 + DCD Vector74 + DCD Vector78 + DCD Vector7C +#endif +#if CORTEX_NUM_VECTORS > 16 + DCD Vector80 + DCD Vector84 + DCD Vector88 + DCD Vector8C + DCD Vector90 + DCD Vector94 + DCD Vector98 + DCD Vector9C +#endif +#if CORTEX_NUM_VECTORS > 24 + DCD VectorA0 + DCD VectorA4 + DCD VectorA8 + DCD VectorAC + DCD VectorB0 + DCD VectorB4 + DCD VectorB8 + DCD VectorBC +#endif +#if CORTEX_NUM_VECTORS > 32 + DCD VectorC0 + DCD VectorC4 + DCD VectorC8 + DCD VectorCC + DCD VectorD0 + DCD VectorD4 + DCD VectorD8 + DCD VectorDC +#endif +#if CORTEX_NUM_VECTORS > 40 + DCD VectorE0 + DCD VectorE4 + DCD VectorE8 + DCD VectorEC + DCD VectorF0 + DCD VectorF4 + DCD VectorF8 + DCD VectorFC +#endif +#if CORTEX_NUM_VECTORS > 48 + DCD Vector100 + DCD Vector104 + DCD Vector108 + DCD Vector10C + DCD Vector110 + DCD Vector114 + DCD Vector118 + DCD Vector11C +#endif +#if CORTEX_NUM_VECTORS > 56 + DCD Vector120 + DCD Vector124 + DCD Vector128 + DCD Vector12C + DCD Vector130 + DCD Vector134 + DCD Vector138 + DCD Vector13C +#endif +#if CORTEX_NUM_VECTORS > 64 + DCD Vector140 + DCD Vector144 + DCD Vector148 + DCD Vector14C + DCD Vector150 + DCD Vector154 + DCD Vector158 + DCD Vector15C +#endif +#if CORTEX_NUM_VECTORS > 72 + DCD Vector160 + DCD Vector164 + DCD Vector168 + DCD Vector16C + DCD Vector170 + DCD Vector174 + DCD Vector178 + DCD Vector17C +#endif +#if CORTEX_NUM_VECTORS > 80 + DCD Vector180 + DCD Vector184 + DCD Vector188 + DCD Vector18C + DCD Vector190 + DCD Vector194 + DCD Vector198 + DCD Vector19C +#endif +#if CORTEX_NUM_VECTORS > 88 + DCD Vector1A0 + DCD Vector1A4 + DCD Vector1A8 + DCD Vector1AC + DCD Vector1B0 + DCD Vector1B4 + DCD Vector1B8 + DCD Vector1BC +#endif +#if CORTEX_NUM_VECTORS > 96 + DCD Vector1C0 + DCD Vector1C4 + DCD Vector1C8 + DCD Vector1CC + DCD Vector1D0 + DCD Vector1D4 + DCD Vector1D8 + DCD Vector1DC +#endif +#if CORTEX_NUM_VECTORS > 104 + DCD Vector1E0 + DCD Vector1E4 + DCD Vector1E8 + DCD Vector1EC + DCD Vector1F0 + DCD Vector1F4 + DCD Vector1F8 + DCD Vector1FC +#endif +#if CORTEX_NUM_VECTORS > 112 + DCD Vector200 + DCD Vector204 + DCD Vector208 + DCD Vector20C + DCD Vector210 + DCD Vector214 + DCD Vector218 + DCD Vector21C +#endif +#if CORTEX_NUM_VECTORS > 120 + DCD Vector220 + DCD Vector224 + DCD Vector228 + DCD Vector22C + DCD Vector230 + DCD Vector234 + DCD Vector238 + DCD Vector23C +#endif +#if CORTEX_NUM_VECTORS > 128 + DCD Vector240 + DCD Vector244 + DCD Vector248 + DCD Vector24C + DCD Vector250 + DCD Vector254 + DCD Vector258 + DCD Vector25C +#endif +#if CORTEX_NUM_VECTORS > 136 + DCD Vector260 + DCD Vector264 + DCD Vector268 + DCD Vector26C + DCD Vector270 + DCD Vector274 + DCD Vector278 + DCD Vector27C +#endif +#if CORTEX_NUM_VECTORS > 144 + DCD Vector280 + DCD Vector284 + DCD Vector288 + DCD Vector28C + DCD Vector290 + DCD Vector294 + DCD Vector298 + DCD Vector29C +#endif +#if CORTEX_NUM_VECTORS > 152 + DCD Vector2A0 + DCD Vector2A4 + DCD Vector2A8 + DCD Vector2AC + DCD Vector2B0 + DCD Vector2B4 + DCD Vector2B8 + DCD Vector2BC +#endif +#if CORTEX_NUM_VECTORS > 160 + DCD Vector2C0 + DCD Vector2C4 + DCD Vector2C8 + DCD Vector2CC + DCD Vector2D0 + DCD Vector2D4 + DCD Vector2D8 + DCD Vector2DC +#endif +#if CORTEX_NUM_VECTORS > 168 + DCD Vector2E0 + DCD Vector2E4 + DCD Vector2E8 + DCD Vector2EC + DCD Vector2F0 + DCD Vector2F4 + DCD Vector2F8 + DCD Vector2FC +#endif +#if CORTEX_NUM_VECTORS > 176 + DCD Vector300 + DCD Vector304 + DCD Vector308 + DCD Vector30C + DCD Vector310 + DCD Vector314 + DCD Vector318 + DCD Vector31C +#endif +#if CORTEX_NUM_VECTORS > 184 + DCD Vector320 + DCD Vector324 + DCD Vector328 + DCD Vector32C + DCD Vector330 + DCD Vector334 + DCD Vector338 + DCD Vector33C +#endif +#if CORTEX_NUM_VECTORS > 192 + DCD Vector340 + DCD Vector344 + DCD Vector348 + DCD Vector34C + DCD Vector350 + DCD Vector354 + DCD Vector358 + DCD Vector35C +#endif +#if CORTEX_NUM_VECTORS > 200 + DCD Vector360 + DCD Vector364 + DCD Vector368 + DCD Vector36C + DCD Vector370 + DCD Vector374 + DCD Vector378 + DCD Vector37C +#endif +#if CORTEX_NUM_VECTORS > 208 + DCD Vector380 + DCD Vector384 + DCD Vector388 + DCD Vector38C + DCD Vector390 + DCD Vector394 + DCD Vector398 + DCD Vector39C +#endif +#if CORTEX_NUM_VECTORS > 216 + DCD Vector3A0 + DCD Vector3A4 + DCD Vector3A8 + DCD Vector3AC + DCD Vector3B0 + DCD Vector3B4 + DCD Vector3B8 + DCD Vector3BC +#endif +#if CORTEX_NUM_VECTORS > 224 + DCD Vector3C0 + DCD Vector3C4 + DCD Vector3C8 + DCD Vector3CC + DCD Vector3D0 + DCD Vector3D4 + DCD Vector3D8 + DCD Vector3DC +#endif +#if CORTEX_NUM_VECTORS > 232 + DCD Vector3E0 + DCD Vector3E4 + DCD Vector3E8 + DCD Vector3EC + DCD Vector3F0 + DCD Vector3F4 + DCD Vector3F8 + DCD Vector3FC +#endif + +/* + * Default interrupt handlers. + */ + PUBWEAK NMI_Handler + PUBWEAK HardFault_Handler + PUBWEAK MemManage_Handler + PUBWEAK BusFault_Handler + PUBWEAK UsageFault_Handler + PUBWEAK Vector1C + PUBWEAK Vector20 + PUBWEAK Vector24 + PUBWEAK Vector28 + PUBWEAK SVC_Handler + PUBWEAK DebugMon_Handler + PUBWEAK Vector34 + PUBWEAK PendSV_Handler + PUBWEAK SysTick_Handler + PUBWEAK Vector40 + PUBWEAK Vector44 + PUBWEAK Vector48 + PUBWEAK Vector4C + PUBWEAK Vector50 + PUBWEAK Vector54 + PUBWEAK Vector58 + PUBWEAK Vector5C +#if CORTEX_NUM_VECTORS > 8 + PUBWEAK Vector60 + PUBWEAK Vector64 + PUBWEAK Vector68 + PUBWEAK Vector6C + PUBWEAK Vector70 + PUBWEAK Vector74 + PUBWEAK Vector78 + PUBWEAK Vector7C +#endif +#if CORTEX_NUM_VECTORS > 16 + PUBWEAK Vector80 + PUBWEAK Vector84 + PUBWEAK Vector88 + PUBWEAK Vector8C + PUBWEAK Vector90 + PUBWEAK Vector94 + PUBWEAK Vector98 + PUBWEAK Vector9C +#endif +#if CORTEX_NUM_VECTORS > 24 + PUBWEAK VectorA0 + PUBWEAK VectorA4 + PUBWEAK VectorA8 + PUBWEAK VectorAC + PUBWEAK VectorB0 + PUBWEAK VectorB4 + PUBWEAK VectorB8 + PUBWEAK VectorBC +#endif +#if CORTEX_NUM_VECTORS > 32 + PUBWEAK VectorC0 + PUBWEAK VectorC4 + PUBWEAK VectorC8 + PUBWEAK VectorCC + PUBWEAK VectorD0 + PUBWEAK VectorD4 + PUBWEAK VectorD8 + PUBWEAK VectorDC +#endif +#if CORTEX_NUM_VECTORS > 40 + PUBWEAK VectorE0 + PUBWEAK VectorE4 + PUBWEAK VectorE8 + PUBWEAK VectorEC + PUBWEAK VectorF0 + PUBWEAK VectorF4 + PUBWEAK VectorF8 + PUBWEAK VectorFC +#endif +#if CORTEX_NUM_VECTORS > 48 + PUBWEAK Vector100 + PUBWEAK Vector104 + PUBWEAK Vector108 + PUBWEAK Vector10C + PUBWEAK Vector110 + PUBWEAK Vector114 + PUBWEAK Vector118 + PUBWEAK Vector11C +#endif +#if CORTEX_NUM_VECTORS > 56 + PUBWEAK Vector120 + PUBWEAK Vector124 + PUBWEAK Vector128 + PUBWEAK Vector12C + PUBWEAK Vector130 + PUBWEAK Vector134 + PUBWEAK Vector138 + PUBWEAK Vector13C +#endif +#if CORTEX_NUM_VECTORS > 64 + PUBWEAK Vector140 + PUBWEAK Vector144 + PUBWEAK Vector148 + PUBWEAK Vector14C + PUBWEAK Vector150 + PUBWEAK Vector154 + PUBWEAK Vector158 + PUBWEAK Vector15C +#endif +#if CORTEX_NUM_VECTORS > 72 + PUBWEAK Vector160 + PUBWEAK Vector164 + PUBWEAK Vector168 + PUBWEAK Vector16C + PUBWEAK Vector170 + PUBWEAK Vector174 + PUBWEAK Vector178 + PUBWEAK Vector17C +#endif +#if CORTEX_NUM_VECTORS > 80 + PUBWEAK Vector180 + PUBWEAK Vector184 + PUBWEAK Vector188 + PUBWEAK Vector18C + PUBWEAK Vector190 + PUBWEAK Vector194 + PUBWEAK Vector198 + PUBWEAK Vector19C +#endif +#if CORTEX_NUM_VECTORS > 88 + PUBWEAK Vector1A0 + PUBWEAK Vector1A4 + PUBWEAK Vector1A8 + PUBWEAK Vector1AC + PUBWEAK Vector1B0 + PUBWEAK Vector1B4 + PUBWEAK Vector1B8 + PUBWEAK Vector1BC +#endif +#if CORTEX_NUM_VECTORS > 96 + PUBWEAK Vector1C0 + PUBWEAK Vector1C4 + PUBWEAK Vector1C8 + PUBWEAK Vector1CC + PUBWEAK Vector1D0 + PUBWEAK Vector1D4 + PUBWEAK Vector1D8 + PUBWEAK Vector1DC +#endif +#if CORTEX_NUM_VECTORS > 104 + PUBWEAK Vector1E0 + PUBWEAK Vector1E4 + PUBWEAK Vector1E8 + PUBWEAK Vector1EC + PUBWEAK Vector1F0 + PUBWEAK Vector1F4 + PUBWEAK Vector1F8 + PUBWEAK Vector1FC +#endif +#if CORTEX_NUM_VECTORS > 112 + PUBWEAK Vector200 + PUBWEAK Vector204 + PUBWEAK Vector208 + PUBWEAK Vector20C + PUBWEAK Vector210 + PUBWEAK Vector214 + PUBWEAK Vector218 + PUBWEAK Vector21C +#endif +#if CORTEX_NUM_VECTORS > 120 + PUBWEAK Vector220 + PUBWEAK Vector224 + PUBWEAK Vector228 + PUBWEAK Vector22C + PUBWEAK Vector230 + PUBWEAK Vector234 + PUBWEAK Vector238 + PUBWEAK Vector23C +#endif +#if CORTEX_NUM_VECTORS > 128 + PUBWEAK Vector240 + PUBWEAK Vector244 + PUBWEAK Vector248 + PUBWEAK Vector24C + PUBWEAK Vector250 + PUBWEAK Vector254 + PUBWEAK Vector258 + PUBWEAK Vector25C +#endif +#if CORTEX_NUM_VECTORS > 136 + PUBWEAK Vector260 + PUBWEAK Vector264 + PUBWEAK Vector268 + PUBWEAK Vector26C + PUBWEAK Vector270 + PUBWEAK Vector274 + PUBWEAK Vector278 + PUBWEAK Vector27C +#endif +#if CORTEX_NUM_VECTORS > 144 + PUBWEAK Vector280 + PUBWEAK Vector284 + PUBWEAK Vector288 + PUBWEAK Vector28C + PUBWEAK Vector290 + PUBWEAK Vector294 + PUBWEAK Vector298 + PUBWEAK Vector29C +#endif +#if CORTEX_NUM_VECTORS > 152 + PUBWEAK Vector2A0 + PUBWEAK Vector2A4 + PUBWEAK Vector2A8 + PUBWEAK Vector2AC + PUBWEAK Vector2B0 + PUBWEAK Vector2B4 + PUBWEAK Vector2B8 + PUBWEAK Vector2BC +#endif +#if CORTEX_NUM_VECTORS > 160 + PUBWEAK Vector2C0 + PUBWEAK Vector2C4 + PUBWEAK Vector2C8 + PUBWEAK Vector2CC + PUBWEAK Vector2D0 + PUBWEAK Vector2D4 + PUBWEAK Vector2D8 + PUBWEAK Vector2DC +#endif +#if CORTEX_NUM_VECTORS > 168 + PUBWEAK Vector2E0 + PUBWEAK Vector2E4 + PUBWEAK Vector2E8 + PUBWEAK Vector2EC + PUBWEAK Vector2F0 + PUBWEAK Vector2F4 + PUBWEAK Vector2F8 + PUBWEAK Vector2FC +#endif +#if CORTEX_NUM_VECTORS > 176 + PUBWEAK Vector300 + PUBWEAK Vector304 + PUBWEAK Vector308 + PUBWEAK Vector30C + PUBWEAK Vector310 + PUBWEAK Vector314 + PUBWEAK Vector318 + PUBWEAK Vector31C +#endif +#if CORTEX_NUM_VECTORS > 184 + PUBWEAK Vector320 + PUBWEAK Vector324 + PUBWEAK Vector328 + PUBWEAK Vector32C + PUBWEAK Vector330 + PUBWEAK Vector334 + PUBWEAK Vector338 + PUBWEAK Vector33C +#endif +#if CORTEX_NUM_VECTORS > 192 + PUBWEAK Vector340 + PUBWEAK Vector344 + PUBWEAK Vector348 + PUBWEAK Vector34C + PUBWEAK Vector350 + PUBWEAK Vector354 + PUBWEAK Vector358 + PUBWEAK Vector35C +#endif +#if CORTEX_NUM_VECTORS > 200 + PUBWEAK Vector360 + PUBWEAK Vector364 + PUBWEAK Vector368 + PUBWEAK Vector36C + PUBWEAK Vector370 + PUBWEAK Vector374 + PUBWEAK Vector378 + PUBWEAK Vector37C +#endif +#if CORTEX_NUM_VECTORS > 208 + PUBWEAK Vector380 + PUBWEAK Vector384 + PUBWEAK Vector388 + PUBWEAK Vector38C + PUBWEAK Vector390 + PUBWEAK Vector394 + PUBWEAK Vector398 + PUBWEAK Vector39C +#endif +#if CORTEX_NUM_VECTORS > 216 + PUBWEAK Vector3A0 + PUBWEAK Vector3A4 + PUBWEAK Vector3A8 + PUBWEAK Vector3AC + PUBWEAK Vector3B0 + PUBWEAK Vector3B4 + PUBWEAK Vector3B8 + PUBWEAK Vector3BC +#endif +#if CORTEX_NUM_VECTORS > 224 + PUBWEAK Vector3C0 + PUBWEAK Vector3C4 + PUBWEAK Vector3C8 + PUBWEAK Vector3CC + PUBWEAK Vector3D0 + PUBWEAK Vector3D4 + PUBWEAK Vector3D8 + PUBWEAK Vector3DC +#endif +#if CORTEX_NUM_VECTORS > 232 + PUBWEAK Vector3E0 + PUBWEAK Vector3E4 + PUBWEAK Vector3E8 + PUBWEAK Vector3EC + PUBWEAK Vector3F0 + PUBWEAK Vector3F4 + PUBWEAK Vector3F8 + PUBWEAK Vector3FC +#endif + PUBLIC _unhandled_exception + + SECTION .text:CODE:NOROOT:REORDER(1) + THUMB + +NMI_Handler +HardFault_Handler +MemManage_Handler +BusFault_Handler +UsageFault_Handler +Vector1C +Vector20 +Vector24 +Vector28 +SVC_Handler +DebugMon_Handler +Vector34 +PendSV_Handler +SysTick_Handler +Vector40 +Vector44 +Vector48 +Vector4C +Vector50 +Vector54 +Vector58 +Vector5C +#if CORTEX_NUM_VECTORS > 8 +Vector60 +Vector64 +Vector68 +Vector6C +Vector70 +Vector74 +Vector78 +Vector7C +#endif +#if CORTEX_NUM_VECTORS > 16 +Vector80 +Vector84 +Vector88 +Vector8C +Vector90 +Vector94 +Vector98 +Vector9C +#endif +#if CORTEX_NUM_VECTORS > 24 +VectorA0 +VectorA4 +VectorA8 +VectorAC +VectorB0 +VectorB4 +VectorB8 +VectorBC +#endif +#if CORTEX_NUM_VECTORS > 32 +VectorC0 +VectorC4 +VectorC8 +VectorCC +VectorD0 +VectorD4 +VectorD8 +VectorDC +#endif +#if CORTEX_NUM_VECTORS > 40 +VectorE0 +VectorE4 +VectorE8 +VectorEC +VectorF0 +VectorF4 +VectorF8 +VectorFC +#endif +#if CORTEX_NUM_VECTORS > 48 +Vector100 +Vector104 +Vector108 +Vector10C +Vector110 +Vector114 +Vector118 +Vector11C +#endif +#if CORTEX_NUM_VECTORS > 56 +Vector120 +Vector124 +Vector128 +Vector12C +Vector130 +Vector134 +Vector138 +Vector13C +#endif +#if CORTEX_NUM_VECTORS > 64 +Vector140 +Vector144 +Vector148 +Vector14C +Vector150 +Vector154 +Vector158 +Vector15C +#endif +#if CORTEX_NUM_VECTORS > 72 +Vector160 +Vector164 +Vector168 +Vector16C +Vector170 +Vector174 +Vector178 +Vector17C +#endif +#if CORTEX_NUM_VECTORS > 80 +Vector180 +Vector184 +Vector188 +Vector18C +Vector190 +Vector194 +Vector198 +Vector19C +#endif +#if CORTEX_NUM_VECTORS > 88 +Vector1A0 +Vector1A4 +Vector1A8 +Vector1AC +Vector1B0 +Vector1B4 +Vector1B8 +Vector1BC +#endif +#if CORTEX_NUM_VECTORS > 96 +Vector1C0 +Vector1C4 +Vector1C8 +Vector1CC +Vector1D0 +Vector1D4 +Vector1D8 +Vector1DC +#endif +#if CORTEX_NUM_VECTORS > 104 +Vector1E0 +Vector1E4 +Vector1E8 +Vector1EC +Vector1F0 +Vector1F4 +Vector1F8 +Vector1FC +#endif +#if CORTEX_NUM_VECTORS > 112 +Vector200 +Vector204 +Vector208 +Vector20C +Vector210 +Vector214 +Vector218 +Vector21C +#endif +#if CORTEX_NUM_VECTORS > 120 +Vector220 +Vector224 +Vector228 +Vector22C +Vector230 +Vector234 +Vector238 +Vector23C +#endif +#if CORTEX_NUM_VECTORS > 128 +Vector240 +Vector244 +Vector248 +Vector24C +Vector250 +Vector254 +Vector258 +Vector25C +#endif +#if CORTEX_NUM_VECTORS > 136 +Vector260 +Vector264 +Vector268 +Vector26C +Vector270 +Vector274 +Vector278 +Vector27C +#endif +#if CORTEX_NUM_VECTORS > 144 +Vector280 +Vector284 +Vector288 +Vector28C +Vector290 +Vector294 +Vector298 +Vector29C +#endif +#if CORTEX_NUM_VECTORS > 152 +Vector2A0 +Vector2A4 +Vector2A8 +Vector2AC +Vector2B0 +Vector2B4 +Vector2B8 +Vector2BC +#endif +#if CORTEX_NUM_VECTORS > 160 +Vector2C0 +Vector2C4 +Vector2C8 +Vector2CC +Vector2D0 +Vector2D4 +Vector2D8 +Vector2DC +#endif +#if CORTEX_NUM_VECTORS > 168 +Vector2E0 +Vector2E4 +Vector2E8 +Vector2EC +Vector2F0 +Vector2F4 +Vector2F8 +Vector2FC +#endif +#if CORTEX_NUM_VECTORS > 176 +Vector300 +Vector304 +Vector308 +Vector30C +Vector310 +Vector314 +Vector318 +Vector31C +#endif +#if CORTEX_NUM_VECTORS > 184 +Vector320 +Vector324 +Vector328 +Vector32C +Vector330 +Vector334 +Vector338 +Vector33C +#endif +#if CORTEX_NUM_VECTORS > 192 +Vector340 +Vector344 +Vector348 +Vector34C +Vector350 +Vector354 +Vector358 +Vector35C +#endif +#if CORTEX_NUM_VECTORS > 200 +Vector360 +Vector364 +Vector368 +Vector36C +Vector370 +Vector374 +Vector378 +Vector37C +#endif +#if CORTEX_NUM_VECTORS > 208 +Vector380 +Vector384 +Vector388 +Vector38C +Vector390 +Vector394 +Vector398 +Vector39C +#endif +#if CORTEX_NUM_VECTORS > 216 +Vector3A0 +Vector3A4 +Vector3A8 +Vector3AC +Vector3B0 +Vector3B4 +Vector3B8 +Vector3BC +#endif +#if CORTEX_NUM_VECTORS > 224 +Vector3C0 +Vector3C4 +Vector3C8 +Vector3CC +Vector3D0 +Vector3D4 +Vector3D8 +Vector3DC +#endif +#if CORTEX_NUM_VECTORS > 232 +Vector3E0 +Vector3E4 +Vector3E8 +Vector3EC +Vector3F0 +Vector3F4 +Vector3F8 +Vector3FC +#endif +_unhandled_exception + b _unhandled_exception + + END + +#endif /* !defined(__DOXYGEN__) */ + +/**< @} */ diff --git a/os/common/startup/ARMCMx/compilers/RVCT/cstartup.s b/os/common/startup/ARMCMx/compilers/RVCT/cstartup.s new file mode 100644 index 000000000..01dd6facb --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/RVCT/cstartup.s @@ -0,0 +1,134 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file ARMCMx/RVCT/cstartup.s + * @brief Generic RVCT Cortex-Mx startup file. + * + * @addtogroup ARMCMx_RVCT_STARTUP + * @{ + */ + +#if !defined(__DOXYGEN__) + +;/* <<< Use Configuration Wizard in Context Menu >>> */ + +;// Main Stack Configuration (IRQ Stack) +;// Main Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +;// +main_stack_size EQU 0x00000400 + +;// Process Stack Configuration +;// Process Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +;// +proc_stack_size EQU 0x00000400 + +;// C-runtime heap size +;// C-runtime heap size (in Bytes) <0x0-0xFFFFFFFF:8> +;// +heap_size EQU 0x00000400 + + AREA MSTACK, NOINIT, READWRITE, ALIGN=3 +main_stack_mem SPACE main_stack_size + EXPORT __initial_msp +__initial_msp + + AREA CSTACK, NOINIT, READWRITE, ALIGN=3 +__main_thread_stack_base__ + EXPORT __main_thread_stack_base__ +proc_stack_mem SPACE proc_stack_size + EXPORT __initial_sp +__initial_sp + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE heap_size +__heap_limit + +CONTROL_MODE_PRIVILEGED EQU 0 +CONTROL_MODE_UNPRIVILEGED EQU 1 +CONTROL_USE_MSP EQU 0 +CONTROL_USE_PSP EQU 2 + + PRESERVE8 + THUMB + + AREA |.text|, CODE, READONLY + +/* + * Reset handler. + */ + IMPORT __main + EXPORT Reset_Handler +Reset_Handler PROC + cpsid i + ldr r0, =__initial_sp + msr PSP, r0 + movs r0, #CONTROL_MODE_PRIVILEGED :OR: CONTROL_USE_PSP + msr CONTROL, r0 + isb + bl __early_init + + IF {CPU} = "Cortex-M4.fp" + LDR R0, =0xE000ED88 ; Enable CP10,CP11 + LDR R1, [R0] + ORR R1, R1, #(0xF << 20) + STR R1, [R0] + ENDIF + + ldr r0, =__main + bx r0 + ENDP + +__early_init PROC + EXPORT __early_init [WEAK] + bx lr + ENDP + + ALIGN + +/* + * User Initial Stack & Heap. + */ + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + ldr r0, =Heap_Mem + ldr r1, =(proc_stack_mem + proc_stack_size) + ldr r2, =(Heap_Mem + heap_size) + ldr r3, =proc_stack_mem + bx lr + + ALIGN + + ENDIF + + END + +#endif /* !defined(__DOXYGEN__) */ + +/**< @} */ diff --git a/os/common/startup/ARMCMx/compilers/RVCT/vectors.s b/os/common/startup/ARMCMx/compilers/RVCT/vectors.s new file mode 100644 index 000000000..f51a9c921 --- /dev/null +++ b/os/common/startup/ARMCMx/compilers/RVCT/vectors.s @@ -0,0 +1,1005 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file ARMCMx/RVCT/vectors.c + * @brief Interrupt vectors for Cortex-Mx devices. + * + * @defgroup ARMCMx_RVCT_VECTORS Cortex-Mx Interrupt Vectors + * @{ + */ + +#define _FROM_ASM_ +#include "cmparams.h" + +#if !defined(__DOXYGEN__) + +#if (CORTEX_NUM_VECTORS & 7) != 0 +#error "the constant CORTEX_NUM_VECTORS must be a multiple of 8" +#endif + +#if (CORTEX_NUM_VECTORS < 8) || (CORTEX_NUM_VECTORS > 240) +#error "the constant CORTEX_NUM_VECTORS must be between 8 and 240 inclusive" +#endif + + PRESERVE8 + + AREA RESET, DATA, READONLY + + IMPORT __initial_msp + IMPORT Reset_Handler + EXPORT __Vectors + +__Vectors + DCD __initial_msp + DCD Reset_Handler + DCD NMI_Handler + DCD HardFault_Handler + DCD MemManage_Handler + DCD BusFault_Handler + DCD UsageFault_Handler + DCD Vector1C + DCD Vector20 + DCD Vector24 + DCD Vector28 + DCD SVC_Handler + DCD DebugMon_Handler + DCD Vector34 + DCD PendSV_Handler + DCD SysTick_Handler + DCD Vector40 + DCD Vector44 + DCD Vector48 + DCD Vector4C + DCD Vector50 + DCD Vector54 + DCD Vector58 + DCD Vector5C +#if CORTEX_NUM_VECTORS > 8 + DCD Vector60 + DCD Vector64 + DCD Vector68 + DCD Vector6C + DCD Vector70 + DCD Vector74 + DCD Vector78 + DCD Vector7C +#endif +#if CORTEX_NUM_VECTORS > 16 + DCD Vector80 + DCD Vector84 + DCD Vector88 + DCD Vector8C + DCD Vector90 + DCD Vector94 + DCD Vector98 + DCD Vector9C +#endif +#if CORTEX_NUM_VECTORS > 24 + DCD VectorA0 + DCD VectorA4 + DCD VectorA8 + DCD VectorAC + DCD VectorB0 + DCD VectorB4 + DCD VectorB8 + DCD VectorBC +#endif +#if CORTEX_NUM_VECTORS > 32 + DCD VectorC0 + DCD VectorC4 + DCD VectorC8 + DCD VectorCC + DCD VectorD0 + DCD VectorD4 + DCD VectorD8 + DCD VectorDC +#endif +#if CORTEX_NUM_VECTORS > 40 + DCD VectorE0 + DCD VectorE4 + DCD VectorE8 + DCD VectorEC + DCD VectorF0 + DCD VectorF4 + DCD VectorF8 + DCD VectorFC +#endif +#if CORTEX_NUM_VECTORS > 48 + DCD Vector100 + DCD Vector104 + DCD Vector108 + DCD Vector10C + DCD Vector110 + DCD Vector114 + DCD Vector118 + DCD Vector11C +#endif +#if CORTEX_NUM_VECTORS > 56 + DCD Vector120 + DCD Vector124 + DCD Vector128 + DCD Vector12C + DCD Vector130 + DCD Vector134 + DCD Vector138 + DCD Vector13C +#endif +#if CORTEX_NUM_VECTORS > 64 + DCD Vector140 + DCD Vector144 + DCD Vector148 + DCD Vector14C + DCD Vector150 + DCD Vector154 + DCD Vector158 + DCD Vector15C +#endif +#if CORTEX_NUM_VECTORS > 72 + DCD Vector160 + DCD Vector164 + DCD Vector168 + DCD Vector16C + DCD Vector170 + DCD Vector174 + DCD Vector178 + DCD Vector17C +#endif +#if CORTEX_NUM_VECTORS > 80 + DCD Vector180 + DCD Vector184 + DCD Vector188 + DCD Vector18C + DCD Vector190 + DCD Vector194 + DCD Vector198 + DCD Vector19C +#endif +#if CORTEX_NUM_VECTORS > 88 + DCD Vector1A0 + DCD Vector1A4 + DCD Vector1A8 + DCD Vector1AC + DCD Vector1B0 + DCD Vector1B4 + DCD Vector1B8 + DCD Vector1BC +#endif +#if CORTEX_NUM_VECTORS > 96 + DCD Vector1C0 + DCD Vector1C4 + DCD Vector1C8 + DCD Vector1CC + DCD Vector1D0 + DCD Vector1D4 + DCD Vector1D8 + DCD Vector1DC +#endif +#if CORTEX_NUM_VECTORS > 104 + DCD Vector1E0 + DCD Vector1E4 + DCD Vector1E8 + DCD Vector1EC + DCD Vector1F0 + DCD Vector1F4 + DCD Vector1F8 + DCD Vector1FC +#endif +#if CORTEX_NUM_VECTORS > 112 + DCD Vector200 + DCD Vector204 + DCD Vector208 + DCD Vector20C + DCD Vector210 + DCD Vector214 + DCD Vector218 + DCD Vector21C +#endif +#if CORTEX_NUM_VECTORS > 120 + DCD Vector220 + DCD Vector224 + DCD Vector228 + DCD Vector22C + DCD Vector230 + DCD Vector234 + DCD Vector238 + DCD Vector23C +#endif +#if CORTEX_NUM_VECTORS > 128 + DCD Vector240 + DCD Vector244 + DCD Vector248 + DCD Vector24C + DCD Vector250 + DCD Vector254 + DCD Vector258 + DCD Vector25C +#endif +#if CORTEX_NUM_VECTORS > 136 + DCD Vector260 + DCD Vector264 + DCD Vector268 + DCD Vector26C + DCD Vector270 + DCD Vector274 + DCD Vector278 + DCD Vector27C +#endif +#if CORTEX_NUM_VECTORS > 144 + DCD Vector280 + DCD Vector284 + DCD Vector288 + DCD Vector28C + DCD Vector290 + DCD Vector294 + DCD Vector298 + DCD Vector29C +#endif +#if CORTEX_NUM_VECTORS > 152 + DCD Vector2A0 + DCD Vector2A4 + DCD Vector2A8 + DCD Vector2AC + DCD Vector2B0 + DCD Vector2B4 + DCD Vector2B8 + DCD Vector2BC +#endif +#if CORTEX_NUM_VECTORS > 160 + DCD Vector2C0 + DCD Vector2C4 + DCD Vector2C8 + DCD Vector2CC + DCD Vector2D0 + DCD Vector2D4 + DCD Vector2D8 + DCD Vector2DC +#endif +#if CORTEX_NUM_VECTORS > 168 + DCD Vector2E0 + DCD Vector2E4 + DCD Vector2E8 + DCD Vector2EC + DCD Vector2F0 + DCD Vector2F4 + DCD Vector2F8 + DCD Vector2FC +#endif +#if CORTEX_NUM_VECTORS > 176 + DCD Vector300 + DCD Vector304 + DCD Vector308 + DCD Vector30C + DCD Vector310 + DCD Vector314 + DCD Vector318 + DCD Vector31C +#endif +#if CORTEX_NUM_VECTORS > 184 + DCD Vector320 + DCD Vector324 + DCD Vector328 + DCD Vector32C + DCD Vector330 + DCD Vector334 + DCD Vector338 + DCD Vector33C +#endif +#if CORTEX_NUM_VECTORS > 192 + DCD Vector340 + DCD Vector344 + DCD Vector348 + DCD Vector34C + DCD Vector350 + DCD Vector354 + DCD Vector358 + DCD Vector35C +#endif +#if CORTEX_NUM_VECTORS > 200 + DCD Vector360 + DCD Vector364 + DCD Vector368 + DCD Vector36C + DCD Vector370 + DCD Vector374 + DCD Vector378 + DCD Vector37C +#endif +#if CORTEX_NUM_VECTORS > 208 + DCD Vector380 + DCD Vector384 + DCD Vector388 + DCD Vector38C + DCD Vector390 + DCD Vector394 + DCD Vector398 + DCD Vector39C +#endif +#if CORTEX_NUM_VECTORS > 216 + DCD Vector3A0 + DCD Vector3A4 + DCD Vector3A8 + DCD Vector3AC + DCD Vector3B0 + DCD Vector3B4 + DCD Vector3B8 + DCD Vector3BC +#endif +#if CORTEX_NUM_VECTORS > 224 + DCD Vector3C0 + DCD Vector3C4 + DCD Vector3C8 + DCD Vector3CC + DCD Vector3D0 + DCD Vector3D4 + DCD Vector3D8 + DCD Vector3DC +#endif +#if CORTEX_NUM_VECTORS > 232 + DCD Vector3E0 + DCD Vector3E4 + DCD Vector3E8 + DCD Vector3EC + DCD Vector3F0 + DCD Vector3F4 + DCD Vector3F8 + DCD Vector3FC +#endif + + AREA |.text|, CODE, READONLY + THUMB + +/* + * Default interrupt handlers. + */ + EXPORT _unhandled_exception +_unhandled_exception PROC + EXPORT NMI_Handler [WEAK] + EXPORT HardFault_Handler [WEAK] + EXPORT MemManage_Handler [WEAK] + EXPORT BusFault_Handler [WEAK] + EXPORT UsageFault_Handler [WEAK] + EXPORT Vector1C [WEAK] + EXPORT Vector20 [WEAK] + EXPORT Vector24 [WEAK] + EXPORT Vector28 [WEAK] + EXPORT SVC_Handler [WEAK] + EXPORT DebugMon_Handler [WEAK] + EXPORT Vector34 [WEAK] + EXPORT PendSV_Handler [WEAK] + EXPORT SysTick_Handler [WEAK] + EXPORT Vector40 [WEAK] + EXPORT Vector44 [WEAK] + EXPORT Vector48 [WEAK] + EXPORT Vector4C [WEAK] + EXPORT Vector50 [WEAK] + EXPORT Vector54 [WEAK] + EXPORT Vector58 [WEAK] + EXPORT Vector5C [WEAK] +#if CORTEX_NUM_VECTORS > 8 + EXPORT Vector60 [WEAK] + EXPORT Vector64 [WEAK] + EXPORT Vector68 [WEAK] + EXPORT Vector6C [WEAK] + EXPORT Vector70 [WEAK] + EXPORT Vector74 [WEAK] + EXPORT Vector78 [WEAK] + EXPORT Vector7C [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 16 + EXPORT Vector80 [WEAK] + EXPORT Vector84 [WEAK] + EXPORT Vector88 [WEAK] + EXPORT Vector8C [WEAK] + EXPORT Vector90 [WEAK] + EXPORT Vector94 [WEAK] + EXPORT Vector98 [WEAK] + EXPORT Vector9C [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 24 + EXPORT VectorA0 [WEAK] + EXPORT VectorA4 [WEAK] + EXPORT VectorA8 [WEAK] + EXPORT VectorAC [WEAK] + EXPORT VectorB0 [WEAK] + EXPORT VectorB4 [WEAK] + EXPORT VectorB8 [WEAK] + EXPORT VectorBC [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 32 + EXPORT VectorC0 [WEAK] + EXPORT VectorC4 [WEAK] + EXPORT VectorC8 [WEAK] + EXPORT VectorCC [WEAK] + EXPORT VectorD0 [WEAK] + EXPORT VectorD4 [WEAK] + EXPORT VectorD8 [WEAK] + EXPORT VectorDC [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 40 + EXPORT VectorE0 [WEAK] + EXPORT VectorE4 [WEAK] + EXPORT VectorE8 [WEAK] + EXPORT VectorEC [WEAK] + EXPORT VectorF0 [WEAK] + EXPORT VectorF4 [WEAK] + EXPORT VectorF8 [WEAK] + EXPORT VectorFC [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 48 + EXPORT Vector100 [WEAK] + EXPORT Vector104 [WEAK] + EXPORT Vector108 [WEAK] + EXPORT Vector10C [WEAK] + EXPORT Vector110 [WEAK] + EXPORT Vector114 [WEAK] + EXPORT Vector118 [WEAK] + EXPORT Vector11C [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 56 + EXPORT Vector120 [WEAK] + EXPORT Vector124 [WEAK] + EXPORT Vector128 [WEAK] + EXPORT Vector12C [WEAK] + EXPORT Vector130 [WEAK] + EXPORT Vector134 [WEAK] + EXPORT Vector138 [WEAK] + EXPORT Vector13C [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 64 + EXPORT Vector140 [WEAK] + EXPORT Vector144 [WEAK] + EXPORT Vector148 [WEAK] + EXPORT Vector14C [WEAK] + EXPORT Vector150 [WEAK] + EXPORT Vector154 [WEAK] + EXPORT Vector158 [WEAK] + EXPORT Vector15C [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 72 + EXPORT Vector160 [WEAK] + EXPORT Vector164 [WEAK] + EXPORT Vector168 [WEAK] + EXPORT Vector16C [WEAK] + EXPORT Vector170 [WEAK] + EXPORT Vector174 [WEAK] + EXPORT Vector178 [WEAK] + EXPORT Vector17C [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 80 + EXPORT Vector180 [WEAK] + EXPORT Vector184 [WEAK] + EXPORT Vector188 [WEAK] + EXPORT Vector18C [WEAK] + EXPORT Vector190 [WEAK] + EXPORT Vector194 [WEAK] + EXPORT Vector198 [WEAK] + EXPORT Vector19C [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 88 + EXPORT Vector1A0 [WEAK] + EXPORT Vector1A4 [WEAK] + EXPORT Vector1A8 [WEAK] + EXPORT Vector1AC [WEAK] + EXPORT Vector1B0 [WEAK] + EXPORT Vector1B4 [WEAK] + EXPORT Vector1B8 [WEAK] + EXPORT Vector1BC [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 96 + EXPORT Vector1C0 [WEAK] + EXPORT Vector1C4 [WEAK] + EXPORT Vector1C8 [WEAK] + EXPORT Vector1CC [WEAK] + EXPORT Vector1D0 [WEAK] + EXPORT Vector1D4 [WEAK] + EXPORT Vector1D8 [WEAK] + EXPORT Vector1DC [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 104 + EXPORT Vector1E0 [WEAK] + EXPORT Vector1E4 [WEAK] + EXPORT Vector1E8 [WEAK] + EXPORT Vector1EC [WEAK] + EXPORT Vector1F0 [WEAK] + EXPORT Vector1F4 [WEAK] + EXPORT Vector1F8 [WEAK] + EXPORT Vector1FC [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 112 + EXPORT Vector200 [WEAK] + EXPORT Vector204 [WEAK] + EXPORT Vector208 [WEAK] + EXPORT Vector20C [WEAK] + EXPORT Vector210 [WEAK] + EXPORT Vector214 [WEAK] + EXPORT Vector218 [WEAK] + EXPORT Vector21C [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 120 + EXPORT Vector220 [WEAK] + EXPORT Vector224 [WEAK] + EXPORT Vector228 [WEAK] + EXPORT Vector22C [WEAK] + EXPORT Vector230 [WEAK] + EXPORT Vector234 [WEAK] + EXPORT Vector238 [WEAK] + EXPORT Vector23C [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 128 + EXPORT Vector240 [WEAK] + EXPORT Vector244 [WEAK] + EXPORT Vector248 [WEAK] + EXPORT Vector24C [WEAK] + EXPORT Vector250 [WEAK] + EXPORT Vector254 [WEAK] + EXPORT Vector258 [WEAK] + EXPORT Vector25C [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 136 + EXPORT Vector260 [WEAK] + EXPORT Vector264 [WEAK] + EXPORT Vector268 [WEAK] + EXPORT Vector26C [WEAK] + EXPORT Vector270 [WEAK] + EXPORT Vector274 [WEAK] + EXPORT Vector278 [WEAK] + EXPORT Vector27C [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 144 + EXPORT Vector280 [WEAK] + EXPORT Vector284 [WEAK] + EXPORT Vector288 [WEAK] + EXPORT Vector28C [WEAK] + EXPORT Vector290 [WEAK] + EXPORT Vector294 [WEAK] + EXPORT Vector298 [WEAK] + EXPORT Vector29C [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 152 + EXPORT Vector2A0 [WEAK] + EXPORT Vector2A4 [WEAK] + EXPORT Vector2A8 [WEAK] + EXPORT Vector2AC [WEAK] + EXPORT Vector2B0 [WEAK] + EXPORT Vector2B4 [WEAK] + EXPORT Vector2B8 [WEAK] + EXPORT Vector2BC [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 160 + EXPORT Vector2C0 [WEAK] + EXPORT Vector2C4 [WEAK] + EXPORT Vector2C8 [WEAK] + EXPORT Vector2CC [WEAK] + EXPORT Vector2D0 [WEAK] + EXPORT Vector2D4 [WEAK] + EXPORT Vector2D8 [WEAK] + EXPORT Vector2DC [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 168 + EXPORT Vector2E0 [WEAK] + EXPORT Vector2E4 [WEAK] + EXPORT Vector2E8 [WEAK] + EXPORT Vector2EC [WEAK] + EXPORT Vector2F0 [WEAK] + EXPORT Vector2F4 [WEAK] + EXPORT Vector2F8 [WEAK] + EXPORT Vector2FC [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 176 + EXPORT Vector300 [WEAK] + EXPORT Vector304 [WEAK] + EXPORT Vector308 [WEAK] + EXPORT Vector30C [WEAK] + EXPORT Vector310 [WEAK] + EXPORT Vector314 [WEAK] + EXPORT Vector318 [WEAK] + EXPORT Vector31C [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 184 + EXPORT Vector320 [WEAK] + EXPORT Vector324 [WEAK] + EXPORT Vector328 [WEAK] + EXPORT Vector32C [WEAK] + EXPORT Vector330 [WEAK] + EXPORT Vector334 [WEAK] + EXPORT Vector338 [WEAK] + EXPORT Vector33C [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 192 + EXPORT Vector340 [WEAK] + EXPORT Vector344 [WEAK] + EXPORT Vector348 [WEAK] + EXPORT Vector34C [WEAK] + EXPORT Vector350 [WEAK] + EXPORT Vector354 [WEAK] + EXPORT Vector358 [WEAK] + EXPORT Vector35C [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 200 + EXPORT Vector360 [WEAK] + EXPORT Vector364 [WEAK] + EXPORT Vector368 [WEAK] + EXPORT Vector36C [WEAK] + EXPORT Vector370 [WEAK] + EXPORT Vector374 [WEAK] + EXPORT Vector378 [WEAK] + EXPORT Vector37C [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 208 + EXPORT Vector380 [WEAK] + EXPORT Vector384 [WEAK] + EXPORT Vector388 [WEAK] + EXPORT Vector38C [WEAK] + EXPORT Vector390 [WEAK] + EXPORT Vector394 [WEAK] + EXPORT Vector398 [WEAK] + EXPORT Vector39C [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 216 + EXPORT Vector3A0 [WEAK] + EXPORT Vector3A4 [WEAK] + EXPORT Vector3A8 [WEAK] + EXPORT Vector3AC [WEAK] + EXPORT Vector3B0 [WEAK] + EXPORT Vector3B4 [WEAK] + EXPORT Vector3B8 [WEAK] + EXPORT Vector3BC [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 224 + EXPORT Vector3C0 [WEAK] + EXPORT Vector3C4 [WEAK] + EXPORT Vector3C8 [WEAK] + EXPORT Vector3CC [WEAK] + EXPORT Vector3D0 [WEAK] + EXPORT Vector3D4 [WEAK] + EXPORT Vector3D8 [WEAK] + EXPORT Vector3DC [WEAK] +#endif +#if CORTEX_NUM_VECTORS > 232 + EXPORT Vector3E0 [WEAK] + EXPORT Vector3E4 [WEAK] + EXPORT Vector3E8 [WEAK] + EXPORT Vector3EC [WEAK] + EXPORT Vector3F0 [WEAK] + EXPORT Vector3F4 [WEAK] + EXPORT Vector3F8 [WEAK] + EXPORT Vector3FC [WEAK] +#endif + +NMI_Handler +HardFault_Handler +MemManage_Handler +BusFault_Handler +UsageFault_Handler +Vector1C +Vector20 +Vector24 +Vector28 +SVC_Handler +DebugMon_Handler +Vector34 +PendSV_Handler +SysTick_Handler +Vector40 +Vector44 +Vector48 +Vector4C +Vector50 +Vector54 +Vector58 +Vector5C +#if CORTEX_NUM_VECTORS > 8 +Vector60 +Vector64 +Vector68 +Vector6C +Vector70 +Vector74 +Vector78 +Vector7C +#endif +#if CORTEX_NUM_VECTORS > 16 +Vector80 +Vector84 +Vector88 +Vector8C +Vector90 +Vector94 +Vector98 +Vector9C +#endif +#if CORTEX_NUM_VECTORS > 24 +VectorA0 +VectorA4 +VectorA8 +VectorAC +VectorB0 +VectorB4 +VectorB8 +VectorBC +#endif +#if CORTEX_NUM_VECTORS > 32 +VectorC0 +VectorC4 +VectorC8 +VectorCC +VectorD0 +VectorD4 +VectorD8 +VectorDC +#endif +#if CORTEX_NUM_VECTORS > 40 +VectorE0 +VectorE4 +VectorE8 +VectorEC +VectorF0 +VectorF4 +VectorF8 +VectorFC +#endif +#if CORTEX_NUM_VECTORS > 48 +Vector100 +Vector104 +Vector108 +Vector10C +Vector110 +Vector114 +Vector118 +Vector11C +#endif +#if CORTEX_NUM_VECTORS > 56 +Vector120 +Vector124 +Vector128 +Vector12C +Vector130 +Vector134 +Vector138 +Vector13C +#endif +#if CORTEX_NUM_VECTORS > 64 +Vector140 +Vector144 +Vector148 +Vector14C +Vector150 +Vector154 +Vector158 +Vector15C +#endif +#if CORTEX_NUM_VECTORS > 72 +Vector160 +Vector164 +Vector168 +Vector16C +Vector170 +Vector174 +Vector178 +Vector17C +#endif +#if CORTEX_NUM_VECTORS > 80 +Vector180 +Vector184 +Vector188 +Vector18C +Vector190 +Vector194 +Vector198 +Vector19C +#endif +#if CORTEX_NUM_VECTORS > 88 +Vector1A0 +Vector1A4 +Vector1A8 +Vector1AC +Vector1B0 +Vector1B4 +Vector1B8 +Vector1BC +#endif +#if CORTEX_NUM_VECTORS > 96 +Vector1C0 +Vector1C4 +Vector1C8 +Vector1CC +Vector1D0 +Vector1D4 +Vector1D8 +Vector1DC +#endif +#if CORTEX_NUM_VECTORS > 104 +Vector1E0 +Vector1E4 +Vector1E8 +Vector1EC +Vector1F0 +Vector1F4 +Vector1F8 +Vector1FC +#endif +#if CORTEX_NUM_VECTORS > 112 +Vector200 +Vector204 +Vector208 +Vector20C +Vector210 +Vector214 +Vector218 +Vector21C +#endif +#if CORTEX_NUM_VECTORS > 120 +Vector220 +Vector224 +Vector228 +Vector22C +Vector230 +Vector234 +Vector238 +Vector23C +#endif +#if CORTEX_NUM_VECTORS > 128 +Vector240 +Vector244 +Vector248 +Vector24C +Vector250 +Vector254 +Vector258 +Vector25C +#endif +#if CORTEX_NUM_VECTORS > 136 +Vector260 +Vector264 +Vector268 +Vector26C +Vector270 +Vector274 +Vector278 +Vector27C +#endif +#if CORTEX_NUM_VECTORS > 144 +Vector280 +Vector284 +Vector288 +Vector28C +Vector290 +Vector294 +Vector298 +Vector29C +#endif +#if CORTEX_NUM_VECTORS > 152 +Vector2A0 +Vector2A4 +Vector2A8 +Vector2AC +Vector2B0 +Vector2B4 +Vector2B8 +Vector2BC +#endif +#if CORTEX_NUM_VECTORS > 160 +Vector2C0 +Vector2C4 +Vector2C8 +Vector2CC +Vector2D0 +Vector2D4 +Vector2D8 +Vector2DC +#endif +#if CORTEX_NUM_VECTORS > 168 +Vector2E0 +Vector2E4 +Vector2E8 +Vector2EC +Vector2F0 +Vector2F4 +Vector2F8 +Vector2FC +#endif +#if CORTEX_NUM_VECTORS > 176 +Vector300 +Vector304 +Vector308 +Vector30C +Vector310 +Vector314 +Vector318 +Vector31C +#endif +#if CORTEX_NUM_VECTORS > 184 +Vector320 +Vector324 +Vector328 +Vector32C +Vector330 +Vector334 +Vector338 +Vector33C +#endif +#if CORTEX_NUM_VECTORS > 192 +Vector340 +Vector344 +Vector348 +Vector34C +Vector350 +Vector354 +Vector358 +Vector35C +#endif +#if CORTEX_NUM_VECTORS > 200 +Vector360 +Vector364 +Vector368 +Vector36C +Vector370 +Vector374 +Vector378 +Vector37C +#endif +#if CORTEX_NUM_VECTORS > 208 +Vector380 +Vector384 +Vector388 +Vector38C +Vector390 +Vector394 +Vector398 +Vector39C +#endif +#if CORTEX_NUM_VECTORS > 216 +Vector3A0 +Vector3A4 +Vector3A8 +Vector3AC +Vector3B0 +Vector3B4 +Vector3B8 +Vector3BC +#endif +#if CORTEX_NUM_VECTORS > 224 +Vector3C0 +Vector3C4 +Vector3C8 +Vector3CC +Vector3D0 +Vector3D4 +Vector3D8 +Vector3DC +#endif +#if CORTEX_NUM_VECTORS > 232 +Vector3E0 +Vector3E4 +Vector3E8 +Vector3EC +Vector3F0 +Vector3F4 +Vector3F8 +Vector3FC +#endif + b _unhandled_exception + ENDP + + END + +#endif /* !defined(__DOXYGEN__) */ + +/**< @} */ diff --git a/os/common/startup/ARMCMx/devices/K20x/cmparams.h b/os/common/startup/ARMCMx/devices/K20x/cmparams.h new file mode 100644 index 000000000..5ae9dada6 --- /dev/null +++ b/os/common/startup/ARMCMx/devices/K20x/cmparams.h @@ -0,0 +1,82 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file GCC/ARMCMx/MK20Dx/cmparams.h + * @brief ARM Cortex-M4 parameters for the Kinetis MK20Dx. + * + * @defgroup ARMCMx_MK20Dx Kinetis MK20Dx Specific Parameters + * @ingroup ARMCMx_SPECIFIC + * @details This file contains the Cortex-M4 specific parameters for the + * Kinetis MK20Dx platform. + * @{ + */ + +#ifndef _CMPARAMS_H_ +#define _CMPARAMS_H_ + +/** + * @brief Cortex core model. + */ +#define CORTEX_MODEL 4 + +/** + * @brief Systick unit presence. + */ +#define CORTEX_HAS_ST TRUE + +/** + * @brief Floating Point unit presence. + */ +#define CORTEX_HAS_FPU FALSE + +/** + * @brief Number of bits in priority masks. + */ +#define CORTEX_PRIORITY_BITS 4 + +/** + * @brief Number of interrupt vectors. + * @note This number does not include the 16 system vectors and must be + * rounded to a multiple of 8. + */ +#define CORTEX_NUM_VECTORS 48 + +/* The following code is not processed when the file is included from an + asm module.*/ +#if !defined(_FROM_ASM_) + +/* Including the device CMSIS header. Note, we are not using the definitions + from this header because we need this file to be usable also from + assembler source files. We verify that the info matches instead.*/ +#include "mk20d5.h" + +#if CORTEX_MODEL != __CORTEX_M +#error "CMSIS __CORTEX_M mismatch" +#endif + +#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS +#error "CMSIS __NVIC_PRIO_BITS mismatch" +#endif + +#endif /* !defined(_FROM_ASM_) */ + +#endif /* _CMPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/ARMCMx/devices/KL2x/cmparams.h b/os/common/startup/ARMCMx/devices/KL2x/cmparams.h new file mode 100644 index 000000000..6da2fed0e --- /dev/null +++ b/os/common/startup/ARMCMx/devices/KL2x/cmparams.h @@ -0,0 +1,82 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file KL2x/cmparams.h + * @brief ARM Cortex-M0+ parameters for the Kinetis KL2x family. + * + * @defgroup ARMCMx_KL2x Kinetis KL2x Specific Parameters + * @ingroup ARMCMx_SPECIFIC + * @details This file contains the Cortex-M0+ specific parameters for the + * Kinetis KL2x platform. + * @{ + */ + +#ifndef _CMPARAMS_H_ +#define _CMPARAMS_H_ + +/** + * @brief Cortex core model. + */ +#define CORTEX_MODEL 0 + +/** + * @brief Systick unit presence. + */ +#define CORTEX_HAS_ST TRUE + +/** + * @brief Floating Point unit presence. + */ +#define CORTEX_HAS_FPU FALSE + +/** + * @brief Number of bits in priority masks. + */ +#define CORTEX_PRIORITY_BITS 2 + +/** + * @brief Number of interrupt vectors. + * @note This number does not include the 16 system vectors and must be + * rounded to a multiple of 8. + */ +#define CORTEX_NUM_VECTORS 32 + +/* The following code is not processed when the file is included from an + asm module.*/ +#if !defined(_FROM_ASM_) + +/* Including the device CMSIS header. Note, we are not using the definitions + from this header because we need this file to be usable also from + assembler source files. We verify that the info matches instead.*/ +#include "kl25z.h" + +#if CORTEX_MODEL != __CORTEX_M +#error "CMSIS __CORTEX_M mismatch" +#endif + +#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS +#error "CMSIS __NVIC_PRIO_BITS mismatch" +#endif + +#endif /* !defined(_FROM_ASM_) */ + +#endif /* _CMPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/ARMCMx/devices/STM32F0xx/cmparams.h b/os/common/startup/ARMCMx/devices/STM32F0xx/cmparams.h new file mode 100644 index 000000000..2744a6f72 --- /dev/null +++ b/os/common/startup/ARMCMx/devices/STM32F0xx/cmparams.h @@ -0,0 +1,89 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file STM32F0xx/cmparams.h + * @brief ARM Cortex-M0 parameters for the STM32F0xx. + * + * @defgroup ARMCMx_STM32F0xx STM32F0xx Specific Parameters + * @ingroup ARMCMx_SPECIFIC + * @details This file contains the Cortex-M0 specific parameters for the + * STM32F0xx platform. + * @{ + */ + +#ifndef _CMPARAMS_H_ +#define _CMPARAMS_H_ + +/** + * @brief Cortex core model. + */ +#define CORTEX_MODEL 0 + +/** + * @brief Floating Point unit presence. + */ +#define CORTEX_HAS_FPU 0 + +/** + * @brief Number of bits in priority masks. + */ +#define CORTEX_PRIORITY_BITS 2 + +/** + * @brief Number of interrupt vectors. + * @note This number does not include the 16 system vectors and must be + * rounded to a multiple of 8. + */ +#define CORTEX_NUM_VECTORS 32 + +/* The following code is not processed when the file is included from an + asm module.*/ +#if !defined(_FROM_ASM_) + +/* If the device type is not externally defined, for example from the Makefile, + then a file named board.h is included. This file must contain a device + definition compatible with the vendor include file.*/ +#if !defined (STM32F030x6) && !defined (STM32F030x8) && \ + !defined (STM32F031x6) && !defined (STM32F038xx) && \ + !defined (STM32F042x6) && !defined (STM32F048xx) && \ + !defined (STM32F051x8) && !defined (STM32F058xx) && \ + !defined (STM32F071xB) && !defined (STM32F072xB) && \ + !defined (STM32F078xx) +#include "board.h" +#endif + +/* Including the device CMSIS header. Note, we are not using the definitions + from this header because we need this file to be usable also from + assembler source files. We verify that the info matches instead.*/ +#include "stm32f0xx.h" + +#if CORTEX_MODEL != __CORTEX_M +#error "CMSIS __CORTEX_M mismatch" +#endif + +#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS +#error "CMSIS __NVIC_PRIO_BITS mismatch" +#endif + +#endif /* !defined(_FROM_ASM_) */ + +#endif /* _CMPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/ARMCMx/devices/STM32F1xx/cmparams.h b/os/common/startup/ARMCMx/devices/STM32F1xx/cmparams.h new file mode 100644 index 000000000..0fe7e27ab --- /dev/null +++ b/os/common/startup/ARMCMx/devices/STM32F1xx/cmparams.h @@ -0,0 +1,90 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file STM32F1xx/cmparams.h + * @brief ARM Cortex-M3 parameters for the STM32F1xx. + * + * @defgroup ARMCMx_STM32F1xx STM32F1xx Specific Parameters + * @ingroup ARMCMx_SPECIFIC + * @details This file contains the Cortex-M4 specific parameters for the + * STM32F1xx platform. + * @{ + */ + +#ifndef _CMPARAMS_H_ +#define _CMPARAMS_H_ + +/** + * @brief Cortex core model. + */ +#define CORTEX_MODEL 3 + +/** + * @brief Floating Point unit presence. + */ +#define CORTEX_HAS_FPU 0 + +/** + * @brief Number of bits in priority masks. + */ +#define CORTEX_PRIORITY_BITS 4 + +/** + * @brief Number of interrupt vectors. + * @note This number does not include the 16 system vectors and must be + * rounded to a multiple of 8. + */ +#define CORTEX_NUM_VECTORS 72 + +/* The following code is not processed when the file is included from an + asm module.*/ +#if !defined(_FROM_ASM_) + +/* If the device type is not externally defined, for example from the Makefile, + then a file named board.h is included. This file must contain a device + definition compatible with the vendor include file.*/ +#if !defined(STM32F100xB) && !defined(STM32F100xE) && \ + !defined(STM32F101x6) && !defined(STM32F101xB) && \ + !defined(STM32F101xE) && !defined(STM32F101xG) && \ + !defined(STM32F102x6) && !defined(STM32F102xB) && \ + !defined(STM32F103x6) && !defined(STM32F103xB) && \ + !defined(STM32F103xE) && !defined(STM32F103xG) && \ + !defined(STM32F105xC) && !defined(STM32F107xC) +#include "board.h" +#endif + +/* Including the device CMSIS header. Note, we are not using the definitions + from this header because we need this file to be usable also from + assembler source files. We verify that the info matches instead.*/ +#include "stm32f1xx.h" + +#if CORTEX_MODEL != __CORTEX_M +#error "CMSIS __CORTEX_M mismatch" +#endif + +#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS +#error "CMSIS __NVIC_PRIO_BITS mismatch" +#endif + +#endif /* !defined(_FROM_ASM_) */ + +#endif /* _CMPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/ARMCMx/devices/STM32F2xx/cmparams.h b/os/common/startup/ARMCMx/devices/STM32F2xx/cmparams.h new file mode 100644 index 000000000..7644bf42c --- /dev/null +++ b/os/common/startup/ARMCMx/devices/STM32F2xx/cmparams.h @@ -0,0 +1,84 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file STM32F2xx/cmparams.h + * @brief ARM Cortex-M3 parameters for the STM32F2xx. + * + * @defgroup ARMCMx_STM32F2xx STM32F2xx Specific Parameters + * @ingroup ARMCMx_SPECIFIC + * @details This file contains the Cortex-M3 specific parameters for the + * STM32F2xx platform. + * @{ + */ + +#ifndef _CMPARAMS_H_ +#define _CMPARAMS_H_ + +/** + * @brief Cortex core model. + */ +#define CORTEX_MODEL 3 + +/** + * @brief Floating Point unit presence. + */ +#define CORTEX_HAS_FPU 0 + +/** + * @brief Number of bits in priority masks. + */ +#define CORTEX_PRIORITY_BITS 4 + +/** + * @brief Number of interrupt vectors. + * @note This number does not include the 16 system vectors and must be + * rounded to a multiple of 8. + */ +#define CORTEX_NUM_VECTORS 96 + +/* The following code is not processed when the file is included from an + asm module.*/ +#if !defined(_FROM_ASM_) + +/* If the device type is not externally defined, for example from the Makefile, + then a file named board.h is included. This file must contain a device + definition compatible with the vendor include file.*/ +#if !defined(STM32F2XX) +#include "board.h" +#endif + +/* Including the device CMSIS header. Note, we are not using the definitions + from this header because we need this file to be usable also from + assembler source files. We verify that the info matches instead.*/ +#include "stm32f2xx.h" + +#if CORTEX_MODEL != __CORTEX_M +#error "CMSIS __CORTEX_M mismatch" +#endif + +#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS +#error "CMSIS __NVIC_PRIO_BITS mismatch" +#endif + +#endif /* !defined(_FROM_ASM_) */ + +#endif /* _CMPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/ARMCMx/devices/STM32F3xx/cmparams.h b/os/common/startup/ARMCMx/devices/STM32F3xx/cmparams.h new file mode 100644 index 000000000..bcf0c6f32 --- /dev/null +++ b/os/common/startup/ARMCMx/devices/STM32F3xx/cmparams.h @@ -0,0 +1,93 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file STM32F3xx/cmparams.h + * @brief ARM Cortex-M4 parameters for the STM32F3xx. + * + * @defgroup ARMCMx_STM32F3xx STM32F3xx Specific Parameters + * @ingroup ARMCMx_SPECIFIC + * @details This file contains the Cortex-M4 specific parameters for the + * STM32F3xx platform. + * @{ + */ + +#ifndef _CMPARAMS_H_ +#define _CMPARAMS_H_ + +/** + * @brief Cortex core model. + */ +#define CORTEX_MODEL 4 + +/** + * @brief Floating Point unit presence. + */ +#define CORTEX_HAS_FPU 1 + +/** + * @brief Number of bits in priority masks. + */ +#define CORTEX_PRIORITY_BITS 4 + +/** + * @brief Number of interrupt vectors. + * @note This number does not include the 16 system vectors and must be + * rounded to a multiple of 8. + */ +#define CORTEX_NUM_VECTORS 88 + +/* The following code is not processed when the file is included from an + asm module.*/ +#if !defined(_FROM_ASM_) + +/* If the device type is not externally defined, for example from the Makefile, + then a file named board.h is included. This file must contain a device + definition compatible with the vendor include file.*/ +#if !defined (STM32F301x8) && !defined (STM32F318xx) && \ + !defined (STM32F302x8) && !defined (STM32F302xC) && \ + !defined (STM32F303x8) && !defined (STM32F303xC) && \ + !defined (STM32F358xx) && !defined (STM32F334x8) && \ + !defined (STM32F328xx) && \ + !defined (STM32F373xC) && !defined (STM32F378xx) +#include "board.h" +#endif + +/* Including the device CMSIS header. Note, we are not using the definitions + from this header because we need this file to be usable also from + assembler source files. We verify that the info matches instead.*/ +#include "stm32f3xx.h" + +#if CORTEX_MODEL != __CORTEX_M +#error "CMSIS __CORTEX_M mismatch" +#endif + +#if CORTEX_HAS_FPU != __FPU_PRESENT +#error "CMSIS __FPU_PRESENT mismatch" +#endif + +#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS +#error "CMSIS __NVIC_PRIO_BITS mismatch" +#endif + +#endif /* !defined(_FROM_ASM_) */ + +#endif /* _CMPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/ARMCMx/devices/STM32F4xx/cmparams.h b/os/common/startup/ARMCMx/devices/STM32F4xx/cmparams.h new file mode 100644 index 000000000..59951b5ae --- /dev/null +++ b/os/common/startup/ARMCMx/devices/STM32F4xx/cmparams.h @@ -0,0 +1,93 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file STM32F4xx/cmparams.h + * @brief ARM Cortex-M4 parameters for the STM32F4xx. + * + * @defgroup ARMCMx_STM32F4xx STM32F4xx Specific Parameters + * @ingroup ARMCMx_SPECIFIC + * @details This file contains the Cortex-M4 specific parameters for the + * STM32F4xx platform. + * @{ + */ + +#ifndef _CMPARAMS_H_ +#define _CMPARAMS_H_ + +/** + * @brief Cortex core model. + */ +#define CORTEX_MODEL 4 + +/** + * @brief Floating Point unit presence. + */ +#define CORTEX_HAS_FPU 1 + +/** + * @brief Number of bits in priority masks. + */ +#define CORTEX_PRIORITY_BITS 4 + +/** + * @brief Number of interrupt vectors. + * @note This number does not include the 16 system vectors and must be + * rounded to a multiple of 8. + */ +#define CORTEX_NUM_VECTORS 96 + +/* The following code is not processed when the file is included from an + asm module.*/ +#if !defined(_FROM_ASM_) + +/* If the device type is not externally defined, for example from the Makefile, + then a file named board.h is included. This file must contain a device + definition compatible with the vendor include file.*/ +#if !defined(STM32F405xx) && !defined(STM32F415xx) && \ + !defined(STM32F407xx) && !defined(STM32F417xx) && \ + !defined(STM32F427xx) && !defined(STM32F437xx) && \ + !defined(STM32F429xx) && !defined(STM32F439xx) && \ + !defined(STM32F401xC) && !defined(STM32F401xE) && \ + !defined(STM32F411xE) +#include "board.h" +#endif + +/* Including the device CMSIS header. Note, we are not using the definitions + from this header because we need this file to be usable also from + assembler source files. We verify that the info matches instead.*/ +#include "stm32f4xx.h" + +#if CORTEX_MODEL != __CORTEX_M +#error "CMSIS __CORTEX_M mismatch" +#endif + +#if CORTEX_HAS_FPU != __FPU_PRESENT +#error "CMSIS __FPU_PRESENT mismatch" +#endif + +#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS +#error "CMSIS __NVIC_PRIO_BITS mismatch" +#endif + +#endif /* !defined(_FROM_ASM_) */ + +#endif /* _CMPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/ARMCMx/devices/STM32F7xx/cmparams.h b/os/common/startup/ARMCMx/devices/STM32F7xx/cmparams.h new file mode 100644 index 000000000..f9c5ea36d --- /dev/null +++ b/os/common/startup/ARMCMx/devices/STM32F7xx/cmparams.h @@ -0,0 +1,88 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file STM32F7xx/cmparams.h + * @brief ARM Cortex-M7 parameters for the STM32F4xx. + * + * @defgroup ARMCMx_STM32F7xx STM32F7xx Specific Parameters + * @ingroup ARMCMx_SPECIFIC + * @details This file contains the Cortex-M7 specific parameters for the + * STM32F7xx platform. + * @{ + */ + +#ifndef _CMPARAMS_H_ +#define _CMPARAMS_H_ + +/** + * @brief Cortex core model. + */ +#define CORTEX_MODEL 7 + +/** + * @brief Floating Point unit presence. + */ +#define CORTEX_HAS_FPU 1 + +/** + * @brief Number of bits in priority masks. + */ +#define CORTEX_PRIORITY_BITS 4 + +/** + * @brief Number of interrupt vectors. + * @note This number does not include the 16 system vectors and must be + * rounded to a multiple of 8. + */ +#define CORTEX_NUM_VECTORS 112 + +/* The following code is not processed when the file is included from an + asm module.*/ +#if !defined(_FROM_ASM_) + +/* If the device type is not externally defined, for example from the Makefile, + then a file named board.h is included. This file must contain a device + definition compatible with the vendor include file.*/ +#if !defined(STM32F745xx) && !defined(STM32F746xx) && !defined(STM32F756xx) +#include "board.h" +#endif + +/* Including the device CMSIS header. Note, we are not using the definitions + from this header because we need this file to be usable also from + assembler source files. We verify that the info matches instead.*/ +#include "stm32f7xx.h" + +#if CORTEX_MODEL != __CORTEX_M +#error "CMSIS __CORTEX_M mismatch" +#endif + +#if CORTEX_HAS_FPU != __FPU_PRESENT +#error "CMSIS __FPU_PRESENT mismatch" +#endif + +#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS +#error "CMSIS __NVIC_PRIO_BITS mismatch" +#endif + +#endif /* !defined(_FROM_ASM_) */ + +#endif /* _CMPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/ARMCMx/devices/STM32L0xx/cmparams.h b/os/common/startup/ARMCMx/devices/STM32L0xx/cmparams.h new file mode 100644 index 000000000..ad14e43b0 --- /dev/null +++ b/os/common/startup/ARMCMx/devices/STM32L0xx/cmparams.h @@ -0,0 +1,86 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file STM32L0xx/cmparams.h + * @brief ARM Cortex-M0+ parameters for the STM32L0xx. + * + * @defgroup ARMCMx_STM32L0xx STM32L0xx Specific Parameters + * @ingroup ARMCMx_SPECIFIC + * @details This file contains the Cortex-M0 specific parameters for the + * STM32L0xx platform. + * @{ + */ + +#ifndef _CMPARAMS_H_ +#define _CMPARAMS_H_ + +/** + * @brief Cortex core model. + */ +#define CORTEX_MODEL 0 + +/** + * @brief Floating Point unit presence. + */ +#define CORTEX_HAS_FPU 0 + +/** + * @brief Number of bits in priority masks. + */ +#define CORTEX_PRIORITY_BITS 2 + +/** + * @brief Number of interrupt vectors. + * @note This number does not include the 16 system vectors and must be + * rounded to a multiple of 8. + */ +#define CORTEX_NUM_VECTORS 32 + +/* The following code is not processed when the file is included from an + asm module.*/ +#if !defined(_FROM_ASM_) + +/* If the device type is not externally defined, for example from the Makefile, + then a file named board.h is included. This file must contain a device + definition compatible with the vendor include file.*/ +#if !defined(STM32L051xx) && !defined(STM32L052xx) && \ + !defined(STM32L053xx) && !defined(STM32L062xx) && \ + !defined(STM32L063xx) && !defined(STM32L061xx) +#include "board.h" +#endif + +/* Including the device CMSIS header. Note, we are not using the definitions + from this header because we need this file to be usable also from + assembler source files. We verify that the info matches instead.*/ +#include "stm32l0xx.h" + +#if CORTEX_MODEL != __CORTEX_M +#error "CMSIS __CORTEX_M mismatch" +#endif + +#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS +#error "CMSIS __NVIC_PRIO_BITS mismatch" +#endif + +#endif /* !defined(_FROM_ASM_) */ + +#endif /* _CMPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/ARMCMx/devices/STM32L1xx/cmparams.h b/os/common/startup/ARMCMx/devices/STM32L1xx/cmparams.h new file mode 100644 index 000000000..84304e4ad --- /dev/null +++ b/os/common/startup/ARMCMx/devices/STM32L1xx/cmparams.h @@ -0,0 +1,97 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file STM32L1xx/cmparams.h + * @brief ARM Cortex-M3 parameters for the STM32L1xx. + * + * @defgroup ARMCMx_STM32L1xx STM32L1xx Specific Parameters + * @ingroup ARMCMx_SPECIFIC + * @details This file contains the Cortex-M3 specific parameters for the + * STM32L1xx platform. + * @{ + */ + +#ifndef _CMPARAMS_H_ +#define _CMPARAMS_H_ + +/** + * @brief Cortex core model. + */ +#define CORTEX_MODEL 3 + +/** + * @brief Floating Point unit presence. + */ +#define CORTEX_HAS_FPU 0 + +/** + * @brief Number of bits in priority masks. + */ +#define CORTEX_PRIORITY_BITS 4 + +/** + * @brief Number of interrupt vectors. + * @note This number does not include the 16 system vectors and must be + * rounded to a multiple of 8. + */ +#define CORTEX_NUM_VECTORS 64 + +/* The following code is not processed when the file is included from an + asm module.*/ +#if !defined(_FROM_ASM_) + +/* If the device type is not externally defined, for example from the Makefile, + then a file named board.h is included. This file must contain a device + definition compatible with the vendor include file.*/ +#if !defined(STM32L100xB) && !defined(STM32L100xBA) && \ + !defined(STM32L100xC) && !defined(STM32L151xB) && \ + !defined(STM32L151xBA) && !defined(STM32L151xC) && \ + !defined(STM32L151xCA) && !defined(STM32L151xD) && \ + !defined(STM32L151xDX) && !defined(STM32L151xE) && \ + !defined(STM32L152xB) && !defined(STM32L152xBA) && \ + !defined(STM32L152xC) && !defined(STM32L152xCA) && \ + !defined(STM32L152xD) && !defined(STM32L152xDX) && \ + !defined(STM32L152xE) && !defined(STM32L162xC) && \ + !defined(STM32L162xCA) && !defined(STM32L162xD) && \ + !defined(STM32L162xDX) && !defined(STM32L162xE) +#include "board.h" +#endif + +/* Including the device CMSIS header. Note, we are not using the definitions + from this header because we need this file to be usable also from + assembler source files. We verify that the info matches instead.*/ +#include "stm32l1xx.h" + +#if CORTEX_MODEL != __CORTEX_M +#error "CMSIS __CORTEX_M mismatch" +#endif + +#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS +#error "CMSIS __NVIC_PRIO_BITS mismatch" +#endif + +/* Fix for yet another consistency error in ST headers.*/ +#define SVCall_IRQn SVC_IRQn + +#endif /* !defined(_FROM_ASM_) */ + +#endif /* _CMPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/ARMCMx/devices/STM32L4xx/cmparams.h b/os/common/startup/ARMCMx/devices/STM32L4xx/cmparams.h new file mode 100644 index 000000000..a3a4e09a4 --- /dev/null +++ b/os/common/startup/ARMCMx/devices/STM32L4xx/cmparams.h @@ -0,0 +1,90 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file STM32F4xx/cmparams.h + * @brief ARM Cortex-M4 parameters for the STM32F4xx. + * + * @defgroup ARMCMx_STM32L$xx STM32L4xx Specific Parameters + * @ingroup ARMCMx_SPECIFIC + * @details This file contains the Cortex-M4 specific parameters for the + * STM32L4xx platform. + * @{ + */ + +#ifndef _CMPARAMS_H_ +#define _CMPARAMS_H_ + +/** + * @brief Cortex core model. + */ +#define CORTEX_MODEL 4 + +/** + * @brief Floating Point unit presence. + */ +#define CORTEX_HAS_FPU 1 + +/** + * @brief Number of bits in priority masks. + */ +#define CORTEX_PRIORITY_BITS 4 + +/** + * @brief Number of interrupt vectors. + * @note This number does not include the 16 system vectors and must be + * rounded to a multiple of 8. + */ +#define CORTEX_NUM_VECTORS 88 + +/* The following code is not processed when the file is included from an + asm module.*/ +#if !defined(_FROM_ASM_) + +/* If the device type is not externally defined, for example from the Makefile, + then a file named board.h is included. This file must contain a device + definition compatible with the vendor include file.*/ +#if !defined(STM32L471xx) && !defined(STM32L475xx) && \ + !defined(STM32L476xx) && !defined(STM32L485xx) && \ + !defined (STM32L486xx) +#include "board.h" +#endif + +/* Including the device CMSIS header. Note, we are not using the definitions + from this header because we need this file to be usable also from + assembler source files. We verify that the info matches instead.*/ +#include "stm32l4xx.h" + +#if CORTEX_MODEL != __CORTEX_M +#error "CMSIS __CORTEX_M mismatch" +#endif + +#if CORTEX_HAS_FPU != __FPU_PRESENT +#error "CMSIS __FPU_PRESENT mismatch" +#endif + +#if CORTEX_PRIORITY_BITS != __NVIC_PRIO_BITS +#error "CMSIS __NVIC_PRIO_BITS mismatch" +#endif + +#endif /* !defined(_FROM_ASM_) */ + +#endif /* _CMPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/compilers/CW/crt0.s b/os/common/startup/e200/compilers/CW/crt0.s new file mode 100644 index 000000000..510dc9a2f --- /dev/null +++ b/os/common/startup/e200/compilers/CW/crt0.s @@ -0,0 +1,261 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file CW/crt0.s + * @brief Generic PowerPC startup file for CodeWarrior. + * + * @addtogroup PPC_CW_CORE + * @{ + */ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +#if !defined(FALSE) || defined(__DOXYGEN__) +#define FALSE 0 +#endif + +#if !defined(TRUE) || defined(__DOXYGEN__) +#define TRUE 1 +#endif + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/** + * @brief Stack segments initialization switch. + */ +#if !defined(CRT0_STACKS_FILL_PATTERN) || defined(__DOXYGEN__) +#define CRT0_STACKS_FILL_PATTERN 0x55555555 +#endif + +/** + * @brief Stack segments initialization switch. + */ +#if !defined(CRT0_INIT_STACKS) || defined(__DOXYGEN__) +#define CRT0_INIT_STACKS TRUE +#endif + +/** + * @brief DATA segment initialization switch. + */ +#if !defined(CRT0_INIT_DATA) || defined(__DOXYGEN__) +#define CRT0_INIT_DATA TRUE +#endif + +/** + * @brief BSS segment initialization switch. + */ +#if !defined(CRT0_INIT_BSS) || defined(__DOXYGEN__) +#define CRT0_INIT_BSS TRUE +#endif + +/** + * @brief Constructors invocation switch. + */ +#if !defined(CRT0_CALL_CONSTRUCTORS) || defined(__DOXYGEN__) +#define CRT0_CALL_CONSTRUCTORS FALSE +#endif + +/** + * @brief Destructors invocation switch. + */ +#if !defined(CRT0_CALL_DESTRUCTORS) || defined(__DOXYGEN__) +#define CRT0_CALL_DESTRUCTORS FALSE +#endif + +/*===========================================================================*/ +/* Code section. */ +/*===========================================================================*/ + +#if !defined(__DOXYGEN__) + .extern __sdata2_start__ + .extern __sdata_start__ + .extern __bss_start__ + .extern __bss_end__ + .extern __irq_stack_base__ + .extern __irq_stack_end__ + .extern __process_stack_end__ + .extern __process_stack_base__ + .extern __romdata_start__ + .extern __data_start__ + .extern __data_end__ + .extern __init_array_start + .extern __init_array_end + .extern __fini_array_start + .extern __fini_array_end + + .extern main + + .section .crt0, text_vle + .align 16 + .globl _boot_address + .type _boot_address, @function +_boot_address: + /* Stack setup.*/ + e_lis r1, __process_stack_end__@h + e_or2i r1, __process_stack_end__@l + se_li r0, 0 + e_stwu r0, -8(r1) + + /* Small sections registers initialization.*/ + e_lis r2, __sdata2_start__@h + e_or2i r2, __sdata2_start__@l + e_lis r13, __sdata_start__@h + e_or2i r13, __sdata_start__@l + + /* Early initialization.*/ + e_bl __early_init + +#if CRT0_INIT_STACKS == TRUE + /* Stacks fill pattern.*/ + e_lis r7, CRT0_STACKS_FILL_PATTERN@h + e_or2i r7, CRT0_STACKS_FILL_PATTERN@l + + /* IRQ Stack initialization. Note, the architecture does not use this + stack, the size is usually zero. An OS can have special SW handling + and require this. A 4 bytes alignment is assumed and required.*/ + e_lis r4, __irq_stack_base__@h + e_or2i r4, __irq_stack_base__@l + e_lis r5, __irq_stack_end__@h + e_or2i r5, __irq_stack_end__@l +.irqsloop: + se_cmpl r4, r5 + se_bge .irqsend + se_stw r7, 0(r4) + se_addi r4, 4 + se_b .irqsloop +.irqsend: + + /* Process Stack initialization. Note, does not overwrite the already + written EABI frame. A 4 bytes alignment is assumed and required.*/ + e_lis r4, __process_stack_base__@h + e_or2i r4, __process_stack_base__@l + e_lis r5, (__process_stack_end__ - 8)@h + e_or2i r5, (__process_stack_end__ - 8)@l +.prcsloop: + se_cmpl r4, r5 + se_bge .prcsend + se_stw r7, 0(r4) + se_addi r4, 4 + se_b .prcsloop +.prcsend: +#endif + +#if CRT0_INIT_BSS == TRUE + /* BSS clearing.*/ + e_lis r4, __bss_start__@h + e_or2i r4, __bss_start__@l + e_lis r5, __bss_end__@h + e_or2i r5, __bss_end__@l + se_li r7, 0 +.bssloop: + se_cmpl r4, r5 + se_bge .bssend + se_stw r7, 0(r4) + se_addi r4, 4 + se_b .bssloop +.bssend: +#endif + +#if CRT0_INIT_DATA == TRUE + /* DATA initialization.*/ + e_lis r4, __romdata_start__@h + e_or2i r4, __romdata_start__@l + e_lis r5, __data_start__@h + e_or2i r5, __data_start__@l + e_lis r6, __data_end__@h + e_or2i r6, __data_end__@l +.dataloop: + se_cmpl r5, r6 + se_bge .dataend + se_lwz r7, 0(r4) + se_addi r4, 4 + se_stw r7, 0(r5) + se_addi r5, 4 + se_b .dataloop +.dataend: +#endif + + /* Late initialization.*/ + e_bl __late_init + +#if CRT0_CALL_CONSTRUCTORS == TRUE + /* Constructors invocation.*/ + e_lis r4, __init_array_start@h + e_or2i r4, __init_array_start@l + e_lis r5, __init_array_end@h + e_or2i r5, __init_array_end@l +.iniloop: + se_cmpl r4, r5 + se_bge .iniend + se_lwz r6, 0(r4) + se_mtctr r6 + se_addi r4, 4 + se_bctrl + se_b .iniloop +.iniend: +#endif + + /* Main program invocation.*/ + e_bl main + +#if CRT0_CALL_DESTRUCTORS == TRUE + /* Destructors invocation.*/ + e_lis r4, __fini_array_start@h + e_or2i r4, __fini_array_start@l + e_lis r5, __fini_array_end@h + e_or2i r5, __fini_array_end@l +.finiloop: + se_cmpl r4, r5 + se_bge .finiend + se_lwz r6, 0(r4) + se_mtctr r6 + se_addi r4, 4 + se_bctrl + se_b .finiloop +.finiend: +#endif + + /* Branching to the defined exit handler.*/ + e_b __default_exit + +#endif /* !defined(__DOXYGEN__) */ + + .section .text_vle + .align 4 + + /* Default main exit code, infinite loop.*/ + .weak __default_exit +__default_exit: + e_b __default_exit + + /* Default early initialization code, none.*/ + .weak __early_init + se_blr + + /* Default late initialization code, none.*/ + .weak __late_init +__late_init: + se_blr + +/** @} */ diff --git a/os/common/startup/e200/compilers/CW/unhandled.s b/os/common/startup/e200/compilers/CW/unhandled.s new file mode 100644 index 000000000..c129a92ed --- /dev/null +++ b/os/common/startup/e200/compilers/CW/unhandled.s @@ -0,0 +1,1861 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file weak.s + * @brief Unhandled IRQs. + * + * @addtogroup PPC_CW_CORE + * @{ + */ + +#define _FROM_ASM_ +#include "ppcparams.h" + +#if defined(VECTORS_RENAMING) +#include "isrs.h" +#endif + +#if !defined(__DOXYGEN__) + + .section .text_vle + .align 4 + + .weak _IVOR0, _IVOR1, _IVOR2, _IVOR3, _IVOR4, _IVOR5 + .weak _IVOR6, _IVOR7, _IVOR8, _IVOR9, _IVOR10, _IVOR11 + .weak _IVOR12, _IVOR13, _IVOR14, _IVOR15 +_IVOR0: +_IVOR1: +_IVOR2: +_IVOR3: +_IVOR4: +_IVOR5: +_IVOR6: +_IVOR7: +_IVOR8: +_IVOR9: +_IVOR10: +_IVOR11: +_IVOR12: +_IVOR13: +_IVOR14: +_IVOR15: + .global _unhandled_exception +_unhandled_exception: + se_b _unhandled_exception + + .weak vector0, vector1, vector2, vector3 +#if PPC_NUM_VECTORS > 4 + .weak vector4, vector5, vector6, vector7 +#endif +#if PPC_NUM_VECTORS > 8 + .weak vector8, vector9, vector10, vector11 +#endif +#if PPC_NUM_VECTORS > 12 + .weak vector12, vector13, vector14, vector15 +#endif +#if PPC_NUM_VECTORS > 16 + .weak vector16, vector17, vector18, vector19 +#endif +#if PPC_NUM_VECTORS > 20 + .weak vector20, vector21, vector22, vector23 +#endif +#if PPC_NUM_VECTORS > 24 + .weak vector24, vector25, vector26, vector27 +#endif +#if PPC_NUM_VECTORS > 28 + .weak vector28, vector29, vector30, vector31 +#endif +#if PPC_NUM_VECTORS > 32 + .weak vector32, vector33, vector34, vector35 +#endif +#if PPC_NUM_VECTORS > 36 + .weak vector36, vector37, vector38, vector39 +#endif +#if PPC_NUM_VECTORS > 40 + .weak vector40, vector41, vector42, vector43 +#endif +#if PPC_NUM_VECTORS > 44 + .weak vector44, vector45, vector46, vector47 +#endif +#if PPC_NUM_VECTORS > 48 + .weak vector48, vector49, vector50, vector51 +#endif +#if PPC_NUM_VECTORS > 52 + .weak vector52, vector53, vector54, vector55 +#endif +#if PPC_NUM_VECTORS > 56 + .weak vector56, vector57, vector58, vector59 +#endif +#if PPC_NUM_VECTORS > 60 + .weak vector60, vector61, vector62, vector63 +#endif +#if PPC_NUM_VECTORS > 64 + .weak vector64, vector65, vector66, vector67 +#endif +#if PPC_NUM_VECTORS > 68 + .weak vector68, vector69, vector70, vector71 +#endif +#if PPC_NUM_VECTORS > 72 + .weak vector72, vector73, vector74, vector75 +#endif +#if PPC_NUM_VECTORS > 76 + .weak vector76, vector77, vector78, vector79 +#endif +#if PPC_NUM_VECTORS > 80 + .weak vector80, vector81, vector82, vector83 +#endif +#if PPC_NUM_VECTORS > 84 + .weak vector84, vector85, vector86, vector87 +#endif +#if PPC_NUM_VECTORS > 88 + .weak vector88, vector89, vector90, vector91 +#endif +#if PPC_NUM_VECTORS > 92 + .weak vector92, vector93, vector94, vector95 +#endif +#if PPC_NUM_VECTORS > 96 + .weak vector96, vector97, vector98, vector99 +#endif +#if PPC_NUM_VECTORS > 100 + .weak vector100, vector101, vector102, vector103 +#endif +#if PPC_NUM_VECTORS > 104 + .weak vector104, vector105, vector106, vector107 +#endif +#if PPC_NUM_VECTORS > 108 + .weak vector108, vector109, vector110, vector111 +#endif +#if PPC_NUM_VECTORS > 112 + .weak vector112, vector113, vector114, vector115 +#endif +#if PPC_NUM_VECTORS > 116 + .weak vector116, vector117, vector118, vector119 +#endif +#if PPC_NUM_VECTORS > 120 + .weak vector120, vector121, vector122, vector123 +#endif +#if PPC_NUM_VECTORS > 124 + .weak vector124, vector125, vector126, vector127 +#endif +#if PPC_NUM_VECTORS > 128 + .weak vector128, vector129, vector130, vector131 +#endif +#if PPC_NUM_VECTORS > 132 + .weak vector132, vector133, vector134, vector135 +#endif +#if PPC_NUM_VECTORS > 136 + .weak vector136, vector137, vector138, vector139 +#endif +#if PPC_NUM_VECTORS > 140 + .weak vector140, vector141, vector142, vector143 +#endif +#if PPC_NUM_VECTORS > 144 + .weak vector144, vector145, vector146, vector147 +#endif +#if PPC_NUM_VECTORS > 148 + .weak vector148, vector149, vector150, vector151 +#endif +#if PPC_NUM_VECTORS > 152 + .weak vector152, vector153, vector154, vector155 +#endif +#if PPC_NUM_VECTORS > 156 + .weak vector156, vector157, vector158, vector159 +#endif +#if PPC_NUM_VECTORS > 160 + .weak vector160, vector161, vector162, vector163 +#endif +#if PPC_NUM_VECTORS > 164 + .weak vector164, vector165, vector166, vector167 +#endif +#if PPC_NUM_VECTORS > 168 + .weak vector168, vector169, vector170, vector171 +#endif +#if PPC_NUM_VECTORS > 172 + .weak vector172, vector173, vector174, vector175 +#endif +#if PPC_NUM_VECTORS > 176 + .weak vector176, vector177, vector178, vector179 +#endif +#if PPC_NUM_VECTORS > 180 + .weak vector180, vector181, vector182, vector183 +#endif +#if PPC_NUM_VECTORS > 184 + .weak vector184, vector185, vector186, vector187 +#endif +#if PPC_NUM_VECTORS > 188 + .weak vector188, vector189, vector190, vector191 +#endif +#if PPC_NUM_VECTORS > 192 + .weak vector192, vector193, vector194, vector195 +#endif +#if PPC_NUM_VECTORS > 196 + .weak vector196, vector197, vector198, vector199 +#endif +#if PPC_NUM_VECTORS > 200 + .weak vector200, vector201, vector202, vector203 +#endif +#if PPC_NUM_VECTORS > 204 + .weak vector204, vector205, vector206, vector207 +#endif +#if PPC_NUM_VECTORS > 208 + .weak vector208, vector209, vector210, vector211 +#endif +#if PPC_NUM_VECTORS > 212 + .weak vector212, vector213, vector214, vector215 +#endif +#if PPC_NUM_VECTORS > 216 + .weak vector216, vector217, vector218, vector219 +#endif +#if PPC_NUM_VECTORS > 220 + .weak vector220, vector221, vector222, vector223 +#endif +#if PPC_NUM_VECTORS > 224 + .weak vector224, vector225, vector226, vector227 +#endif +#if PPC_NUM_VECTORS > 228 + .weak vector228, vector229, vector230, vector231 +#endif +#if PPC_NUM_VECTORS > 232 + .weak vector232, vector233, vector234, vector235 +#endif +#if PPC_NUM_VECTORS > 236 + .weak vector236, vector237, vector238, vector239 +#endif +#if PPC_NUM_VECTORS > 240 + .weak vector240, vector241, vector242, vector243 +#endif +#if PPC_NUM_VECTORS > 244 + .weak vector244, vector245, vector246, vector247 +#endif +#if PPC_NUM_VECTORS > 248 + .weak vector248, vector249, vector250, vector251 +#endif +#if PPC_NUM_VECTORS > 252 + .weak vector252, vector253, vector254, vector255 +#endif +#if PPC_NUM_VECTORS > 256 + .weak vector256, vector257, vector258, vector259 +#endif +#if PPC_NUM_VECTORS > 260 + .weak vector260, vector261, vector262, vector263 +#endif +#if PPC_NUM_VECTORS > 264 + .weak vector264, vector265, vector266, vector267 +#endif +#if PPC_NUM_VECTORS > 268 + .weak vector268, vector269, vector270, vector271 +#endif +#if PPC_NUM_VECTORS > 272 + .weak vector272, vector273, vector274, vector275 +#endif +#if PPC_NUM_VECTORS > 276 + .weak vector276, vector277, vector278, vector279 +#endif +#if PPC_NUM_VECTORS > 280 + .weak vector280, vector281, vector282, vector283 +#endif +#if PPC_NUM_VECTORS > 284 + .weak vector284, vector285, vector286, vector287 +#endif +#if PPC_NUM_VECTORS > 288 + .weak vector288, vector289, vector290, vector291 +#endif +#if PPC_NUM_VECTORS > 292 + .weak vector292, vector293, vector294, vector295 +#endif +#if PPC_NUM_VECTORS > 296 + .weak vector296, vector297, vector298, vector299 +#endif +#if PPC_NUM_VECTORS > 300 + .weak vector300, vector301, vector302, vector303 +#endif +#if PPC_NUM_VECTORS > 304 + .weak vector304, vector305, vector306, vector307 +#endif +#if PPC_NUM_VECTORS > 308 + .weak vector308, vector309, vector310, vector311 +#endif +#if PPC_NUM_VECTORS > 312 + .weak vector312, vector313, vector314, vector315 +#endif +#if PPC_NUM_VECTORS > 316 + .weak vector316, vector317, vector318, vector319 +#endif +#if PPC_NUM_VECTORS > 320 + .weak vector320, vector321, vector322, vector323 +#endif +#if PPC_NUM_VECTORS > 324 + .weak vector324, vector325, vector326, vector327 +#endif +#if PPC_NUM_VECTORS > 328 + .weak vector328, vector329, vector330, vector331 +#endif +#if PPC_NUM_VECTORS > 332 + .weak vector332, vector333, vector334, vector335 +#endif +#if PPC_NUM_VECTORS > 336 + .weak vector336, vector337, vector338, vector339 +#endif +#if PPC_NUM_VECTORS > 340 + .weak vector340, vector341, vector342, vector343 +#endif +#if PPC_NUM_VECTORS > 344 + .weak vector344, vector345, vector346, vector347 +#endif +#if PPC_NUM_VECTORS > 348 + .weak vector348, vector349, vector350, vector351 +#endif +#if PPC_NUM_VECTORS > 352 + .weak vector352, vector353, vector354, vector355 +#endif +#if PPC_NUM_VECTORS > 356 + .weak vector356, vector357, vector358, vector359 +#endif +#if PPC_NUM_VECTORS > 360 + .weak vector360, vector361, vector362, vector363 +#endif +#if PPC_NUM_VECTORS > 364 + .weak vector364, vector365, vector366, vector367 +#endif +#if PPC_NUM_VECTORS > 368 + .weak vector368, vector369, vector370, vector371 +#endif +#if PPC_NUM_VECTORS > 372 + .weak vector372, vector373, vector374, vector375 +#endif +#if PPC_NUM_VECTORS > 376 + .weak vector376, vector377, vector378, vector379 +#endif +#if PPC_NUM_VECTORS > 380 + .weak vector380, vector381, vector382, vector383 +#endif +#if PPC_NUM_VECTORS > 384 + .weak vector384, vector385, vector386, vector387 +#endif +#if PPC_NUM_VECTORS > 388 + .weak vector388, vector389, vector390, vector391 +#endif +#if PPC_NUM_VECTORS > 392 + .weak vector392, vector393, vector394, vector395 +#endif +#if PPC_NUM_VECTORS > 396 + .weak vector396, vector397, vector398, vector399 +#endif +#if PPC_NUM_VECTORS > 400 + .weak vector400, vector401, vector402, vector403 +#endif +#if PPC_NUM_VECTORS > 404 + .weak vector404, vector405, vector406, vector407 +#endif +#if PPC_NUM_VECTORS > 408 + .weak vector408, vector409, vector410, vector411 +#endif +#if PPC_NUM_VECTORS > 412 + .weak vector412, vector413, vector414, vector415 +#endif +#if PPC_NUM_VECTORS > 416 + .weak vector416, vector417, vector418, vector419 +#endif +#if PPC_NUM_VECTORS > 420 + .weak vector420, vector421, vector422, vector423 +#endif +#if PPC_NUM_VECTORS > 424 + .weak vector424, vector425, vector426, vector427 +#endif +#if PPC_NUM_VECTORS > 428 + .weak vector428, vector429, vector430, vector431 +#endif +#if PPC_NUM_VECTORS > 432 + .weak vector432, vector433, vector434, vector435 +#endif +#if PPC_NUM_VECTORS > 436 + .weak vector436, vector437, vector438, vector439 +#endif +#if PPC_NUM_VECTORS > 440 + .weak vector440, vector441, vector442, vector443 +#endif +#if PPC_NUM_VECTORS > 444 + .weak vector444, vector445, vector446, vector447 +#endif +#if PPC_NUM_VECTORS > 448 + .weak vector448, vector449, vector450, vector451 +#endif +#if PPC_NUM_VECTORS > 452 + .weak vector452, vector453, vector454, vector455 +#endif +#if PPC_NUM_VECTORS > 456 + .weak vector456, vector457, vector458, vector459 +#endif +#if PPC_NUM_VECTORS > 460 + .weak vector460, vector461, vector462, vector463 +#endif +#if PPC_NUM_VECTORS > 464 + .weak vector464, vector465, vector466, vector467 +#endif +#if PPC_NUM_VECTORS > 468 + .weak vector468, vector469, vector470, vector471 +#endif +#if PPC_NUM_VECTORS > 472 + .weak vector472, vector473, vector474, vector475 +#endif +#if PPC_NUM_VECTORS > 476 + .weak vector476, vector477, vector478, vector479 +#endif +#if PPC_NUM_VECTORS > 480 + .weak vector480, vector481, vector482, vector483 +#endif +#if PPC_NUM_VECTORS > 484 + .weak vector484, vector485, vector486, vector487 +#endif +#if PPC_NUM_VECTORS > 488 + .weak vector488, vector489, vector490, vector491 +#endif +#if PPC_NUM_VECTORS > 492 + .weak vector492, vector493, vector494, vector495 +#endif +#if PPC_NUM_VECTORS > 496 + .weak vector496, vector497, vector498, vector499 +#endif +#if PPC_NUM_VECTORS > 500 + .weak vector500, vector501, vector502, vector503 +#endif +#if PPC_NUM_VECTORS > 504 + .weak vector504, vector505, vector506, vector507 +#endif +#if PPC_NUM_VECTORS > 508 + .weak vector508, vector509, vector510, vector511 +#endif +#if PPC_NUM_VECTORS > 512 + .weak vector512, vector513, vector514, vector515 +#endif +#if PPC_NUM_VECTORS > 516 + .weak vector516, vector517, vector518, vector519 +#endif +#if PPC_NUM_VECTORS > 520 + .weak vector520, vector521, vector522, vector523 +#endif +#if PPC_NUM_VECTORS > 524 + .weak vector524, vector525, vector526, vector527 +#endif +#if PPC_NUM_VECTORS > 528 + .weak vector528, vector529, vector530, vector531 +#endif +#if PPC_NUM_VECTORS > 532 + .weak vector532, vector533, vector534, vector535 +#endif +#if PPC_NUM_VECTORS > 536 + .weak vector536, vector537, vector538, vector539 +#endif +#if PPC_NUM_VECTORS > 540 + .weak vector540, vector541, vector542, vector543 +#endif +#if PPC_NUM_VECTORS > 544 + .weak vector544, vector545, vector546, vector547 +#endif +#if PPC_NUM_VECTORS > 548 + .weak vector548, vector549, vector550, vector551 +#endif +#if PPC_NUM_VECTORS > 552 + .weak vector552, vector553, vector554, vector555 +#endif +#if PPC_NUM_VECTORS > 556 + .weak vector556, vector557, vector558, vector559 +#endif +#if PPC_NUM_VECTORS > 560 + .weak vector560, vector561, vector562, vector563 +#endif +#if PPC_NUM_VECTORS > 564 + .weak vector564, vector565, vector566, vector567 +#endif +#if PPC_NUM_VECTORS > 568 + .weak vector568, vector569, vector570, vector571 +#endif +#if PPC_NUM_VECTORS > 572 + .weak vector572, vector573, vector574, vector575 +#endif +#if PPC_NUM_VECTORS > 576 + .weak vector576, vector577, vector578, vector579 +#endif +#if PPC_NUM_VECTORS > 580 + .weak vector580, vector581, vector582, vector583 +#endif +#if PPC_NUM_VECTORS > 584 + .weak vector584, vector585, vector586, vector587 +#endif +#if PPC_NUM_VECTORS > 588 + .weak vector588, vector589, vector590, vector591 +#endif +#if PPC_NUM_VECTORS > 592 + .weak vector592, vector593, vector594, vector595 +#endif +#if PPC_NUM_VECTORS > 596 + .weak vector596, vector597, vector598, vector599 +#endif +#if PPC_NUM_VECTORS > 600 + .weak vector600, vector601, vector602, vector603 +#endif +#if PPC_NUM_VECTORS > 604 + .weak vector604, vector605, vector606, vector607 +#endif +#if PPC_NUM_VECTORS > 608 + .weak vector608, vector609, vector610, vector611 +#endif +#if PPC_NUM_VECTORS > 612 + .weak vector612, vector613, vector614, vector615 +#endif +#if PPC_NUM_VECTORS > 616 + .weak vector616, vector617, vector618, vector619 +#endif +#if PPC_NUM_VECTORS > 620 + .weak vector620, vector621, vector622, vector623 +#endif +#if PPC_NUM_VECTORS > 624 + .weak vector624, vector625, vector626, vector627 +#endif +#if PPC_NUM_VECTORS > 628 + .weak vector628, vector629, vector630, vector631 +#endif +#if PPC_NUM_VECTORS > 632 + .weak vector632, vector633, vector634, vector635 +#endif +#if PPC_NUM_VECTORS > 636 + .weak vector636, vector637, vector638, vector639 +#endif +#if PPC_NUM_VECTORS > 640 + .weak vector640, vector641, vector642, vector643 +#endif +#if PPC_NUM_VECTORS > 644 + .weak vector644, vector645, vector646, vector647 +#endif +#if PPC_NUM_VECTORS > 648 + .weak vector648, vector649, vector650, vector651 +#endif +#if PPC_NUM_VECTORS > 652 + .weak vector652, vector653, vector654, vector655 +#endif +#if PPC_NUM_VECTORS > 656 + .weak vector656, vector657, vector658, vector659 +#endif +#if PPC_NUM_VECTORS > 660 + .weak vector660, vector661, vector662, vector663 +#endif +#if PPC_NUM_VECTORS > 664 + .weak vector664, vector665, vector666, vector667 +#endif +#if PPC_NUM_VECTORS > 668 + .weak vector668, vector669, vector670, vector671 +#endif +#if PPC_NUM_VECTORS > 672 + .weak vector672, vector673, vector674, vector675 +#endif +#if PPC_NUM_VECTORS > 676 + .weak vector676, vector677, vector678, vector679 +#endif +#if PPC_NUM_VECTORS > 680 + .weak vector680, vector681, vector682, vector683 +#endif +#if PPC_NUM_VECTORS > 684 + .weak vector684, vector685, vector686, vector687 +#endif +#if PPC_NUM_VECTORS > 688 + .weak vector688, vector689, vector690, vector691 +#endif +#if PPC_NUM_VECTORS > 692 + .weak vector692, vector693, vector694, vector695 +#endif +#if PPC_NUM_VECTORS > 696 + .weak vector696, vector697, vector698, vector699 +#endif +#if PPC_NUM_VECTORS > 700 + .weak vector700, vector701, vector702, vector703 +#endif +#if PPC_NUM_VECTORS > 704 + .weak vector704, vector705, vector706, vector707 +#endif +#if PPC_NUM_VECTORS > 708 + .weak vector708, vector709, vector710, vector711 +#endif +#if PPC_NUM_VECTORS > 712 + .weak vector712, vector713, vector714, vector715 +#endif +#if PPC_NUM_VECTORS > 716 + .weak vector716, vector717, vector718, vector719 +#endif +#if PPC_NUM_VECTORS > 720 + .weak vector720, vector721, vector722, vector723 +#endif +#if PPC_NUM_VECTORS > 724 + .weak vector724, vector725, vector726, vector727 +#endif +#if PPC_NUM_VECTORS > 728 + .weak vector728, vector729, vector730, vector731 +#endif +#if PPC_NUM_VECTORS > 732 + .weak vector732, vector733, vector734, vector735 +#endif +#if PPC_NUM_VECTORS > 736 + .weak vector736, vector737, vector738, vector739 +#endif +#if PPC_NUM_VECTORS > 740 + .weak vector740, vector741, vector742, vector743 +#endif +#if PPC_NUM_VECTORS > 744 + .weak vector744, vector745, vector746, vector747 +#endif +#if PPC_NUM_VECTORS > 748 + .weak vector748, vector749, vector750, vector751 +#endif +#if PPC_NUM_VECTORS > 752 + .weak vector752, vector753, vector754, vector755 +#endif +#if PPC_NUM_VECTORS > 756 + .weak vector756, vector757, vector758, vector759 +#endif +#if PPC_NUM_VECTORS > 760 + .weak vector760, vector761, vector762, vector763 +#endif +#if PPC_NUM_VECTORS > 764 + .weak vector764, vector765, vector766, vector767 +#endif +#if PPC_NUM_VECTORS > 768 + .weak vector768, vector769, vector770, vector771 +#endif +#if PPC_NUM_VECTORS > 772 + .weak vector772, vector773, vector774, vector775 +#endif +#if PPC_NUM_VECTORS > 776 + .weak vector776, vector777, vector778, vector779 +#endif +#if PPC_NUM_VECTORS > 780 + .weak vector780, vector781, vector782, vector783 +#endif +#if PPC_NUM_VECTORS > 784 + .weak vector784, vector785, vector786, vector787 +#endif +#if PPC_NUM_VECTORS > 788 + .weak vector788, vector789, vector790, vector791 +#endif +#if PPC_NUM_VECTORS > 792 + .weak vector792, vector793, vector794, vector795 +#endif +#if PPC_NUM_VECTORS > 796 + .weak vector796, vector797, vector798, vector799 +#endif +#if PPC_NUM_VECTORS > 800 + .weak vector800, vector801, vector802, vector803 +#endif +#if PPC_NUM_VECTORS > 804 + .weak vector804, vector805, vector806, vector807 +#endif +#if PPC_NUM_VECTORS > 808 + .weak vector808, vector809, vector810, vector811 +#endif +#if PPC_NUM_VECTORS > 812 + .weak vector812, vector813, vector814, vector815 +#endif +#if PPC_NUM_VECTORS > 816 + .weak vector816, vector817, vector818, vector819 +#endif +#if PPC_NUM_VECTORS > 820 + .weak vector820, vector821, vector822, vector823 +#endif +#if PPC_NUM_VECTORS > 824 + .weak vector824, vector825, vector826, vector827 +#endif +#if PPC_NUM_VECTORS > 828 + .weak vector828, vector829, vector830, vector831 +#endif +#if PPC_NUM_VECTORS > 832 + .weak vector832, vector833, vector834, vector835 +#endif +#if PPC_NUM_VECTORS > 836 + .weak vector836, vector837, vector838, vector839 +#endif +#if PPC_NUM_VECTORS > 840 + .weak vector840, vector841, vector842, vector843 +#endif +#if PPC_NUM_VECTORS > 844 + .weak vector844, vector845, vector846, vector847 +#endif +#if PPC_NUM_VECTORS > 848 + .weak vector848, vector849, vector850, vector851 +#endif +#if PPC_NUM_VECTORS > 852 + .weak vector852, vector853, vector854, vector855 +#endif +#if PPC_NUM_VECTORS > 856 + .weak vector856, vector857, vector858, vector859 +#endif +#if PPC_NUM_VECTORS > 860 + .weak vector860, vector861, vector862, vector863 +#endif +#if PPC_NUM_VECTORS > 864 + .weak vector864, vector865, vector866, vector867 +#endif +#if PPC_NUM_VECTORS > 868 + .weak vector868, vector869, vector870, vector871 +#endif +#if PPC_NUM_VECTORS > 872 + .weak vector872, vector873, vector874, vector875 +#endif +#if PPC_NUM_VECTORS > 876 + .weak vector876, vector877, vector878, vector879 +#endif +#if PPC_NUM_VECTORS > 880 + .weak vector880, vector881, vector882, vector883 +#endif +#if PPC_NUM_VECTORS > 884 + .weak vector884, vector885, vector886, vector887 +#endif +#if PPC_NUM_VECTORS > 888 + .weak vector888, vector889, vector890, vector891 +#endif +#if PPC_NUM_VECTORS > 892 + .weak vector892, vector893, vector894, vector895 +#endif +#if PPC_NUM_VECTORS > 896 + .weak vector896, vector897, vector898, vector899 +#endif +#if PPC_NUM_VECTORS > 900 + .weak vector900, vector901, vector902, vector903 +#endif +#if PPC_NUM_VECTORS > 904 + .weak vector904, vector905, vector906, vector907 +#endif +#if PPC_NUM_VECTORS > 908 + .weak vector908, vector909, vector910, vector911 +#endif +#if PPC_NUM_VECTORS > 912 + .weak vector912, vector913, vector914, vector915 +#endif +#if PPC_NUM_VECTORS > 916 + .weak vector916, vector917, vector918, vector919 +#endif +#if PPC_NUM_VECTORS > 920 + .weak vector920, vector921, vector922, vector923 +#endif +#if PPC_NUM_VECTORS > 924 + .weak vector924, vector925, vector926, vector927 +#endif +#if PPC_NUM_VECTORS > 928 + .weak vector928, vector929, vector930, vector931 +#endif +#if PPC_NUM_VECTORS > 932 + .weak vector932, vector933, vector934, vector935 +#endif +#if PPC_NUM_VECTORS > 936 + .weak vector936, vector937, vector938, vector939 +#endif +#if PPC_NUM_VECTORS > 940 + .weak vector940, vector941, vector942, vector943 +#endif +#if PPC_NUM_VECTORS > 944 + .weak vector944, vector945, vector946, vector947 +#endif +#if PPC_NUM_VECTORS > 948 + .weak vector948, vector949, vector950, vector951 +#endif +#if PPC_NUM_VECTORS > 952 + .weak vector952, vector953, vector954, vector955 +#endif +#if PPC_NUM_VECTORS > 956 + .weak vector956, vector957, vector958, vector959 +#endif +#if PPC_NUM_VECTORS > 960 + .weak vector960, vector961, vector962, vector963 +#endif +#if PPC_NUM_VECTORS > 964 + .weak vector964, vector965, vector966, vector967 +#endif +#if PPC_NUM_VECTORS > 968 + .weak vector968, vector969, vector970, vector971 +#endif +#if PPC_NUM_VECTORS > 972 + .weak vector972, vector973, vector974, vector975 +#endif +#if PPC_NUM_VECTORS > 976 + .weak vector976, vector977, vector978, vector979 +#endif +#if PPC_NUM_VECTORS > 980 + .weak vector980, vector981, vector982, vector983 +#endif +#if PPC_NUM_VECTORS > 984 + .weak vector984, vector985, vector986, vector987 +#endif +#if PPC_NUM_VECTORS > 988 + .weak vector988, vector989, vector990, vector991 +#endif +#if PPC_NUM_VECTORS > 992 + .weak vector992, vector993, vector994, vector995 +#endif +#if PPC_NUM_VECTORS > 996 + .weak vector996, vector997, vector998, vector999 +#endif +#if PPC_NUM_VECTORS > 1000 + .weak vector1000, vector1001, vector1002, vector1003 +#endif +#if PPC_NUM_VECTORS > 1004 + .weak vector1004, vector1005, vector1006, vector1007 +#endif +#if PPC_NUM_VECTORS > 1008 + .weak vector1008, vector1009, vector1010, vector1011 +#endif +#if PPC_NUM_VECTORS > 1012 + .weak vector1012, vector1013, vector1014, vector1015 +#endif +#if PPC_NUM_VECTORS > 1016 + .weak vector1016, vector1017, vector1018, vector1019 +#endif +#if PPC_NUM_VECTORS > 1020 + .weak vector1020, vector1021, vector1022, vector1023 +#endif + +vector0: +vector1: +vector2: +vector3: +vector4: +vector5: +vector6: +vector7: +vector8: +vector9: +vector10: +vector11: +vector12: +vector13: +vector14: +vector15: +vector16: +vector17: +vector18: +vector19: +vector20: +vector21: +vector22: +vector23: +vector24: +vector25: +vector26: +vector27: +vector28: +vector29: +vector30: +vector31: +vector32: +vector33: +vector34: +vector35: +vector36: +vector37: +vector38: +vector39: +vector40: +vector41: +vector42: +vector43: +vector44: +vector45: +vector46: +vector47: +vector48: +vector49: +vector50: +vector51: +vector52: +vector53: +vector54: +vector55: +vector56: +vector57: +vector58: +vector59: +vector60: +vector61: +vector62: +vector63: +vector64: +vector65: +vector66: +vector67: +vector68: +vector69: +vector70: +vector71: +vector72: +vector73: +vector74: +vector75: +vector76: +vector77: +vector78: +vector79: +vector80: +vector81: +vector82: +vector83: +vector84: +vector85: +vector86: +vector87: +vector88: +vector89: +vector90: +vector91: +vector92: +vector93: +vector94: +vector95: +vector96: +vector97: +vector98: +vector99: +vector100: +vector101: +vector102: +vector103: +vector104: +vector105: +vector106: +vector107: +vector108: +vector109: +vector110: +vector111: +vector112: +vector113: +vector114: +vector115: +vector116: +vector117: +vector118: +vector119: +vector120: +vector121: +vector122: +vector123: +vector124: +vector125: +vector126: +vector127: +vector128: +vector129: +vector130: +vector131: +vector132: +vector133: +vector134: +vector135: +vector136: +vector137: +vector138: +vector139: +vector140: +vector141: +vector142: +vector143: +vector144: +vector145: +vector146: +vector147: +vector148: +vector149: +vector150: +vector151: +vector152: +vector153: +vector154: +vector155: +vector156: +vector157: +vector158: +vector159: +vector160: +vector161: +vector162: +vector163: +vector164: +vector165: +vector166: +vector167: +vector168: +vector169: +vector170: +vector171: +vector172: +vector173: +vector174: +vector175: +vector176: +vector177: +vector178: +vector179: +vector180: +vector181: +vector182: +vector183: +vector184: +vector185: +vector186: +vector187: +vector188: +vector189: +vector190: +vector191: +vector192: +vector193: +vector194: +vector195: +vector196: +vector197: +vector198: +vector199: +vector200: +vector201: +vector202: +vector203: +vector204: +vector205: +vector206: +vector207: +vector208: +vector209: +vector210: +vector211: +vector212: +vector213: +vector214: +vector215: +vector216: +vector217: +vector218: +vector219: +vector220: +vector221: +vector222: +vector223: +vector224: +vector225: +vector226: +vector227: +vector228: +vector229: +vector230: +vector231: +vector232: +vector233: +vector234: +vector235: +vector236: +vector237: +vector238: +vector239: +vector240: +vector241: +vector242: +vector243: +vector244: +vector245: +vector246: +vector247: +vector248: +vector249: +vector250: +vector251: +vector252: +vector253: +vector254: +vector255: +vector256: +vector257: +vector258: +vector259: +vector260: +vector261: +vector262: +vector263: +vector264: +vector265: +vector266: +vector267: +vector268: +vector269: +vector270: +vector271: +vector272: +vector273: +vector274: +vector275: +vector276: +vector277: +vector278: +vector279: +vector280: +vector281: +vector282: +vector283: +vector284: +vector285: +vector286: +vector287: +vector288: +vector289: +vector290: +vector291: +vector292: +vector293: +vector294: +vector295: +vector296: +vector297: +vector298: +vector299: +vector300: +vector301: +vector302: +vector303: +vector304: +vector305: +vector306: +vector307: +vector308: +vector309: +vector310: +vector311: +vector312: +vector313: +vector314: +vector315: +vector316: +vector317: +vector318: +vector319: +vector320: +vector321: +vector322: +vector323: +vector324: +vector325: +vector326: +vector327: +vector328: +vector329: +vector330: +vector331: +vector332: +vector333: +vector334: +vector335: +vector336: +vector337: +vector338: +vector339: +vector340: +vector341: +vector342: +vector343: +vector344: +vector345: +vector346: +vector347: +vector348: +vector349: +vector350: +vector351: +vector352: +vector353: +vector354: +vector355: +vector356: +vector357: +vector358: +vector359: +vector360: +vector361: +vector362: +vector363: +vector364: +vector365: +vector366: +vector367: +vector368: +vector369: +vector370: +vector371: +vector372: +vector373: +vector374: +vector375: +vector376: +vector377: +vector378: +vector379: +vector380: +vector381: +vector382: +vector383: +vector384: +vector385: +vector386: +vector387: +vector388: +vector389: +vector390: +vector391: +vector392: +vector393: +vector394: +vector395: +vector396: +vector397: +vector398: +vector399: +vector400: +vector401: +vector402: +vector403: +vector404: +vector405: +vector406: +vector407: +vector408: +vector409: +vector410: +vector411: +vector412: +vector413: +vector414: +vector415: +vector416: +vector417: +vector418: +vector419: +vector420: +vector421: +vector422: +vector423: +vector424: +vector425: +vector426: +vector427: +vector428: +vector429: +vector430: +vector431: +vector432: +vector433: +vector434: +vector435: +vector436: +vector437: +vector438: +vector439: +vector440: +vector441: +vector442: +vector443: +vector444: +vector445: +vector446: +vector447: +vector448: +vector449: +vector450: +vector451: +vector452: +vector453: +vector454: +vector455: +vector456: +vector457: +vector458: +vector459: +vector460: +vector461: +vector462: +vector463: +vector464: +vector465: +vector466: +vector467: +vector468: +vector469: +vector470: +vector471: +vector472: +vector473: +vector474: +vector475: +vector476: +vector477: +vector478: +vector479: +vector480: +vector481: +vector482: +vector483: +vector484: +vector485: +vector486: +vector487: +vector488: +vector489: +vector490: +vector491: +vector492: +vector493: +vector494: +vector495: +vector496: +vector497: +vector498: +vector499: +vector500: +vector501: +vector502: +vector503: +vector504: +vector505: +vector506: +vector507: +vector508: +vector509: +vector510: +vector511: +vector512: +vector513: +vector514: +vector515: +vector516: +vector517: +vector518: +vector519: +vector520: +vector521: +vector522: +vector523: +vector524: +vector525: +vector526: +vector527: +vector528: +vector529: +vector530: +vector531: +vector532: +vector533: +vector534: +vector535: +vector536: +vector537: +vector538: +vector539: +vector540: +vector541: +vector542: +vector543: +vector544: +vector545: +vector546: +vector547: +vector548: +vector549: +vector550: +vector551: +vector552: +vector553: +vector554: +vector555: +vector556: +vector557: +vector558: +vector559: +vector560: +vector561: +vector562: +vector563: +vector564: +vector565: +vector566: +vector567: +vector568: +vector569: +vector570: +vector571: +vector572: +vector573: +vector574: +vector575: +vector576: +vector577: +vector578: +vector579: +vector580: +vector581: +vector582: +vector583: +vector584: +vector585: +vector586: +vector587: +vector588: +vector589: +vector590: +vector591: +vector592: +vector593: +vector594: +vector595: +vector596: +vector597: +vector598: +vector599: +vector600: +vector601: +vector602: +vector603: +vector604: +vector605: +vector606: +vector607: +vector608: +vector609: +vector610: +vector611: +vector612: +vector613: +vector614: +vector615: +vector616: +vector617: +vector618: +vector619: +vector620: +vector621: +vector622: +vector623: +vector624: +vector625: +vector626: +vector627: +vector628: +vector629: +vector630: +vector631: +vector632: +vector633: +vector634: +vector635: +vector636: +vector637: +vector638: +vector639: +vector640: +vector641: +vector642: +vector643: +vector644: +vector645: +vector646: +vector647: +vector648: +vector649: +vector650: +vector651: +vector652: +vector653: +vector654: +vector655: +vector656: +vector657: +vector658: +vector659: +vector660: +vector661: +vector662: +vector663: +vector664: +vector665: +vector666: +vector667: +vector668: +vector669: +vector670: +vector671: +vector672: +vector673: +vector674: +vector675: +vector676: +vector677: +vector678: +vector679: +vector680: +vector681: +vector682: +vector683: +vector684: +vector685: +vector686: +vector687: +vector688: +vector689: +vector690: +vector691: +vector692: +vector693: +vector694: +vector695: +vector696: +vector697: +vector698: +vector699: +vector700: +vector701: +vector702: +vector703: +vector704: +vector705: +vector706: +vector707: +vector708: +vector709: +vector710: +vector711: +vector712: +vector713: +vector714: +vector715: +vector716: +vector717: +vector718: +vector719: +vector720: +vector721: +vector722: +vector723: +vector724: +vector725: +vector726: +vector727: +vector728: +vector729: +vector730: +vector731: +vector732: +vector733: +vector734: +vector735: +vector736: +vector737: +vector738: +vector739: +vector740: +vector741: +vector742: +vector743: +vector744: +vector745: +vector746: +vector747: +vector748: +vector749: +vector750: +vector751: +vector752: +vector753: +vector754: +vector755: +vector756: +vector757: +vector758: +vector759: +vector760: +vector761: +vector762: +vector763: +vector764: +vector765: +vector766: +vector767: +vector768: +vector769: +vector770: +vector771: +vector772: +vector773: +vector774: +vector775: +vector776: +vector777: +vector778: +vector779: +vector780: +vector781: +vector782: +vector783: +vector784: +vector785: +vector786: +vector787: +vector788: +vector789: +vector790: +vector791: +vector792: +vector793: +vector794: +vector795: +vector796: +vector797: +vector798: +vector799: +vector800: +vector801: +vector802: +vector803: +vector804: +vector805: +vector806: +vector807: +vector808: +vector809: +vector810: +vector811: +vector812: +vector813: +vector814: +vector815: +vector816: +vector817: +vector818: +vector819: +vector820: +vector821: +vector822: +vector823: +vector824: +vector825: +vector826: +vector827: +vector828: +vector829: +vector830: +vector831: +vector832: +vector833: +vector834: +vector835: +vector836: +vector837: +vector838: +vector839: +vector840: +vector841: +vector842: +vector843: +vector844: +vector845: +vector846: +vector847: +vector848: +vector849: +vector850: +vector851: +vector852: +vector853: +vector854: +vector855: +vector856: +vector857: +vector858: +vector859: +vector860: +vector861: +vector862: +vector863: +vector864: +vector865: +vector866: +vector867: +vector868: +vector869: +vector870: +vector871: +vector872: +vector873: +vector874: +vector875: +vector876: +vector877: +vector878: +vector879: +vector880: +vector881: +vector882: +vector883: +vector884: +vector885: +vector886: +vector887: +vector888: +vector889: +vector890: +vector891: +vector892: +vector893: +vector894: +vector895: +vector896: +vector897: +vector898: +vector899: +vector900: +vector901: +vector902: +vector903: +vector904: +vector905: +vector906: +vector907: +vector908: +vector909: +vector910: +vector911: +vector912: +vector913: +vector914: +vector915: +vector916: +vector917: +vector918: +vector919: +vector920: +vector921: +vector922: +vector923: +vector924: +vector925: +vector926: +vector927: +vector928: +vector929: +vector930: +vector931: +vector932: +vector933: +vector934: +vector935: +vector936: +vector937: +vector938: +vector939: +vector940: +vector941: +vector942: +vector943: +vector944: +vector945: +vector946: +vector947: +vector948: +vector949: +vector950: +vector951: +vector952: +vector953: +vector954: +vector955: +vector956: +vector957: +vector958: +vector959: +vector960: +vector961: +vector962: +vector963: +vector964: +vector965: +vector966: +vector967: +vector968: +vector969: +vector970: +vector971: +vector972: +vector973: +vector974: +vector975: +vector976: +vector977: +vector978: +vector979: +vector980: +vector981: +vector982: +vector983: +vector984: +vector985: +vector986: +vector987: +vector988: +vector989: +vector990: +vector991: +vector992: +vector993: +vector994: +vector995: +vector996: +vector997: +vector998: +vector999: +vector1000: +vector1001: +vector1002: +vector1003: +vector1004: +vector1005: +vector1006: +vector1007: +vector1008: +vector1009: +vector1010: +vector1011: +vector1012: +vector1013: +vector1014: +vector1015: +vector1016: +vector1017: +vector1018: +vector1019: +vector1020: +vector1021: +vector1022: +vector1023: + + .global _unhandled_irq +_unhandled_irq: + se_b _unhandled_irq + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/common/startup/e200/compilers/CW/vectors.h b/os/common/startup/e200/compilers/CW/vectors.h new file mode 100644 index 000000000..b07589d9c --- /dev/null +++ b/os/common/startup/e200/compilers/CW/vectors.h @@ -0,0 +1,81 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file vectors.h + * @brief ISR vector module header. + * + * @addtogroup PPC_CW_CORE + * @{ + */ + +#ifndef _VECTORS_H_ +#define _VECTORS_H_ + +#include "ppcparams.h" + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/* The following code is not processed when the file is included from an + asm module.*/ +#if !defined(_FROM_ASM_) + +#if !defined(__DOXYGEN__) +extern uint32_t _vectors[PPC_NUM_VECTORS]; +#endif + +#ifdef __cplusplus +extern "C" { +#endif + void _unhandled_irq(void); +#ifdef __cplusplus +} +#endif + +#endif /* !defined(_FROM_ASM_) */ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _VECTORS_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/compilers/CW/vectors.s b/os/common/startup/e200/compilers/CW/vectors.s new file mode 100644 index 000000000..00e8c1dfe --- /dev/null +++ b/os/common/startup/e200/compilers/CW/vectors.s @@ -0,0 +1,1580 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file vectors.s + * @brief SPC56x vectors table. + * + * @addtogroup PPC_CW_CORE + * @{ + */ + +#define _FROM_ASM_ +#include "ppcparams.h" + +#if defined(VECTORS_RENAMING) +#include "isrs.h" +#endif + +#if !defined(__DOXYGEN__) + + .global vector0, vector1, vector2, vector3 +#if PPC_NUM_VECTORS > 4 + .global vector4, vector5, vector6, vector7 +#endif +#if PPC_NUM_VECTORS > 8 + .global vector8, vector9, vector10, vector11 +#endif +#if PPC_NUM_VECTORS > 12 + .global vector12, vector13, vector14, vector15 +#endif +#if PPC_NUM_VECTORS > 16 + .global vector16, vector17, vector18, vector19 +#endif +#if PPC_NUM_VECTORS > 20 + .global vector20, vector21, vector22, vector23 +#endif +#if PPC_NUM_VECTORS > 24 + .global vector24, vector25, vector26, vector27 +#endif +#if PPC_NUM_VECTORS > 28 + .global vector28, vector29, vector30, vector31 +#endif +#if PPC_NUM_VECTORS > 32 + .global vector32, vector33, vector34, vector35 +#endif +#if PPC_NUM_VECTORS > 36 + .global vector36, vector37, vector38, vector39 +#endif +#if PPC_NUM_VECTORS > 40 + .global vector40, vector41, vector42, vector43 +#endif +#if PPC_NUM_VECTORS > 44 + .global vector44, vector45, vector46, vector47 +#endif +#if PPC_NUM_VECTORS > 48 + .global vector48, vector49, vector50, vector51 +#endif +#if PPC_NUM_VECTORS > 52 + .global vector52, vector53, vector54, vector55 +#endif +#if PPC_NUM_VECTORS > 56 + .global vector56, vector57, vector58, vector59 +#endif +#if PPC_NUM_VECTORS > 60 + .global vector60, vector61, vector62, vector63 +#endif +#if PPC_NUM_VECTORS > 64 + .global vector64, vector65, vector66, vector67 +#endif +#if PPC_NUM_VECTORS > 68 + .global vector68, vector69, vector70, vector71 +#endif +#if PPC_NUM_VECTORS > 72 + .global vector72, vector73, vector74, vector75 +#endif +#if PPC_NUM_VECTORS > 76 + .global vector76, vector77, vector78, vector79 +#endif +#if PPC_NUM_VECTORS > 80 + .global vector80, vector81, vector82, vector83 +#endif +#if PPC_NUM_VECTORS > 84 + .global vector84, vector85, vector86, vector87 +#endif +#if PPC_NUM_VECTORS > 88 + .global vector88, vector89, vector90, vector91 +#endif +#if PPC_NUM_VECTORS > 92 + .global vector92, vector93, vector94, vector95 +#endif +#if PPC_NUM_VECTORS > 96 + .global vector96, vector97, vector98, vector99 +#endif +#if PPC_NUM_VECTORS > 100 + .global vector100, vector101, vector102, vector103 +#endif +#if PPC_NUM_VECTORS > 104 + .global vector104, vector105, vector106, vector107 +#endif +#if PPC_NUM_VECTORS > 108 + .global vector108, vector109, vector110, vector111 +#endif +#if PPC_NUM_VECTORS > 112 + .global vector112, vector113, vector114, vector115 +#endif +#if PPC_NUM_VECTORS > 116 + .global vector116, vector117, vector118, vector119 +#endif +#if PPC_NUM_VECTORS > 120 + .global vector120, vector121, vector122, vector123 +#endif +#if PPC_NUM_VECTORS > 124 + .global vector124, vector125, vector126, vector127 +#endif +#if PPC_NUM_VECTORS > 128 + .global vector128, vector129, vector130, vector131 +#endif +#if PPC_NUM_VECTORS > 132 + .global vector132, vector133, vector134, vector135 +#endif +#if PPC_NUM_VECTORS > 136 + .global vector136, vector137, vector138, vector139 +#endif +#if PPC_NUM_VECTORS > 140 + .global vector140, vector141, vector142, vector143 +#endif +#if PPC_NUM_VECTORS > 144 + .global vector144, vector145, vector146, vector147 +#endif +#if PPC_NUM_VECTORS > 148 + .global vector148, vector149, vector150, vector151 +#endif +#if PPC_NUM_VECTORS > 152 + .global vector152, vector153, vector154, vector155 +#endif +#if PPC_NUM_VECTORS > 156 + .global vector156, vector157, vector158, vector159 +#endif +#if PPC_NUM_VECTORS > 160 + .global vector160, vector161, vector162, vector163 +#endif +#if PPC_NUM_VECTORS > 164 + .global vector164, vector165, vector166, vector167 +#endif +#if PPC_NUM_VECTORS > 168 + .global vector168, vector169, vector170, vector171 +#endif +#if PPC_NUM_VECTORS > 172 + .global vector172, vector173, vector174, vector175 +#endif +#if PPC_NUM_VECTORS > 176 + .global vector176, vector177, vector178, vector179 +#endif +#if PPC_NUM_VECTORS > 180 + .global vector180, vector181, vector182, vector183 +#endif +#if PPC_NUM_VECTORS > 184 + .global vector184, vector185, vector186, vector187 +#endif +#if PPC_NUM_VECTORS > 188 + .global vector188, vector189, vector190, vector191 +#endif +#if PPC_NUM_VECTORS > 192 + .global vector192, vector193, vector194, vector195 +#endif +#if PPC_NUM_VECTORS > 196 + .global vector196, vector197, vector198, vector199 +#endif +#if PPC_NUM_VECTORS > 200 + .global vector200, vector201, vector202, vector203 +#endif +#if PPC_NUM_VECTORS > 204 + .global vector204, vector205, vector206, vector207 +#endif +#if PPC_NUM_VECTORS > 208 + .global vector208, vector209, vector210, vector211 +#endif +#if PPC_NUM_VECTORS > 212 + .global vector212, vector213, vector214, vector215 +#endif +#if PPC_NUM_VECTORS > 216 + .global vector216, vector217, vector218, vector219 +#endif +#if PPC_NUM_VECTORS > 220 + .global vector220, vector221, vector222, vector223 +#endif +#if PPC_NUM_VECTORS > 224 + .global vector224, vector225, vector226, vector227 +#endif +#if PPC_NUM_VECTORS > 228 + .global vector228, vector229, vector230, vector231 +#endif +#if PPC_NUM_VECTORS > 232 + .global vector232, vector233, vector234, vector235 +#endif +#if PPC_NUM_VECTORS > 236 + .global vector236, vector237, vector238, vector239 +#endif +#if PPC_NUM_VECTORS > 240 + .global vector240, vector241, vector242, vector243 +#endif +#if PPC_NUM_VECTORS > 244 + .global vector244, vector245, vector246, vector247 +#endif +#if PPC_NUM_VECTORS > 248 + .global vector248, vector249, vector250, vector251 +#endif +#if PPC_NUM_VECTORS > 252 + .global vector252, vector253, vector254, vector255 +#endif +#if PPC_NUM_VECTORS > 256 + .global vector256, vector257, vector258, vector259 +#endif +#if PPC_NUM_VECTORS > 260 + .global vector260, vector261, vector262, vector263 +#endif +#if PPC_NUM_VECTORS > 264 + .global vector264, vector265, vector266, vector267 +#endif +#if PPC_NUM_VECTORS > 268 + .global vector268, vector269, vector270, vector271 +#endif +#if PPC_NUM_VECTORS > 272 + .global vector272, vector273, vector274, vector275 +#endif +#if PPC_NUM_VECTORS > 276 + .global vector276, vector277, vector278, vector279 +#endif +#if PPC_NUM_VECTORS > 280 + .global vector280, vector281, vector282, vector283 +#endif +#if PPC_NUM_VECTORS > 284 + .global vector284, vector285, vector286, vector287 +#endif +#if PPC_NUM_VECTORS > 288 + .global vector288, vector289, vector290, vector291 +#endif +#if PPC_NUM_VECTORS > 292 + .global vector292, vector293, vector294, vector295 +#endif +#if PPC_NUM_VECTORS > 296 + .global vector296, vector297, vector298, vector299 +#endif +#if PPC_NUM_VECTORS > 300 + .global vector300, vector301, vector302, vector303 +#endif +#if PPC_NUM_VECTORS > 304 + .global vector304, vector305, vector306, vector307 +#endif +#if PPC_NUM_VECTORS > 308 + .global vector308, vector309, vector310, vector311 +#endif +#if PPC_NUM_VECTORS > 312 + .global vector312, vector313, vector314, vector315 +#endif +#if PPC_NUM_VECTORS > 316 + .global vector316, vector317, vector318, vector319 +#endif +#if PPC_NUM_VECTORS > 320 + .global vector320, vector321, vector322, vector323 +#endif +#if PPC_NUM_VECTORS > 324 + .global vector324, vector325, vector326, vector327 +#endif +#if PPC_NUM_VECTORS > 328 + .global vector328, vector329, vector330, vector331 +#endif +#if PPC_NUM_VECTORS > 332 + .global vector332, vector333, vector334, vector335 +#endif +#if PPC_NUM_VECTORS > 336 + .global vector336, vector337, vector338, vector339 +#endif +#if PPC_NUM_VECTORS > 340 + .global vector340, vector341, vector342, vector343 +#endif +#if PPC_NUM_VECTORS > 344 + .global vector344, vector345, vector346, vector347 +#endif +#if PPC_NUM_VECTORS > 348 + .global vector348, vector349, vector350, vector351 +#endif +#if PPC_NUM_VECTORS > 352 + .global vector352, vector353, vector354, vector355 +#endif +#if PPC_NUM_VECTORS > 356 + .global vector356, vector357, vector358, vector359 +#endif +#if PPC_NUM_VECTORS > 360 + .global vector360, vector361, vector362, vector363 +#endif +#if PPC_NUM_VECTORS > 364 + .global vector364, vector365, vector366, vector367 +#endif +#if PPC_NUM_VECTORS > 368 + .global vector368, vector369, vector370, vector371 +#endif +#if PPC_NUM_VECTORS > 372 + .global vector372, vector373, vector374, vector375 +#endif +#if PPC_NUM_VECTORS > 376 + .global vector376, vector377, vector378, vector379 +#endif +#if PPC_NUM_VECTORS > 380 + .global vector380, vector381, vector382, vector383 +#endif +#if PPC_NUM_VECTORS > 384 + .global vector384, vector385, vector386, vector387 +#endif +#if PPC_NUM_VECTORS > 388 + .global vector388, vector389, vector390, vector391 +#endif +#if PPC_NUM_VECTORS > 392 + .global vector392, vector393, vector394, vector395 +#endif +#if PPC_NUM_VECTORS > 396 + .global vector396, vector397, vector398, vector399 +#endif +#if PPC_NUM_VECTORS > 400 + .global vector400, vector401, vector402, vector403 +#endif +#if PPC_NUM_VECTORS > 404 + .global vector404, vector405, vector406, vector407 +#endif +#if PPC_NUM_VECTORS > 408 + .global vector408, vector409, vector410, vector411 +#endif +#if PPC_NUM_VECTORS > 412 + .global vector412, vector413, vector414, vector415 +#endif +#if PPC_NUM_VECTORS > 416 + .global vector416, vector417, vector418, vector419 +#endif +#if PPC_NUM_VECTORS > 420 + .global vector420, vector421, vector422, vector423 +#endif +#if PPC_NUM_VECTORS > 424 + .global vector424, vector425, vector426, vector427 +#endif +#if PPC_NUM_VECTORS > 428 + .global vector428, vector429, vector430, vector431 +#endif +#if PPC_NUM_VECTORS > 432 + .global vector432, vector433, vector434, vector435 +#endif +#if PPC_NUM_VECTORS > 436 + .global vector436, vector437, vector438, vector439 +#endif +#if PPC_NUM_VECTORS > 440 + .global vector440, vector441, vector442, vector443 +#endif +#if PPC_NUM_VECTORS > 444 + .global vector444, vector445, vector446, vector447 +#endif +#if PPC_NUM_VECTORS > 448 + .global vector448, vector449, vector450, vector451 +#endif +#if PPC_NUM_VECTORS > 452 + .global vector452, vector453, vector454, vector455 +#endif +#if PPC_NUM_VECTORS > 456 + .global vector456, vector457, vector458, vector459 +#endif +#if PPC_NUM_VECTORS > 460 + .global vector460, vector461, vector462, vector463 +#endif +#if PPC_NUM_VECTORS > 464 + .global vector464, vector465, vector466, vector467 +#endif +#if PPC_NUM_VECTORS > 468 + .global vector468, vector469, vector470, vector471 +#endif +#if PPC_NUM_VECTORS > 472 + .global vector472, vector473, vector474, vector475 +#endif +#if PPC_NUM_VECTORS > 476 + .global vector476, vector477, vector478, vector479 +#endif +#if PPC_NUM_VECTORS > 480 + .global vector480, vector481, vector482, vector483 +#endif +#if PPC_NUM_VECTORS > 484 + .global vector484, vector485, vector486, vector487 +#endif +#if PPC_NUM_VECTORS > 488 + .global vector488, vector489, vector490, vector491 +#endif +#if PPC_NUM_VECTORS > 492 + .global vector492, vector493, vector494, vector495 +#endif +#if PPC_NUM_VECTORS > 496 + .global vector496, vector497, vector498, vector499 +#endif +#if PPC_NUM_VECTORS > 500 + .global vector500, vector501, vector502, vector503 +#endif +#if PPC_NUM_VECTORS > 504 + .global vector504, vector505, vector506, vector507 +#endif +#if PPC_NUM_VECTORS > 508 + .global vector508, vector509, vector510, vector511 +#endif +#if PPC_NUM_VECTORS > 512 + .global vector512, vector513, vector514, vector515 +#endif +#if PPC_NUM_VECTORS > 516 + .global vector516, vector517, vector518, vector519 +#endif +#if PPC_NUM_VECTORS > 520 + .global vector520, vector521, vector522, vector523 +#endif +#if PPC_NUM_VECTORS > 524 + .global vector524, vector525, vector526, vector527 +#endif +#if PPC_NUM_VECTORS > 528 + .global vector528, vector529, vector530, vector531 +#endif +#if PPC_NUM_VECTORS > 532 + .global vector532, vector533, vector534, vector535 +#endif +#if PPC_NUM_VECTORS > 536 + .global vector536, vector537, vector538, vector539 +#endif +#if PPC_NUM_VECTORS > 540 + .global vector540, vector541, vector542, vector543 +#endif +#if PPC_NUM_VECTORS > 544 + .global vector544, vector545, vector546, vector547 +#endif +#if PPC_NUM_VECTORS > 548 + .global vector548, vector549, vector550, vector551 +#endif +#if PPC_NUM_VECTORS > 552 + .global vector552, vector553, vector554, vector555 +#endif +#if PPC_NUM_VECTORS > 556 + .global vector556, vector557, vector558, vector559 +#endif +#if PPC_NUM_VECTORS > 560 + .global vector560, vector561, vector562, vector563 +#endif +#if PPC_NUM_VECTORS > 564 + .global vector564, vector565, vector566, vector567 +#endif +#if PPC_NUM_VECTORS > 568 + .global vector568, vector569, vector570, vector571 +#endif +#if PPC_NUM_VECTORS > 572 + .global vector572, vector573, vector574, vector575 +#endif +#if PPC_NUM_VECTORS > 576 + .global vector576, vector577, vector578, vector579 +#endif +#if PPC_NUM_VECTORS > 580 + .global vector580, vector581, vector582, vector583 +#endif +#if PPC_NUM_VECTORS > 584 + .global vector584, vector585, vector586, vector587 +#endif +#if PPC_NUM_VECTORS > 588 + .global vector588, vector589, vector590, vector591 +#endif +#if PPC_NUM_VECTORS > 592 + .global vector592, vector593, vector594, vector595 +#endif +#if PPC_NUM_VECTORS > 596 + .global vector596, vector597, vector598, vector599 +#endif +#if PPC_NUM_VECTORS > 600 + .global vector600, vector601, vector602, vector603 +#endif +#if PPC_NUM_VECTORS > 604 + .global vector604, vector605, vector606, vector607 +#endif +#if PPC_NUM_VECTORS > 608 + .global vector608, vector609, vector610, vector611 +#endif +#if PPC_NUM_VECTORS > 612 + .global vector612, vector613, vector614, vector615 +#endif +#if PPC_NUM_VECTORS > 616 + .global vector616, vector617, vector618, vector619 +#endif +#if PPC_NUM_VECTORS > 620 + .global vector620, vector621, vector622, vector623 +#endif +#if PPC_NUM_VECTORS > 624 + .global vector624, vector625, vector626, vector627 +#endif +#if PPC_NUM_VECTORS > 628 + .global vector628, vector629, vector630, vector631 +#endif +#if PPC_NUM_VECTORS > 632 + .global vector632, vector633, vector634, vector635 +#endif +#if PPC_NUM_VECTORS > 636 + .global vector636, vector637, vector638, vector639 +#endif +#if PPC_NUM_VECTORS > 640 + .global vector640, vector641, vector642, vector643 +#endif +#if PPC_NUM_VECTORS > 644 + .global vector644, vector645, vector646, vector647 +#endif +#if PPC_NUM_VECTORS > 648 + .global vector648, vector649, vector650, vector651 +#endif +#if PPC_NUM_VECTORS > 652 + .global vector652, vector653, vector654, vector655 +#endif +#if PPC_NUM_VECTORS > 656 + .global vector656, vector657, vector658, vector659 +#endif +#if PPC_NUM_VECTORS > 660 + .global vector660, vector661, vector662, vector663 +#endif +#if PPC_NUM_VECTORS > 664 + .global vector664, vector665, vector666, vector667 +#endif +#if PPC_NUM_VECTORS > 668 + .global vector668, vector669, vector670, vector671 +#endif +#if PPC_NUM_VECTORS > 672 + .global vector672, vector673, vector674, vector675 +#endif +#if PPC_NUM_VECTORS > 676 + .global vector676, vector677, vector678, vector679 +#endif +#if PPC_NUM_VECTORS > 680 + .global vector680, vector681, vector682, vector683 +#endif +#if PPC_NUM_VECTORS > 684 + .global vector684, vector685, vector686, vector687 +#endif +#if PPC_NUM_VECTORS > 688 + .global vector688, vector689, vector690, vector691 +#endif +#if PPC_NUM_VECTORS > 692 + .global vector692, vector693, vector694, vector695 +#endif +#if PPC_NUM_VECTORS > 696 + .global vector696, vector697, vector698, vector699 +#endif +#if PPC_NUM_VECTORS > 700 + .global vector700, vector701, vector702, vector703 +#endif +#if PPC_NUM_VECTORS > 704 + .global vector704, vector705, vector706, vector707 +#endif +#if PPC_NUM_VECTORS > 708 + .global vector708, vector709, vector710, vector711 +#endif +#if PPC_NUM_VECTORS > 712 + .global vector712, vector713, vector714, vector715 +#endif +#if PPC_NUM_VECTORS > 716 + .global vector716, vector717, vector718, vector719 +#endif +#if PPC_NUM_VECTORS > 720 + .global vector720, vector721, vector722, vector723 +#endif +#if PPC_NUM_VECTORS > 724 + .global vector724, vector725, vector726, vector727 +#endif +#if PPC_NUM_VECTORS > 728 + .global vector728, vector729, vector730, vector731 +#endif +#if PPC_NUM_VECTORS > 732 + .global vector732, vector733, vector734, vector735 +#endif +#if PPC_NUM_VECTORS > 736 + .global vector736, vector737, vector738, vector739 +#endif +#if PPC_NUM_VECTORS > 740 + .global vector740, vector741, vector742, vector743 +#endif +#if PPC_NUM_VECTORS > 744 + .global vector744, vector745, vector746, vector747 +#endif +#if PPC_NUM_VECTORS > 748 + .global vector748, vector749, vector750, vector751 +#endif +#if PPC_NUM_VECTORS > 752 + .global vector752, vector753, vector754, vector755 +#endif +#if PPC_NUM_VECTORS > 756 + .global vector756, vector757, vector758, vector759 +#endif +#if PPC_NUM_VECTORS > 760 + .global vector760, vector761, vector762, vector763 +#endif +#if PPC_NUM_VECTORS > 764 + .global vector764, vector765, vector766, vector767 +#endif +#if PPC_NUM_VECTORS > 768 + .global vector768, vector769, vector770, vector771 +#endif +#if PPC_NUM_VECTORS > 772 + .global vector772, vector773, vector774, vector775 +#endif +#if PPC_NUM_VECTORS > 776 + .global vector776, vector777, vector778, vector779 +#endif +#if PPC_NUM_VECTORS > 780 + .global vector780, vector781, vector782, vector783 +#endif +#if PPC_NUM_VECTORS > 784 + .global vector784, vector785, vector786, vector787 +#endif +#if PPC_NUM_VECTORS > 788 + .global vector788, vector789, vector790, vector791 +#endif +#if PPC_NUM_VECTORS > 792 + .global vector792, vector793, vector794, vector795 +#endif +#if PPC_NUM_VECTORS > 796 + .global vector796, vector797, vector798, vector799 +#endif +#if PPC_NUM_VECTORS > 800 + .global vector800, vector801, vector802, vector803 +#endif +#if PPC_NUM_VECTORS > 804 + .global vector804, vector805, vector806, vector807 +#endif +#if PPC_NUM_VECTORS > 808 + .global vector808, vector809, vector810, vector811 +#endif +#if PPC_NUM_VECTORS > 812 + .global vector812, vector813, vector814, vector815 +#endif +#if PPC_NUM_VECTORS > 816 + .global vector816, vector817, vector818, vector819 +#endif +#if PPC_NUM_VECTORS > 820 + .global vector820, vector821, vector822, vector823 +#endif +#if PPC_NUM_VECTORS > 824 + .global vector824, vector825, vector826, vector827 +#endif +#if PPC_NUM_VECTORS > 828 + .global vector828, vector829, vector830, vector831 +#endif +#if PPC_NUM_VECTORS > 832 + .global vector832, vector833, vector834, vector835 +#endif +#if PPC_NUM_VECTORS > 836 + .global vector836, vector837, vector838, vector839 +#endif +#if PPC_NUM_VECTORS > 840 + .global vector840, vector841, vector842, vector843 +#endif +#if PPC_NUM_VECTORS > 844 + .global vector844, vector845, vector846, vector847 +#endif +#if PPC_NUM_VECTORS > 848 + .global vector848, vector849, vector850, vector851 +#endif +#if PPC_NUM_VECTORS > 852 + .global vector852, vector853, vector854, vector855 +#endif +#if PPC_NUM_VECTORS > 856 + .global vector856, vector857, vector858, vector859 +#endif +#if PPC_NUM_VECTORS > 860 + .global vector860, vector861, vector862, vector863 +#endif +#if PPC_NUM_VECTORS > 864 + .global vector864, vector865, vector866, vector867 +#endif +#if PPC_NUM_VECTORS > 868 + .global vector868, vector869, vector870, vector871 +#endif +#if PPC_NUM_VECTORS > 872 + .global vector872, vector873, vector874, vector875 +#endif +#if PPC_NUM_VECTORS > 876 + .global vector876, vector877, vector878, vector879 +#endif +#if PPC_NUM_VECTORS > 880 + .global vector880, vector881, vector882, vector883 +#endif +#if PPC_NUM_VECTORS > 884 + .global vector884, vector885, vector886, vector887 +#endif +#if PPC_NUM_VECTORS > 888 + .global vector888, vector889, vector890, vector891 +#endif +#if PPC_NUM_VECTORS > 892 + .global vector892, vector893, vector894, vector895 +#endif +#if PPC_NUM_VECTORS > 896 + .global vector896, vector897, vector898, vector899 +#endif +#if PPC_NUM_VECTORS > 900 + .global vector900, vector901, vector902, vector903 +#endif +#if PPC_NUM_VECTORS > 904 + .global vector904, vector905, vector906, vector907 +#endif +#if PPC_NUM_VECTORS > 908 + .global vector908, vector909, vector910, vector911 +#endif +#if PPC_NUM_VECTORS > 912 + .global vector912, vector913, vector914, vector915 +#endif +#if PPC_NUM_VECTORS > 916 + .global vector916, vector917, vector918, vector919 +#endif +#if PPC_NUM_VECTORS > 920 + .global vector920, vector921, vector922, vector923 +#endif +#if PPC_NUM_VECTORS > 924 + .global vector924, vector925, vector926, vector927 +#endif +#if PPC_NUM_VECTORS > 928 + .global vector928, vector929, vector930, vector931 +#endif +#if PPC_NUM_VECTORS > 932 + .global vector932, vector933, vector934, vector935 +#endif +#if PPC_NUM_VECTORS > 936 + .global vector936, vector937, vector938, vector939 +#endif +#if PPC_NUM_VECTORS > 940 + .global vector940, vector941, vector942, vector943 +#endif +#if PPC_NUM_VECTORS > 944 + .global vector944, vector945, vector946, vector947 +#endif +#if PPC_NUM_VECTORS > 948 + .global vector948, vector949, vector950, vector951 +#endif +#if PPC_NUM_VECTORS > 952 + .global vector952, vector953, vector954, vector955 +#endif +#if PPC_NUM_VECTORS > 956 + .global vector956, vector957, vector958, vector959 +#endif +#if PPC_NUM_VECTORS > 960 + .global vector960, vector961, vector962, vector963 +#endif +#if PPC_NUM_VECTORS > 964 + .global vector964, vector965, vector966, vector967 +#endif +#if PPC_NUM_VECTORS > 968 + .global vector968, vector969, vector970, vector971 +#endif +#if PPC_NUM_VECTORS > 972 + .global vector972, vector973, vector974, vector975 +#endif +#if PPC_NUM_VECTORS > 976 + .global vector976, vector977, vector978, vector979 +#endif +#if PPC_NUM_VECTORS > 980 + .global vector980, vector981, vector982, vector983 +#endif +#if PPC_NUM_VECTORS > 984 + .global vector984, vector985, vector986, vector987 +#endif +#if PPC_NUM_VECTORS > 988 + .global vector988, vector989, vector990, vector991 +#endif +#if PPC_NUM_VECTORS > 992 + .global vector992, vector993, vector994, vector995 +#endif +#if PPC_NUM_VECTORS > 996 + .global vector996, vector997, vector998, vector999 +#endif +#if PPC_NUM_VECTORS > 1000 + .global vector1000, vector1001, vector1002, vector1003 +#endif +#if PPC_NUM_VECTORS > 1004 + .global vector1004, vector1005, vector1006, vector1007 +#endif +#if PPC_NUM_VECTORS > 1008 + .global vector1008, vector1009, vector1010, vector1011 +#endif +#if PPC_NUM_VECTORS > 1012 + .global vector1012, vector1013, vector1014, vector1015 +#endif +#if PPC_NUM_VECTORS > 1016 + .global vector1016, vector1017, vector1018, vector1019 +#endif +#if PPC_NUM_VECTORS > 1020 + .global vector1020, vector1021, vector1022, vector1023 +#endif + + /* Software vectors table. The vectors are accessed from the IVOR4 + handler only. In order to declare an interrupt handler just create + a function withe the same name of a vector, the symbol will + override the weak symbol declared here.*/ + .section .vectors + .globl _vectors +_vectors: + .long vector0, vector1, vector2, vector3 +#if PPC_NUM_VECTORS > 4 + .long vector4, vector5, vector6, vector7 +#endif +#if PPC_NUM_VECTORS > 8 + .long vector8, vector9, vector10, vector11 +#endif +#if PPC_NUM_VECTORS > 12 + .long vector12, vector13, vector14, vector15 +#endif +#if PPC_NUM_VECTORS > 16 + .long vector16, vector17, vector18, vector19 +#endif +#if PPC_NUM_VECTORS > 20 + .long vector20, vector21, vector22, vector23 +#endif +#if PPC_NUM_VECTORS > 24 + .long vector24, vector25, vector26, vector27 +#endif +#if PPC_NUM_VECTORS > 28 + .long vector28, vector29, vector30, vector31 +#endif +#if PPC_NUM_VECTORS > 32 + .long vector32, vector33, vector34, vector35 +#endif +#if PPC_NUM_VECTORS > 36 + .long vector36, vector37, vector38, vector39 +#endif +#if PPC_NUM_VECTORS > 40 + .long vector40, vector41, vector42, vector43 +#endif +#if PPC_NUM_VECTORS > 44 + .long vector44, vector45, vector46, vector47 +#endif +#if PPC_NUM_VECTORS > 48 + .long vector48, vector49, vector50, vector51 +#endif +#if PPC_NUM_VECTORS > 52 + .long vector52, vector53, vector54, vector55 +#endif +#if PPC_NUM_VECTORS > 56 + .long vector56, vector57, vector58, vector59 +#endif +#if PPC_NUM_VECTORS > 60 + .long vector60, vector61, vector62, vector63 +#endif +#if PPC_NUM_VECTORS > 64 + .long vector64, vector65, vector66, vector67 +#endif +#if PPC_NUM_VECTORS > 68 + .long vector68, vector69, vector70, vector71 +#endif +#if PPC_NUM_VECTORS > 72 + .long vector72, vector73, vector74, vector75 +#endif +#if PPC_NUM_VECTORS > 76 + .long vector76, vector77, vector78, vector79 +#endif +#if PPC_NUM_VECTORS > 80 + .long vector80, vector81, vector82, vector83 +#endif +#if PPC_NUM_VECTORS > 84 + .long vector84, vector85, vector86, vector87 +#endif +#if PPC_NUM_VECTORS > 88 + .long vector88, vector89, vector90, vector91 +#endif +#if PPC_NUM_VECTORS > 92 + .long vector92, vector93, vector94, vector95 +#endif +#if PPC_NUM_VECTORS > 96 + .long vector96, vector97, vector98, vector99 +#endif +#if PPC_NUM_VECTORS > 100 + .long vector100, vector101, vector102, vector103 +#endif +#if PPC_NUM_VECTORS > 104 + .long vector104, vector105, vector106, vector107 +#endif +#if PPC_NUM_VECTORS > 108 + .long vector108, vector109, vector110, vector111 +#endif +#if PPC_NUM_VECTORS > 112 + .long vector112, vector113, vector114, vector115 +#endif +#if PPC_NUM_VECTORS > 116 + .long vector116, vector117, vector118, vector119 +#endif +#if PPC_NUM_VECTORS > 120 + .long vector120, vector121, vector122, vector123 +#endif +#if PPC_NUM_VECTORS > 124 + .long vector124, vector125, vector126, vector127 +#endif +#if PPC_NUM_VECTORS > 128 + .long vector128, vector129, vector130, vector131 +#endif +#if PPC_NUM_VECTORS > 132 + .long vector132, vector133, vector134, vector135 +#endif +#if PPC_NUM_VECTORS > 136 + .long vector136, vector137, vector138, vector139 +#endif +#if PPC_NUM_VECTORS > 140 + .long vector140, vector141, vector142, vector143 +#endif +#if PPC_NUM_VECTORS > 144 + .long vector144, vector145, vector146, vector147 +#endif +#if PPC_NUM_VECTORS > 148 + .long vector148, vector149, vector150, vector151 +#endif +#if PPC_NUM_VECTORS > 152 + .long vector152, vector153, vector154, vector155 +#endif +#if PPC_NUM_VECTORS > 156 + .long vector156, vector157, vector158, vector159 +#endif +#if PPC_NUM_VECTORS > 160 + .long vector160, vector161, vector162, vector163 +#endif +#if PPC_NUM_VECTORS > 164 + .long vector164, vector165, vector166, vector167 +#endif +#if PPC_NUM_VECTORS > 168 + .long vector168, vector169, vector170, vector171 +#endif +#if PPC_NUM_VECTORS > 172 + .long vector172, vector173, vector174, vector175 +#endif +#if PPC_NUM_VECTORS > 176 + .long vector176, vector177, vector178, vector179 +#endif +#if PPC_NUM_VECTORS > 180 + .long vector180, vector181, vector182, vector183 +#endif +#if PPC_NUM_VECTORS > 184 + .long vector184, vector185, vector186, vector187 +#endif +#if PPC_NUM_VECTORS > 188 + .long vector188, vector189, vector190, vector191 +#endif +#if PPC_NUM_VECTORS > 192 + .long vector192, vector193, vector194, vector195 +#endif +#if PPC_NUM_VECTORS > 196 + .long vector196, vector197, vector198, vector199 +#endif +#if PPC_NUM_VECTORS > 200 + .long vector200, vector201, vector202, vector203 +#endif +#if PPC_NUM_VECTORS > 204 + .long vector204, vector205, vector206, vector207 +#endif +#if PPC_NUM_VECTORS > 208 + .long vector208, vector209, vector210, vector211 +#endif +#if PPC_NUM_VECTORS > 212 + .long vector212, vector213, vector214, vector215 +#endif +#if PPC_NUM_VECTORS > 216 + .long vector216, vector217, vector218, vector219 +#endif +#if PPC_NUM_VECTORS > 220 + .long vector220, vector221, vector222, vector223 +#endif +#if PPC_NUM_VECTORS > 224 + .long vector224, vector225, vector226, vector227 +#endif +#if PPC_NUM_VECTORS > 228 + .long vector228, vector229, vector230, vector231 +#endif +#if PPC_NUM_VECTORS > 232 + .long vector232, vector233, vector234, vector235 +#endif +#if PPC_NUM_VECTORS > 236 + .long vector236, vector237, vector238, vector239 +#endif +#if PPC_NUM_VECTORS > 240 + .long vector240, vector241, vector242, vector243 +#endif +#if PPC_NUM_VECTORS > 244 + .long vector244, vector245, vector246, vector247 +#endif +#if PPC_NUM_VECTORS > 248 + .long vector248, vector249, vector250, vector251 +#endif +#if PPC_NUM_VECTORS > 252 + .long vector252, vector253, vector254, vector255 +#endif +#if PPC_NUM_VECTORS > 256 + .long vector256, vector257, vector258, vector259 +#endif +#if PPC_NUM_VECTORS > 260 + .long vector260, vector261, vector262, vector263 +#endif +#if PPC_NUM_VECTORS > 264 + .long vector264, vector265, vector266, vector267 +#endif +#if PPC_NUM_VECTORS > 268 + .long vector268, vector269, vector270, vector271 +#endif +#if PPC_NUM_VECTORS > 272 + .long vector272, vector273, vector274, vector275 +#endif +#if PPC_NUM_VECTORS > 276 + .long vector276, vector277, vector278, vector279 +#endif +#if PPC_NUM_VECTORS > 280 + .long vector280, vector281, vector282, vector283 +#endif +#if PPC_NUM_VECTORS > 284 + .long vector284, vector285, vector286, vector287 +#endif +#if PPC_NUM_VECTORS > 288 + .long vector288, vector289, vector290, vector291 +#endif +#if PPC_NUM_VECTORS > 292 + .long vector292, vector293, vector294, vector295 +#endif +#if PPC_NUM_VECTORS > 296 + .long vector296, vector297, vector298, vector299 +#endif +#if PPC_NUM_VECTORS > 300 + .long vector300, vector301, vector302, vector303 +#endif +#if PPC_NUM_VECTORS > 304 + .long vector304, vector305, vector306, vector307 +#endif +#if PPC_NUM_VECTORS > 308 + .long vector308, vector309, vector310, vector311 +#endif +#if PPC_NUM_VECTORS > 312 + .long vector312, vector313, vector314, vector315 +#endif +#if PPC_NUM_VECTORS > 316 + .long vector316, vector317, vector318, vector319 +#endif +#if PPC_NUM_VECTORS > 320 + .long vector320, vector321, vector322, vector323 +#endif +#if PPC_NUM_VECTORS > 324 + .long vector324, vector325, vector326, vector327 +#endif +#if PPC_NUM_VECTORS > 328 + .long vector328, vector329, vector330, vector331 +#endif +#if PPC_NUM_VECTORS > 332 + .long vector332, vector333, vector334, vector335 +#endif +#if PPC_NUM_VECTORS > 336 + .long vector336, vector337, vector338, vector339 +#endif +#if PPC_NUM_VECTORS > 340 + .long vector340, vector341, vector342, vector343 +#endif +#if PPC_NUM_VECTORS > 344 + .long vector344, vector345, vector346, vector347 +#endif +#if PPC_NUM_VECTORS > 348 + .long vector348, vector349, vector350, vector351 +#endif +#if PPC_NUM_VECTORS > 352 + .long vector352, vector353, vector354, vector355 +#endif +#if PPC_NUM_VECTORS > 356 + .long vector356, vector357, vector358, vector359 +#endif +#if PPC_NUM_VECTORS > 360 + .long vector360, vector361, vector362, vector363 +#endif +#if PPC_NUM_VECTORS > 364 + .long vector364, vector365, vector366, vector367 +#endif +#if PPC_NUM_VECTORS > 368 + .long vector368, vector369, vector370, vector371 +#endif +#if PPC_NUM_VECTORS > 372 + .long vector372, vector373, vector374, vector375 +#endif +#if PPC_NUM_VECTORS > 376 + .long vector376, vector377, vector378, vector379 +#endif +#if PPC_NUM_VECTORS > 380 + .long vector380, vector381, vector382, vector383 +#endif +#if PPC_NUM_VECTORS > 384 + .long vector384, vector385, vector386, vector387 +#endif +#if PPC_NUM_VECTORS > 388 + .long vector388, vector389, vector390, vector391 +#endif +#if PPC_NUM_VECTORS > 392 + .long vector392, vector393, vector394, vector395 +#endif +#if PPC_NUM_VECTORS > 396 + .long vector396, vector397, vector398, vector399 +#endif +#if PPC_NUM_VECTORS > 400 + .long vector400, vector401, vector402, vector403 +#endif +#if PPC_NUM_VECTORS > 404 + .long vector404, vector405, vector406, vector407 +#endif +#if PPC_NUM_VECTORS > 408 + .long vector408, vector409, vector410, vector411 +#endif +#if PPC_NUM_VECTORS > 412 + .long vector412, vector413, vector414, vector415 +#endif +#if PPC_NUM_VECTORS > 416 + .long vector416, vector417, vector418, vector419 +#endif +#if PPC_NUM_VECTORS > 420 + .long vector420, vector421, vector422, vector423 +#endif +#if PPC_NUM_VECTORS > 424 + .long vector424, vector425, vector426, vector427 +#endif +#if PPC_NUM_VECTORS > 428 + .long vector428, vector429, vector430, vector431 +#endif +#if PPC_NUM_VECTORS > 432 + .long vector432, vector433, vector434, vector435 +#endif +#if PPC_NUM_VECTORS > 436 + .long vector436, vector437, vector438, vector439 +#endif +#if PPC_NUM_VECTORS > 440 + .long vector440, vector441, vector442, vector443 +#endif +#if PPC_NUM_VECTORS > 444 + .long vector444, vector445, vector446, vector447 +#endif +#if PPC_NUM_VECTORS > 448 + .long vector448, vector449, vector450, vector451 +#endif +#if PPC_NUM_VECTORS > 452 + .long vector452, vector453, vector454, vector455 +#endif +#if PPC_NUM_VECTORS > 456 + .long vector456, vector457, vector458, vector459 +#endif +#if PPC_NUM_VECTORS > 460 + .long vector460, vector461, vector462, vector463 +#endif +#if PPC_NUM_VECTORS > 464 + .long vector464, vector465, vector466, vector467 +#endif +#if PPC_NUM_VECTORS > 468 + .long vector468, vector469, vector470, vector471 +#endif +#if PPC_NUM_VECTORS > 472 + .long vector472, vector473, vector474, vector475 +#endif +#if PPC_NUM_VECTORS > 476 + .long vector476, vector477, vector478, vector479 +#endif +#if PPC_NUM_VECTORS > 480 + .long vector480, vector481, vector482, vector483 +#endif +#if PPC_NUM_VECTORS > 484 + .long vector484, vector485, vector486, vector487 +#endif +#if PPC_NUM_VECTORS > 488 + .long vector488, vector489, vector490, vector491 +#endif +#if PPC_NUM_VECTORS > 492 + .long vector492, vector493, vector494, vector495 +#endif +#if PPC_NUM_VECTORS > 496 + .long vector496, vector497, vector498, vector499 +#endif +#if PPC_NUM_VECTORS > 500 + .long vector500, vector501, vector502, vector503 +#endif +#if PPC_NUM_VECTORS > 504 + .long vector504, vector505, vector506, vector507 +#endif +#if PPC_NUM_VECTORS > 508 + .long vector508, vector509, vector510, vector511 +#endif +#if PPC_NUM_VECTORS > 512 + .long vector512, vector513, vector514, vector515 +#endif +#if PPC_NUM_VECTORS > 516 + .long vector516, vector517, vector518, vector519 +#endif +#if PPC_NUM_VECTORS > 520 + .long vector520, vector521, vector522, vector523 +#endif +#if PPC_NUM_VECTORS > 524 + .long vector524, vector525, vector526, vector527 +#endif +#if PPC_NUM_VECTORS > 528 + .long vector528, vector529, vector530, vector531 +#endif +#if PPC_NUM_VECTORS > 532 + .long vector532, vector533, vector534, vector535 +#endif +#if PPC_NUM_VECTORS > 536 + .long vector536, vector537, vector538, vector539 +#endif +#if PPC_NUM_VECTORS > 540 + .long vector540, vector541, vector542, vector543 +#endif +#if PPC_NUM_VECTORS > 544 + .long vector544, vector545, vector546, vector547 +#endif +#if PPC_NUM_VECTORS > 548 + .long vector548, vector549, vector550, vector551 +#endif +#if PPC_NUM_VECTORS > 552 + .long vector552, vector553, vector554, vector555 +#endif +#if PPC_NUM_VECTORS > 556 + .long vector556, vector557, vector558, vector559 +#endif +#if PPC_NUM_VECTORS > 560 + .long vector560, vector561, vector562, vector563 +#endif +#if PPC_NUM_VECTORS > 564 + .long vector564, vector565, vector566, vector567 +#endif +#if PPC_NUM_VECTORS > 568 + .long vector568, vector569, vector570, vector571 +#endif +#if PPC_NUM_VECTORS > 572 + .long vector572, vector573, vector574, vector575 +#endif +#if PPC_NUM_VECTORS > 576 + .long vector576, vector577, vector578, vector579 +#endif +#if PPC_NUM_VECTORS > 580 + .long vector580, vector581, vector582, vector583 +#endif +#if PPC_NUM_VECTORS > 584 + .long vector584, vector585, vector586, vector587 +#endif +#if PPC_NUM_VECTORS > 588 + .long vector588, vector589, vector590, vector591 +#endif +#if PPC_NUM_VECTORS > 592 + .long vector592, vector593, vector594, vector595 +#endif +#if PPC_NUM_VECTORS > 596 + .long vector596, vector597, vector598, vector599 +#endif +#if PPC_NUM_VECTORS > 600 + .long vector600, vector601, vector602, vector603 +#endif +#if PPC_NUM_VECTORS > 604 + .long vector604, vector605, vector606, vector607 +#endif +#if PPC_NUM_VECTORS > 608 + .long vector608, vector609, vector610, vector611 +#endif +#if PPC_NUM_VECTORS > 612 + .long vector612, vector613, vector614, vector615 +#endif +#if PPC_NUM_VECTORS > 616 + .long vector616, vector617, vector618, vector619 +#endif +#if PPC_NUM_VECTORS > 620 + .long vector620, vector621, vector622, vector623 +#endif +#if PPC_NUM_VECTORS > 624 + .long vector624, vector625, vector626, vector627 +#endif +#if PPC_NUM_VECTORS > 628 + .long vector628, vector629, vector630, vector631 +#endif +#if PPC_NUM_VECTORS > 632 + .long vector632, vector633, vector634, vector635 +#endif +#if PPC_NUM_VECTORS > 636 + .long vector636, vector637, vector638, vector639 +#endif +#if PPC_NUM_VECTORS > 640 + .long vector640, vector641, vector642, vector643 +#endif +#if PPC_NUM_VECTORS > 644 + .long vector644, vector645, vector646, vector647 +#endif +#if PPC_NUM_VECTORS > 648 + .long vector648, vector649, vector650, vector651 +#endif +#if PPC_NUM_VECTORS > 652 + .long vector652, vector653, vector654, vector655 +#endif +#if PPC_NUM_VECTORS > 656 + .long vector656, vector657, vector658, vector659 +#endif +#if PPC_NUM_VECTORS > 660 + .long vector660, vector661, vector662, vector663 +#endif +#if PPC_NUM_VECTORS > 664 + .long vector664, vector665, vector666, vector667 +#endif +#if PPC_NUM_VECTORS > 668 + .long vector668, vector669, vector670, vector671 +#endif +#if PPC_NUM_VECTORS > 672 + .long vector672, vector673, vector674, vector675 +#endif +#if PPC_NUM_VECTORS > 676 + .long vector676, vector677, vector678, vector679 +#endif +#if PPC_NUM_VECTORS > 680 + .long vector680, vector681, vector682, vector683 +#endif +#if PPC_NUM_VECTORS > 684 + .long vector684, vector685, vector686, vector687 +#endif +#if PPC_NUM_VECTORS > 688 + .long vector688, vector689, vector690, vector691 +#endif +#if PPC_NUM_VECTORS > 692 + .long vector692, vector693, vector694, vector695 +#endif +#if PPC_NUM_VECTORS > 696 + .long vector696, vector697, vector698, vector699 +#endif +#if PPC_NUM_VECTORS > 700 + .long vector700, vector701, vector702, vector703 +#endif +#if PPC_NUM_VECTORS > 704 + .long vector704, vector705, vector706, vector707 +#endif +#if PPC_NUM_VECTORS > 708 + .long vector708, vector709, vector710, vector711 +#endif +#if PPC_NUM_VECTORS > 712 + .long vector712, vector713, vector714, vector715 +#endif +#if PPC_NUM_VECTORS > 716 + .long vector716, vector717, vector718, vector719 +#endif +#if PPC_NUM_VECTORS > 720 + .long vector720, vector721, vector722, vector723 +#endif +#if PPC_NUM_VECTORS > 724 + .long vector724, vector725, vector726, vector727 +#endif +#if PPC_NUM_VECTORS > 728 + .long vector728, vector729, vector730, vector731 +#endif +#if PPC_NUM_VECTORS > 732 + .long vector732, vector733, vector734, vector735 +#endif +#if PPC_NUM_VECTORS > 736 + .long vector736, vector737, vector738, vector739 +#endif +#if PPC_NUM_VECTORS > 740 + .long vector740, vector741, vector742, vector743 +#endif +#if PPC_NUM_VECTORS > 744 + .long vector744, vector745, vector746, vector747 +#endif +#if PPC_NUM_VECTORS > 748 + .long vector748, vector749, vector750, vector751 +#endif +#if PPC_NUM_VECTORS > 752 + .long vector752, vector753, vector754, vector755 +#endif +#if PPC_NUM_VECTORS > 756 + .long vector756, vector757, vector758, vector759 +#endif +#if PPC_NUM_VECTORS > 760 + .long vector760, vector761, vector762, vector763 +#endif +#if PPC_NUM_VECTORS > 764 + .long vector764, vector765, vector766, vector767 +#endif +#if PPC_NUM_VECTORS > 768 + .long vector768, vector769, vector770, vector771 +#endif +#if PPC_NUM_VECTORS > 772 + .long vector772, vector773, vector774, vector775 +#endif +#if PPC_NUM_VECTORS > 776 + .long vector776, vector777, vector778, vector779 +#endif +#if PPC_NUM_VECTORS > 780 + .long vector780, vector781, vector782, vector783 +#endif +#if PPC_NUM_VECTORS > 784 + .long vector784, vector785, vector786, vector787 +#endif +#if PPC_NUM_VECTORS > 788 + .long vector788, vector789, vector790, vector791 +#endif +#if PPC_NUM_VECTORS > 792 + .long vector792, vector793, vector794, vector795 +#endif +#if PPC_NUM_VECTORS > 796 + .long vector796, vector797, vector798, vector799 +#endif +#if PPC_NUM_VECTORS > 800 + .long vector800, vector801, vector802, vector803 +#endif +#if PPC_NUM_VECTORS > 804 + .long vector804, vector805, vector806, vector807 +#endif +#if PPC_NUM_VECTORS > 808 + .long vector808, vector809, vector810, vector811 +#endif +#if PPC_NUM_VECTORS > 812 + .long vector812, vector813, vector814, vector815 +#endif +#if PPC_NUM_VECTORS > 816 + .long vector816, vector817, vector818, vector819 +#endif +#if PPC_NUM_VECTORS > 820 + .long vector820, vector821, vector822, vector823 +#endif +#if PPC_NUM_VECTORS > 824 + .long vector824, vector825, vector826, vector827 +#endif +#if PPC_NUM_VECTORS > 828 + .long vector828, vector829, vector830, vector831 +#endif +#if PPC_NUM_VECTORS > 832 + .long vector832, vector833, vector834, vector835 +#endif +#if PPC_NUM_VECTORS > 836 + .long vector836, vector837, vector838, vector839 +#endif +#if PPC_NUM_VECTORS > 840 + .long vector840, vector841, vector842, vector843 +#endif +#if PPC_NUM_VECTORS > 844 + .long vector844, vector845, vector846, vector847 +#endif +#if PPC_NUM_VECTORS > 848 + .long vector848, vector849, vector850, vector851 +#endif +#if PPC_NUM_VECTORS > 852 + .long vector852, vector853, vector854, vector855 +#endif +#if PPC_NUM_VECTORS > 856 + .long vector856, vector857, vector858, vector859 +#endif +#if PPC_NUM_VECTORS > 860 + .long vector860, vector861, vector862, vector863 +#endif +#if PPC_NUM_VECTORS > 864 + .long vector864, vector865, vector866, vector867 +#endif +#if PPC_NUM_VECTORS > 868 + .long vector868, vector869, vector870, vector871 +#endif +#if PPC_NUM_VECTORS > 872 + .long vector872, vector873, vector874, vector875 +#endif +#if PPC_NUM_VECTORS > 876 + .long vector876, vector877, vector878, vector879 +#endif +#if PPC_NUM_VECTORS > 880 + .long vector880, vector881, vector882, vector883 +#endif +#if PPC_NUM_VECTORS > 884 + .long vector884, vector885, vector886, vector887 +#endif +#if PPC_NUM_VECTORS > 888 + .long vector888, vector889, vector890, vector891 +#endif +#if PPC_NUM_VECTORS > 892 + .long vector892, vector893, vector894, vector895 +#endif +#if PPC_NUM_VECTORS > 896 + .long vector896, vector897, vector898, vector899 +#endif +#if PPC_NUM_VECTORS > 900 + .long vector900, vector901, vector902, vector903 +#endif +#if PPC_NUM_VECTORS > 904 + .long vector904, vector905, vector906, vector907 +#endif +#if PPC_NUM_VECTORS > 908 + .long vector908, vector909, vector910, vector911 +#endif +#if PPC_NUM_VECTORS > 912 + .long vector912, vector913, vector914, vector915 +#endif +#if PPC_NUM_VECTORS > 916 + .long vector916, vector917, vector918, vector919 +#endif +#if PPC_NUM_VECTORS > 920 + .long vector920, vector921, vector922, vector923 +#endif +#if PPC_NUM_VECTORS > 924 + .long vector924, vector925, vector926, vector927 +#endif +#if PPC_NUM_VECTORS > 928 + .long vector928, vector929, vector930, vector931 +#endif +#if PPC_NUM_VECTORS > 932 + .long vector932, vector933, vector934, vector935 +#endif +#if PPC_NUM_VECTORS > 936 + .long vector936, vector937, vector938, vector939 +#endif +#if PPC_NUM_VECTORS > 940 + .long vector940, vector941, vector942, vector943 +#endif +#if PPC_NUM_VECTORS > 944 + .long vector944, vector945, vector946, vector947 +#endif +#if PPC_NUM_VECTORS > 948 + .long vector948, vector949, vector950, vector951 +#endif +#if PPC_NUM_VECTORS > 952 + .long vector952, vector953, vector954, vector955 +#endif +#if PPC_NUM_VECTORS > 956 + .long vector956, vector957, vector958, vector959 +#endif +#if PPC_NUM_VECTORS > 960 + .long vector960, vector961, vector962, vector963 +#endif +#if PPC_NUM_VECTORS > 964 + .long vector964, vector965, vector966, vector967 +#endif +#if PPC_NUM_VECTORS > 968 + .long vector968, vector969, vector970, vector971 +#endif +#if PPC_NUM_VECTORS > 972 + .long vector972, vector973, vector974, vector975 +#endif +#if PPC_NUM_VECTORS > 976 + .long vector976, vector977, vector978, vector979 +#endif +#if PPC_NUM_VECTORS > 980 + .long vector980, vector981, vector982, vector983 +#endif +#if PPC_NUM_VECTORS > 984 + .long vector984, vector985, vector986, vector987 +#endif +#if PPC_NUM_VECTORS > 988 + .long vector988, vector989, vector990, vector991 +#endif +#if PPC_NUM_VECTORS > 992 + .long vector992, vector993, vector994, vector995 +#endif +#if PPC_NUM_VECTORS > 996 + .long vector996, vector997, vector998, vector999 +#endif +#if PPC_NUM_VECTORS > 1000 + .long vector1000, vector1001, vector1002, vector1003 +#endif +#if PPC_NUM_VECTORS > 1004 + .long vector1004, vector1005, vector1006, vector1007 +#endif +#if PPC_NUM_VECTORS > 1008 + .long vector1008, vector1009, vector1010, vector1011 +#endif +#if PPC_NUM_VECTORS > 1012 + .long vector1012, vector1013, vector1014, vector1015 +#endif +#if PPC_NUM_VECTORS > 1016 + .long vector1016, vector1017, vector1018, vector1019 +#endif +#if PPC_NUM_VECTORS > 1020 + .long vector1020, vector1021, vector1022, vector1023 +#endif + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/common/startup/e200/compilers/GCC/crt0.s b/os/common/startup/e200/compilers/GCC/crt0.s new file mode 100644 index 000000000..92a8642cb --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/crt0.s @@ -0,0 +1,245 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file GCC/crt0.s + * @brief Generic PowerPC startup file for GCC. + * + * @addtogroup PPC_GCC_CORE + * @{ + */ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +#if !defined(FALSE) || defined(__DOXYGEN__) +#define FALSE 0 +#endif + +#if !defined(TRUE) || defined(__DOXYGEN__) +#define TRUE 1 +#endif + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/** + * @brief Stack segments initialization switch. + */ +#if !defined(CRT0_STACKS_FILL_PATTERN) || defined(__DOXYGEN__) +#define CRT0_STACKS_FILL_PATTERN 0x55555555 +#endif + +/** + * @brief Stack segments initialization switch. + */ +#if !defined(CRT0_INIT_STACKS) || defined(__DOXYGEN__) +#define CRT0_INIT_STACKS TRUE +#endif + +/** + * @brief DATA segment initialization switch. + */ +#if !defined(CRT0_INIT_DATA) || defined(__DOXYGEN__) +#define CRT0_INIT_DATA TRUE +#endif + +/** + * @brief BSS segment initialization switch. + */ +#if !defined(CRT0_INIT_BSS) || defined(__DOXYGEN__) +#define CRT0_INIT_BSS TRUE +#endif + +/** + * @brief Constructors invocation switch. + */ +#if !defined(CRT0_CALL_CONSTRUCTORS) || defined(__DOXYGEN__) +#define CRT0_CALL_CONSTRUCTORS TRUE +#endif + +/** + * @brief Destructors invocation switch. + */ +#if !defined(CRT0_CALL_DESTRUCTORS) || defined(__DOXYGEN__) +#define CRT0_CALL_DESTRUCTORS TRUE +#endif + +/*===========================================================================*/ +/* Code section. */ +/*===========================================================================*/ + +#if !defined(__DOXYGEN__) + + .section .crt0, "ax" + .align 2 + .globl _boot_address + .type _boot_address, @function +_boot_address: + /* Stack setup.*/ + lis %r1, __process_stack_end__@h + ori %r1, %r1, __process_stack_end__@l + li %r0, 0 + stwu %r0, -8(%r1) + + /* Small sections registers initialization.*/ + lis %r2, __sdata2_start__@h + ori %r2, %r2, __sdata2_start__@l + lis %r13, __sdata_start__@h + ori %r13, %r13, __sdata_start__@l + + /* Early initialization.*/ + bl __early_init + +#if CRT0_INIT_STACKS == TRUE + /* Stacks fill pattern.*/ + lis %r7, CRT0_STACKS_FILL_PATTERN@h + ori %r7, %r7, CRT0_STACKS_FILL_PATTERN@l + + /* IRQ Stack initialization. Note, the architecture does not use this + stack, the size is usually zero. An OS can have special SW handling + and require this. A 4 bytes alignment is assmend and required.*/ + lis %r4, __irq_stack_base__@h + ori %r4, %r4, __irq_stack_base__@l + lis %r5, __irq_stack_end__@h + ori %r5, %r5, __irq_stack_end__@l +.irqsloop: + cmpl cr0, %r4, %r5 + bge cr0, .irqsend + stw %r7, 0(%r4) + addi %r4, %r4, 4 + b .irqsloop +.irqsend: + + /* Process Stack initialization. Note, does not overwrite the already + written EABI frame. A 4 bytes alignment is assmend and required.*/ + lis %r4, __process_stack_base__@h + ori %r4, %r4, __process_stack_base__@l + lis %r5, (__process_stack_end__ - 8)@h + ori %r5, %r5, (__process_stack_end__ - 8)@l +.prcsloop: + cmpl cr0, %r4, %r5 + bge cr0, .prcsend + stw %r7, 0(%r4) + addi %r4, %r4, 4 + b .prcsloop +.prcsend: +#endif + +#if CRT0_INIT_BSS == TRUE + /* BSS clearing.*/ + lis %r4, __bss_start__@h + ori %r4, %r4, __bss_start__@l + lis %r5, __bss_end__@h + ori %r5, %r5, __bss_end__@l + li %r7, 0 +.bssloop: + cmpl cr0, %r4, %r5 + bge cr0, .bssend + stw %r7, 0(%r4) + addi %r4, %r4, 4 + b .bssloop +.bssend: +#endif + +#if CRT0_INIT_DATA == TRUE + /* DATA initialization.*/ + lis %r4, __romdata_start__@h + ori %r4, %r4, __romdata_start__@l + lis %r5, __data_start__@h + ori %r5, %r5, __data_start__@l + lis %r6, __data_end__@h + ori %r6, %r6, __data_end__@l +.dataloop: + cmpl cr0, %r5, %r6 + bge cr0, .dataend + lwz %r7, 0(%r4) + addi %r4, %r4, 4 + stw %r7, 0(%r5) + addi %r5, %r5, 4 + b .dataloop +.dataend: +#endif + + /* Late initialization.*/ + bl __late_init + +#if CRT0_CALL_CONSTRUCTORS == TRUE + /* Constructors invocation.*/ + lis %r4, __init_array_start@h + ori %r4, %r4, __init_array_start@l + lis %r5, __init_array_end@h + ori %r5, %r5, __init_array_end@l +.iniloop: + cmplw %cr0, %r4, %r5 + bge %cr0, .iniend + lwz %r6, 0(%r4) + mtctr %r6 + addi %r4, %r4, 4 + bctrl + b .iniloop +.iniend: +#endif + + /* Main program invocation.*/ + bl main + +#if CRT0_CALL_DESTRUCTORS == TRUE + /* Destructors invocation.*/ + lis %r4, __fini_array_start@h + ori %r4, %r4, __fini_array_start@l + lis %r5, __fini_array_end@h + ori %r5, %r5, __fini_array_end@l +.finiloop: + cmplw %cr0, %r4, %r5 + bge %cr0, .finiend + lwz %r6, 0(%r4) + mtctr %r6 + addi %r4, %r4, 4 + bctrl + b .finiloop +.finiend: +#endif + + /* Branching to the defined exit handler.*/ + b __default_exit + + /* Default main exit code, infinite loop.*/ + .weak __default_exit + .type __default_exit, @function +__default_exit: + b __default_exit + + /* Default early initialization code, none.*/ + .weak __early_init + .type __early_init, @function +__early_init: + blr + + /* Default late initialization code, none.*/ + .weak __late_init + .type __late_init, @function +__late_init: + blr + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/common/startup/e200/compilers/GCC/ld/SPC560B50.ld b/os/common/startup/e200/compilers/GCC/ld/SPC560B50.ld new file mode 100644 index 000000000..62f2abc76 --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/ld/SPC560B50.ld @@ -0,0 +1,30 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * SPC560B50 memory setup. + */ +MEMORY +{ + flash : org = 0x00000000, len = 512k + dataflash : org = 0x00800000, len = 64k + ram : org = 0x40000000, len = 32k +} + +INCLUDE rules_z0.ld diff --git a/os/common/startup/e200/compilers/GCC/ld/SPC560B60.ld b/os/common/startup/e200/compilers/GCC/ld/SPC560B60.ld new file mode 100644 index 000000000..73ca28d9a --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/ld/SPC560B60.ld @@ -0,0 +1,30 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * SPC560B60 memory setup. + */ +MEMORY +{ + flash : org = 0x00000000, len = 1024k + dataflash : org = 0x00800000, len = 64k + ram : org = 0x40000000, len = 80k +} + +INCLUDE rules_z0.ld diff --git a/os/common/startup/e200/compilers/GCC/ld/SPC560B64.ld b/os/common/startup/e200/compilers/GCC/ld/SPC560B64.ld new file mode 100644 index 000000000..5961d8414 --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/ld/SPC560B64.ld @@ -0,0 +1,30 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * SPC560B64 memory setup. + */ +MEMORY +{ + flash : org = 0x00000000, len = 1536k + dataflash : org = 0x00800000, len = 64k + ram : org = 0x40000000, len = 96k +} + +INCLUDE rules_z0.ld diff --git a/os/common/startup/e200/compilers/GCC/ld/SPC560D40.ld b/os/common/startup/e200/compilers/GCC/ld/SPC560D40.ld new file mode 100644 index 000000000..45929e6e0 --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/ld/SPC560D40.ld @@ -0,0 +1,30 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * SPC560D40 memory setup. + */ +MEMORY +{ + flash : org = 0x00000000, len = 256k + dataflash : org = 0x00800000, len = 64k + ram : org = 0x40000000, len = 16k +} + +INCLUDE rules_z0.ld diff --git a/os/common/startup/e200/compilers/GCC/ld/SPC560P50.ld b/os/common/startup/e200/compilers/GCC/ld/SPC560P50.ld new file mode 100644 index 000000000..f42dcda01 --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/ld/SPC560P50.ld @@ -0,0 +1,30 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * SPC560P50 memory setup. + */ +MEMORY +{ + flash : org = 0x00000000, len = 512k + dataflash : org = 0x00800000, len = 64k + ram : org = 0x40000000, len = 40k +} + +INCLUDE rules_z0.ld diff --git a/os/common/startup/e200/compilers/GCC/ld/SPC563M64.ld b/os/common/startup/e200/compilers/GCC/ld/SPC563M64.ld new file mode 100644 index 000000000..7753edc7f --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/ld/SPC563M64.ld @@ -0,0 +1,29 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * SPC563M64 memory setup. + */ +MEMORY +{ + flash : org = 0x00000000, len = 1536k + ram : org = 0x40000000, len = 94k +} + +INCLUDE rules_z3.ld diff --git a/os/common/startup/e200/compilers/GCC/ld/SPC564A70.ld b/os/common/startup/e200/compilers/GCC/ld/SPC564A70.ld new file mode 100644 index 000000000..b3d78ca70 --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/ld/SPC564A70.ld @@ -0,0 +1,29 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * SPC563A70 memory setup. + */ +MEMORY +{ + flash : org = 0x00000000, len = 2M + ram : org = 0x40000000, len = 128k +} + +INCLUDE rules_z4.ld diff --git a/os/common/startup/e200/compilers/GCC/ld/SPC564A80.ld b/os/common/startup/e200/compilers/GCC/ld/SPC564A80.ld new file mode 100644 index 000000000..313872487 --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/ld/SPC564A80.ld @@ -0,0 +1,29 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * SPC563A80 memory setup. + */ +MEMORY +{ + flash : org = 0x00000000, len = 4M + ram : org = 0x40000000, len = 192k +} + +INCLUDE rules_z4.ld diff --git a/os/common/startup/e200/compilers/GCC/ld/SPC56EC74.ld b/os/common/startup/e200/compilers/GCC/ld/SPC56EC74.ld new file mode 100644 index 000000000..d8285b953 --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/ld/SPC56EC74.ld @@ -0,0 +1,30 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * SPC56EC74 memory setup. + */ +MEMORY +{ + flash : org = 0x00000000, len = 3M + dataflash : org = 0x00800000, len = 64k + ram : org = 0x40000000, len = 256k +} + +INCLUDE rules_z4.ld diff --git a/os/common/startup/e200/compilers/GCC/ld/SPC56EL54_LSM.ld b/os/common/startup/e200/compilers/GCC/ld/SPC56EL54_LSM.ld new file mode 100644 index 000000000..191d49d41 --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/ld/SPC56EL54_LSM.ld @@ -0,0 +1,29 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * SPC56EL54 memory setup in LSM mode. + */ +MEMORY +{ + flash : org = 0x00000000, len = 768k + ram : org = 0x40000000, len = 128k +} + +INCLUDE rules_z4.ld diff --git a/os/common/startup/e200/compilers/GCC/ld/SPC56EL60_LSM.ld b/os/common/startup/e200/compilers/GCC/ld/SPC56EL60_LSM.ld new file mode 100644 index 000000000..2001ac6f0 --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/ld/SPC56EL60_LSM.ld @@ -0,0 +1,29 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * SPC56EL60 memory setup in LSM mode. + */ +MEMORY +{ + flash : org = 0x00000000, len = 1M + ram : org = 0x40000000, len = 128k +} + +INCLUDE rules_z4.ld diff --git a/os/common/startup/e200/compilers/GCC/ld/SPC56EL70_LSM.ld b/os/common/startup/e200/compilers/GCC/ld/SPC56EL70_LSM.ld new file mode 100644 index 000000000..0938cb008 --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/ld/SPC56EL70_LSM.ld @@ -0,0 +1,29 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * SPC56EL70 memory setup in LSM mode. + */ +MEMORY +{ + flash : org = 0x00000000, len = 2M + ram : org = 0x40000000, len = 192k +} + +INCLUDE rules_z4.ld diff --git a/os/common/startup/e200/compilers/GCC/ld/SPC57EM80_HSM.ld b/os/common/startup/e200/compilers/GCC/ld/SPC57EM80_HSM.ld new file mode 100644 index 000000000..d792364f5 --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/ld/SPC57EM80_HSM.ld @@ -0,0 +1,31 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/* + * SPC57EM80-HSM memory setup. + */ +MEMORY +{ + flash : org = 0x0060C000, len = 144k + dflash0 : org = 0x00680000, len = 16k + dflash1 : org = 0x00684000, len = 16k + ram : org = 0xA0000000, len = 40k +} + +INCLUDE rules_z0.ld diff --git a/os/common/startup/e200/compilers/GCC/mk/startup_spc560bcxx.mk b/os/common/startup/e200/compilers/GCC/mk/startup_spc560bcxx.mk new file mode 100644 index 000000000..2e067b149 --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/mk/startup_spc560bcxx.mk @@ -0,0 +1,11 @@ +# List of the ChibiOS e200z0 SPC560BCxx startup files. +STARTUPSRC = + +STARTUPASM = $(CHIBIOS)/os/common/ports/e200/devices/SPC560BCxx/boot.s \ + $(CHIBIOS)/os/common/ports/e200/compilers/GCC/vectors.s \ + $(CHIBIOS)/os/common/ports/e200/compilers/GCC/crt0.s + +STARTUPINC = ${CHIBIOS}/os/common/ports/e200/compilers/GCC \ + ${CHIBIOS}/os/common/ports/e200/devices/SPC560BCxx + +STARTUPLD = ${CHIBIOS}/os/common/ports/e200/compilers/GCC/ld diff --git a/os/common/startup/e200/compilers/GCC/mk/startup_spc560bxx.mk b/os/common/startup/e200/compilers/GCC/mk/startup_spc560bxx.mk new file mode 100644 index 000000000..5cfc4a81e --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/mk/startup_spc560bxx.mk @@ -0,0 +1,11 @@ +# List of the ChibiOS e200z0 SPC560Bxx startup files. +STARTUPSRC = + +STARTUPASM = $(CHIBIOS)/os/common/ports/e200/devices/SPC560Bxx/boot.s \ + $(CHIBIOS)/os/common/ports/e200/compilers/GCC/vectors.s \ + $(CHIBIOS)/os/common/ports/e200/compilers/GCC/crt0.s + +STARTUPINC = ${CHIBIOS}/os/common/ports/e200/compilers/GCC \ + ${CHIBIOS}/os/common/ports/e200/devices/SPC560Bxx + +STARTUPLD = ${CHIBIOS}/os/common/ports/e200/compilers/GCC/ld diff --git a/os/common/startup/e200/compilers/GCC/mk/startup_spc560dxx.mk b/os/common/startup/e200/compilers/GCC/mk/startup_spc560dxx.mk new file mode 100644 index 000000000..4e8b633fd --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/mk/startup_spc560dxx.mk @@ -0,0 +1,11 @@ +# List of the ChibiOS e200z0 SPC560Dxx startup files. +STARTUPSRC = + +STARTUPASM = $(CHIBIOS)/os/common/ports/e200/devices/SPC560Dxx/boot.s \ + $(CHIBIOS)/os/common/ports/e200/compilers/GCC/vectors.s \ + $(CHIBIOS)/os/common/ports/e200/compilers/GCC/crt0.s + +STARTUPINC = ${CHIBIOS}/os/common/ports/e200/compilers/GCC \ + ${CHIBIOS}/os/common/ports/e200/devices/SPC560Dxx + +STARTUPLD = ${CHIBIOS}/os/common/ports/e200/compilers/GCC/ld diff --git a/os/common/startup/e200/compilers/GCC/mk/startup_spc560pxx.mk b/os/common/startup/e200/compilers/GCC/mk/startup_spc560pxx.mk new file mode 100644 index 000000000..72a62d787 --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/mk/startup_spc560pxx.mk @@ -0,0 +1,11 @@ +# List of the ChibiOS e200z0 SPC560Pxx startup files. +STARTUPSRC = + +STARTUPASM = $(CHIBIOS)/os/common/ports/e200/devices/SPC560Pxx/boot.s \ + $(CHIBIOS)/os/common/ports/e200/compilers/GCC/vectors.s \ + $(CHIBIOS)/os/common/ports/e200/compilers/GCC/crt0.s + +STARTUPINC = ${CHIBIOS}/os/common/ports/e200/compilers/GCC \ + ${CHIBIOS}/os/common/ports/e200/devices/SPC560Pxx + +STARTUPLD = ${CHIBIOS}/os/common/ports/e200/compilers/GCC/ld diff --git a/os/common/startup/e200/compilers/GCC/mk/startup_spc563mxx.mk b/os/common/startup/e200/compilers/GCC/mk/startup_spc563mxx.mk new file mode 100644 index 000000000..92af14e4c --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/mk/startup_spc563mxx.mk @@ -0,0 +1,11 @@ +# List of the ChibiOS e200z3 SPC563Mxx startup files. +STARTUPSRC = + +STARTUPASM = $(CHIBIOS)/os/common/ports/e200/devices/SPC563Mxx/boot.s \ + $(CHIBIOS)/os/common/ports/e200/compilers/GCC/vectors.s \ + $(CHIBIOS)/os/common/ports/e200/compilers/GCC/crt0.s + +STARTUPINC = ${CHIBIOS}/os/common/ports/e200/compilers/GCC \ + ${CHIBIOS}/os/common/ports/e200/devices/SPC563Mxx + +STARTUPLD = ${CHIBIOS}/os/common/ports/e200/compilers/GCC/ld diff --git a/os/common/startup/e200/compilers/GCC/mk/startup_spc564axx.mk b/os/common/startup/e200/compilers/GCC/mk/startup_spc564axx.mk new file mode 100644 index 000000000..a903aa8ff --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/mk/startup_spc564axx.mk @@ -0,0 +1,11 @@ +# List of the ChibiOS e200z4 SPC564Axx startup files. +STARTUPSRC = + +STARTUPASM = $(CHIBIOS)/os/common/ports/e200/devices/SPC564Axx/boot.s \ + $(CHIBIOS)/os/common/ports/e200/compilers/GCC/vectors.s \ + $(CHIBIOS)/os/common/ports/e200/compilers/GCC/crt0.s + +STARTUPINC = ${CHIBIOS}/os/common/ports/e200/compilers/GCC \ + ${CHIBIOS}/os/common/ports/e200/devices/SPC564Axx + +STARTUPLD = ${CHIBIOS}/os/common/ports/e200/compilers/GCC/ld diff --git a/os/common/startup/e200/compilers/GCC/mk/startup_spc56ecxx.mk b/os/common/startup/e200/compilers/GCC/mk/startup_spc56ecxx.mk new file mode 100644 index 000000000..d2377e57f --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/mk/startup_spc56ecxx.mk @@ -0,0 +1,11 @@ +# List of the ChibiOS e200z4 SPC56ECxx startup files. +STARTUPSRC = + +STARTUPASM = $(CHIBIOS)/os/common/ports/e200/devices/SPC56ECxx/boot.s \ + $(CHIBIOS)/os/common/ports/e200/compilers/GCC/vectors.s \ + $(CHIBIOS)/os/common/ports/e200/compilers/GCC/crt0.s + +STARTUPINC = ${CHIBIOS}/os/common/ports/e200/compilers/GCC \ + ${CHIBIOS}/os/common/ports/e200/devices/SPC56ECxx + +STARTUPLD = ${CHIBIOS}/os/common/ports/e200/compilers/GCC/ld diff --git a/os/common/startup/e200/compilers/GCC/mk/startup_spc56elxx.mk b/os/common/startup/e200/compilers/GCC/mk/startup_spc56elxx.mk new file mode 100644 index 000000000..40753b63f --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/mk/startup_spc56elxx.mk @@ -0,0 +1,11 @@ +# List of the ChibiOS e200z4 SPC56ELxx startup files. +STARTUPSRC = + +STARTUPASM = $(CHIBIOS)/os/common/ports/e200/devices/SPC56ELxx/boot.s \ + $(CHIBIOS)/os/common/ports/e200/compilers/GCC/vectors.s \ + $(CHIBIOS)/os/common/ports/e200/compilers/GCC/crt0.s + +STARTUPINC = ${CHIBIOS}/os/common/ports/e200/compilers/GCC \ + ${CHIBIOS}/os/common/ports/e200/devices/SPC56ELxx + +STARTUPLD = ${CHIBIOS}/os/common/ports/e200/compilers/GCC/ld diff --git a/os/common/startup/e200/compilers/GCC/rules.mk b/os/common/startup/e200/compilers/GCC/rules.mk new file mode 100644 index 000000000..c7f9d9b03 --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/rules.mk @@ -0,0 +1,242 @@ +# e200z common makefile scripts and rules. + +############################################################################## +# Processing options coming from the upper Makefile. +# + +# Compiler options +OPT = $(USE_OPT) +COPT = $(USE_COPT) +CPPOPT = $(USE_CPPOPT) + +# Garbage collection +ifeq ($(USE_LINK_GC),yes) + OPT += -ffunction-sections -fdata-sections -fno-common + LDOPT := --gc-sections +else + LDOPT := --no-gc-sections +endif + +# Linker extra options +ifneq ($(USE_LDOPT),) + LDOPT := $(LDOPT),$(USE_LDOPT) +endif + +# Link time optimizations +ifeq ($(USE_LTO),yes) + OPT += -flto +endif + +# VLE option handling. +ifeq ($(USE_VLE),yes) + DDEFS += -DPPC_USE_VLE=1 + DADEFS += -DPPC_USE_VLE=1 + MCU += -mvle +else + DDEFS += -DPPC_USE_VLE=0 + DADEFS += -DPPC_USE_VLE=0 +endif + +# Process stack size +ifeq ($(USE_PROCESS_STACKSIZE),) + LDOPT := $(LDOPT),--defsym=__process_stack_size__=0x400 +else + LDOPT := $(LDOPT),--defsym=__process_stack_size__=$(USE_PROCESS_STACKSIZE) +endif + +# Exceptions stack size +ifeq ($(USE_EXCEPTIONS_STACKSIZE),) + LDOPT := $(LDOPT),--defsym=__irq_stack_size__=0x400 +else + LDOPT := $(LDOPT),--defsym=__irq_stack_size__=$(USE_EXCEPTIONS_STACKSIZE) +endif + +# Output directory and files +ifeq ($(BUILDDIR),) + BUILDDIR = build +endif +ifeq ($(BUILDDIR),.) + BUILDDIR = build +endif +OUTFILES = $(BUILDDIR)/$(PROJECT).elf $(BUILDDIR)/$(PROJECT).hex \ + $(BUILDDIR)/$(PROJECT).mot $(BUILDDIR)/$(PROJECT).bin \ + $(BUILDDIR)/$(PROJECT).dmp $(BUILDDIR)/$(PROJECT).list + + +# Source files groups and paths +SRC = $(CSRC)$(CPPSRC) +SRCPATHS = $(sort $(dir $(ASMXSRC)) $(dir $(ASMSRC)) $(dir $(SRC))) + +# Various directories +OBJDIR = $(BUILDDIR)/obj +LSTDIR = $(BUILDDIR)/lst + +# Object files groups +COBJS = $(addprefix $(OBJDIR)/, $(notdir $(CSRC:.c=.o))) +CPPOBJS = $(addprefix $(OBJDIR)/, $(notdir $(CPPSRC:.cpp=.o))) +ASMOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ASMSRC:.s=.o))) +ASMXOBJS = $(addprefix $(OBJDIR)/, $(notdir $(ASMXSRC:.S=.o))) +OBJS = $(ASMXOBJS) $(ASMOBJS) $(COBJS) $(CPPOBJS) + +# Paths +IINCDIR = $(patsubst %,-I%,$(INCDIR) $(DINCDIR) $(UINCDIR)) +LLIBDIR = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR)) + +# Macros +DEFS = $(DDEFS) $(UDEFS) +ADEFS = $(DADEFS) $(UADEFS) + +# Libs +LIBS = $(DLIBS) $(ULIBS) + +# Various settings +MCFLAGS = -mcpu=$(MCU) +ODFLAGS = -x --syms +ASFLAGS = $(MCFLAGS) -Wa,-amhls=$(LSTDIR)/$(notdir $(<:.s=.lst)) $(ADEFS) +ASXFLAGS = $(MCFLAGS) -Wa,-amhls=$(LSTDIR)/$(notdir $(<:.S=.lst)) $(ADEFS) +CFLAGS = $(MCFLAGS) $(OPT) $(COPT) $(CWARN) -Wa,-alms=$(LSTDIR)/$(notdir $(<:.c=.lst)) $(DEFS) +CPPFLAGS = $(MCFLAGS) $(OPT) $(CPPOPT) $(CPPWARN) -Wa,-alms=$(LSTDIR)/$(notdir $(<:.cpp=.lst)) $(DEFS) +LDFLAGS = $(MCFLAGS) $(OPT) -nostartfiles $(LLIBDIR) -Wl,-Map=$(BUILDDIR)/$(PROJECT).map,--cref,--no-warn-mismatch,--library-path=$(RULESPATH),$(LDOPT),--script=$(LDSCRIPT) + +# Generate dependency information +ASFLAGS += -MD -MP -MF .dep/$(@F).d +CFLAGS += -MD -MP -MF .dep/$(@F).d +CPPFLAGS += -MD -MP -MF .dep/$(@F).d + +# Paths where to search for sources +VPATH = $(SRCPATHS) + +# +# Makefile rules +# + +all: PRE_MAKE_ALL_RULE_HOOK $(OBJS) $(OUTFILES) POST_MAKE_ALL_RULE_HOOK + +PRE_MAKE_ALL_RULE_HOOK: + +POST_MAKE_ALL_RULE_HOOK: + +$(OBJS): | $(BUILDDIR) $(OBJDIR) $(LSTDIR) + +$(BUILDDIR): +ifneq ($(USE_VERBOSE_COMPILE),yes) + @echo Compiler Options + @echo $(CC) -c $(CFLAGS) -I. $(IINCDIR) main.c -o main.o + @echo +endif + @mkdir -p $(BUILDDIR) + +$(OBJDIR): + @mkdir -p $(OBJDIR) + +$(LSTDIR): + @mkdir -p $(LSTDIR) + +$(CPPOBJS) : $(OBJDIR)/%.o : %.cpp Makefile +ifeq ($(USE_VERBOSE_COMPILE),yes) + @echo + $(CPPC) -c $(CPPFLAGS) -I. $(IINCDIR) $< -o $@ +else + @echo Compiling $( $@ + $(SZ) $< +else + @echo Creating $@ + @$(OD) $(ODFLAGS) $< > $@ + @echo + @$(SZ) $< +endif + +%.list: %.elf $(LDSCRIPT) +ifeq ($(USE_VERBOSE_COMPILE),yes) + $(OD) -S $< > $@ +else + @echo Creating $@ + @$(OD) -S $< > $@ + @echo Done +endif + +lib: $(OBJS) $(BUILDDIR)/lib$(PROJECT).a + +$(BUILDDIR)/lib$(PROJECT).a: $(OBJS) + @$(AR) -r $@ $^ + @echo + @echo Done + +clean: + @echo Cleaning + -rm -fR .dep $(BUILDDIR) + @echo + @echo Done + +# +# Include the dependency files, should be the last of the makefile +# +-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) + +# *** EOF *** diff --git a/os/common/startup/e200/compilers/GCC/rules_z0.ld b/os/common/startup/e200/compilers/GCC/rules_z0.ld new file mode 100644 index 000000000..7474fcb4f --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/rules_z0.ld @@ -0,0 +1,162 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +__ram_size__ = LENGTH(ram); +__ram_start__ = ORIGIN(ram); +__ram_end__ = ORIGIN(ram) + LENGTH(ram); + +ENTRY(_reset_address) + +SECTIONS +{ + . = ORIGIN(flash); + .boot0 : ALIGN(16) SUBALIGN(16) + { + KEEP(*(.boot)) + } > flash + + .boot1 : ALIGN(16) SUBALIGN(16) + { + KEEP(*(.handlers)) + KEEP(*(.crt0)) + /* The vectors table requires a 2kB alignment.*/ + . = ALIGN(0x800); + KEEP(*(.vectors)) + /* The IVPR register requires a 4kB alignment.*/ + . = ALIGN(0x1000); + __ivpr_base__ = .; + KEEP(*(.ivors)) + } > flash + + constructors : ALIGN(4) SUBALIGN(4) + { + PROVIDE(__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE(__init_array_end = .); + } > flash + + destructors : ALIGN(4) SUBALIGN(4) + { + PROVIDE(__fini_array_start = .); + KEEP(*(.fini_array)) + KEEP(*(SORT(.fini_array.*))) + PROVIDE(__fini_array_end = .); + } > flash + + .text_vle : ALIGN(16) SUBALIGN(16) + { + *(.text_vle) + *(.text_vle.*) + *(.gnu.linkonce.t_vle.*) + } > flash + + .text : ALIGN(16) SUBALIGN(16) + { + *(.text) + *(.text.*) + *(.gnu.linkonce.t.*) + } > flash + + .rodata : ALIGN(16) SUBALIGN(16) + { + *(.glue_7t) + *(.glue_7) + *(.gcc*) + *(.rodata) + *(.rodata.*) + *(.rodata1) + } > flash + + .sdata2 : ALIGN(16) SUBALIGN(16) + { + __sdata2_start__ = . + 0x8000; + *(.sdata2) + *(.sdata2.*) + *(.gnu.linkonce.s2.*) + *(.sbss2) + *(.sbss2.*) + *(.gnu.linkonce.sb2.*) + } > flash + + .eh_frame_hdr : + { + *(.eh_frame_hdr) + } > flash + + .eh_frame : ONLY_IF_RO + { + *(.eh_frame) + } > flash + + .romdata : ALIGN(16) SUBALIGN(16) + { + __romdata_start__ = .; + } > flash + + .stacks : ALIGN(16) SUBALIGN(16) + { + . = ALIGN(8); + __irq_stack_base__ = .; + . += __irq_stack_size__; + . = ALIGN(8); + __irq_stack_end__ = .; + __process_stack_base__ = .; + __main_thread_stack_base__ = .; + . += __process_stack_size__; + . = ALIGN(8); + __process_stack_end__ = .; + __main_thread_stack_end__ = .; + } > ram + + .data : AT(__romdata_start__) + { + . = ALIGN(4); + __data_start__ = .; + *(.data) + *(.data.*) + *(.gnu.linkonce.d.*) + __sdata_start__ = . + 0x8000; + *(.sdata) + *(.sdata.*) + *(.gnu.linkonce.s.*) + __data_end__ = .; + } > ram + + .sbss : + { + __bss_start__ = .; + *(.sbss) + *(.sbss.*) + *(.gnu.linkonce.sb.*) + *(.scommon) + } > ram + + .bss : + { + *(.bss) + *(.bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + __bss_end__ = .; + } > ram + + __heap_base__ = __bss_end__; + __heap_end__ = __ram_end__; +} diff --git a/os/common/startup/e200/compilers/GCC/rules_z3.ld b/os/common/startup/e200/compilers/GCC/rules_z3.ld new file mode 100644 index 000000000..a73e3b757 --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/rules_z3.ld @@ -0,0 +1,159 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +__ram_size__ = LENGTH(ram); +__ram_start__ = ORIGIN(ram); +__ram_end__ = ORIGIN(ram) + LENGTH(ram); + +ENTRY(_reset_address) + +SECTIONS +{ + . = ORIGIN(flash); + .boot0 : ALIGN(16) SUBALIGN(16) + { + __ivpr_base__ = .; + KEEP(*(.boot)) + } > flash + + .boot1 : ALIGN(16) SUBALIGN(16) + { + KEEP(*(.handlers)) + KEEP(*(.crt0)) + /* The vectors table requires a 2kB alignment.*/ + . = ALIGN(0x800); + KEEP(*(.vectors)) + } > flash + + constructors : ALIGN(4) SUBALIGN(4) + { + PROVIDE(__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE(__init_array_end = .); + } > flash + + destructors : ALIGN(4) SUBALIGN(4) + { + PROVIDE(__fini_array_start = .); + KEEP(*(.fini_array)) + KEEP(*(SORT(.fini_array.*))) + PROVIDE(__fini_array_end = .); + } > flash + + .text_vle : ALIGN(16) SUBALIGN(16) + { + *(.text_vle) + *(.text_vle.*) + *(.gnu.linkonce.t_vle.*) + } > flash + + .text : ALIGN(16) SUBALIGN(16) + { + *(.text) + *(.text.*) + *(.gnu.linkonce.t.*) + } > flash + + .rodata : ALIGN(16) SUBALIGN(16) + { + *(.glue_7t) + *(.glue_7) + *(.gcc*) + *(.rodata) + *(.rodata.*) + *(.rodata1) + } > flash + + .sdata2 : ALIGN(16) SUBALIGN(16) + { + __sdata2_start__ = . + 0x8000; + *(.sdata2) + *(.sdata2.*) + *(.gnu.linkonce.s2.*) + *(.sbss2) + *(.sbss2.*) + *(.gnu.linkonce.sb2.*) + } > flash + + .eh_frame_hdr : + { + *(.eh_frame_hdr) + } > flash + + .eh_frame : ONLY_IF_RO + { + *(.eh_frame) + } > flash + + .romdata : ALIGN(16) SUBALIGN(16) + { + __romdata_start__ = .; + } > flash + + .stacks : ALIGN(16) SUBALIGN(16) + { + . = ALIGN(8); + __irq_stack_base__ = .; + . += __irq_stack_size__; + . = ALIGN(8); + __irq_stack_end__ = .; + __process_stack_base__ = .; + __main_thread_stack_base__ = .; + . += __process_stack_size__; + . = ALIGN(8); + __process_stack_end__ = .; + __main_thread_stack_end__ = .; + } > ram + + .data : AT(__romdata_start__) + { + . = ALIGN(4); + __data_start__ = .; + *(.data) + *(.data.*) + *(.gnu.linkonce.d.*) + __sdata_start__ = . + 0x8000; + *(.sdata) + *(.sdata.*) + *(.gnu.linkonce.s.*) + __data_end__ = .; + } > ram + + .sbss : + { + __bss_start__ = .; + *(.sbss) + *(.sbss.*) + *(.gnu.linkonce.sb.*) + *(.scommon) + } > ram + + .bss : + { + *(.bss) + *(.bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + __bss_end__ = .; + } > ram + + __heap_base__ = __bss_end__; + __heap_end__ = __ram_end__; +} diff --git a/os/common/startup/e200/compilers/GCC/rules_z4.ld b/os/common/startup/e200/compilers/GCC/rules_z4.ld new file mode 100644 index 000000000..a73e3b757 --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/rules_z4.ld @@ -0,0 +1,159 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +__ram_size__ = LENGTH(ram); +__ram_start__ = ORIGIN(ram); +__ram_end__ = ORIGIN(ram) + LENGTH(ram); + +ENTRY(_reset_address) + +SECTIONS +{ + . = ORIGIN(flash); + .boot0 : ALIGN(16) SUBALIGN(16) + { + __ivpr_base__ = .; + KEEP(*(.boot)) + } > flash + + .boot1 : ALIGN(16) SUBALIGN(16) + { + KEEP(*(.handlers)) + KEEP(*(.crt0)) + /* The vectors table requires a 2kB alignment.*/ + . = ALIGN(0x800); + KEEP(*(.vectors)) + } > flash + + constructors : ALIGN(4) SUBALIGN(4) + { + PROVIDE(__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE(__init_array_end = .); + } > flash + + destructors : ALIGN(4) SUBALIGN(4) + { + PROVIDE(__fini_array_start = .); + KEEP(*(.fini_array)) + KEEP(*(SORT(.fini_array.*))) + PROVIDE(__fini_array_end = .); + } > flash + + .text_vle : ALIGN(16) SUBALIGN(16) + { + *(.text_vle) + *(.text_vle.*) + *(.gnu.linkonce.t_vle.*) + } > flash + + .text : ALIGN(16) SUBALIGN(16) + { + *(.text) + *(.text.*) + *(.gnu.linkonce.t.*) + } > flash + + .rodata : ALIGN(16) SUBALIGN(16) + { + *(.glue_7t) + *(.glue_7) + *(.gcc*) + *(.rodata) + *(.rodata.*) + *(.rodata1) + } > flash + + .sdata2 : ALIGN(16) SUBALIGN(16) + { + __sdata2_start__ = . + 0x8000; + *(.sdata2) + *(.sdata2.*) + *(.gnu.linkonce.s2.*) + *(.sbss2) + *(.sbss2.*) + *(.gnu.linkonce.sb2.*) + } > flash + + .eh_frame_hdr : + { + *(.eh_frame_hdr) + } > flash + + .eh_frame : ONLY_IF_RO + { + *(.eh_frame) + } > flash + + .romdata : ALIGN(16) SUBALIGN(16) + { + __romdata_start__ = .; + } > flash + + .stacks : ALIGN(16) SUBALIGN(16) + { + . = ALIGN(8); + __irq_stack_base__ = .; + . += __irq_stack_size__; + . = ALIGN(8); + __irq_stack_end__ = .; + __process_stack_base__ = .; + __main_thread_stack_base__ = .; + . += __process_stack_size__; + . = ALIGN(8); + __process_stack_end__ = .; + __main_thread_stack_end__ = .; + } > ram + + .data : AT(__romdata_start__) + { + . = ALIGN(4); + __data_start__ = .; + *(.data) + *(.data.*) + *(.gnu.linkonce.d.*) + __sdata_start__ = . + 0x8000; + *(.sdata) + *(.sdata.*) + *(.gnu.linkonce.s.*) + __data_end__ = .; + } > ram + + .sbss : + { + __bss_start__ = .; + *(.sbss) + *(.sbss.*) + *(.gnu.linkonce.sb.*) + *(.scommon) + } > ram + + .bss : + { + *(.bss) + *(.bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + __bss_end__ = .; + } > ram + + __heap_base__ = __bss_end__; + __heap_end__ = __ram_end__; +} diff --git a/os/common/startup/e200/compilers/GCC/vectors.h b/os/common/startup/e200/compilers/GCC/vectors.h new file mode 100644 index 000000000..a374a87c7 --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/vectors.h @@ -0,0 +1,81 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file vectors.h + * @brief ISR vector module header. + * + * @addtogroup PPC_GCC_CORE + * @{ + */ + +#ifndef _VECTORS_H_ +#define _VECTORS_H_ + +#include "ppcparams.h" + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/* The following code is not processed when the file is included from an + asm module.*/ +#if !defined(_FROM_ASM_) + +#if !defined(__DOXYGEN__) +extern uint32_t _vectors[PPC_NUM_VECTORS]; +#endif + +#ifdef __cplusplus +extern "C" { +#endif + void _unhandled_irq(void); +#ifdef __cplusplus +} +#endif + +#endif /* !defined(_FROM_ASM_) */ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _VECTORS_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/compilers/GCC/vectors.s b/os/common/startup/e200/compilers/GCC/vectors.s new file mode 100644 index 000000000..e142f1150 --- /dev/null +++ b/os/common/startup/e200/compilers/GCC/vectors.s @@ -0,0 +1,2615 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file vectors.s + * @brief SPC56x vectors table. + * + * @addtogroup PPC_GCC_CORE + * @{ + */ + +#define _FROM_ASM_ +#include "ppcparams.h" + +#if defined(VECTORS_RENAMING) +#include "isrs.h" +#endif + +#if !defined(__DOXYGEN__) + + /* Software vectors table. The vectors are accessed from the IVOR4 + handler only. In order to declare an interrupt handler just create + a function withe the same name of a vector, the symbol will + override the weak symbol declared here.*/ + .section .vectors, "ax" + .align 4 + .globl _vectors +_vectors: + .long vector0, vector1, vector2, vector3 +#if PPC_NUM_VECTORS > 4 + .long vector4, vector5, vector6, vector7 +#endif +#if PPC_NUM_VECTORS > 8 + .long vector8, vector9, vector10, vector11 +#endif +#if PPC_NUM_VECTORS > 12 + .long vector12, vector13, vector14, vector15 +#endif +#if PPC_NUM_VECTORS > 16 + .long vector16, vector17, vector18, vector19 +#endif +#if PPC_NUM_VECTORS > 20 + .long vector20, vector21, vector22, vector23 +#endif +#if PPC_NUM_VECTORS > 24 + .long vector24, vector25, vector26, vector27 +#endif +#if PPC_NUM_VECTORS > 28 + .long vector28, vector29, vector30, vector31 +#endif +#if PPC_NUM_VECTORS > 32 + .long vector32, vector33, vector34, vector35 +#endif +#if PPC_NUM_VECTORS > 36 + .long vector36, vector37, vector38, vector39 +#endif +#if PPC_NUM_VECTORS > 40 + .long vector40, vector41, vector42, vector43 +#endif +#if PPC_NUM_VECTORS > 44 + .long vector44, vector45, vector46, vector47 +#endif +#if PPC_NUM_VECTORS > 48 + .long vector48, vector49, vector50, vector51 +#endif +#if PPC_NUM_VECTORS > 52 + .long vector52, vector53, vector54, vector55 +#endif +#if PPC_NUM_VECTORS > 56 + .long vector56, vector57, vector58, vector59 +#endif +#if PPC_NUM_VECTORS > 60 + .long vector60, vector61, vector62, vector63 +#endif +#if PPC_NUM_VECTORS > 64 + .long vector64, vector65, vector66, vector67 +#endif +#if PPC_NUM_VECTORS > 68 + .long vector68, vector69, vector70, vector71 +#endif +#if PPC_NUM_VECTORS > 72 + .long vector72, vector73, vector74, vector75 +#endif +#if PPC_NUM_VECTORS > 76 + .long vector76, vector77, vector78, vector79 +#endif +#if PPC_NUM_VECTORS > 80 + .long vector80, vector81, vector82, vector83 +#endif +#if PPC_NUM_VECTORS > 84 + .long vector84, vector85, vector86, vector87 +#endif +#if PPC_NUM_VECTORS > 88 + .long vector88, vector89, vector90, vector91 +#endif +#if PPC_NUM_VECTORS > 92 + .long vector92, vector93, vector94, vector95 +#endif +#if PPC_NUM_VECTORS > 96 + .long vector96, vector97, vector98, vector99 +#endif +#if PPC_NUM_VECTORS > 100 + .long vector100, vector101, vector102, vector103 +#endif +#if PPC_NUM_VECTORS > 104 + .long vector104, vector105, vector106, vector107 +#endif +#if PPC_NUM_VECTORS > 108 + .long vector108, vector109, vector110, vector111 +#endif +#if PPC_NUM_VECTORS > 112 + .long vector112, vector113, vector114, vector115 +#endif +#if PPC_NUM_VECTORS > 116 + .long vector116, vector117, vector118, vector119 +#endif +#if PPC_NUM_VECTORS > 120 + .long vector120, vector121, vector122, vector123 +#endif +#if PPC_NUM_VECTORS > 124 + .long vector124, vector125, vector126, vector127 +#endif +#if PPC_NUM_VECTORS > 128 + .long vector128, vector129, vector130, vector131 +#endif +#if PPC_NUM_VECTORS > 132 + .long vector132, vector133, vector134, vector135 +#endif +#if PPC_NUM_VECTORS > 136 + .long vector136, vector137, vector138, vector139 +#endif +#if PPC_NUM_VECTORS > 140 + .long vector140, vector141, vector142, vector143 +#endif +#if PPC_NUM_VECTORS > 144 + .long vector144, vector145, vector146, vector147 +#endif +#if PPC_NUM_VECTORS > 148 + .long vector148, vector149, vector150, vector151 +#endif +#if PPC_NUM_VECTORS > 152 + .long vector152, vector153, vector154, vector155 +#endif +#if PPC_NUM_VECTORS > 156 + .long vector156, vector157, vector158, vector159 +#endif +#if PPC_NUM_VECTORS > 160 + .long vector160, vector161, vector162, vector163 +#endif +#if PPC_NUM_VECTORS > 164 + .long vector164, vector165, vector166, vector167 +#endif +#if PPC_NUM_VECTORS > 168 + .long vector168, vector169, vector170, vector171 +#endif +#if PPC_NUM_VECTORS > 172 + .long vector172, vector173, vector174, vector175 +#endif +#if PPC_NUM_VECTORS > 176 + .long vector176, vector177, vector178, vector179 +#endif +#if PPC_NUM_VECTORS > 180 + .long vector180, vector181, vector182, vector183 +#endif +#if PPC_NUM_VECTORS > 184 + .long vector184, vector185, vector186, vector187 +#endif +#if PPC_NUM_VECTORS > 188 + .long vector188, vector189, vector190, vector191 +#endif +#if PPC_NUM_VECTORS > 192 + .long vector192, vector193, vector194, vector195 +#endif +#if PPC_NUM_VECTORS > 196 + .long vector196, vector197, vector198, vector199 +#endif +#if PPC_NUM_VECTORS > 200 + .long vector200, vector201, vector202, vector203 +#endif +#if PPC_NUM_VECTORS > 204 + .long vector204, vector205, vector206, vector207 +#endif +#if PPC_NUM_VECTORS > 208 + .long vector208, vector209, vector210, vector211 +#endif +#if PPC_NUM_VECTORS > 212 + .long vector212, vector213, vector214, vector215 +#endif +#if PPC_NUM_VECTORS > 216 + .long vector216, vector217, vector218, vector219 +#endif +#if PPC_NUM_VECTORS > 220 + .long vector220, vector221, vector222, vector223 +#endif +#if PPC_NUM_VECTORS > 224 + .long vector224, vector225, vector226, vector227 +#endif +#if PPC_NUM_VECTORS > 228 + .long vector228, vector229, vector230, vector231 +#endif +#if PPC_NUM_VECTORS > 232 + .long vector232, vector233, vector234, vector235 +#endif +#if PPC_NUM_VECTORS > 236 + .long vector236, vector237, vector238, vector239 +#endif +#if PPC_NUM_VECTORS > 240 + .long vector240, vector241, vector242, vector243 +#endif +#if PPC_NUM_VECTORS > 244 + .long vector244, vector245, vector246, vector247 +#endif +#if PPC_NUM_VECTORS > 248 + .long vector248, vector249, vector250, vector251 +#endif +#if PPC_NUM_VECTORS > 252 + .long vector252, vector253, vector254, vector255 +#endif +#if PPC_NUM_VECTORS > 256 + .long vector256, vector257, vector258, vector259 +#endif +#if PPC_NUM_VECTORS > 260 + .long vector260, vector261, vector262, vector263 +#endif +#if PPC_NUM_VECTORS > 264 + .long vector264, vector265, vector266, vector267 +#endif +#if PPC_NUM_VECTORS > 268 + .long vector268, vector269, vector270, vector271 +#endif +#if PPC_NUM_VECTORS > 272 + .long vector272, vector273, vector274, vector275 +#endif +#if PPC_NUM_VECTORS > 276 + .long vector276, vector277, vector278, vector279 +#endif +#if PPC_NUM_VECTORS > 280 + .long vector280, vector281, vector282, vector283 +#endif +#if PPC_NUM_VECTORS > 284 + .long vector284, vector285, vector286, vector287 +#endif +#if PPC_NUM_VECTORS > 288 + .long vector288, vector289, vector290, vector291 +#endif +#if PPC_NUM_VECTORS > 292 + .long vector292, vector293, vector294, vector295 +#endif +#if PPC_NUM_VECTORS > 296 + .long vector296, vector297, vector298, vector299 +#endif +#if PPC_NUM_VECTORS > 300 + .long vector300, vector301, vector302, vector303 +#endif +#if PPC_NUM_VECTORS > 304 + .long vector304, vector305, vector306, vector307 +#endif +#if PPC_NUM_VECTORS > 308 + .long vector308, vector309, vector310, vector311 +#endif +#if PPC_NUM_VECTORS > 312 + .long vector312, vector313, vector314, vector315 +#endif +#if PPC_NUM_VECTORS > 316 + .long vector316, vector317, vector318, vector319 +#endif +#if PPC_NUM_VECTORS > 320 + .long vector320, vector321, vector322, vector323 +#endif +#if PPC_NUM_VECTORS > 324 + .long vector324, vector325, vector326, vector327 +#endif +#if PPC_NUM_VECTORS > 328 + .long vector328, vector329, vector330, vector331 +#endif +#if PPC_NUM_VECTORS > 332 + .long vector332, vector333, vector334, vector335 +#endif +#if PPC_NUM_VECTORS > 336 + .long vector336, vector337, vector338, vector339 +#endif +#if PPC_NUM_VECTORS > 340 + .long vector340, vector341, vector342, vector343 +#endif +#if PPC_NUM_VECTORS > 344 + .long vector344, vector345, vector346, vector347 +#endif +#if PPC_NUM_VECTORS > 348 + .long vector348, vector349, vector350, vector351 +#endif +#if PPC_NUM_VECTORS > 352 + .long vector352, vector353, vector354, vector355 +#endif +#if PPC_NUM_VECTORS > 356 + .long vector356, vector357, vector358, vector359 +#endif +#if PPC_NUM_VECTORS > 360 + .long vector360, vector361, vector362, vector363 +#endif +#if PPC_NUM_VECTORS > 364 + .long vector364, vector365, vector366, vector367 +#endif +#if PPC_NUM_VECTORS > 368 + .long vector368, vector369, vector370, vector371 +#endif +#if PPC_NUM_VECTORS > 372 + .long vector372, vector373, vector374, vector375 +#endif +#if PPC_NUM_VECTORS > 376 + .long vector376, vector377, vector378, vector379 +#endif +#if PPC_NUM_VECTORS > 380 + .long vector380, vector381, vector382, vector383 +#endif +#if PPC_NUM_VECTORS > 384 + .long vector384, vector385, vector386, vector387 +#endif +#if PPC_NUM_VECTORS > 388 + .long vector388, vector389, vector390, vector391 +#endif +#if PPC_NUM_VECTORS > 392 + .long vector392, vector393, vector394, vector395 +#endif +#if PPC_NUM_VECTORS > 396 + .long vector396, vector397, vector398, vector399 +#endif +#if PPC_NUM_VECTORS > 400 + .long vector400, vector401, vector402, vector403 +#endif +#if PPC_NUM_VECTORS > 404 + .long vector404, vector405, vector406, vector407 +#endif +#if PPC_NUM_VECTORS > 408 + .long vector408, vector409, vector410, vector411 +#endif +#if PPC_NUM_VECTORS > 412 + .long vector412, vector413, vector414, vector415 +#endif +#if PPC_NUM_VECTORS > 416 + .long vector416, vector417, vector418, vector419 +#endif +#if PPC_NUM_VECTORS > 420 + .long vector420, vector421, vector422, vector423 +#endif +#if PPC_NUM_VECTORS > 424 + .long vector424, vector425, vector426, vector427 +#endif +#if PPC_NUM_VECTORS > 428 + .long vector428, vector429, vector430, vector431 +#endif +#if PPC_NUM_VECTORS > 432 + .long vector432, vector433, vector434, vector435 +#endif +#if PPC_NUM_VECTORS > 436 + .long vector436, vector437, vector438, vector439 +#endif +#if PPC_NUM_VECTORS > 440 + .long vector440, vector441, vector442, vector443 +#endif +#if PPC_NUM_VECTORS > 444 + .long vector444, vector445, vector446, vector447 +#endif +#if PPC_NUM_VECTORS > 448 + .long vector448, vector449, vector450, vector451 +#endif +#if PPC_NUM_VECTORS > 452 + .long vector452, vector453, vector454, vector455 +#endif +#if PPC_NUM_VECTORS > 456 + .long vector456, vector457, vector458, vector459 +#endif +#if PPC_NUM_VECTORS > 460 + .long vector460, vector461, vector462, vector463 +#endif +#if PPC_NUM_VECTORS > 464 + .long vector464, vector465, vector466, vector467 +#endif +#if PPC_NUM_VECTORS > 468 + .long vector468, vector469, vector470, vector471 +#endif +#if PPC_NUM_VECTORS > 472 + .long vector472, vector473, vector474, vector475 +#endif +#if PPC_NUM_VECTORS > 476 + .long vector476, vector477, vector478, vector479 +#endif +#if PPC_NUM_VECTORS > 480 + .long vector480, vector481, vector482, vector483 +#endif +#if PPC_NUM_VECTORS > 484 + .long vector484, vector485, vector486, vector487 +#endif +#if PPC_NUM_VECTORS > 488 + .long vector488, vector489, vector490, vector491 +#endif +#if PPC_NUM_VECTORS > 492 + .long vector492, vector493, vector494, vector495 +#endif +#if PPC_NUM_VECTORS > 496 + .long vector496, vector497, vector498, vector499 +#endif +#if PPC_NUM_VECTORS > 500 + .long vector500, vector501, vector502, vector503 +#endif +#if PPC_NUM_VECTORS > 504 + .long vector504, vector505, vector506, vector507 +#endif +#if PPC_NUM_VECTORS > 508 + .long vector508, vector509, vector510, vector511 +#endif +#if PPC_NUM_VECTORS > 512 + .long vector512, vector513, vector514, vector515 +#endif +#if PPC_NUM_VECTORS > 516 + .long vector516, vector517, vector518, vector519 +#endif +#if PPC_NUM_VECTORS > 520 + .long vector520, vector521, vector522, vector523 +#endif +#if PPC_NUM_VECTORS > 524 + .long vector524, vector525, vector526, vector527 +#endif +#if PPC_NUM_VECTORS > 528 + .long vector528, vector529, vector530, vector531 +#endif +#if PPC_NUM_VECTORS > 532 + .long vector532, vector533, vector534, vector535 +#endif +#if PPC_NUM_VECTORS > 536 + .long vector536, vector537, vector538, vector539 +#endif +#if PPC_NUM_VECTORS > 540 + .long vector540, vector541, vector542, vector543 +#endif +#if PPC_NUM_VECTORS > 544 + .long vector544, vector545, vector546, vector547 +#endif +#if PPC_NUM_VECTORS > 548 + .long vector548, vector549, vector550, vector551 +#endif +#if PPC_NUM_VECTORS > 552 + .long vector552, vector553, vector554, vector555 +#endif +#if PPC_NUM_VECTORS > 556 + .long vector556, vector557, vector558, vector559 +#endif +#if PPC_NUM_VECTORS > 560 + .long vector560, vector561, vector562, vector563 +#endif +#if PPC_NUM_VECTORS > 564 + .long vector564, vector565, vector566, vector567 +#endif +#if PPC_NUM_VECTORS > 568 + .long vector568, vector569, vector570, vector571 +#endif +#if PPC_NUM_VECTORS > 572 + .long vector572, vector573, vector574, vector575 +#endif +#if PPC_NUM_VECTORS > 576 + .long vector576, vector577, vector578, vector579 +#endif +#if PPC_NUM_VECTORS > 580 + .long vector580, vector581, vector582, vector583 +#endif +#if PPC_NUM_VECTORS > 584 + .long vector584, vector585, vector586, vector587 +#endif +#if PPC_NUM_VECTORS > 588 + .long vector588, vector589, vector590, vector591 +#endif +#if PPC_NUM_VECTORS > 592 + .long vector592, vector593, vector594, vector595 +#endif +#if PPC_NUM_VECTORS > 596 + .long vector596, vector597, vector598, vector599 +#endif +#if PPC_NUM_VECTORS > 600 + .long vector600, vector601, vector602, vector603 +#endif +#if PPC_NUM_VECTORS > 604 + .long vector604, vector605, vector606, vector607 +#endif +#if PPC_NUM_VECTORS > 608 + .long vector608, vector609, vector610, vector611 +#endif +#if PPC_NUM_VECTORS > 612 + .long vector612, vector613, vector614, vector615 +#endif +#if PPC_NUM_VECTORS > 616 + .long vector616, vector617, vector618, vector619 +#endif +#if PPC_NUM_VECTORS > 620 + .long vector620, vector621, vector622, vector623 +#endif +#if PPC_NUM_VECTORS > 624 + .long vector624, vector625, vector626, vector627 +#endif +#if PPC_NUM_VECTORS > 628 + .long vector628, vector629, vector630, vector631 +#endif +#if PPC_NUM_VECTORS > 632 + .long vector632, vector633, vector634, vector635 +#endif +#if PPC_NUM_VECTORS > 636 + .long vector636, vector637, vector638, vector639 +#endif +#if PPC_NUM_VECTORS > 640 + .long vector640, vector641, vector642, vector643 +#endif +#if PPC_NUM_VECTORS > 644 + .long vector644, vector645, vector646, vector647 +#endif +#if PPC_NUM_VECTORS > 648 + .long vector648, vector649, vector650, vector651 +#endif +#if PPC_NUM_VECTORS > 652 + .long vector652, vector653, vector654, vector655 +#endif +#if PPC_NUM_VECTORS > 656 + .long vector656, vector657, vector658, vector659 +#endif +#if PPC_NUM_VECTORS > 660 + .long vector660, vector661, vector662, vector663 +#endif +#if PPC_NUM_VECTORS > 664 + .long vector664, vector665, vector666, vector667 +#endif +#if PPC_NUM_VECTORS > 668 + .long vector668, vector669, vector670, vector671 +#endif +#if PPC_NUM_VECTORS > 672 + .long vector672, vector673, vector674, vector675 +#endif +#if PPC_NUM_VECTORS > 676 + .long vector676, vector677, vector678, vector679 +#endif +#if PPC_NUM_VECTORS > 680 + .long vector680, vector681, vector682, vector683 +#endif +#if PPC_NUM_VECTORS > 684 + .long vector684, vector685, vector686, vector687 +#endif +#if PPC_NUM_VECTORS > 688 + .long vector688, vector689, vector690, vector691 +#endif +#if PPC_NUM_VECTORS > 692 + .long vector692, vector693, vector694, vector695 +#endif +#if PPC_NUM_VECTORS > 696 + .long vector696, vector697, vector698, vector699 +#endif +#if PPC_NUM_VECTORS > 700 + .long vector700, vector701, vector702, vector703 +#endif +#if PPC_NUM_VECTORS > 704 + .long vector704, vector705, vector706, vector707 +#endif +#if PPC_NUM_VECTORS > 708 + .long vector708, vector709, vector710, vector711 +#endif +#if PPC_NUM_VECTORS > 712 + .long vector712, vector713, vector714, vector715 +#endif +#if PPC_NUM_VECTORS > 716 + .long vector716, vector717, vector718, vector719 +#endif +#if PPC_NUM_VECTORS > 720 + .long vector720, vector721, vector722, vector723 +#endif +#if PPC_NUM_VECTORS > 724 + .long vector724, vector725, vector726, vector727 +#endif +#if PPC_NUM_VECTORS > 728 + .long vector728, vector729, vector730, vector731 +#endif +#if PPC_NUM_VECTORS > 732 + .long vector732, vector733, vector734, vector735 +#endif +#if PPC_NUM_VECTORS > 736 + .long vector736, vector737, vector738, vector739 +#endif +#if PPC_NUM_VECTORS > 740 + .long vector740, vector741, vector742, vector743 +#endif +#if PPC_NUM_VECTORS > 744 + .long vector744, vector745, vector746, vector747 +#endif +#if PPC_NUM_VECTORS > 748 + .long vector748, vector749, vector750, vector751 +#endif +#if PPC_NUM_VECTORS > 752 + .long vector752, vector753, vector754, vector755 +#endif +#if PPC_NUM_VECTORS > 756 + .long vector756, vector757, vector758, vector759 +#endif +#if PPC_NUM_VECTORS > 760 + .long vector760, vector761, vector762, vector763 +#endif +#if PPC_NUM_VECTORS > 764 + .long vector764, vector765, vector766, vector767 +#endif +#if PPC_NUM_VECTORS > 768 + .long vector768, vector769, vector770, vector771 +#endif +#if PPC_NUM_VECTORS > 772 + .long vector772, vector773, vector774, vector775 +#endif +#if PPC_NUM_VECTORS > 776 + .long vector776, vector777, vector778, vector779 +#endif +#if PPC_NUM_VECTORS > 780 + .long vector780, vector781, vector782, vector783 +#endif +#if PPC_NUM_VECTORS > 784 + .long vector784, vector785, vector786, vector787 +#endif +#if PPC_NUM_VECTORS > 788 + .long vector788, vector789, vector790, vector791 +#endif +#if PPC_NUM_VECTORS > 792 + .long vector792, vector793, vector794, vector795 +#endif +#if PPC_NUM_VECTORS > 796 + .long vector796, vector797, vector798, vector799 +#endif +#if PPC_NUM_VECTORS > 800 + .long vector800, vector801, vector802, vector803 +#endif +#if PPC_NUM_VECTORS > 804 + .long vector804, vector805, vector806, vector807 +#endif +#if PPC_NUM_VECTORS > 808 + .long vector808, vector809, vector810, vector811 +#endif +#if PPC_NUM_VECTORS > 812 + .long vector812, vector813, vector814, vector815 +#endif +#if PPC_NUM_VECTORS > 816 + .long vector816, vector817, vector818, vector819 +#endif +#if PPC_NUM_VECTORS > 820 + .long vector820, vector821, vector822, vector823 +#endif +#if PPC_NUM_VECTORS > 824 + .long vector824, vector825, vector826, vector827 +#endif +#if PPC_NUM_VECTORS > 828 + .long vector828, vector829, vector830, vector831 +#endif +#if PPC_NUM_VECTORS > 832 + .long vector832, vector833, vector834, vector835 +#endif +#if PPC_NUM_VECTORS > 836 + .long vector836, vector837, vector838, vector839 +#endif +#if PPC_NUM_VECTORS > 840 + .long vector840, vector841, vector842, vector843 +#endif +#if PPC_NUM_VECTORS > 844 + .long vector844, vector845, vector846, vector847 +#endif +#if PPC_NUM_VECTORS > 848 + .long vector848, vector849, vector850, vector851 +#endif +#if PPC_NUM_VECTORS > 852 + .long vector852, vector853, vector854, vector855 +#endif +#if PPC_NUM_VECTORS > 856 + .long vector856, vector857, vector858, vector859 +#endif +#if PPC_NUM_VECTORS > 860 + .long vector860, vector861, vector862, vector863 +#endif +#if PPC_NUM_VECTORS > 864 + .long vector864, vector865, vector866, vector867 +#endif +#if PPC_NUM_VECTORS > 868 + .long vector868, vector869, vector870, vector871 +#endif +#if PPC_NUM_VECTORS > 872 + .long vector872, vector873, vector874, vector875 +#endif +#if PPC_NUM_VECTORS > 876 + .long vector876, vector877, vector878, vector879 +#endif +#if PPC_NUM_VECTORS > 880 + .long vector880, vector881, vector882, vector883 +#endif +#if PPC_NUM_VECTORS > 884 + .long vector884, vector885, vector886, vector887 +#endif +#if PPC_NUM_VECTORS > 888 + .long vector888, vector889, vector890, vector891 +#endif +#if PPC_NUM_VECTORS > 892 + .long vector892, vector893, vector894, vector895 +#endif +#if PPC_NUM_VECTORS > 896 + .long vector896, vector897, vector898, vector899 +#endif +#if PPC_NUM_VECTORS > 900 + .long vector900, vector901, vector902, vector903 +#endif +#if PPC_NUM_VECTORS > 904 + .long vector904, vector905, vector906, vector907 +#endif +#if PPC_NUM_VECTORS > 908 + .long vector908, vector909, vector910, vector911 +#endif +#if PPC_NUM_VECTORS > 912 + .long vector912, vector913, vector914, vector915 +#endif +#if PPC_NUM_VECTORS > 916 + .long vector916, vector917, vector918, vector919 +#endif +#if PPC_NUM_VECTORS > 920 + .long vector920, vector921, vector922, vector923 +#endif +#if PPC_NUM_VECTORS > 924 + .long vector924, vector925, vector926, vector927 +#endif +#if PPC_NUM_VECTORS > 928 + .long vector928, vector929, vector930, vector931 +#endif +#if PPC_NUM_VECTORS > 932 + .long vector932, vector933, vector934, vector935 +#endif +#if PPC_NUM_VECTORS > 936 + .long vector936, vector937, vector938, vector939 +#endif +#if PPC_NUM_VECTORS > 940 + .long vector940, vector941, vector942, vector943 +#endif +#if PPC_NUM_VECTORS > 944 + .long vector944, vector945, vector946, vector947 +#endif +#if PPC_NUM_VECTORS > 948 + .long vector948, vector949, vector950, vector951 +#endif +#if PPC_NUM_VECTORS > 952 + .long vector952, vector953, vector954, vector955 +#endif +#if PPC_NUM_VECTORS > 956 + .long vector956, vector957, vector958, vector959 +#endif +#if PPC_NUM_VECTORS > 960 + .long vector960, vector961, vector962, vector963 +#endif +#if PPC_NUM_VECTORS > 964 + .long vector964, vector965, vector966, vector967 +#endif +#if PPC_NUM_VECTORS > 968 + .long vector968, vector969, vector970, vector971 +#endif +#if PPC_NUM_VECTORS > 972 + .long vector972, vector973, vector974, vector975 +#endif +#if PPC_NUM_VECTORS > 976 + .long vector976, vector977, vector978, vector979 +#endif +#if PPC_NUM_VECTORS > 980 + .long vector980, vector981, vector982, vector983 +#endif +#if PPC_NUM_VECTORS > 984 + .long vector984, vector985, vector986, vector987 +#endif +#if PPC_NUM_VECTORS > 988 + .long vector988, vector989, vector990, vector991 +#endif +#if PPC_NUM_VECTORS > 992 + .long vector992, vector993, vector994, vector995 +#endif +#if PPC_NUM_VECTORS > 996 + .long vector996, vector997, vector998, vector999 +#endif +#if PPC_NUM_VECTORS > 1000 + .long vector1000, vector1001, vector1002, vector1003 +#endif +#if PPC_NUM_VECTORS > 1004 + .long vector1004, vector1005, vector1006, vector1007 +#endif +#if PPC_NUM_VECTORS > 1008 + .long vector1008, vector1009, vector1010, vector1011 +#endif +#if PPC_NUM_VECTORS > 1012 + .long vector1012, vector1013, vector1014, vector1015 +#endif +#if PPC_NUM_VECTORS > 1016 + .long vector1016, vector1017, vector1018, vector1019 +#endif +#if PPC_NUM_VECTORS > 1020 + .long vector1020, vector1021, vector1022, vector1023 +#endif + + .text + .align 2 + + .weak vector0, vector1, vector2, vector3 +#if PPC_NUM_VECTORS > 4 + .weak vector4, vector5, vector6, vector7 +#endif +#if PPC_NUM_VECTORS > 8 + .weak vector8, vector9, vector10, vector11 +#endif +#if PPC_NUM_VECTORS > 12 + .weak vector12, vector13, vector14, vector15 +#endif +#if PPC_NUM_VECTORS > 16 + .weak vector16, vector17, vector18, vector19 +#endif +#if PPC_NUM_VECTORS > 20 + .weak vector20, vector21, vector22, vector23 +#endif +#if PPC_NUM_VECTORS > 24 + .weak vector24, vector25, vector26, vector27 +#endif +#if PPC_NUM_VECTORS > 28 + .weak vector28, vector29, vector30, vector31 +#endif +#if PPC_NUM_VECTORS > 32 + .weak vector32, vector33, vector34, vector35 +#endif +#if PPC_NUM_VECTORS > 36 + .weak vector36, vector37, vector38, vector39 +#endif +#if PPC_NUM_VECTORS > 40 + .weak vector40, vector41, vector42, vector43 +#endif +#if PPC_NUM_VECTORS > 44 + .weak vector44, vector45, vector46, vector47 +#endif +#if PPC_NUM_VECTORS > 48 + .weak vector48, vector49, vector50, vector51 +#endif +#if PPC_NUM_VECTORS > 52 + .weak vector52, vector53, vector54, vector55 +#endif +#if PPC_NUM_VECTORS > 56 + .weak vector56, vector57, vector58, vector59 +#endif +#if PPC_NUM_VECTORS > 60 + .weak vector60, vector61, vector62, vector63 +#endif +#if PPC_NUM_VECTORS > 64 + .weak vector64, vector65, vector66, vector67 +#endif +#if PPC_NUM_VECTORS > 68 + .weak vector68, vector69, vector70, vector71 +#endif +#if PPC_NUM_VECTORS > 72 + .weak vector72, vector73, vector74, vector75 +#endif +#if PPC_NUM_VECTORS > 76 + .weak vector76, vector77, vector78, vector79 +#endif +#if PPC_NUM_VECTORS > 80 + .weak vector80, vector81, vector82, vector83 +#endif +#if PPC_NUM_VECTORS > 84 + .weak vector84, vector85, vector86, vector87 +#endif +#if PPC_NUM_VECTORS > 88 + .weak vector88, vector89, vector90, vector91 +#endif +#if PPC_NUM_VECTORS > 92 + .weak vector92, vector93, vector94, vector95 +#endif +#if PPC_NUM_VECTORS > 96 + .weak vector96, vector97, vector98, vector99 +#endif +#if PPC_NUM_VECTORS > 100 + .weak vector100, vector101, vector102, vector103 +#endif +#if PPC_NUM_VECTORS > 104 + .weak vector104, vector105, vector106, vector107 +#endif +#if PPC_NUM_VECTORS > 108 + .weak vector108, vector109, vector110, vector111 +#endif +#if PPC_NUM_VECTORS > 112 + .weak vector112, vector113, vector114, vector115 +#endif +#if PPC_NUM_VECTORS > 116 + .weak vector116, vector117, vector118, vector119 +#endif +#if PPC_NUM_VECTORS > 120 + .weak vector120, vector121, vector122, vector123 +#endif +#if PPC_NUM_VECTORS > 124 + .weak vector124, vector125, vector126, vector127 +#endif +#if PPC_NUM_VECTORS > 128 + .weak vector128, vector129, vector130, vector131 +#endif +#if PPC_NUM_VECTORS > 132 + .weak vector132, vector133, vector134, vector135 +#endif +#if PPC_NUM_VECTORS > 136 + .weak vector136, vector137, vector138, vector139 +#endif +#if PPC_NUM_VECTORS > 140 + .weak vector140, vector141, vector142, vector143 +#endif +#if PPC_NUM_VECTORS > 144 + .weak vector144, vector145, vector146, vector147 +#endif +#if PPC_NUM_VECTORS > 148 + .weak vector148, vector149, vector150, vector151 +#endif +#if PPC_NUM_VECTORS > 152 + .weak vector152, vector153, vector154, vector155 +#endif +#if PPC_NUM_VECTORS > 156 + .weak vector156, vector157, vector158, vector159 +#endif +#if PPC_NUM_VECTORS > 160 + .weak vector160, vector161, vector162, vector163 +#endif +#if PPC_NUM_VECTORS > 164 + .weak vector164, vector165, vector166, vector167 +#endif +#if PPC_NUM_VECTORS > 168 + .weak vector168, vector169, vector170, vector171 +#endif +#if PPC_NUM_VECTORS > 172 + .weak vector172, vector173, vector174, vector175 +#endif +#if PPC_NUM_VECTORS > 176 + .weak vector176, vector177, vector178, vector179 +#endif +#if PPC_NUM_VECTORS > 180 + .weak vector180, vector181, vector182, vector183 +#endif +#if PPC_NUM_VECTORS > 184 + .weak vector184, vector185, vector186, vector187 +#endif +#if PPC_NUM_VECTORS > 188 + .weak vector188, vector189, vector190, vector191 +#endif +#if PPC_NUM_VECTORS > 192 + .weak vector192, vector193, vector194, vector195 +#endif +#if PPC_NUM_VECTORS > 196 + .weak vector196, vector197, vector198, vector199 +#endif +#if PPC_NUM_VECTORS > 200 + .weak vector200, vector201, vector202, vector203 +#endif +#if PPC_NUM_VECTORS > 204 + .weak vector204, vector205, vector206, vector207 +#endif +#if PPC_NUM_VECTORS > 208 + .weak vector208, vector209, vector210, vector211 +#endif +#if PPC_NUM_VECTORS > 212 + .weak vector212, vector213, vector214, vector215 +#endif +#if PPC_NUM_VECTORS > 216 + .weak vector216, vector217, vector218, vector219 +#endif +#if PPC_NUM_VECTORS > 220 + .weak vector220, vector221, vector222, vector223 +#endif +#if PPC_NUM_VECTORS > 224 + .weak vector224, vector225, vector226, vector227 +#endif +#if PPC_NUM_VECTORS > 228 + .weak vector228, vector229, vector230, vector231 +#endif +#if PPC_NUM_VECTORS > 232 + .weak vector232, vector233, vector234, vector235 +#endif +#if PPC_NUM_VECTORS > 236 + .weak vector236, vector237, vector238, vector239 +#endif +#if PPC_NUM_VECTORS > 240 + .weak vector240, vector241, vector242, vector243 +#endif +#if PPC_NUM_VECTORS > 244 + .weak vector244, vector245, vector246, vector247 +#endif +#if PPC_NUM_VECTORS > 248 + .weak vector248, vector249, vector250, vector251 +#endif +#if PPC_NUM_VECTORS > 252 + .weak vector252, vector253, vector254, vector255 +#endif +#if PPC_NUM_VECTORS > 256 + .weak vector256, vector257, vector258, vector259 +#endif +#if PPC_NUM_VECTORS > 260 + .weak vector260, vector261, vector262, vector263 +#endif +#if PPC_NUM_VECTORS > 264 + .weak vector264, vector265, vector266, vector267 +#endif +#if PPC_NUM_VECTORS > 268 + .weak vector268, vector269, vector270, vector271 +#endif +#if PPC_NUM_VECTORS > 272 + .weak vector272, vector273, vector274, vector275 +#endif +#if PPC_NUM_VECTORS > 276 + .weak vector276, vector277, vector278, vector279 +#endif +#if PPC_NUM_VECTORS > 280 + .weak vector280, vector281, vector282, vector283 +#endif +#if PPC_NUM_VECTORS > 284 + .weak vector284, vector285, vector286, vector287 +#endif +#if PPC_NUM_VECTORS > 288 + .weak vector288, vector289, vector290, vector291 +#endif +#if PPC_NUM_VECTORS > 292 + .weak vector292, vector293, vector294, vector295 +#endif +#if PPC_NUM_VECTORS > 296 + .weak vector296, vector297, vector298, vector299 +#endif +#if PPC_NUM_VECTORS > 300 + .weak vector300, vector301, vector302, vector303 +#endif +#if PPC_NUM_VECTORS > 304 + .weak vector304, vector305, vector306, vector307 +#endif +#if PPC_NUM_VECTORS > 308 + .weak vector308, vector309, vector310, vector311 +#endif +#if PPC_NUM_VECTORS > 312 + .weak vector312, vector313, vector314, vector315 +#endif +#if PPC_NUM_VECTORS > 316 + .weak vector316, vector317, vector318, vector319 +#endif +#if PPC_NUM_VECTORS > 320 + .weak vector320, vector321, vector322, vector323 +#endif +#if PPC_NUM_VECTORS > 324 + .weak vector324, vector325, vector326, vector327 +#endif +#if PPC_NUM_VECTORS > 328 + .weak vector328, vector329, vector330, vector331 +#endif +#if PPC_NUM_VECTORS > 332 + .weak vector332, vector333, vector334, vector335 +#endif +#if PPC_NUM_VECTORS > 336 + .weak vector336, vector337, vector338, vector339 +#endif +#if PPC_NUM_VECTORS > 340 + .weak vector340, vector341, vector342, vector343 +#endif +#if PPC_NUM_VECTORS > 344 + .weak vector344, vector345, vector346, vector347 +#endif +#if PPC_NUM_VECTORS > 348 + .weak vector348, vector349, vector350, vector351 +#endif +#if PPC_NUM_VECTORS > 352 + .weak vector352, vector353, vector354, vector355 +#endif +#if PPC_NUM_VECTORS > 356 + .weak vector356, vector357, vector358, vector359 +#endif +#if PPC_NUM_VECTORS > 360 + .weak vector360, vector361, vector362, vector363 +#endif +#if PPC_NUM_VECTORS > 364 + .weak vector364, vector365, vector366, vector367 +#endif +#if PPC_NUM_VECTORS > 368 + .weak vector368, vector369, vector370, vector371 +#endif +#if PPC_NUM_VECTORS > 372 + .weak vector372, vector373, vector374, vector375 +#endif +#if PPC_NUM_VECTORS > 376 + .weak vector376, vector377, vector378, vector379 +#endif +#if PPC_NUM_VECTORS > 380 + .weak vector380, vector381, vector382, vector383 +#endif +#if PPC_NUM_VECTORS > 384 + .weak vector384, vector385, vector386, vector387 +#endif +#if PPC_NUM_VECTORS > 388 + .weak vector388, vector389, vector390, vector391 +#endif +#if PPC_NUM_VECTORS > 392 + .weak vector392, vector393, vector394, vector395 +#endif +#if PPC_NUM_VECTORS > 396 + .weak vector396, vector397, vector398, vector399 +#endif +#if PPC_NUM_VECTORS > 400 + .weak vector400, vector401, vector402, vector403 +#endif +#if PPC_NUM_VECTORS > 404 + .weak vector404, vector405, vector406, vector407 +#endif +#if PPC_NUM_VECTORS > 408 + .weak vector408, vector409, vector410, vector411 +#endif +#if PPC_NUM_VECTORS > 412 + .weak vector412, vector413, vector414, vector415 +#endif +#if PPC_NUM_VECTORS > 416 + .weak vector416, vector417, vector418, vector419 +#endif +#if PPC_NUM_VECTORS > 420 + .weak vector420, vector421, vector422, vector423 +#endif +#if PPC_NUM_VECTORS > 424 + .weak vector424, vector425, vector426, vector427 +#endif +#if PPC_NUM_VECTORS > 428 + .weak vector428, vector429, vector430, vector431 +#endif +#if PPC_NUM_VECTORS > 432 + .weak vector432, vector433, vector434, vector435 +#endif +#if PPC_NUM_VECTORS > 436 + .weak vector436, vector437, vector438, vector439 +#endif +#if PPC_NUM_VECTORS > 440 + .weak vector440, vector441, vector442, vector443 +#endif +#if PPC_NUM_VECTORS > 444 + .weak vector444, vector445, vector446, vector447 +#endif +#if PPC_NUM_VECTORS > 448 + .weak vector448, vector449, vector450, vector451 +#endif +#if PPC_NUM_VECTORS > 452 + .weak vector452, vector453, vector454, vector455 +#endif +#if PPC_NUM_VECTORS > 456 + .weak vector456, vector457, vector458, vector459 +#endif +#if PPC_NUM_VECTORS > 460 + .weak vector460, vector461, vector462, vector463 +#endif +#if PPC_NUM_VECTORS > 464 + .weak vector464, vector465, vector466, vector467 +#endif +#if PPC_NUM_VECTORS > 468 + .weak vector468, vector469, vector470, vector471 +#endif +#if PPC_NUM_VECTORS > 472 + .weak vector472, vector473, vector474, vector475 +#endif +#if PPC_NUM_VECTORS > 476 + .weak vector476, vector477, vector478, vector479 +#endif +#if PPC_NUM_VECTORS > 480 + .weak vector480, vector481, vector482, vector483 +#endif +#if PPC_NUM_VECTORS > 484 + .weak vector484, vector485, vector486, vector487 +#endif +#if PPC_NUM_VECTORS > 488 + .weak vector488, vector489, vector490, vector491 +#endif +#if PPC_NUM_VECTORS > 492 + .weak vector492, vector493, vector494, vector495 +#endif +#if PPC_NUM_VECTORS > 496 + .weak vector496, vector497, vector498, vector499 +#endif +#if PPC_NUM_VECTORS > 500 + .weak vector500, vector501, vector502, vector503 +#endif +#if PPC_NUM_VECTORS > 504 + .weak vector504, vector505, vector506, vector507 +#endif +#if PPC_NUM_VECTORS > 508 + .weak vector508, vector509, vector510, vector511 +#endif +#if PPC_NUM_VECTORS > 512 + .weak vector512, vector513, vector514, vector515 +#endif +#if PPC_NUM_VECTORS > 516 + .weak vector516, vector517, vector518, vector519 +#endif +#if PPC_NUM_VECTORS > 520 + .weak vector520, vector521, vector522, vector523 +#endif +#if PPC_NUM_VECTORS > 524 + .weak vector524, vector525, vector526, vector527 +#endif +#if PPC_NUM_VECTORS > 528 + .weak vector528, vector529, vector530, vector531 +#endif +#if PPC_NUM_VECTORS > 532 + .weak vector532, vector533, vector534, vector535 +#endif +#if PPC_NUM_VECTORS > 536 + .weak vector536, vector537, vector538, vector539 +#endif +#if PPC_NUM_VECTORS > 540 + .weak vector540, vector541, vector542, vector543 +#endif +#if PPC_NUM_VECTORS > 544 + .weak vector544, vector545, vector546, vector547 +#endif +#if PPC_NUM_VECTORS > 548 + .weak vector548, vector549, vector550, vector551 +#endif +#if PPC_NUM_VECTORS > 552 + .weak vector552, vector553, vector554, vector555 +#endif +#if PPC_NUM_VECTORS > 556 + .weak vector556, vector557, vector558, vector559 +#endif +#if PPC_NUM_VECTORS > 560 + .weak vector560, vector561, vector562, vector563 +#endif +#if PPC_NUM_VECTORS > 564 + .weak vector564, vector565, vector566, vector567 +#endif +#if PPC_NUM_VECTORS > 568 + .weak vector568, vector569, vector570, vector571 +#endif +#if PPC_NUM_VECTORS > 572 + .weak vector572, vector573, vector574, vector575 +#endif +#if PPC_NUM_VECTORS > 576 + .weak vector576, vector577, vector578, vector579 +#endif +#if PPC_NUM_VECTORS > 580 + .weak vector580, vector581, vector582, vector583 +#endif +#if PPC_NUM_VECTORS > 584 + .weak vector584, vector585, vector586, vector587 +#endif +#if PPC_NUM_VECTORS > 588 + .weak vector588, vector589, vector590, vector591 +#endif +#if PPC_NUM_VECTORS > 592 + .weak vector592, vector593, vector594, vector595 +#endif +#if PPC_NUM_VECTORS > 596 + .weak vector596, vector597, vector598, vector599 +#endif +#if PPC_NUM_VECTORS > 600 + .weak vector600, vector601, vector602, vector603 +#endif +#if PPC_NUM_VECTORS > 604 + .weak vector604, vector605, vector606, vector607 +#endif +#if PPC_NUM_VECTORS > 608 + .weak vector608, vector609, vector610, vector611 +#endif +#if PPC_NUM_VECTORS > 612 + .weak vector612, vector613, vector614, vector615 +#endif +#if PPC_NUM_VECTORS > 616 + .weak vector616, vector617, vector618, vector619 +#endif +#if PPC_NUM_VECTORS > 620 + .weak vector620, vector621, vector622, vector623 +#endif +#if PPC_NUM_VECTORS > 624 + .weak vector624, vector625, vector626, vector627 +#endif +#if PPC_NUM_VECTORS > 628 + .weak vector628, vector629, vector630, vector631 +#endif +#if PPC_NUM_VECTORS > 632 + .weak vector632, vector633, vector634, vector635 +#endif +#if PPC_NUM_VECTORS > 636 + .weak vector636, vector637, vector638, vector639 +#endif +#if PPC_NUM_VECTORS > 640 + .weak vector640, vector641, vector642, vector643 +#endif +#if PPC_NUM_VECTORS > 644 + .weak vector644, vector645, vector646, vector647 +#endif +#if PPC_NUM_VECTORS > 648 + .weak vector648, vector649, vector650, vector651 +#endif +#if PPC_NUM_VECTORS > 652 + .weak vector652, vector653, vector654, vector655 +#endif +#if PPC_NUM_VECTORS > 656 + .weak vector656, vector657, vector658, vector659 +#endif +#if PPC_NUM_VECTORS > 660 + .weak vector660, vector661, vector662, vector663 +#endif +#if PPC_NUM_VECTORS > 664 + .weak vector664, vector665, vector666, vector667 +#endif +#if PPC_NUM_VECTORS > 668 + .weak vector668, vector669, vector670, vector671 +#endif +#if PPC_NUM_VECTORS > 672 + .weak vector672, vector673, vector674, vector675 +#endif +#if PPC_NUM_VECTORS > 676 + .weak vector676, vector677, vector678, vector679 +#endif +#if PPC_NUM_VECTORS > 680 + .weak vector680, vector681, vector682, vector683 +#endif +#if PPC_NUM_VECTORS > 684 + .weak vector684, vector685, vector686, vector687 +#endif +#if PPC_NUM_VECTORS > 688 + .weak vector688, vector689, vector690, vector691 +#endif +#if PPC_NUM_VECTORS > 692 + .weak vector692, vector693, vector694, vector695 +#endif +#if PPC_NUM_VECTORS > 696 + .weak vector696, vector697, vector698, vector699 +#endif +#if PPC_NUM_VECTORS > 700 + .weak vector700, vector701, vector702, vector703 +#endif +#if PPC_NUM_VECTORS > 704 + .weak vector704, vector705, vector706, vector707 +#endif +#if PPC_NUM_VECTORS > 708 + .weak vector708, vector709, vector710, vector711 +#endif +#if PPC_NUM_VECTORS > 712 + .weak vector712, vector713, vector714, vector715 +#endif +#if PPC_NUM_VECTORS > 716 + .weak vector716, vector717, vector718, vector719 +#endif +#if PPC_NUM_VECTORS > 720 + .weak vector720, vector721, vector722, vector723 +#endif +#if PPC_NUM_VECTORS > 724 + .weak vector724, vector725, vector726, vector727 +#endif +#if PPC_NUM_VECTORS > 728 + .weak vector728, vector729, vector730, vector731 +#endif +#if PPC_NUM_VECTORS > 732 + .weak vector732, vector733, vector734, vector735 +#endif +#if PPC_NUM_VECTORS > 736 + .weak vector736, vector737, vector738, vector739 +#endif +#if PPC_NUM_VECTORS > 740 + .weak vector740, vector741, vector742, vector743 +#endif +#if PPC_NUM_VECTORS > 744 + .weak vector744, vector745, vector746, vector747 +#endif +#if PPC_NUM_VECTORS > 748 + .weak vector748, vector749, vector750, vector751 +#endif +#if PPC_NUM_VECTORS > 752 + .weak vector752, vector753, vector754, vector755 +#endif +#if PPC_NUM_VECTORS > 756 + .weak vector756, vector757, vector758, vector759 +#endif +#if PPC_NUM_VECTORS > 760 + .weak vector760, vector761, vector762, vector763 +#endif +#if PPC_NUM_VECTORS > 764 + .weak vector764, vector765, vector766, vector767 +#endif +#if PPC_NUM_VECTORS > 768 + .weak vector768, vector769, vector770, vector771 +#endif +#if PPC_NUM_VECTORS > 772 + .weak vector772, vector773, vector774, vector775 +#endif +#if PPC_NUM_VECTORS > 776 + .weak vector776, vector777, vector778, vector779 +#endif +#if PPC_NUM_VECTORS > 780 + .weak vector780, vector781, vector782, vector783 +#endif +#if PPC_NUM_VECTORS > 784 + .weak vector784, vector785, vector786, vector787 +#endif +#if PPC_NUM_VECTORS > 788 + .weak vector788, vector789, vector790, vector791 +#endif +#if PPC_NUM_VECTORS > 792 + .weak vector792, vector793, vector794, vector795 +#endif +#if PPC_NUM_VECTORS > 796 + .weak vector796, vector797, vector798, vector799 +#endif +#if PPC_NUM_VECTORS > 800 + .weak vector800, vector801, vector802, vector803 +#endif +#if PPC_NUM_VECTORS > 804 + .weak vector804, vector805, vector806, vector807 +#endif +#if PPC_NUM_VECTORS > 808 + .weak vector808, vector809, vector810, vector811 +#endif +#if PPC_NUM_VECTORS > 812 + .weak vector812, vector813, vector814, vector815 +#endif +#if PPC_NUM_VECTORS > 816 + .weak vector816, vector817, vector818, vector819 +#endif +#if PPC_NUM_VECTORS > 820 + .weak vector820, vector821, vector822, vector823 +#endif +#if PPC_NUM_VECTORS > 824 + .weak vector824, vector825, vector826, vector827 +#endif +#if PPC_NUM_VECTORS > 828 + .weak vector828, vector829, vector830, vector831 +#endif +#if PPC_NUM_VECTORS > 832 + .weak vector832, vector833, vector834, vector835 +#endif +#if PPC_NUM_VECTORS > 836 + .weak vector836, vector837, vector838, vector839 +#endif +#if PPC_NUM_VECTORS > 840 + .weak vector840, vector841, vector842, vector843 +#endif +#if PPC_NUM_VECTORS > 844 + .weak vector844, vector845, vector846, vector847 +#endif +#if PPC_NUM_VECTORS > 848 + .weak vector848, vector849, vector850, vector851 +#endif +#if PPC_NUM_VECTORS > 852 + .weak vector852, vector853, vector854, vector855 +#endif +#if PPC_NUM_VECTORS > 856 + .weak vector856, vector857, vector858, vector859 +#endif +#if PPC_NUM_VECTORS > 860 + .weak vector860, vector861, vector862, vector863 +#endif +#if PPC_NUM_VECTORS > 864 + .weak vector864, vector865, vector866, vector867 +#endif +#if PPC_NUM_VECTORS > 868 + .weak vector868, vector869, vector870, vector871 +#endif +#if PPC_NUM_VECTORS > 872 + .weak vector872, vector873, vector874, vector875 +#endif +#if PPC_NUM_VECTORS > 876 + .weak vector876, vector877, vector878, vector879 +#endif +#if PPC_NUM_VECTORS > 880 + .weak vector880, vector881, vector882, vector883 +#endif +#if PPC_NUM_VECTORS > 884 + .weak vector884, vector885, vector886, vector887 +#endif +#if PPC_NUM_VECTORS > 888 + .weak vector888, vector889, vector890, vector891 +#endif +#if PPC_NUM_VECTORS > 892 + .weak vector892, vector893, vector894, vector895 +#endif +#if PPC_NUM_VECTORS > 896 + .weak vector896, vector897, vector898, vector899 +#endif +#if PPC_NUM_VECTORS > 900 + .weak vector900, vector901, vector902, vector903 +#endif +#if PPC_NUM_VECTORS > 904 + .weak vector904, vector905, vector906, vector907 +#endif +#if PPC_NUM_VECTORS > 908 + .weak vector908, vector909, vector910, vector911 +#endif +#if PPC_NUM_VECTORS > 912 + .weak vector912, vector913, vector914, vector915 +#endif +#if PPC_NUM_VECTORS > 916 + .weak vector916, vector917, vector918, vector919 +#endif +#if PPC_NUM_VECTORS > 920 + .weak vector920, vector921, vector922, vector923 +#endif +#if PPC_NUM_VECTORS > 924 + .weak vector924, vector925, vector926, vector927 +#endif +#if PPC_NUM_VECTORS > 928 + .weak vector928, vector929, vector930, vector931 +#endif +#if PPC_NUM_VECTORS > 932 + .weak vector932, vector933, vector934, vector935 +#endif +#if PPC_NUM_VECTORS > 936 + .weak vector936, vector937, vector938, vector939 +#endif +#if PPC_NUM_VECTORS > 940 + .weak vector940, vector941, vector942, vector943 +#endif +#if PPC_NUM_VECTORS > 944 + .weak vector944, vector945, vector946, vector947 +#endif +#if PPC_NUM_VECTORS > 948 + .weak vector948, vector949, vector950, vector951 +#endif +#if PPC_NUM_VECTORS > 952 + .weak vector952, vector953, vector954, vector955 +#endif +#if PPC_NUM_VECTORS > 956 + .weak vector956, vector957, vector958, vector959 +#endif +#if PPC_NUM_VECTORS > 960 + .weak vector960, vector961, vector962, vector963 +#endif +#if PPC_NUM_VECTORS > 964 + .weak vector964, vector965, vector966, vector967 +#endif +#if PPC_NUM_VECTORS > 968 + .weak vector968, vector969, vector970, vector971 +#endif +#if PPC_NUM_VECTORS > 972 + .weak vector972, vector973, vector974, vector975 +#endif +#if PPC_NUM_VECTORS > 976 + .weak vector976, vector977, vector978, vector979 +#endif +#if PPC_NUM_VECTORS > 980 + .weak vector980, vector981, vector982, vector983 +#endif +#if PPC_NUM_VECTORS > 984 + .weak vector984, vector985, vector986, vector987 +#endif +#if PPC_NUM_VECTORS > 988 + .weak vector988, vector989, vector990, vector991 +#endif +#if PPC_NUM_VECTORS > 992 + .weak vector992, vector993, vector994, vector995 +#endif +#if PPC_NUM_VECTORS > 996 + .weak vector996, vector997, vector998, vector999 +#endif +#if PPC_NUM_VECTORS > 1000 + .weak vector1000, vector1001, vector1002, vector1003 +#endif +#if PPC_NUM_VECTORS > 1004 + .weak vector1004, vector1005, vector1006, vector1007 +#endif +#if PPC_NUM_VECTORS > 1008 + .weak vector1008, vector1009, vector1010, vector1011 +#endif +#if PPC_NUM_VECTORS > 1012 + .weak vector1012, vector1013, vector1014, vector1015 +#endif +#if PPC_NUM_VECTORS > 1016 + .weak vector1016, vector1017, vector1018, vector1019 +#endif +#if PPC_NUM_VECTORS > 1020 + .weak vector1020, vector1021, vector1022, vector1023 +#endif + +vector0: +vector1: +vector2: +vector3: +vector4: +vector5: +vector6: +vector7: +vector8: +vector9: +vector10: +vector11: +vector12: +vector13: +vector14: +vector15: +vector16: +vector17: +vector18: +vector19: +vector20: +vector21: +vector22: +vector23: +vector24: +vector25: +vector26: +vector27: +vector28: +vector29: +vector30: +vector31: +vector32: +vector33: +vector34: +vector35: +vector36: +vector37: +vector38: +vector39: +vector40: +vector41: +vector42: +vector43: +vector44: +vector45: +vector46: +vector47: +vector48: +vector49: +vector50: +vector51: +vector52: +vector53: +vector54: +vector55: +vector56: +vector57: +vector58: +vector59: +vector60: +vector61: +vector62: +vector63: +vector64: +vector65: +vector66: +vector67: +vector68: +vector69: +vector70: +vector71: +vector72: +vector73: +vector74: +vector75: +vector76: +vector77: +vector78: +vector79: +vector80: +vector81: +vector82: +vector83: +vector84: +vector85: +vector86: +vector87: +vector88: +vector89: +vector90: +vector91: +vector92: +vector93: +vector94: +vector95: +vector96: +vector97: +vector98: +vector99: +vector100: +vector101: +vector102: +vector103: +vector104: +vector105: +vector106: +vector107: +vector108: +vector109: +vector110: +vector111: +vector112: +vector113: +vector114: +vector115: +vector116: +vector117: +vector118: +vector119: +vector120: +vector121: +vector122: +vector123: +vector124: +vector125: +vector126: +vector127: +vector128: +vector129: +vector130: +vector131: +vector132: +vector133: +vector134: +vector135: +vector136: +vector137: +vector138: +vector139: +vector140: +vector141: +vector142: +vector143: +vector144: +vector145: +vector146: +vector147: +vector148: +vector149: +vector150: +vector151: +vector152: +vector153: +vector154: +vector155: +vector156: +vector157: +vector158: +vector159: +vector160: +vector161: +vector162: +vector163: +vector164: +vector165: +vector166: +vector167: +vector168: +vector169: +vector170: +vector171: +vector172: +vector173: +vector174: +vector175: +vector176: +vector177: +vector178: +vector179: +vector180: +vector181: +vector182: +vector183: +vector184: +vector185: +vector186: +vector187: +vector188: +vector189: +vector190: +vector191: +vector192: +vector193: +vector194: +vector195: +vector196: +vector197: +vector198: +vector199: +vector200: +vector201: +vector202: +vector203: +vector204: +vector205: +vector206: +vector207: +vector208: +vector209: +vector210: +vector211: +vector212: +vector213: +vector214: +vector215: +vector216: +vector217: +vector218: +vector219: +vector220: +vector221: +vector222: +vector223: +vector224: +vector225: +vector226: +vector227: +vector228: +vector229: +vector230: +vector231: +vector232: +vector233: +vector234: +vector235: +vector236: +vector237: +vector238: +vector239: +vector240: +vector241: +vector242: +vector243: +vector244: +vector245: +vector246: +vector247: +vector248: +vector249: +vector250: +vector251: +vector252: +vector253: +vector254: +vector255: +vector256: +vector257: +vector258: +vector259: +vector260: +vector261: +vector262: +vector263: +vector264: +vector265: +vector266: +vector267: +vector268: +vector269: +vector270: +vector271: +vector272: +vector273: +vector274: +vector275: +vector276: +vector277: +vector278: +vector279: +vector280: +vector281: +vector282: +vector283: +vector284: +vector285: +vector286: +vector287: +vector288: +vector289: +vector290: +vector291: +vector292: +vector293: +vector294: +vector295: +vector296: +vector297: +vector298: +vector299: +vector300: +vector301: +vector302: +vector303: +vector304: +vector305: +vector306: +vector307: +vector308: +vector309: +vector310: +vector311: +vector312: +vector313: +vector314: +vector315: +vector316: +vector317: +vector318: +vector319: +vector320: +vector321: +vector322: +vector323: +vector324: +vector325: +vector326: +vector327: +vector328: +vector329: +vector330: +vector331: +vector332: +vector333: +vector334: +vector335: +vector336: +vector337: +vector338: +vector339: +vector340: +vector341: +vector342: +vector343: +vector344: +vector345: +vector346: +vector347: +vector348: +vector349: +vector350: +vector351: +vector352: +vector353: +vector354: +vector355: +vector356: +vector357: +vector358: +vector359: +vector360: +vector361: +vector362: +vector363: +vector364: +vector365: +vector366: +vector367: +vector368: +vector369: +vector370: +vector371: +vector372: +vector373: +vector374: +vector375: +vector376: +vector377: +vector378: +vector379: +vector380: +vector381: +vector382: +vector383: +vector384: +vector385: +vector386: +vector387: +vector388: +vector389: +vector390: +vector391: +vector392: +vector393: +vector394: +vector395: +vector396: +vector397: +vector398: +vector399: +vector400: +vector401: +vector402: +vector403: +vector404: +vector405: +vector406: +vector407: +vector408: +vector409: +vector410: +vector411: +vector412: +vector413: +vector414: +vector415: +vector416: +vector417: +vector418: +vector419: +vector420: +vector421: +vector422: +vector423: +vector424: +vector425: +vector426: +vector427: +vector428: +vector429: +vector430: +vector431: +vector432: +vector433: +vector434: +vector435: +vector436: +vector437: +vector438: +vector439: +vector440: +vector441: +vector442: +vector443: +vector444: +vector445: +vector446: +vector447: +vector448: +vector449: +vector450: +vector451: +vector452: +vector453: +vector454: +vector455: +vector456: +vector457: +vector458: +vector459: +vector460: +vector461: +vector462: +vector463: +vector464: +vector465: +vector466: +vector467: +vector468: +vector469: +vector470: +vector471: +vector472: +vector473: +vector474: +vector475: +vector476: +vector477: +vector478: +vector479: +vector480: +vector481: +vector482: +vector483: +vector484: +vector485: +vector486: +vector487: +vector488: +vector489: +vector490: +vector491: +vector492: +vector493: +vector494: +vector495: +vector496: +vector497: +vector498: +vector499: +vector500: +vector501: +vector502: +vector503: +vector504: +vector505: +vector506: +vector507: +vector508: +vector509: +vector510: +vector511: +vector512: +vector513: +vector514: +vector515: +vector516: +vector517: +vector518: +vector519: +vector520: +vector521: +vector522: +vector523: +vector524: +vector525: +vector526: +vector527: +vector528: +vector529: +vector530: +vector531: +vector532: +vector533: +vector534: +vector535: +vector536: +vector537: +vector538: +vector539: +vector540: +vector541: +vector542: +vector543: +vector544: +vector545: +vector546: +vector547: +vector548: +vector549: +vector550: +vector551: +vector552: +vector553: +vector554: +vector555: +vector556: +vector557: +vector558: +vector559: +vector560: +vector561: +vector562: +vector563: +vector564: +vector565: +vector566: +vector567: +vector568: +vector569: +vector570: +vector571: +vector572: +vector573: +vector574: +vector575: +vector576: +vector577: +vector578: +vector579: +vector580: +vector581: +vector582: +vector583: +vector584: +vector585: +vector586: +vector587: +vector588: +vector589: +vector590: +vector591: +vector592: +vector593: +vector594: +vector595: +vector596: +vector597: +vector598: +vector599: +vector600: +vector601: +vector602: +vector603: +vector604: +vector605: +vector606: +vector607: +vector608: +vector609: +vector610: +vector611: +vector612: +vector613: +vector614: +vector615: +vector616: +vector617: +vector618: +vector619: +vector620: +vector621: +vector622: +vector623: +vector624: +vector625: +vector626: +vector627: +vector628: +vector629: +vector630: +vector631: +vector632: +vector633: +vector634: +vector635: +vector636: +vector637: +vector638: +vector639: +vector640: +vector641: +vector642: +vector643: +vector644: +vector645: +vector646: +vector647: +vector648: +vector649: +vector650: +vector651: +vector652: +vector653: +vector654: +vector655: +vector656: +vector657: +vector658: +vector659: +vector660: +vector661: +vector662: +vector663: +vector664: +vector665: +vector666: +vector667: +vector668: +vector669: +vector670: +vector671: +vector672: +vector673: +vector674: +vector675: +vector676: +vector677: +vector678: +vector679: +vector680: +vector681: +vector682: +vector683: +vector684: +vector685: +vector686: +vector687: +vector688: +vector689: +vector690: +vector691: +vector692: +vector693: +vector694: +vector695: +vector696: +vector697: +vector698: +vector699: +vector700: +vector701: +vector702: +vector703: +vector704: +vector705: +vector706: +vector707: +vector708: +vector709: +vector710: +vector711: +vector712: +vector713: +vector714: +vector715: +vector716: +vector717: +vector718: +vector719: +vector720: +vector721: +vector722: +vector723: +vector724: +vector725: +vector726: +vector727: +vector728: +vector729: +vector730: +vector731: +vector732: +vector733: +vector734: +vector735: +vector736: +vector737: +vector738: +vector739: +vector740: +vector741: +vector742: +vector743: +vector744: +vector745: +vector746: +vector747: +vector748: +vector749: +vector750: +vector751: +vector752: +vector753: +vector754: +vector755: +vector756: +vector757: +vector758: +vector759: +vector760: +vector761: +vector762: +vector763: +vector764: +vector765: +vector766: +vector767: +vector768: +vector769: +vector770: +vector771: +vector772: +vector773: +vector774: +vector775: +vector776: +vector777: +vector778: +vector779: +vector780: +vector781: +vector782: +vector783: +vector784: +vector785: +vector786: +vector787: +vector788: +vector789: +vector790: +vector791: +vector792: +vector793: +vector794: +vector795: +vector796: +vector797: +vector798: +vector799: +vector800: +vector801: +vector802: +vector803: +vector804: +vector805: +vector806: +vector807: +vector808: +vector809: +vector810: +vector811: +vector812: +vector813: +vector814: +vector815: +vector816: +vector817: +vector818: +vector819: +vector820: +vector821: +vector822: +vector823: +vector824: +vector825: +vector826: +vector827: +vector828: +vector829: +vector830: +vector831: +vector832: +vector833: +vector834: +vector835: +vector836: +vector837: +vector838: +vector839: +vector840: +vector841: +vector842: +vector843: +vector844: +vector845: +vector846: +vector847: +vector848: +vector849: +vector850: +vector851: +vector852: +vector853: +vector854: +vector855: +vector856: +vector857: +vector858: +vector859: +vector860: +vector861: +vector862: +vector863: +vector864: +vector865: +vector866: +vector867: +vector868: +vector869: +vector870: +vector871: +vector872: +vector873: +vector874: +vector875: +vector876: +vector877: +vector878: +vector879: +vector880: +vector881: +vector882: +vector883: +vector884: +vector885: +vector886: +vector887: +vector888: +vector889: +vector890: +vector891: +vector892: +vector893: +vector894: +vector895: +vector896: +vector897: +vector898: +vector899: +vector900: +vector901: +vector902: +vector903: +vector904: +vector905: +vector906: +vector907: +vector908: +vector909: +vector910: +vector911: +vector912: +vector913: +vector914: +vector915: +vector916: +vector917: +vector918: +vector919: +vector920: +vector921: +vector922: +vector923: +vector924: +vector925: +vector926: +vector927: +vector928: +vector929: +vector930: +vector931: +vector932: +vector933: +vector934: +vector935: +vector936: +vector937: +vector938: +vector939: +vector940: +vector941: +vector942: +vector943: +vector944: +vector945: +vector946: +vector947: +vector948: +vector949: +vector950: +vector951: +vector952: +vector953: +vector954: +vector955: +vector956: +vector957: +vector958: +vector959: +vector960: +vector961: +vector962: +vector963: +vector964: +vector965: +vector966: +vector967: +vector968: +vector969: +vector970: +vector971: +vector972: +vector973: +vector974: +vector975: +vector976: +vector977: +vector978: +vector979: +vector980: +vector981: +vector982: +vector983: +vector984: +vector985: +vector986: +vector987: +vector988: +vector989: +vector990: +vector991: +vector992: +vector993: +vector994: +vector995: +vector996: +vector997: +vector998: +vector999: +vector1000: +vector1001: +vector1002: +vector1003: +vector1004: +vector1005: +vector1006: +vector1007: +vector1008: +vector1009: +vector1010: +vector1011: +vector1012: +vector1013: +vector1014: +vector1015: +vector1016: +vector1017: +vector1018: +vector1019: +vector1020: +vector1021: +vector1022: +vector1023: + b _unhandled_irq + + .weak _unhandled_irq + .type _unhandled_irq, @function +_unhandled_irq: + b _unhandled_irq + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC560BCxx/boot.h b/os/common/startup/e200/devices/SPC560BCxx/boot.h new file mode 100644 index 000000000..7af28f997 --- /dev/null +++ b/os/common/startup/e200/devices/SPC560BCxx/boot.h @@ -0,0 +1,117 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file boot.h + * @brief Boot parameters for the SPC560BCxx. + * @{ + */ + +#ifndef _BOOT_H_ +#define _BOOT_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @name BUCSR registers definitions + * @{ + */ +#define BUCSR_BPEN 0x00000001 +#define BUCSR_BALLOC_BFI 0x00000200 +/** @} */ + +/** + * @name MSR register definitions + * @{ + */ +#define MSR_WE 0x00040000 +#define MSR_CE 0x00020000 +#define MSR_EE 0x00008000 +#define MSR_PR 0x00004000 +#define MSR_ME 0x00001000 +#define MSR_DE 0x00000200 +#define MSR_IS 0x00000020 +#define MSR_DS 0x00000010 +#define MSR_RI 0x00000002 +/** @} */ + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/* + * BUCSR default settings. + */ +#if !defined(BOOT_BUCSR_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BALLOC_BFI) +#endif + +/* + * MSR default settings. + */ +#if !defined(BOOT_MSR_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_MSR_DEFAULT (MSR_WE | MSR_CE | MSR_ME) +#endif + +/* + * Boot default settings. + */ +#if !defined(BOOT_PERFORM_CORE_INIT) || defined(__DOXYGEN__) +#define BOOT_PERFORM_CORE_INIT 1 +#endif + +/* + * VLE mode default settings. + */ +#if !defined(BOOT_USE_VLE) || defined(__DOXYGEN__) +#define BOOT_USE_VLE 1 +#endif + +/* + * RAM relocation flag. + */ +#if !defined(BOOT_RELOCATE_IN_RAM) || defined(__DOXYGEN__) +#define BOOT_RELOCATE_IN_RAM 0 +#endif + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _BOOT_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC560BCxx/boot.s b/os/common/startup/e200/devices/SPC560BCxx/boot.s new file mode 100644 index 000000000..089095be2 --- /dev/null +++ b/os/common/startup/e200/devices/SPC560BCxx/boot.s @@ -0,0 +1,217 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC560BCxx/boot.s + * @brief SPC560BCxx boot-related code. + * + * @addtogroup PPC_BOOT + * @{ + */ + +#include "boot.h" + +#if !defined(__DOXYGEN__) + + /* BAM record.*/ + .section .boot, "ax" + + .long 0x015A0000 + .long _reset_address + + .align 2 + .globl _reset_address + .type _reset_address, @function +_reset_address: +#if BOOT_PERFORM_CORE_INIT + bl _coreinit +#endif + bl _ivinit + +#if BOOT_RELOCATE_IN_RAM + /* + * Image relocation in RAM. + */ + lis %r4, __ram_reloc_start__@h + ori %r4, %r4, __ram_reloc_start__@l + lis %r5, __ram_reloc_dest__@h + ori %r5, %r5, __ram_reloc_dest__@l + lis %r6, __ram_reloc_end__@h + ori %r6, %r6, __ram_reloc_end__@l +.relloop: + cmpl cr0, %r4, %r6 + bge cr0, .relend + lwz %r7, 0(%r4) + addi %r4, %r4, 4 + stw %r7, 0(%r5) + addi %r5, %r5, 4 + b .relloop +.relend: + lis %r3, _boot_address@h + ori %r3, %r3, _boot_address@l + mtctr %r3 + bctrl +#else + b _boot_address +#endif + +#if BOOT_PERFORM_CORE_INIT + .align 2 +_coreinit: + /* + * RAM clearing, this device requires a write to all RAM location in + * order to initialize the ECC detection hardware, this is going to + * slow down the startup but there is no way around. + */ + xor %r0, %r0, %r0 + xor %r1, %r1, %r1 + xor %r2, %r2, %r2 + xor %r3, %r3, %r3 + xor %r4, %r4, %r4 + xor %r5, %r5, %r5 + xor %r6, %r6, %r6 + xor %r7, %r7, %r7 + xor %r8, %r8, %r8 + xor %r9, %r9, %r9 + xor %r10, %r10, %r10 + xor %r11, %r11, %r11 + xor %r12, %r12, %r12 + xor %r13, %r13, %r13 + xor %r14, %r14, %r14 + xor %r15, %r15, %r15 + xor %r16, %r16, %r16 + xor %r17, %r17, %r17 + xor %r18, %r18, %r18 + xor %r19, %r19, %r19 + xor %r20, %r20, %r20 + xor %r21, %r21, %r21 + xor %r22, %r22, %r22 + xor %r23, %r23, %r23 + xor %r24, %r24, %r24 + xor %r25, %r25, %r25 + xor %r26, %r26, %r26 + xor %r27, %r27, %r27 + xor %r28, %r28, %r28 + xor %r29, %r29, %r29 + xor %r30, %r30, %r30 + xor %r31, %r31, %r31 + lis %r4, __ram_start__@h + ori %r4, %r4, __ram_start__@l + lis %r5, __ram_end__@h + ori %r5, %r5, __ram_end__@l +.cleareccloop: + cmpl %cr0, %r4, %r5 + bge %cr0, .cleareccend + stmw %r16, 0(%r4) + addi %r4, %r4, 64 + b .cleareccloop +.cleareccend: + + /* + * Branch prediction enabled. + */ + li %r3, BOOT_BUCSR_DEFAULT + mtspr 1013, %r3 /* BUCSR */ + + blr +#endif /* BOOT_PERFORM_CORE_INIT */ + + /* + * Exception vectors initialization. + */ + .align 2 +_ivinit: + /* MSR initialization.*/ + lis %r3, BOOT_MSR_DEFAULT@h + ori %r3, %r3, BOOT_MSR_DEFAULT@l + mtMSR %r3 + + /* IVPR initialization.*/ + lis %r3, __ivpr_base__@h + ori %r3, %r3, __ivpr_base__@l + mtIVPR %r3 + + blr + + .section .ivors, "ax" + + .globl IVORS +IVORS: + b _IVOR0 + .align 4 + b _IVOR1 + .align 4 + b _IVOR2 + .align 4 + b _IVOR3 + .align 4 + b _IVOR4 + .align 4 + b _IVOR5 + .align 4 + b _IVOR6 + .align 4 + b _IVOR7 + .align 4 + b _IVOR8 + .align 4 + b _IVOR9 + .align 4 + b _IVOR10 + .align 4 + b _IVOR11 + .align 4 + b _IVOR12 + .align 4 + b _IVOR13 + .align 4 + b _IVOR14 + .align 4 + b _IVOR15 + + .section .handlers, "ax" + + /* + * Default IVOR handlers. + */ + .align 2 + .weak _IVOR0, _IVOR1, _IVOR2, _IVOR3, _IVOR4, _IVOR5 + .weak _IVOR6, _IVOR7, _IVOR8, _IVOR9, _IVOR10, _IVOR11 + .weak _IVOR12, _IVOR13, _IVOR14, _IVOR15 +_IVOR0: +_IVOR1: +_IVOR2: +_IVOR3: +_IVOR5: +_IVOR6: +_IVOR7: +_IVOR8: +_IVOR9: +_IVOR11: +_IVOR12: +_IVOR13: +_IVOR14: +_IVOR15: + .global _unhandled_exception +_unhandled_exception: + b _unhandled_exception + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC560BCxx/intc.h b/os/common/startup/e200/devices/SPC560BCxx/intc.h new file mode 100644 index 000000000..668eac387 --- /dev/null +++ b/os/common/startup/e200/devices/SPC560BCxx/intc.h @@ -0,0 +1,96 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC560BCxx/intc.h + * @brief SPC560BCxx INTC module header. + * + * @addtogroup INTC + * @{ + */ + +#ifndef _INTC_H_ +#define _INTC_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @name INTC addresses + * @{ + */ +#define INTC_BASE 0xFFF48000 +#define INTC_IACKR_ADDR (INTC_BASE + 0x10) +#define INTC_EOIR_ADDR (INTC_BASE + 0x18) +/** @} */ + +/** + * @brief INTC priority levels. + */ +#define INTC_PRIORITY_LEVELS 16U + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/** + * @name INTC-related macros + * @{ + */ +#define INTC_BCR (*((volatile uint32_t *)(INTC_BASE + 0))) +#define INTC_CPR(n) (*((volatile uint32_t *)(INTC_BASE + 8 + ((n) * sizeof (uint32_t))))) +#define INTC_IACKR(n) (*((volatile uint32_t *)(INTC_BASE + 0x10 + ((n) * sizeof (uint32_t))))) +#define INTC_EOIR(n) (*((volatile uint32_t *)(INTC_BASE + 0x18 + ((n) * sizeof (uint32_t))))) +#define INTC_PSR(n) (*((volatile uint8_t *)(INTC_BASE + 0x40 + ((n) * sizeof (uint8_t))))) +/** @} */ + +/** + * @brief Core selection macros for PSR register. + */ +#define INTC_PSR_CORE0 0x00 + +/** + * @brief PSR register content helper + */ +#define INTC_PSR_ENABLE(cores, prio) ((uint32_t)(cores) | (uint32_t)(prio)) + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _INTC_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC560BCxx/ppcparams.h b/os/common/startup/e200/devices/SPC560BCxx/ppcparams.h new file mode 100644 index 000000000..2e89aa8fb --- /dev/null +++ b/os/common/startup/e200/devices/SPC560BCxx/ppcparams.h @@ -0,0 +1,86 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC560BCxx/ppcparams.h + * @brief PowerPC parameters for the SPC560BCxx. + * + * @defgroup PPC_SPC560BCxx SPC560BCxx Specific Parameters + * @ingroup PPC_SPECIFIC + * @details This file contains the PowerPC specific parameters for the + * SPC560BCxx platform. + * @{ + */ + +#ifndef _PPCPARAMS_H_ +#define _PPCPARAMS_H_ + +/** + * @brief Family identification macro. + */ +#define PPC_SPC560BCxx + +/** + * @brief PPC core model. + */ +#define PPC_VARIANT PPC_VARIANT_e200z0 + +/** + * @brief Number of cores. + */ +#define PPC_CORE_NUMBER 1 + +/** + * @brief Number of writable bits in IVPR register. + */ +#define PPC_IVPR_BITS 20 + +/** + * @brief IVORx registers support. + */ +#define PPC_SUPPORTS_IVORS FALSE + +/** + * @brief Book E instruction set support. + */ +#define PPC_SUPPORTS_BOOKE FALSE + +/** + * @brief VLE instruction set support. + */ +#define PPC_SUPPORTS_VLE TRUE + +/** + * @brief Supports VLS Load/Store Multiple Volatile instructions. + */ +#define PPC_SUPPORTS_VLE_MULTI TRUE + +/** + * @brief Supports the decrementer timer. + */ +#define PPC_SUPPORTS_DECREMENTER FALSE + +/** + * @brief Number of interrupt sources. + */ +#define PPC_NUM_VECTORS 217 + +#endif /* _PPCPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC560Bxx/boot.h b/os/common/startup/e200/devices/SPC560Bxx/boot.h new file mode 100644 index 000000000..f6482d0af --- /dev/null +++ b/os/common/startup/e200/devices/SPC560Bxx/boot.h @@ -0,0 +1,117 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file boot.h + * @brief Boot parameters for the SPC560Bxx. + * @{ + */ + +#ifndef _BOOT_H_ +#define _BOOT_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @name BUCSR registers definitions + * @{ + */ +#define BUCSR_BPEN 0x00000001 +#define BUCSR_BALLOC_BFI 0x00000200 +/** @} */ + +/** + * @name MSR register definitions + * @{ + */ +#define MSR_WE 0x00040000 +#define MSR_CE 0x00020000 +#define MSR_EE 0x00008000 +#define MSR_PR 0x00004000 +#define MSR_ME 0x00001000 +#define MSR_DE 0x00000200 +#define MSR_IS 0x00000020 +#define MSR_DS 0x00000010 +#define MSR_RI 0x00000002 +/** @} */ + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/* + * BUCSR default settings. + */ +#if !defined(BOOT_BUCSR_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BALLOC_BFI) +#endif + +/* + * MSR default settings. + */ +#if !defined(BOOT_MSR_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_MSR_DEFAULT (MSR_WE | MSR_CE | MSR_ME) +#endif + +/* + * Boot default settings. + */ +#if !defined(BOOT_PERFORM_CORE_INIT) || defined(__DOXYGEN__) +#define BOOT_PERFORM_CORE_INIT 1 +#endif + +/* + * VLE mode default settings. + */ +#if !defined(BOOT_USE_VLE) || defined(__DOXYGEN__) +#define BOOT_USE_VLE 1 +#endif + +/* + * RAM relocation flag. + */ +#if !defined(BOOT_RELOCATE_IN_RAM) || defined(__DOXYGEN__) +#define BOOT_RELOCATE_IN_RAM 0 +#endif + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _BOOT_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC560Bxx/boot.s b/os/common/startup/e200/devices/SPC560Bxx/boot.s new file mode 100644 index 000000000..7cf3349e5 --- /dev/null +++ b/os/common/startup/e200/devices/SPC560Bxx/boot.s @@ -0,0 +1,217 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC560Bxx/boot.s + * @brief SPC560Bxx boot-related code. + * + * @addtogroup PPC_BOOT + * @{ + */ + +#include "boot.h" + +#if !defined(__DOXYGEN__) + + /* BAM record.*/ + .section .boot, "ax" + + .long 0x015A0000 + .long _reset_address + + .align 2 + .globl _reset_address + .type _reset_address, @function +_reset_address: +#if BOOT_PERFORM_CORE_INIT + bl _coreinit +#endif + bl _ivinit + +#if BOOT_RELOCATE_IN_RAM + /* + * Image relocation in RAM. + */ + lis %r4, __ram_reloc_start__@h + ori %r4, %r4, __ram_reloc_start__@l + lis %r5, __ram_reloc_dest__@h + ori %r5, %r5, __ram_reloc_dest__@l + lis %r6, __ram_reloc_end__@h + ori %r6, %r6, __ram_reloc_end__@l +.relloop: + cmpl cr0, %r4, %r6 + bge cr0, .relend + lwz %r7, 0(%r4) + addi %r4, %r4, 4 + stw %r7, 0(%r5) + addi %r5, %r5, 4 + b .relloop +.relend: + lis %r3, _boot_address@h + ori %r3, %r3, _boot_address@l + mtctr %r3 + bctrl +#else + b _boot_address +#endif + +#if BOOT_PERFORM_CORE_INIT + .align 2 +_coreinit: + /* + * RAM clearing, this device requires a write to all RAM location in + * order to initialize the ECC detection hardware, this is going to + * slow down the startup but there is no way around. + */ + xor %r0, %r0, %r0 + xor %r1, %r1, %r1 + xor %r2, %r2, %r2 + xor %r3, %r3, %r3 + xor %r4, %r4, %r4 + xor %r5, %r5, %r5 + xor %r6, %r6, %r6 + xor %r7, %r7, %r7 + xor %r8, %r8, %r8 + xor %r9, %r9, %r9 + xor %r10, %r10, %r10 + xor %r11, %r11, %r11 + xor %r12, %r12, %r12 + xor %r13, %r13, %r13 + xor %r14, %r14, %r14 + xor %r15, %r15, %r15 + xor %r16, %r16, %r16 + xor %r17, %r17, %r17 + xor %r18, %r18, %r18 + xor %r19, %r19, %r19 + xor %r20, %r20, %r20 + xor %r21, %r21, %r21 + xor %r22, %r22, %r22 + xor %r23, %r23, %r23 + xor %r24, %r24, %r24 + xor %r25, %r25, %r25 + xor %r26, %r26, %r26 + xor %r27, %r27, %r27 + xor %r28, %r28, %r28 + xor %r29, %r29, %r29 + xor %r30, %r30, %r30 + xor %r31, %r31, %r31 + lis %r4, __ram_start__@h + ori %r4, %r4, __ram_start__@l + lis %r5, __ram_end__@h + ori %r5, %r5, __ram_end__@l +.cleareccloop: + cmpl %cr0, %r4, %r5 + bge %cr0, .cleareccend + stmw %r16, 0(%r4) + addi %r4, %r4, 64 + b .cleareccloop +.cleareccend: + + /* + * Branch prediction enabled. + */ + li %r3, BOOT_BUCSR_DEFAULT + mtspr 1013, %r3 /* BUCSR */ + + blr +#endif /* BOOT_PERFORM_CORE_INIT */ + + /* + * Exception vectors initialization. + */ + .align 2 +_ivinit: + /* MSR initialization.*/ + lis %r3, BOOT_MSR_DEFAULT@h + ori %r3, %r3, BOOT_MSR_DEFAULT@l + mtMSR %r3 + + /* IVPR initialization.*/ + lis %r3, __ivpr_base__@h + ori %r3, %r3, __ivpr_base__@l + mtIVPR %r3 + + blr + + .section .ivors, "ax" + + .globl IVORS +IVORS: + b _IVOR0 + .align 4 + b _IVOR1 + .align 4 + b _IVOR2 + .align 4 + b _IVOR3 + .align 4 + b _IVOR4 + .align 4 + b _IVOR5 + .align 4 + b _IVOR6 + .align 4 + b _IVOR7 + .align 4 + b _IVOR8 + .align 4 + b _IVOR9 + .align 4 + b _IVOR10 + .align 4 + b _IVOR11 + .align 4 + b _IVOR12 + .align 4 + b _IVOR13 + .align 4 + b _IVOR14 + .align 4 + b _IVOR15 + + .section .handlers, "ax" + + /* + * Default IVOR handlers. + */ + .align 2 + .weak _IVOR0, _IVOR1, _IVOR2, _IVOR3, _IVOR4, _IVOR5 + .weak _IVOR6, _IVOR7, _IVOR8, _IVOR9, _IVOR10, _IVOR11 + .weak _IVOR12, _IVOR13, _IVOR14, _IVOR15 +_IVOR0: +_IVOR1: +_IVOR2: +_IVOR3: +_IVOR5: +_IVOR6: +_IVOR7: +_IVOR8: +_IVOR9: +_IVOR11: +_IVOR12: +_IVOR13: +_IVOR14: +_IVOR15: + .global _unhandled_exception +_unhandled_exception: + b _unhandled_exception + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC560Bxx/intc.h b/os/common/startup/e200/devices/SPC560Bxx/intc.h new file mode 100644 index 000000000..bde2c94aa --- /dev/null +++ b/os/common/startup/e200/devices/SPC560Bxx/intc.h @@ -0,0 +1,96 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC560Bxx/intc.h + * @brief SPC560Bxx INTC module header. + * + * @addtogroup INTC + * @{ + */ + +#ifndef _INTC_H_ +#define _INTC_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @name INTC addresses + * @{ + */ +#define INTC_BASE 0xFFF48000 +#define INTC_IACKR_ADDR (INTC_BASE + 0x10) +#define INTC_EOIR_ADDR (INTC_BASE + 0x18) +/** @} */ + +/** + * @brief INTC priority levels. + */ +#define INTC_PRIORITY_LEVELS 16U + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/** + * @name INTC-related macros + * @{ + */ +#define INTC_BCR (*((volatile uint32_t *)(INTC_BASE + 0))) +#define INTC_CPR(n) (*((volatile uint32_t *)(INTC_BASE + 8 + ((n) * sizeof (uint32_t))))) +#define INTC_IACKR(n) (*((volatile uint32_t *)(INTC_BASE + 0x10 + ((n) * sizeof (uint32_t))))) +#define INTC_EOIR(n) (*((volatile uint32_t *)(INTC_BASE + 0x18 + ((n) * sizeof (uint32_t))))) +#define INTC_PSR(n) (*((volatile uint8_t *)(INTC_BASE + 0x40 + ((n) * sizeof (uint8_t))))) +/** @} */ + +/** + * @brief Core selection macros for PSR register. + */ +#define INTC_PSR_CORE0 0x00 + +/** + * @brief PSR register content helper + */ +#define INTC_PSR_ENABLE(cores, prio) ((uint32_t)(cores) | (uint32_t)(prio)) + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _INTC_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC560Bxx/ppcparams.h b/os/common/startup/e200/devices/SPC560Bxx/ppcparams.h new file mode 100644 index 000000000..6a1761421 --- /dev/null +++ b/os/common/startup/e200/devices/SPC560Bxx/ppcparams.h @@ -0,0 +1,86 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC560Bxx/ppcparams.h + * @brief PowerPC parameters for the SPC560Bxx. + * + * @defgroup PPC_SPC560Bxx SPC560Bxx Specific Parameters + * @ingroup PPC_SPECIFIC + * @details This file contains the PowerPC specific parameters for the + * SPC560Bxx platform. + * @{ + */ + +#ifndef _PPCPARAMS_H_ +#define _PPCPARAMS_H_ + +/** + * @brief Family identification macro. + */ +#define PPC_SPC560Bxx + +/** + * @brief PPC core model. + */ +#define PPC_VARIANT PPC_VARIANT_e200z0 + +/** + * @brief Number of cores. + */ +#define PPC_CORE_NUMBER 1 + +/** + * @brief Number of writable bits in IVPR register. + */ +#define PPC_IVPR_BITS 20 + +/** + * @brief IVORx registers support. + */ +#define PPC_SUPPORTS_IVORS FALSE + +/** + * @brief Book E instruction set support. + */ +#define PPC_SUPPORTS_BOOKE FALSE + +/** + * @brief VLE instruction set support. + */ +#define PPC_SUPPORTS_VLE TRUE + +/** + * @brief Supports VLS Load/Store Multiple Volatile instructions. + */ +#define PPC_SUPPORTS_VLE_MULTI TRUE + +/** + * @brief Supports the decrementer timer. + */ +#define PPC_SUPPORTS_DECREMENTER FALSE + +/** + * @brief Number of interrupt sources. + */ +#define PPC_NUM_VECTORS 234 + +#endif /* _PPCPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC560Dxx/boot.h b/os/common/startup/e200/devices/SPC560Dxx/boot.h new file mode 100644 index 000000000..9650c7a10 --- /dev/null +++ b/os/common/startup/e200/devices/SPC560Dxx/boot.h @@ -0,0 +1,117 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file boot.h + * @brief Boot parameters for the SPC560Dxx. + * @{ + */ + +#ifndef _BOOT_H_ +#define _BOOT_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @name BUCSR registers definitions + * @{ + */ +#define BUCSR_BPEN 0x00000001 +#define BUCSR_BALLOC_BFI 0x00000200 +/** @} */ + +/** + * @name MSR register definitions + * @{ + */ +#define MSR_WE 0x00040000 +#define MSR_CE 0x00020000 +#define MSR_EE 0x00008000 +#define MSR_PR 0x00004000 +#define MSR_ME 0x00001000 +#define MSR_DE 0x00000200 +#define MSR_IS 0x00000020 +#define MSR_DS 0x00000010 +#define MSR_RI 0x00000002 +/** @} */ + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/* + * BUCSR default settings. + */ +#if !defined(BOOT_BUCSR_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BALLOC_BFI) +#endif + +/* + * MSR default settings. + */ +#if !defined(BOOT_MSR_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_MSR_DEFAULT (MSR_WE | MSR_CE | MSR_ME) +#endif + +/* + * Boot default settings. + */ +#if !defined(BOOT_PERFORM_CORE_INIT) || defined(__DOXYGEN__) +#define BOOT_PERFORM_CORE_INIT 1 +#endif + +/* + * VLE mode default settings. + */ +#if !defined(BOOT_USE_VLE) || defined(__DOXYGEN__) +#define BOOT_USE_VLE 1 +#endif + +/* + * RAM relocation flag. + */ +#if !defined(BOOT_RELOCATE_IN_RAM) || defined(__DOXYGEN__) +#define BOOT_RELOCATE_IN_RAM 0 +#endif + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _BOOT_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC560Dxx/boot.s b/os/common/startup/e200/devices/SPC560Dxx/boot.s new file mode 100644 index 000000000..601f14f20 --- /dev/null +++ b/os/common/startup/e200/devices/SPC560Dxx/boot.s @@ -0,0 +1,217 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC560Dxx/boot.s + * @brief SPC560Dxx boot-related code. + * + * @addtogroup PPC_BOOT + * @{ + */ + +#include "boot.h" + +#if !defined(__DOXYGEN__) + + /* BAM record.*/ + .section .boot, "ax" + + .long 0x015A0000 + .long _reset_address + + .align 2 + .globl _reset_address + .type _reset_address, @function +_reset_address: +#if BOOT_PERFORM_CORE_INIT + bl _coreinit +#endif + bl _ivinit + +#if BOOT_RELOCATE_IN_RAM + /* + * Image relocation in RAM. + */ + lis r4, __ram_reloc_start__@h + ori r4, r4, __ram_reloc_start__@l + lis r5, __ram_reloc_dest__@h + ori r5, r5, __ram_reloc_dest__@l + lis r6, __ram_reloc_end__@h + ori r6, r6, __ram_reloc_end__@l +.relloop: + cmpl cr0, r4, r6 + bge cr0, .relend + lwz r7, 0(r4) + addi r4, r4, 4 + stw r7, 0(r5) + addi r5, r5, 4 + b .relloop +.relend: + lis r3, _boot_address@h + ori r3, r3, _boot_address@l + mtctr r3 + bctrl +#else + b _boot_address +#endif + +#if BOOT_PERFORM_CORE_INIT + .align 2 +_coreinit: + /* + * RAM clearing, this device requires a write to all RAM location in + * order to initialize the ECC detection hardware, this is going to + * slow down the startup but there is no way around. + */ + xor r0, r0, r0 + xor r1, r1, r1 + xor r2, r2, r2 + xor r3, r3, r3 + xor r4, r4, r4 + xor r5, r5, r5 + xor r6, r6, r6 + xor r7, r7, r7 + xor r8, r8, r8 + xor r9, r9, r9 + xor r10, r10, r10 + xor r11, r11, r11 + xor r12, r12, r12 + xor r13, r13, r13 + xor r14, r14, r14 + xor r15, r15, r15 + xor r16, r16, r16 + xor r17, r17, r17 + xor r18, r18, r18 + xor r19, r19, r19 + xor r20, r20, r20 + xor r21, r21, r21 + xor r22, r22, r22 + xor r23, r23, r23 + xor r24, r24, r24 + xor r25, r25, r25 + xor r26, r26, r26 + xor r27, r27, r27 + xor r28, r28, r28 + xor r29, r29, r29 + xor r30, r30, r30 + xor r31, r31, r31 + lis r4, __ram_start__@h + ori r4, r4, __ram_start__@l + lis r5, __ram_end__@h + ori r5, r5, __ram_end__@l +.cleareccloop: + cmpl cr0, r4, r5 + bge cr0, .cleareccend + stmw r16, 0(r4) + addi r4, r4, 64 + b .cleareccloop +.cleareccend: + + /* + * Branch prediction enabled. + */ + li r3, BOOT_BUCSR_DEFAULT + mtspr 1013, r3 /* BUCSR */ + + blr +#endif /* BOOT_PERFORM_CORE_INIT */ + + /* + * Exception vectors initialization. + */ + .align 2 +_ivinit: + /* MSR initialization.*/ + lis r3, BOOT_MSR_DEFAULT@h + ori r3, r3, BOOT_MSR_DEFAULT@l + mtMSR r3 + + /* IVPR initialization.*/ + lis r3, __ivpr_base__@h + ori r3, r3, __ivpr_base__@l + mtIVPR r3 + + blr + + .section .ivors, "ax" + + .globl IVORS +IVORS: + b _IVOR0 + .align 4 + b _IVOR1 + .align 4 + b _IVOR2 + .align 4 + b _IVOR3 + .align 4 + b _IVOR4 + .align 4 + b _IVOR5 + .align 4 + b _IVOR6 + .align 4 + b _IVOR7 + .align 4 + b _IVOR8 + .align 4 + b _IVOR9 + .align 4 + b _IVOR10 + .align 4 + b _IVOR11 + .align 4 + b _IVOR12 + .align 4 + b _IVOR13 + .align 4 + b _IVOR14 + .align 4 + b _IVOR15 + + .section .handlers, "ax" + + /* + * Default IVOR handlers. + */ + .align 2 + .weak _IVOR0, _IVOR1, _IVOR2, _IVOR3, _IVOR4, _IVOR5 + .weak _IVOR6, _IVOR7, _IVOR8, _IVOR9, _IVOR10, _IVOR11 + .weak _IVOR12, _IVOR13, _IVOR14, _IVOR15 +_IVOR0: +_IVOR1: +_IVOR2: +_IVOR3: +_IVOR5: +_IVOR6: +_IVOR7: +_IVOR8: +_IVOR9: +_IVOR11: +_IVOR12: +_IVOR13: +_IVOR14: +_IVOR15: + .global _unhandled_exception +_unhandled_exception: + b _unhandled_exception + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC560Dxx/boot_cw.s b/os/common/startup/e200/devices/SPC560Dxx/boot_cw.s new file mode 100644 index 000000000..a2b268a17 --- /dev/null +++ b/os/common/startup/e200/devices/SPC560Dxx/boot_cw.s @@ -0,0 +1,203 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC560Dxx/boot.s + * @brief SPC560Dxx boot-related code. + * + * @addtogroup PPC_BOOT + * @{ + */ + +#include "boot.h" + +#if !defined(__DOXYGEN__) + + .extern _boot_address + .extern __ram_start__ + .extern __ram_end__ + .extern __ivpr_base__ + + .extern _IVOR0, _IVOR1, _IVOR2, _IVOR3, _IVOR4, _IVOR5 + .extern _IVOR6, _IVOR7, _IVOR8, _IVOR9, _IVOR10, _IVOR11 + .extern _IVOR12, _IVOR13, _IVOR14, _IVOR15 + + /* BAM record.*/ + .section .boot, 16 + + .long 0x015A0000 + .long _reset_address + + .align 4 + .globl _reset_address + .type _reset_address, @function +_reset_address: +#if BOOT_PERFORM_CORE_INIT + se_bl _coreinit +#endif + se_bl _ivinit + +#if BOOT_RELOCATE_IN_RAM + /* + * Image relocation in RAM. + */ + e_lis r4, __ram_reloc_start__@h + e_or2i r4, r4, __ram_reloc_start__@l + e_lis r5, __ram_reloc_dest__@h + e_or2i r5, r5, __ram_reloc_dest__@l + e_lis r6, __ram_reloc_end__@h + e_or2i r6, r6, __ram_reloc_end__@l +.relloop: + se_cmpl r4, r6 + se_bge .relend + se_lwz r7, 0(r4) + se_addi r4, 4 + se_stw r7, 0(r5) + se_addi r5, 4 + se_b .relloop +.relend: + e_lis r3, _boot_address@h + e_or2i r3, _boot_address@l + mtctr r3 + se_bctrl +#else + e_b _boot_address +#endif + +#if BOOT_PERFORM_CORE_INIT + .align 4 +_coreinit: + /* + * RAM clearing, this device requires a write to all RAM location in + * order to initialize the ECC detection hardware, this is going to + * slow down the startup but there is no way around. + */ + xor r0, r0, r0 + xor r1, r1, r1 + xor r2, r2, r2 + xor r3, r3, r3 + xor r4, r4, r4 + xor r5, r5, r5 + xor r6, r6, r6 + xor r7, r7, r7 + xor r8, r8, r8 + xor r9, r9, r9 + xor r10, r10, r10 + xor r11, r11, r11 + xor r12, r12, r12 + xor r13, r13, r13 + xor r14, r14, r14 + xor r15, r15, r15 + xor r16, r16, r16 + xor r17, r17, r17 + xor r18, r18, r18 + xor r19, r19, r19 + xor r20, r20, r20 + xor r21, r21, r21 + xor r22, r22, r22 + xor r23, r23, r23 + xor r24, r24, r24 + xor r25, r25, r25 + xor r26, r26, r26 + xor r27, r27, r27 + xor r28, r28, r28 + xor r29, r29, r29 + xor r30, r30, r30 + xor r31, r31, r31 + e_lis r4, __ram_start__@h + e_or2i r4, __ram_start__@l + e_lis r5, __ram_end__@h + e_or2i r5, __ram_end__@l +.cleareccloop: + se_cmpl r4, r5 + se_bge .cleareccend + e_stmw r16, 0(r4) + e_addi r4, r4, 64 + se_b .cleareccloop +.cleareccend: + + /* + * Branch prediction enabled. + */ + e_li r3, BOOT_BUCSR_DEFAULT + mtspr 1013, r3 /* BUCSR */ + + se_blr +#endif /* BOOT_PERFORM_CORE_INIT */ + + /* + * Exception vectors initialization. + */ + .align 4 +_ivinit: + /* MSR initialization.*/ + e_lis r3, BOOT_MSR_DEFAULT@h + e_ori r3, r3, BOOT_MSR_DEFAULT@l + mtMSR r3 + + /* IVPR initialization.*/ + e_lis r3, __ivpr_base__@h + e_or2i r3, __ivpr_base__@l + mtIVPR r3 + + se_blr + + .section .ivors, text_vle + .align 16 + .globl IVORS +IVORS: + e_b _IVOR0 + .align 16 + e_b _IVOR1 + .align 16 + e_b _IVOR2 + .align 16 + e_b _IVOR3 + .align 16 + e_b _IVOR4 + .align 16 + e_b _IVOR5 + .align 16 + e_b _IVOR6 + .align 16 + e_b _IVOR7 + .align 16 + e_b _IVOR8 + .align 16 + e_b _IVOR9 + .align 16 + e_b _IVOR10 + .align 16 + e_b _IVOR11 + .align 16 + e_b _IVOR12 + .align 16 + e_b _IVOR13 + .align 16 + e_b _IVOR14 + .align 16 + e_b _IVOR15 + + .section .handlers, text_vle + .align 16 + + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC560Dxx/intc.h b/os/common/startup/e200/devices/SPC560Dxx/intc.h new file mode 100644 index 000000000..6c3bbec60 --- /dev/null +++ b/os/common/startup/e200/devices/SPC560Dxx/intc.h @@ -0,0 +1,96 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC560Dxx/intc.h + * @brief SPC560Dxx INTC module header. + * + * @addtogroup INTC + * @{ + */ + +#ifndef _INTC_H_ +#define _INTC_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @name INTC addresses + * @{ + */ +#define INTC_BASE 0xFFF48000 +#define INTC_IACKR_ADDR (INTC_BASE + 0x10) +#define INTC_EOIR_ADDR (INTC_BASE + 0x18) +/** @} */ + +/** + * @brief INTC priority levels. + */ +#define INTC_PRIORITY_LEVELS 16U + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/** + * @name INTC-related macros + * @{ + */ +#define INTC_BCR (*((volatile uint32_t *)(INTC_BASE + 0))) +#define INTC_CPR(n) (*((volatile uint32_t *)(INTC_BASE + 8 + ((n) * sizeof (uint32_t))))) +#define INTC_IACKR(n) (*((volatile uint32_t *)(INTC_BASE + 0x10 + ((n) * sizeof (uint32_t))))) +#define INTC_EOIR(n) (*((volatile uint32_t *)(INTC_BASE + 0x18 + ((n) * sizeof (uint32_t))))) +#define INTC_PSR(n) (*((volatile uint8_t *)(INTC_BASE + 0x40 + ((n) * sizeof (uint8_t))))) +/** @} */ + +/** + * @brief Core selection macros for PSR register. + */ +#define INTC_PSR_CORE0 0x00 + +/** + * @brief PSR register content helper + */ +#define INTC_PSR_ENABLE(cores, prio) ((uint32_t)(cores) | (uint32_t)(prio)) + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _INTC_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC560Dxx/ppcparams.h b/os/common/startup/e200/devices/SPC560Dxx/ppcparams.h new file mode 100644 index 000000000..4a62a0772 --- /dev/null +++ b/os/common/startup/e200/devices/SPC560Dxx/ppcparams.h @@ -0,0 +1,86 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC560Dxx/ppcparams.h + * @brief PowerPC parameters for the SPC560Dxx. + * + * @defgroup PPC_SPC560Dxx SPC560Dxx Specific Parameters + * @ingroup PPC_SPECIFIC + * @details This file contains the PowerPC specific parameters for the + * SPC560Dxx platform. + * @{ + */ + +#ifndef _PPCPARAMS_H_ +#define _PPCPARAMS_H_ + +/** + * @brief Family identification macro. + */ +#define PPC_SPC560Dxx + +/** + * @brief PPC core model. + */ +#define PPC_VARIANT PPC_VARIANT_e200z0 + +/** + * @brief Number of cores. + */ +#define PPC_CORE_NUMBER 1 + +/** + * @brief Number of writable bits in IVPR register. + */ +#define PPC_IVPR_BITS 20 + +/** + * @brief IVORx registers support. + */ +#define PPC_SUPPORTS_IVORS FALSE + +/** + * @brief Book E instruction set support. + */ +#define PPC_SUPPORTS_BOOKE FALSE + +/** + * @brief VLE instruction set support. + */ +#define PPC_SUPPORTS_VLE TRUE + +/** + * @brief Supports VLS Load/Store Multiple Volatile instructions. + */ +#define PPC_SUPPORTS_VLE_MULTI TRUE + +/** + * @brief Supports the decrementer timer. + */ +#define PPC_SUPPORTS_DECREMENTER FALSE + +/** + * @brief Number of interrupt sources. + */ +#define PPC_NUM_VECTORS 155 + +#endif /* _PPCPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC560Pxx/boot.h b/os/common/startup/e200/devices/SPC560Pxx/boot.h new file mode 100644 index 000000000..2c104d402 --- /dev/null +++ b/os/common/startup/e200/devices/SPC560Pxx/boot.h @@ -0,0 +1,117 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file boot.h + * @brief Boot parameters for the SPC560Pxx. + * @{ + */ + +#ifndef _BOOT_H_ +#define _BOOT_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @name BUCSR registers definitions + * @{ + */ +#define BUCSR_BPEN 0x00000001 +#define BUCSR_BALLOC_BFI 0x00000200 +/** @} */ + +/** + * @name MSR register definitions + * @{ + */ +#define MSR_WE 0x00040000 +#define MSR_CE 0x00020000 +#define MSR_EE 0x00008000 +#define MSR_PR 0x00004000 +#define MSR_ME 0x00001000 +#define MSR_DE 0x00000200 +#define MSR_IS 0x00000020 +#define MSR_DS 0x00000010 +#define MSR_RI 0x00000002 +/** @} */ + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/* + * BUCSR default settings. + */ +#if !defined(BOOT_BUCSR_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BALLOC_BFI) +#endif + +/* + * MSR default settings. + */ +#if !defined(BOOT_MSR_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_MSR_DEFAULT (MSR_WE | MSR_CE | MSR_ME) +#endif + +/* + * Boot default settings. + */ +#if !defined(BOOT_PERFORM_CORE_INIT) || defined(__DOXYGEN__) +#define BOOT_PERFORM_CORE_INIT 1 +#endif + +/* + * VLE mode default settings. + */ +#if !defined(BOOT_USE_VLE) || defined(__DOXYGEN__) +#define BOOT_USE_VLE 1 +#endif + +/* + * RAM relocation flag. + */ +#if !defined(BOOT_RELOCATE_IN_RAM) || defined(__DOXYGEN__) +#define BOOT_RELOCATE_IN_RAM 0 +#endif + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _BOOT_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC560Pxx/boot.s b/os/common/startup/e200/devices/SPC560Pxx/boot.s new file mode 100644 index 000000000..cdbecf616 --- /dev/null +++ b/os/common/startup/e200/devices/SPC560Pxx/boot.s @@ -0,0 +1,217 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC560Pxx/boot.s + * @brief SPC560Pxx boot-related code. + * + * @addtogroup PPC_BOOT + * @{ + */ + +#include "boot.h" + +#if !defined(__DOXYGEN__) + + /* BAM record.*/ + .section .boot, "ax" + + .long 0x015A0000 + .long _reset_address + + .align 2 + .globl _reset_address + .type _reset_address, @function +_reset_address: +#if BOOT_PERFORM_CORE_INIT + bl _coreinit +#endif + bl _ivinit + +#if BOOT_RELOCATE_IN_RAM + /* + * Image relocation in RAM. + */ + lis %r4, __ram_reloc_start__@h + ori %r4, %r4, __ram_reloc_start__@l + lis %r5, __ram_reloc_dest__@h + ori %r5, %r5, __ram_reloc_dest__@l + lis %r6, __ram_reloc_end__@h + ori %r6, %r6, __ram_reloc_end__@l +.relloop: + cmpl cr0, %r4, %r6 + bge cr0, .relend + lwz %r7, 0(%r4) + addi %r4, %r4, 4 + stw %r7, 0(%r5) + addi %r5, %r5, 4 + b .relloop +.relend: + lis %r3, _boot_address@h + ori %r3, %r3, _boot_address@l + mtctr %r3 + bctrl +#else + b _boot_address +#endif + +#if BOOT_PERFORM_CORE_INIT + .align 2 +_coreinit: + /* + * RAM clearing, this device requires a write to all RAM location in + * order to initialize the ECC detection hardware, this is going to + * slow down the startup but there is no way around. + */ + xor %r0, %r0, %r0 + xor %r1, %r1, %r1 + xor %r2, %r2, %r2 + xor %r3, %r3, %r3 + xor %r4, %r4, %r4 + xor %r5, %r5, %r5 + xor %r6, %r6, %r6 + xor %r7, %r7, %r7 + xor %r8, %r8, %r8 + xor %r9, %r9, %r9 + xor %r10, %r10, %r10 + xor %r11, %r11, %r11 + xor %r12, %r12, %r12 + xor %r13, %r13, %r13 + xor %r14, %r14, %r14 + xor %r15, %r15, %r15 + xor %r16, %r16, %r16 + xor %r17, %r17, %r17 + xor %r18, %r18, %r18 + xor %r19, %r19, %r19 + xor %r20, %r20, %r20 + xor %r21, %r21, %r21 + xor %r22, %r22, %r22 + xor %r23, %r23, %r23 + xor %r24, %r24, %r24 + xor %r25, %r25, %r25 + xor %r26, %r26, %r26 + xor %r27, %r27, %r27 + xor %r28, %r28, %r28 + xor %r29, %r29, %r29 + xor %r30, %r30, %r30 + xor %r31, %r31, %r31 + lis %r4, __ram_start__@h + ori %r4, %r4, __ram_start__@l + lis %r5, __ram_end__@h + ori %r5, %r5, __ram_end__@l +.cleareccloop: + cmpl %cr0, %r4, %r5 + bge %cr0, .cleareccend + stmw %r16, 0(%r4) + addi %r4, %r4, 64 + b .cleareccloop +.cleareccend: + + /* + * Branch prediction enabled. + */ + li %r3, BOOT_BUCSR_DEFAULT + mtspr 1013, %r3 /* BUCSR */ + + blr +#endif /* BOOT_PERFORM_CORE_INIT */ + + /* + * Exception vectors initialization. + */ + .align 2 +_ivinit: + /* MSR initialization.*/ + lis %r3, BOOT_MSR_DEFAULT@h + ori %r3, %r3, BOOT_MSR_DEFAULT@l + mtMSR %r3 + + /* IVPR initialization.*/ + lis %r3, __ivpr_base__@h + ori %r3, %r3, __ivpr_base__@l + mtIVPR %r3 + + blr + + .section .ivors, "ax" + + .globl IVORS +IVORS: + b _IVOR0 + .align 4 + b _IVOR1 + .align 4 + b _IVOR2 + .align 4 + b _IVOR3 + .align 4 + b _IVOR4 + .align 4 + b _IVOR5 + .align 4 + b _IVOR6 + .align 4 + b _IVOR7 + .align 4 + b _IVOR8 + .align 4 + b _IVOR9 + .align 4 + b _IVOR10 + .align 4 + b _IVOR11 + .align 4 + b _IVOR12 + .align 4 + b _IVOR13 + .align 4 + b _IVOR14 + .align 4 + b _IVOR15 + + .section .handlers, "ax" + + /* + * Default IVOR handlers. + */ + .align 2 + .weak _IVOR0, _IVOR1, _IVOR2, _IVOR3, _IVOR4, _IVOR5 + .weak _IVOR6, _IVOR7, _IVOR8, _IVOR9, _IVOR10, _IVOR11 + .weak _IVOR12, _IVOR13, _IVOR14, _IVOR15 +_IVOR0: +_IVOR1: +_IVOR2: +_IVOR3: +_IVOR5: +_IVOR6: +_IVOR7: +_IVOR8: +_IVOR9: +_IVOR11: +_IVOR12: +_IVOR13: +_IVOR14: +_IVOR15: + .global _unhandled_exception +_unhandled_exception: + b _unhandled_exception + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC560Pxx/intc.h b/os/common/startup/e200/devices/SPC560Pxx/intc.h new file mode 100644 index 000000000..75440fb75 --- /dev/null +++ b/os/common/startup/e200/devices/SPC560Pxx/intc.h @@ -0,0 +1,96 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC560Pxx/intc.h + * @brief SPC560Pxx INTC module header. + * + * @addtogroup INTC + * @{ + */ + +#ifndef _INTC_H_ +#define _INTC_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @name INTC addresses + * @{ + */ +#define INTC_BASE 0xFFF48000 +#define INTC_IACKR_ADDR (INTC_BASE + 0x10) +#define INTC_EOIR_ADDR (INTC_BASE + 0x18) +/** @} */ + +/** + * @brief INTC priority levels. + */ +#define INTC_PRIORITY_LEVELS 16U + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/** + * @name INTC-related macros + * @{ + */ +#define INTC_BCR (*((volatile uint32_t *)(INTC_BASE + 0))) +#define INTC_CPR(n) (*((volatile uint32_t *)(INTC_BASE + 8 + ((n) * sizeof (uint32_t))))) +#define INTC_IACKR(n) (*((volatile uint32_t *)(INTC_BASE + 0x10 + ((n) * sizeof (uint32_t))))) +#define INTC_EOIR(n) (*((volatile uint32_t *)(INTC_BASE + 0x18 + ((n) * sizeof (uint32_t))))) +#define INTC_PSR(n) (*((volatile uint8_t *)(INTC_BASE + 0x40 + ((n) * sizeof (uint8_t))))) +/** @} */ + +/** + * @brief Core selection macros for PSR register. + */ +#define INTC_PSR_CORE0 0x00 + +/** + * @brief PSR register content helper + */ +#define INTC_PSR_ENABLE(cores, prio) ((uint32_t)(cores) | (uint32_t)(prio)) + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _INTC_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC560Pxx/ppcparams.h b/os/common/startup/e200/devices/SPC560Pxx/ppcparams.h new file mode 100644 index 000000000..9bd1c565a --- /dev/null +++ b/os/common/startup/e200/devices/SPC560Pxx/ppcparams.h @@ -0,0 +1,86 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC560Pxx/ppcparams.h + * @brief PowerPC parameters for the SPC560Pxx. + * + * @defgroup PPC_SPC560Pxx SPC560Pxx Specific Parameters + * @ingroup PPC_SPECIFIC + * @details This file contains the PowerPC specific parameters for the + * SPC560Pxx platform. + * @{ + */ + +#ifndef _PPCPARAMS_H_ +#define _PPCPARAMS_H_ + +/** + * @brief Family identification macro. + */ +#define PPC_SPC560Pxx + +/** + * @brief PPC core model. + */ +#define PPC_VARIANT PPC_VARIANT_e200z0 + +/** + * @brief Number of cores. + */ +#define PPC_CORE_NUMBER 1 + +/** + * @brief Number of writable bits in IVPR register. + */ +#define PPC_IVPR_BITS 20 + +/** + * @brief IVORx registers support. + */ +#define PPC_SUPPORTS_IVORS FALSE + +/** + * @brief Book E instruction set support. + */ +#define PPC_SUPPORTS_BOOKE FALSE + +/** + * @brief VLE instruction set support. + */ +#define PPC_SUPPORTS_VLE TRUE + +/** + * @brief Supports VLS Load/Store Multiple Volatile instructions. + */ +#define PPC_SUPPORTS_VLE_MULTI TRUE + +/** + * @brief Supports the decrementer timer. + */ +#define PPC_SUPPORTS_DECREMENTER FALSE + +/** + * @brief Number of interrupt sources. + */ +#define PPC_NUM_VECTORS 261 + +#endif /* _PPCPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC563Mxx/boot.h b/os/common/startup/e200/devices/SPC563Mxx/boot.h new file mode 100644 index 000000000..a5fd71c62 --- /dev/null +++ b/os/common/startup/e200/devices/SPC563Mxx/boot.h @@ -0,0 +1,122 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file boot.h + * @brief Boot parameters for the SPC563Mxx. + * @{ + */ + +#ifndef _BOOT_H_ +#define _BOOT_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @name BUCSR registers definitions + * @{ + */ +#define BUCSR_BPEN 0x00000001 +#define BUCSR_BALLOC_BFI 0x00000200 +/** @} */ + +/** + * @name MSR register definitions + * @{ + */ +#define MSR_UCLE 0x04000000 +#define MSR_SPE 0x02000000 +#define MSR_WE 0x00040000 +#define MSR_CE 0x00020000 +#define MSR_EE 0x00008000 +#define MSR_PR 0x00004000 +#define MSR_FP 0x00002000 +#define MSR_ME 0x00001000 +#define MSR_FE0 0x00000800 +#define MSR_DE 0x00000200 +#define MSR_FE1 0x00000100 +#define MSR_IS 0x00000020 +#define MSR_DS 0x00000010 +#define MSR_RI 0x00000002 +/** @} */ + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/* + * BUCSR default settings. + */ +#if !defined(BOOT_BUCSR_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BALLOC_BFI) +#endif + +/* + * MSR default settings. + */ +#if !defined(BOOT_MSR_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_MSR_DEFAULT (MSR_SPE | MSR_WE | MSR_CE | MSR_ME) +#endif + +/* + * Boot default settings. + */ +#if !defined(BOOT_PERFORM_CORE_INIT) || defined(__DOXYGEN__) +#define BOOT_PERFORM_CORE_INIT 1 +#endif + +/* + * VLE mode default settings. + */ +#if !defined(BOOT_USE_VLE) || defined(__DOXYGEN__) +#define BOOT_USE_VLE 1 +#endif + +/* + * RAM relocation flag. + */ +#if !defined(BOOT_RELOCATE_IN_RAM) || defined(__DOXYGEN__) +#define BOOT_RELOCATE_IN_RAM 0 +#endif + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _BOOT_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC563Mxx/boot.s b/os/common/startup/e200/devices/SPC563Mxx/boot.s new file mode 100644 index 000000000..d9627dd39 --- /dev/null +++ b/os/common/startup/e200/devices/SPC563Mxx/boot.s @@ -0,0 +1,191 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC563Mxx/boot.s + * @brief SPC563Mxx boot-related code. + * + * @addtogroup PPC_BOOT + * @{ + */ + +#include "boot.h" + +#if !defined(__DOXYGEN__) + + /* BAM record.*/ + .section .boot, "ax" + +#if BOOT_USE_VLE + .long 0x015A0000 +#else + .long 0x005A0000 +#endif + .long _reset_address + + .align 2 + .globl _reset_address + .type _reset_address, @function +_reset_address: +#if BOOT_PERFORM_CORE_INIT + bl _coreinit +#endif + bl _ivinit + +#if BOOT_RELOCATE_IN_RAM + /* + * Image relocation in RAM. + */ + lis %r4, __ram_reloc_start__@h + ori %r4, %r4, __ram_reloc_start__@l + lis %r5, __ram_reloc_dest__@h + ori %r5, %r5, __ram_reloc_dest__@l + lis %r6, __ram_reloc_end__@h + ori %r6, %r6, __ram_reloc_end__@l +.relloop: + cmpl cr0, %r4, %r6 + bge cr0, .relend + lwz %r7, 0(%r4) + addi %r4, %r4, 4 + stw %r7, 0(%r5) + addi %r5, %r5, 4 + b .relloop +.relend: + lis %r3, _boot_address@h + ori %r3, %r3, _boot_address@l + mtctr %r3 + bctrl +#else + b _boot_address +#endif + +#if BOOT_PERFORM_CORE_INIT + .align 2 +_coreinit: + /* + * RAM clearing, this device requires a write to all RAM location in + * order to initialize the ECC detection hardware, this is going to + * slow down the startup but there is no way around. + */ + xor %r0, %r0, %r0 + xor %r1, %r1, %r1 + xor %r2, %r2, %r2 + xor %r3, %r3, %r3 + xor %r4, %r4, %r4 + xor %r5, %r5, %r5 + xor %r6, %r6, %r6 + xor %r7, %r7, %r7 + xor %r8, %r8, %r8 + xor %r9, %r9, %r9 + xor %r10, %r10, %r10 + xor %r11, %r11, %r11 + xor %r12, %r12, %r12 + xor %r13, %r13, %r13 + xor %r14, %r14, %r14 + xor %r15, %r15, %r15 + xor %r16, %r16, %r16 + xor %r17, %r17, %r17 + xor %r18, %r18, %r18 + xor %r19, %r19, %r19 + xor %r20, %r20, %r20 + xor %r21, %r21, %r21 + xor %r22, %r22, %r22 + xor %r23, %r23, %r23 + xor %r24, %r24, %r24 + xor %r25, %r25, %r25 + xor %r26, %r26, %r26 + xor %r27, %r27, %r27 + xor %r28, %r28, %r28 + xor %r29, %r29, %r29 + xor %r30, %r30, %r30 + xor %r31, %r31, %r31 + lis %r4, __ram_start__@h + ori %r4, %r4, __ram_start__@l + lis %r5, __ram_end__@h + ori %r5, %r5, __ram_end__@l +.cleareccloop: + cmpl %cr0, %r4, %r5 + bge %cr0, .cleareccend + stmw %r16, 0(%r4) + addi %r4, %r4, 64 + b .cleareccloop +.cleareccend: + + /* + * Branch prediction enabled. + */ + li %r3, BOOT_BUCSR_DEFAULT + mtspr 1013, %r3 /* BUCSR */ + + blr +#endif /* BOOT_PERFORM_CORE_INIT */ + + /* + * Exception vectors initialization. + */ +_ivinit: + /* MSR initialization.*/ + lis %r3, BOOT_MSR_DEFAULT@h + ori %r3, %r3, BOOT_MSR_DEFAULT@l + mtMSR %r3 + + /* IVPR initialization.*/ + lis %r3, __ivpr_base__@h + ori %r3, %r3, __ivpr_base__@l + mtIVPR %r3 + + /* IVORs initialization.*/ + lis %r3, _unhandled_exception@h + ori %r3, %r3, _unhandled_exception@l + + mtspr 400, %r3 /* IVOR0-15 */ + mtspr 401, %r3 + mtspr 402, %r3 + mtspr 403, %r3 + mtspr 404, %r3 + mtspr 405, %r3 + mtspr 406, %r3 + mtspr 407, %r3 + mtspr 408, %r3 + mtspr 409, %r3 + mtspr 410, %r3 + mtspr 411, %r3 + mtspr 412, %r3 + mtspr 413, %r3 + mtspr 414, %r3 + mtspr 415, %r3 + mtspr 528, %r3 /* IVOR32-34 */ + mtspr 529, %r3 + mtspr 530, %r3 + + blr + + .section .handlers, "ax" + + /* + * Unhandled exceptions handler. + */ + .weak _unhandled_exception + .type _unhandled_exception, @function +_unhandled_exception: + b _unhandled_exception + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC563Mxx/intc.h b/os/common/startup/e200/devices/SPC563Mxx/intc.h new file mode 100644 index 000000000..b7a5d920a --- /dev/null +++ b/os/common/startup/e200/devices/SPC563Mxx/intc.h @@ -0,0 +1,96 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC563Mxx/intc.h + * @brief SPC563Mxx INTC module header. + * + * @addtogroup INTC + * @{ + */ + +#ifndef _INTC_H_ +#define _INTC_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @name INTC addresses + * @{ + */ +#define INTC_BASE 0xFFF48000 +#define INTC_IACKR_ADDR (INTC_BASE + 0x10) +#define INTC_EOIR_ADDR (INTC_BASE + 0x18) +/** @} */ + +/** + * @brief INTC priority levels. + */ +#define INTC_PRIORITY_LEVELS 16U + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/** + * @name INTC-related macros + * @{ + */ +#define INTC_BCR (*((volatile uint32_t *)(INTC_BASE + 0))) +#define INTC_CPR(n) (*((volatile uint32_t *)(INTC_BASE + 8 + ((n) * sizeof (uint32_t))))) +#define INTC_IACKR(n) (*((volatile uint32_t *)(INTC_BASE + 0x10 + ((n) * sizeof (uint32_t))))) +#define INTC_EOIR(n) (*((volatile uint32_t *)(INTC_BASE + 0x18 + ((n) * sizeof (uint32_t))))) +#define INTC_PSR(n) (*((volatile uint8_t *)(INTC_BASE + 0x40 + ((n) * sizeof (uint8_t))))) +/** @} */ + +/** + * @brief Core selection macros for PSR register. + */ +#define INTC_PSR_CORE0 0x00 + +/** + * @brief PSR register content helper + */ +#define INTC_PSR_ENABLE(cores, prio) ((uint32_t)(cores) | (uint32_t)(prio)) + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _INTC_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC563Mxx/ppcparams.h b/os/common/startup/e200/devices/SPC563Mxx/ppcparams.h new file mode 100644 index 000000000..315e53f0b --- /dev/null +++ b/os/common/startup/e200/devices/SPC563Mxx/ppcparams.h @@ -0,0 +1,86 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC563Mxx/ppcparams.h + * @brief PowerPC parameters for the SPC563Mxx. + * + * @defgroup PPC_SPC563Mxx SPC563Mxx Specific Parameters + * @ingroup PPC_SPECIFIC + * @details This file contains the PowerPC specific parameters for the + * SPC563Mxx platform. + * @{ + */ + +#ifndef _PPCPARAMS_H_ +#define _PPCPARAMS_H_ + +/** + * @brief Family identification macro. + */ +#define PPC_SPC563Mxx + +/** + * @brief PPC core model. + */ +#define PPC_VARIANT PPC_VARIANT_e200z3 + +/** + * @brief Number of cores. + */ +#define PPC_CORE_NUMBER 1 + +/** + * @brief Number of writable bits in IVPR register. + */ +#define PPC_IVPR_BITS 16 + +/** + * @brief IVORx registers support. + */ +#define PPC_SUPPORTS_IVORS TRUE + +/** + * @brief Book E instruction set support. + */ +#define PPC_SUPPORTS_BOOKE TRUE + +/** + * @brief VLE instruction set support. + */ +#define PPC_SUPPORTS_VLE TRUE + +/** + * @brief Supports VLS Load/Store Multiple Volatile instructions. + */ +#define PPC_SUPPORTS_VLE_MULTI TRUE + +/** + * @brief Supports the decrementer timer. + */ +#define PPC_SUPPORTS_DECREMENTER TRUE + +/** + * @brief Number of interrupt sources. + */ +#define PPC_NUM_VECTORS 360 + +#endif /* _PPCPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC564Axx/boot.h b/os/common/startup/e200/devices/SPC564Axx/boot.h new file mode 100644 index 000000000..14a13840b --- /dev/null +++ b/os/common/startup/e200/devices/SPC564Axx/boot.h @@ -0,0 +1,245 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file boot.h + * @brief Boot parameters for the SPC564Axx. + * @{ + */ + +#ifndef _BOOT_H_ +#define _BOOT_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @name MASx registers definitions + * @{ + */ +#define MAS0_TBLMAS_TBL 0x10000000 +#define MAS0_ESEL_MASK 0x000F0000 +#define MAS0_ESEL(n) ((n) << 16) + +#define MAS1_VALID 0x80000000 +#define MAS1_IPROT 0x40000000 +#define MAS1_TID_MASK 0x00FF0000 +#define MAS1_TS 0x00001000 +#define MAS1_TSISE_MASK 0x00000F80 +#define MAS1_TSISE_1K 0x00000000 +#define MAS1_TSISE_2K 0x00000080 +#define MAS1_TSISE_4K 0x00000100 +#define MAS1_TSISE_8K 0x00000180 +#define MAS1_TSISE_16K 0x00000200 +#define MAS1_TSISE_32K 0x00000280 +#define MAS1_TSISE_64K 0x00000300 +#define MAS1_TSISE_128K 0x00000380 +#define MAS1_TSISE_256K 0x00000400 +#define MAS1_TSISE_512K 0x00000480 +#define MAS1_TSISE_1M 0x00000500 +#define MAS1_TSISE_2M 0x00000580 +#define MAS1_TSISE_4M 0x00000600 +#define MAS1_TSISE_8M 0x00000680 +#define MAS1_TSISE_16M 0x00000700 +#define MAS1_TSISE_32M 0x00000780 +#define MAS1_TSISE_64M 0x00000800 +#define MAS1_TSISE_128M 0x00000880 +#define MAS1_TSISE_256M 0x00000900 +#define MAS1_TSISE_512M 0x00000980 +#define MAS1_TSISE_1G 0x00000A00 +#define MAS1_TSISE_2G 0x00000A80 +#define MAS1_TSISE_4G 0x00000B00 + +#define MAS2_EPN_MASK 0xFFFFFC00 +#define MAS2_EPN(n) ((n) & MAS2_EPN_MASK) +#define MAS2_EBOOK 0x00000000 +#define MAS2_VLE 0x00000020 +#define MAS2_W 0x00000010 +#define MAS2_I 0x00000008 +#define MAS2_M 0x00000004 +#define MAS2_G 0x00000002 +#define MAS2_E 0x00000001 + +#define MAS3_RPN_MASK 0xFFFFFC00 +#define MAS3_RPN(n) ((n) & MAS3_RPN_MASK) +#define MAS3_U0 0x00000200 +#define MAS3_U1 0x00000100 +#define MAS3_U2 0x00000080 +#define MAS3_U3 0x00000040 +#define MAS3_UX 0x00000020 +#define MAS3_SX 0x00000010 +#define MAS3_UW 0x00000008 +#define MAS3_SW 0x00000004 +#define MAS3_UR 0x00000002 +#define MAS3_SR 0x00000001 +/** @} */ + +/** + * @name BUCSR registers definitions + * @{ + */ +#define BUCSR_BPEN 0x00000001 +#define BUCSR_BPRED_MASK 0x00000006 +#define BUCSR_BPRED_0 0x00000000 +#define BUCSR_BPRED_1 0x00000002 +#define BUCSR_BPRED_2 0x00000004 +#define BUCSR_BPRED_3 0x00000006 +#define BUCSR_BALLOC_MASK 0x00000030 +#define BUCSR_BALLOC_0 0x00000000 +#define BUCSR_BALLOC_1 0x00000010 +#define BUCSR_BALLOC_2 0x00000020 +#define BUCSR_BALLOC_3 0x00000030 +#define BUCSR_BALLOC_BFI 0x00000200 +/** @} */ + +/** + * @name LICSR1 registers definitions + * @{ + */ +#define LICSR1_ICE 0x00000001 +#define LICSR1_ICINV 0x00000002 +#define LICSR1_ICORG 0x00000010 +/** @} */ + +/** + * @name MSR register definitions + * @{ + */ +#define MSR_UCLE 0x04000000 +#define MSR_SPE 0x02000000 +#define MSR_WE 0x00040000 +#define MSR_CE 0x00020000 +#define MSR_EE 0x00008000 +#define MSR_PR 0x00004000 +#define MSR_FP 0x00002000 +#define MSR_ME 0x00001000 +#define MSR_FE0 0x00000800 +#define MSR_DE 0x00000200 +#define MSR_FE1 0x00000100 +#define MSR_IS 0x00000020 +#define MSR_DS 0x00000010 +#define MSR_RI 0x00000002 +/** @} */ + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/* + * TLB default settings. + */ +#define TLB0_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(0)) +#define TLB0_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_256K) +#define TLB0_MAS2 (MAS2_EPN(0x40000000) | MAS2_VLE) +#define TLB0_MAS3 (MAS3_RPN(0x40000000) | \ + MAS3_UX | MAS3_SX | MAS3_UW | MAS3_SW | \ + MAS3_UR | MAS3_SR) + +#define TLB1_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(1)) +#define TLB1_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_4M) +#define TLB1_MAS2 (MAS2_EPN(0x00000000) | MAS2_VLE) +#define TLB1_MAS3 (MAS3_RPN(0x00000000) | \ + MAS3_UX | MAS3_SX | MAS3_UW | MAS3_SW | \ + MAS3_UR | MAS3_SR) + +#define TLB2_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(2)) +#define TLB2_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) +#define TLB2_MAS2 (MAS2_EPN(0xC3F00000) | MAS2_I) +#define TLB2_MAS3 (MAS3_RPN(0xC3F00000) | \ + MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) + +#define TLB3_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(3)) +#define TLB3_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) +#define TLB3_MAS2 (MAS2_EPN(0xFFE00000) | MAS2_I) +#define TLB3_MAS3 (MAS3_RPN(0xFFE00000) | \ + MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) + +#define TLB4_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(4)) +#define TLB4_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) +#define TLB4_MAS2 (MAS2_EPN(0xFFF00000) | MAS2_I) +#define TLB4_MAS3 (MAS3_RPN(0xFFF00000) | \ + MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) + +/* + * BUCSR default settings. + */ +#if !defined(BOOT_BUCSR_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BPRED_0 | \ + BUCSR_BALLOC_0 | BUCSR_BALLOC_BFI) +#endif + +/* + * LICSR1 default settings. + */ +#if !defined(BOOT_LICSR1_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_LICSR1_DEFAULT (LICSR1_ICE | LICSR1_ICORG) +#endif + +/* + * MSR default settings. + */ +#if !defined(BOOT_MSR_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_MSR_DEFAULT (MSR_SPE | MSR_WE | MSR_CE | MSR_ME) +#endif + +/* + * Boot default settings. + */ +#if !defined(BOOT_PERFORM_CORE_INIT) || defined(__DOXYGEN__) +#define BOOT_PERFORM_CORE_INIT 1 +#endif + +/* + * VLE mode default settings. + */ +#if !defined(BOOT_USE_VLE) || defined(__DOXYGEN__) +#define BOOT_USE_VLE 1 +#endif + +/* + * RAM relocation flag. + */ +#if !defined(BOOT_RELOCATE_IN_RAM) || defined(__DOXYGEN__) +#define BOOT_RELOCATE_IN_RAM 0 +#endif + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _BOOT_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC564Axx/boot.s b/os/common/startup/e200/devices/SPC564Axx/boot.s new file mode 100644 index 000000000..549f926ec --- /dev/null +++ b/os/common/startup/e200/devices/SPC564Axx/boot.s @@ -0,0 +1,356 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC564Axx/boot.s + * @brief SPC564Axx boot-related code. + * + * @addtogroup PPC_BOOT + * @{ + */ + +#include "boot.h" + +#if !defined(__DOXYGEN__) + + /* BAM record.*/ + .section .boot, "ax" + +#if BOOT_USE_VLE + .long 0x015A0000 +#else + .long 0x005A0000 +#endif + .long _reset_address + + .align 2 + .globl _reset_address + .type _reset_address, @function +_reset_address: +#if BOOT_PERFORM_CORE_INIT + bl _coreinit +#endif + bl _ivinit + +#if BOOT_RELOCATE_IN_RAM + /* + * Image relocation in RAM. + */ + lis %r4, __ram_reloc_start__@h + ori %r4, %r4, __ram_reloc_start__@l + lis %r5, __ram_reloc_dest__@h + ori %r5, %r5, __ram_reloc_dest__@l + lis %r6, __ram_reloc_end__@h + ori %r6, %r6, __ram_reloc_end__@l +.relloop: + cmpl cr0, %r4, %r6 + bge cr0, .relend + lwz %r7, 0(%r4) + addi %r4, %r4, 4 + stw %r7, 0(%r5) + addi %r5, %r5, 4 + b .relloop +.relend: + lis %r3, _boot_address@h + ori %r3, %r3, _boot_address@l + mtctr %r3 + bctrl +#else + b _boot_address +#endif + +#if BOOT_PERFORM_CORE_INIT + .align 2 +_ramcode: + tlbwe + isync + blr + + .align 2 +_coreinit: + /* + * Invalidating all TLBs except TLB1. + */ + lis %r3, 0 + mtspr 625, %r3 /* MAS1 */ + mtspr 626, %r3 /* MAS2 */ + mtspr 627, %r3 /* MAS3 */ + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(0))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(2))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(3))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(4))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(5))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(6))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(7))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(8))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(9))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(10))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(11))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(12))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(13))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(14))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(15))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + + /* + * TLB0 allocated to internal RAM. + */ + lis %r3, TLB0_MAS0@h + mtspr 624, %r3 /* MAS0 */ + lis %r3, TLB0_MAS1@h + ori %r3, %r3, TLB0_MAS1@l + mtspr 625, %r3 /* MAS1 */ + lis %r3, TLB0_MAS2@h + ori %r3, %r3, TLB0_MAS2@l + mtspr 626, %r3 /* MAS2 */ + lis %r3, TLB0_MAS3@h + ori %r3, %r3, TLB0_MAS3@l + mtspr 627, %r3 /* MAS3 */ + tlbwe + + /* + * TLB2 allocated to internal Peripherals Bridge A. + */ + lis %r3, TLB2_MAS0@h + mtspr 624, %r3 /* MAS0 */ + lis %r3, TLB2_MAS1@h + ori %r3, %r3, TLB2_MAS1@l + mtspr 625, %r3 /* MAS1 */ + lis %r3, TLB2_MAS2@h + ori %r3, %r3, TLB2_MAS2@l + mtspr 626, %r3 /* MAS2 */ + lis %r3, TLB2_MAS3@h + ori %r3, %r3, TLB2_MAS3@l + mtspr 627, %r3 /* MAS3 */ + tlbwe + + /* + * TLB3 allocated to internal Peripherals Bridge B. + */ + lis %r3, TLB3_MAS0@h + mtspr 624, %r3 /* MAS0 */ + lis %r3, TLB3_MAS1@h + ori %r3, %r3, TLB3_MAS1@l + mtspr 625, %r3 /* MAS1 */ + lis %r3, TLB3_MAS2@h + ori %r3, %r3, TLB3_MAS2@l + mtspr 626, %r3 /* MAS2 */ + lis %r3, TLB3_MAS3@h + ori %r3, %r3, TLB3_MAS3@l + mtspr 627, %r3 /* MAS3 */ + tlbwe + + /* + * TLB4 allocated to on-platform peripherals. + */ + lis %r3, TLB4_MAS0@h + mtspr 624, %r3 /* MAS0 */ + lis %r3, TLB4_MAS1@h + ori %r3, %r3, TLB4_MAS1@l + mtspr 625, %r3 /* MAS1 */ + lis %r3, TLB4_MAS2@h + ori %r3, %r3, TLB4_MAS2@l + mtspr 626, %r3 /* MAS2 */ + lis %r3, TLB4_MAS3@h + ori %r3, %r3, TLB4_MAS3@l + mtspr 627, %r3 /* MAS3 */ + tlbwe + + /* + * RAM clearing, this device requires a write to all RAM location in + * order to initialize the ECC detection hardware, this is going to + * slow down the startup but there is no way around. + */ + xor %r0, %r0, %r0 + xor %r1, %r1, %r1 + xor %r2, %r2, %r2 + xor %r3, %r3, %r3 + xor %r4, %r4, %r4 + xor %r5, %r5, %r5 + xor %r6, %r6, %r6 + xor %r7, %r7, %r7 + xor %r8, %r8, %r8 + xor %r9, %r9, %r9 + xor %r10, %r10, %r10 + xor %r11, %r11, %r11 + xor %r12, %r12, %r12 + xor %r13, %r13, %r13 + xor %r14, %r14, %r14 + xor %r15, %r15, %r15 + xor %r16, %r16, %r16 + xor %r17, %r17, %r17 + xor %r18, %r18, %r18 + xor %r19, %r19, %r19 + xor %r20, %r20, %r20 + xor %r21, %r21, %r21 + xor %r22, %r22, %r22 + xor %r23, %r23, %r23 + xor %r24, %r24, %r24 + xor %r25, %r25, %r25 + xor %r26, %r26, %r26 + xor %r27, %r27, %r27 + xor %r28, %r28, %r28 + xor %r29, %r29, %r29 + xor %r30, %r30, %r30 + xor %r31, %r31, %r31 + lis %r4, __ram_start__@h + ori %r4, %r4, __ram_start__@l + lis %r5, __ram_end__@h + ori %r5, %r5, __ram_end__@l +.cleareccloop: + cmpl %cr0, %r4, %r5 + bge %cr0, .cleareccend + stmw %r16, 0(%r4) + addi %r4, %r4, 64 + b .cleareccloop +.cleareccend: + + /* + * *Finally* the TLB1 is re-allocated to flash, note, the final phase + * is executed from RAM. + */ + lis %r3, TLB1_MAS0@h + mtspr 624, %r3 /* MAS0 */ + lis %r3, TLB1_MAS1@h + ori %r3, %r3, TLB1_MAS1@l + mtspr 625, %r3 /* MAS1 */ + lis %r3, TLB1_MAS2@h + ori %r3, %r3, TLB1_MAS2@l + mtspr 626, %r3 /* MAS2 */ + lis %r3, TLB1_MAS3@h + ori %r3, %r3, TLB1_MAS3@l + mtspr 627, %r3 /* MAS3 */ + mflr %r4 + lis %r6, _ramcode@h + ori %r6, %r6, _ramcode@l + lis %r7, 0x40010000@h + mtctr %r7 + lwz %r3, 0(%r6) + stw %r3, 0(%r7) + lwz %r3, 4(%r6) + stw %r3, 4(%r7) + lwz %r3, 8(%r6) + stw %r3, 8(%r7) + bctrl + mtlr %r4 + + /* + * Branch prediction enabled. + */ + li %r3, BOOT_BUCSR_DEFAULT + mtspr 1013, %r3 /* BUCSR */ + + /* + * Cache invalidated and then enabled. + */ + li %r3, LICSR1_ICINV + mtspr 1011, %r3 /* LICSR1 */ +.inv: mfspr %r3, 1011 /* LICSR1 */ + andi. %r3, %r3, LICSR1_ICINV + bne .inv + lis %r3, BOOT_LICSR1_DEFAULT@h + ori %r3, %r3, BOOT_LICSR1_DEFAULT@l + mtspr 1011, %r3 /* LICSR1 */ + + blr +#endif /* BOOT_PERFORM_CORE_INIT */ + + /* + * Exception vectors initialization. + */ + .align 2 +_ivinit: + /* MSR initialization.*/ + lis %r3, BOOT_MSR_DEFAULT@h + ori %r3, %r3, BOOT_MSR_DEFAULT@l + mtMSR %r3 + + /* IVPR initialization.*/ + lis %r3, __ivpr_base__@h + ori %r3, %r3, __ivpr_base__@l + mtIVPR %r3 + + /* IVORs initialization.*/ + lis %r3, _unhandled_exception@h + ori %r3, %r3, _unhandled_exception@l + + mtspr 400, %r3 /* IVOR0-15 */ + mtspr 401, %r3 + mtspr 402, %r3 + mtspr 403, %r3 + mtspr 404, %r3 + mtspr 405, %r3 + mtspr 406, %r3 + mtspr 407, %r3 + mtspr 408, %r3 + mtspr 409, %r3 + mtspr 410, %r3 + mtspr 411, %r3 + mtspr 412, %r3 + mtspr 413, %r3 + mtspr 414, %r3 + mtspr 415, %r3 + mtspr 528, %r3 /* IVOR32-34 */ + mtspr 529, %r3 + mtspr 530, %r3 + + blr + + .section .handlers, "ax" + + /* + * Unhandled exceptions handler. + */ + .weak _unhandled_exception + .type _unhandled_exception, @function +_unhandled_exception: + b _unhandled_exception + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC564Axx/intc.h b/os/common/startup/e200/devices/SPC564Axx/intc.h new file mode 100644 index 000000000..7f34613d9 --- /dev/null +++ b/os/common/startup/e200/devices/SPC564Axx/intc.h @@ -0,0 +1,96 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC564Axx/intc.h + * @brief SPC564Axx INTC module header. + * + * @addtogroup INTC + * @{ + */ + +#ifndef _INTC_H_ +#define _INTC_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @name INTC addresses + * @{ + */ +#define INTC_BASE 0xFFF48000 +#define INTC_IACKR_ADDR (INTC_BASE + 0x10) +#define INTC_EOIR_ADDR (INTC_BASE + 0x18) +/** @} */ + +/** + * @brief INTC priority levels. + */ +#define INTC_PRIORITY_LEVELS 16U + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/** + * @name INTC-related macros + * @{ + */ +#define INTC_BCR (*((volatile uint32_t *)(INTC_BASE + 0))) +#define INTC_CPR(n) (*((volatile uint32_t *)(INTC_BASE + 8 + ((n) * sizeof (uint32_t))))) +#define INTC_IACKR(n) (*((volatile uint32_t *)(INTC_BASE + 0x10 + ((n) * sizeof (uint32_t))))) +#define INTC_EOIR(n) (*((volatile uint32_t *)(INTC_BASE + 0x18 + ((n) * sizeof (uint32_t))))) +#define INTC_PSR(n) (*((volatile uint8_t *)(INTC_BASE + 0x40 + ((n) * sizeof (uint8_t))))) +/** @} */ + +/** + * @brief Core selection macros for PSR register. + */ +#define INTC_PSR_CORE0 0x00 + +/** + * @brief PSR register content helper + */ +#define INTC_PSR_ENABLE(cores, prio) ((uint32_t)(cores) | (uint32_t)(prio)) + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _INTC_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC564Axx/ppcparams.h b/os/common/startup/e200/devices/SPC564Axx/ppcparams.h new file mode 100644 index 000000000..ed4716b99 --- /dev/null +++ b/os/common/startup/e200/devices/SPC564Axx/ppcparams.h @@ -0,0 +1,86 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC564Axx/ppcparams.h + * @brief PowerPC parameters for the SPC564Axx. + * + * @defgroup PPC_SPC564Axx SPC564Axx Specific Parameters + * @ingroup PPC_SPECIFIC + * @details This file contains the PowerPC specific parameters for the + * SPC564Axx platform. + * @{ + */ + +#ifndef _PPCPARAMS_H_ +#define _PPCPARAMS_H_ + +/** + * @brief Family identification macro. + */ +#define PPC_SPC564Axx + +/** + * @brief PPC core model. + */ +#define PPC_VARIANT PPC_VARIANT_e200z4 + +/** + * @brief Number of cores. + */ +#define PPC_CORE_NUMBER 1 + +/** + * @brief Number of writable bits in IVPR register. + */ +#define PPC_IVPR_BITS 16 + +/** + * @brief IVORx registers support. + */ +#define PPC_SUPPORTS_IVORS TRUE + +/** + * @brief Book E instruction set support. + */ +#define PPC_SUPPORTS_BOOKE TRUE + +/** + * @brief VLE instruction set support. + */ +#define PPC_SUPPORTS_VLE TRUE + +/** + * @brief Supports VLS Load/Store Multiple Volatile instructions. + */ +#define PPC_SUPPORTS_VLE_MULTI TRUE + +/** + * @brief Supports the decrementer timer. + */ +#define PPC_SUPPORTS_DECREMENTER TRUE + +/** + * @brief Number of interrupt sources. + */ +#define PPC_NUM_VECTORS 486 + +#endif /* _PPCPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC56ECxx/boot.h b/os/common/startup/e200/devices/SPC56ECxx/boot.h new file mode 100644 index 000000000..4c50922b8 --- /dev/null +++ b/os/common/startup/e200/devices/SPC56ECxx/boot.h @@ -0,0 +1,251 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file boot.h + * @brief Boot parameters for the SPC56ECxx. + * @{ + */ + +#ifndef _BOOT_H_ +#define _BOOT_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @name MASx registers definitions + * @{ + */ +#define MAS0_TBLMAS_TBL 0x10000000 +#define MAS0_ESEL_MASK 0x000F0000 +#define MAS0_ESEL(n) ((n) << 16) + +#define MAS1_VALID 0x80000000 +#define MAS1_IPROT 0x40000000 +#define MAS1_TID_MASK 0x00FF0000 +#define MAS1_TS 0x00001000 +#define MAS1_TSISE_MASK 0x00000F80 +#define MAS1_TSISE_1K 0x00000000 +#define MAS1_TSISE_2K 0x00000080 +#define MAS1_TSISE_4K 0x00000100 +#define MAS1_TSISE_8K 0x00000180 +#define MAS1_TSISE_16K 0x00000200 +#define MAS1_TSISE_32K 0x00000280 +#define MAS1_TSISE_64K 0x00000300 +#define MAS1_TSISE_128K 0x00000380 +#define MAS1_TSISE_256K 0x00000400 +#define MAS1_TSISE_512K 0x00000480 +#define MAS1_TSISE_1M 0x00000500 +#define MAS1_TSISE_2M 0x00000580 +#define MAS1_TSISE_4M 0x00000600 +#define MAS1_TSISE_8M 0x00000680 +#define MAS1_TSISE_16M 0x00000700 +#define MAS1_TSISE_32M 0x00000780 +#define MAS1_TSISE_64M 0x00000800 +#define MAS1_TSISE_128M 0x00000880 +#define MAS1_TSISE_256M 0x00000900 +#define MAS1_TSISE_512M 0x00000980 +#define MAS1_TSISE_1G 0x00000A00 +#define MAS1_TSISE_2G 0x00000A80 +#define MAS1_TSISE_4G 0x00000B00 + +#define MAS2_EPN_MASK 0xFFFFFC00 +#define MAS2_EPN(n) ((n) & MAS2_EPN_MASK) +#define MAS2_EBOOK 0x00000000 +#define MAS2_VLE 0x00000020 +#define MAS2_W 0x00000010 +#define MAS2_I 0x00000008 +#define MAS2_M 0x00000004 +#define MAS2_G 0x00000002 +#define MAS2_E 0x00000001 + +#define MAS3_RPN_MASK 0xFFFFFC00 +#define MAS3_RPN(n) ((n) & MAS3_RPN_MASK) +#define MAS3_U0 0x00000200 +#define MAS3_U1 0x00000100 +#define MAS3_U2 0x00000080 +#define MAS3_U3 0x00000040 +#define MAS3_UX 0x00000020 +#define MAS3_SX 0x00000010 +#define MAS3_UW 0x00000008 +#define MAS3_SW 0x00000004 +#define MAS3_UR 0x00000002 +#define MAS3_SR 0x00000001 +/** @} */ + +/** + * @name BUCSR registers definitions + * @{ + */ +#define BUCSR_BPEN 0x00000001 +#define BUCSR_BPRED_MASK 0x00000006 +#define BUCSR_BPRED_0 0x00000000 +#define BUCSR_BPRED_1 0x00000002 +#define BUCSR_BPRED_2 0x00000004 +#define BUCSR_BPRED_3 0x00000006 +#define BUCSR_BALLOC_MASK 0x00000030 +#define BUCSR_BALLOC_0 0x00000000 +#define BUCSR_BALLOC_1 0x00000010 +#define BUCSR_BALLOC_2 0x00000020 +#define BUCSR_BALLOC_3 0x00000030 +#define BUCSR_BALLOC_BFI 0x00000200 +/** @} */ + +/** + * @name LICSR1 registers definitions + * @{ + */ +#define LICSR1_ICE 0x00000001 +#define LICSR1_ICINV 0x00000002 +#define LICSR1_ICORG 0x00000010 +/** @} */ + +/** + * @name MSR register definitions + * @{ + */ +#define MSR_UCLE 0x04000000 +#define MSR_SPE 0x02000000 +#define MSR_WE 0x00040000 +#define MSR_CE 0x00020000 +#define MSR_EE 0x00008000 +#define MSR_PR 0x00004000 +#define MSR_FP 0x00002000 +#define MSR_ME 0x00001000 +#define MSR_FE0 0x00000800 +#define MSR_DE 0x00000200 +#define MSR_FE1 0x00000100 +#define MSR_IS 0x00000020 +#define MSR_DS 0x00000010 +#define MSR_RI 0x00000002 +/** @} */ + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/* + * TLB default settings. + */ +#define TLB0_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(0)) +#define TLB0_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_4M) +#define TLB0_MAS2 (MAS2_EPN(0x00000000) | MAS2_VLE) +#define TLB0_MAS3 (MAS3_RPN(0x00000000) | \ + MAS3_UX | MAS3_SX | MAS3_UW | MAS3_SW | \ + MAS3_UR | MAS3_SR) + +#define TLB1_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(1)) +#define TLB1_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_256K) +#define TLB1_MAS2 (MAS2_EPN(0x40000000) | MAS2_VLE) +#define TLB1_MAS3 (MAS3_RPN(0x40000000) | \ + MAS3_UX | MAS3_SX | MAS3_UW | MAS3_SW | \ + MAS3_UR | MAS3_SR) + +#define TLB2_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(2)) +#define TLB2_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) +#define TLB2_MAS2 (MAS2_EPN(0xC3F00000) | MAS2_I) +#define TLB2_MAS3 (MAS3_RPN(0xC3F00000) | \ + MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) + +#define TLB3_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(3)) +#define TLB3_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) +#define TLB3_MAS2 (MAS2_EPN(0xFFE00000) | MAS2_I) +#define TLB3_MAS3 (MAS3_RPN(0xFFE00000) | \ + MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) + +#define TLB4_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(4)) +#define TLB4_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) +#define TLB4_MAS2 (MAS2_EPN(0x8FF00000) | MAS2_I) +#define TLB4_MAS3 (MAS3_RPN(0x8FF00000) | \ + MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) + +#define TLB5_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(5)) +#define TLB5_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) +#define TLB5_MAS2 (MAS2_EPN(0xFFF00000) | MAS2_I) +#define TLB5_MAS3 (MAS3_RPN(0xFFF00000) | \ + MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) + +/* + * BUCSR default settings. + */ +#if !defined(BOOT_BUCSR_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BPRED_0 | \ + BUCSR_BALLOC_0 | BUCSR_BALLOC_BFI) +#endif + +/* + * LICSR1 default settings. + */ +#if !defined(BOOT_LICSR1_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_LICSR1_DEFAULT (LICSR1_ICE | LICSR1_ICORG) +#endif + +/* + * MSR default settings. + */ +#if !defined(BOOT_MSR_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_MSR_DEFAULT (MSR_SPE | MSR_WE | MSR_CE | MSR_ME) +#endif + +/* + * Boot default settings. + */ +#if !defined(BOOT_PERFORM_CORE_INIT) || defined(__DOXYGEN__) +#define BOOT_PERFORM_CORE_INIT 1 +#endif + +/* + * VLE mode default settings. + */ +#if !defined(BOOT_USE_VLE) || defined(__DOXYGEN__) +#define BOOT_USE_VLE 1 +#endif + +/* + * RAM relocation flag. + */ +#if !defined(BOOT_RELOCATE_IN_RAM) || defined(__DOXYGEN__) +#define BOOT_RELOCATE_IN_RAM 0 +#endif + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _BOOT_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC56ECxx/boot.s b/os/common/startup/e200/devices/SPC56ECxx/boot.s new file mode 100644 index 000000000..26cfcaaec --- /dev/null +++ b/os/common/startup/e200/devices/SPC56ECxx/boot.s @@ -0,0 +1,406 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC56ECxx/boot.s + * @brief SPC56ECxx boot-related code. + * + * @addtogroup PPC_BOOT + * @{ + */ + +#include "boot.h" + +#if !defined(__DOXYGEN__) + + /* BAM record.*/ + .section .boot, "ax" + +#if BOOT_USE_VLE + .long 0x015A0000 +#else + .long 0x005A0000 +#endif + .long _reset_address + + .align 2 + .globl _reset_address + .type _reset_address, @function +_reset_address: +#if BOOT_PERFORM_CORE_INIT + bl _coreinit +#endif + bl _ivinit + +#if BOOT_RELOCATE_IN_RAM + /* + * Image relocation in RAM. + */ + lis %r4, __ram_reloc_start__@h + ori %r4, %r4, __ram_reloc_start__@l + lis %r5, __ram_reloc_dest__@h + ori %r5, %r5, __ram_reloc_dest__@l + lis %r6, __ram_reloc_end__@h + ori %r6, %r6, __ram_reloc_end__@l +.relloop: + cmpl cr0, %r4, %r6 + bge cr0, .relend + lwz %r7, 0(%r4) + addi %r4, %r4, 4 + stw %r7, 0(%r5) + addi %r5, %r5, 4 + b .relloop +.relend: + lis %r3, _boot_address@h + ori %r3, %r3, _boot_address@l + mtctr %r3 + bctrl +#else + b _boot_address +#endif + +#if BOOT_PERFORM_CORE_INIT + .align 2 +_ramcode: + tlbwe + isync + blr + + .align 2 +_coreinit: + /* + * Invalidating all TLBs except TLB0. + */ + lis %r3, 0 + mtspr 625, %r3 /* MAS1 */ + mtspr 626, %r3 /* MAS2 */ + mtspr 627, %r3 /* MAS3 */ + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(1))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(2))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(3))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(4))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(5))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(6))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(7))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(8))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(9))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(10))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(11))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(12))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(13))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(14))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(15))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + + /* + * TLB1 allocated to internal RAM. + */ + lis %r3, TLB1_MAS0@h + mtspr 624, %r3 /* MAS0 */ + lis %r3, TLB1_MAS1@h + ori %r3, %r3, TLB1_MAS1@l + mtspr 625, %r3 /* MAS1 */ + lis %r3, TLB1_MAS2@h + ori %r3, %r3, TLB1_MAS2@l + mtspr 626, %r3 /* MAS2 */ + lis %r3, TLB1_MAS3@h + ori %r3, %r3, TLB1_MAS3@l + mtspr 627, %r3 /* MAS3 */ + tlbwe + + /* + * TLB2 allocated to internal Peripherals Bridge A. + */ + lis %r3, TLB2_MAS0@h + mtspr 624, %r3 /* MAS0 */ + lis %r3, TLB2_MAS1@h + ori %r3, %r3, TLB2_MAS1@l + mtspr 625, %r3 /* MAS1 */ + lis %r3, TLB2_MAS2@h + ori %r3, %r3, TLB2_MAS2@l + mtspr 626, %r3 /* MAS2 */ + lis %r3, TLB2_MAS3@h + ori %r3, %r3, TLB2_MAS3@l + mtspr 627, %r3 /* MAS3 */ + tlbwe + + /* + * TLB3 allocated to internal Peripherals Bridge B. + */ + lis %r3, TLB3_MAS0@h + mtspr 624, %r3 /* MAS0 */ + lis %r3, TLB3_MAS1@h + ori %r3, %r3, TLB3_MAS1@l + mtspr 625, %r3 /* MAS1 */ + lis %r3, TLB3_MAS2@h + ori %r3, %r3, TLB3_MAS2@l + mtspr 626, %r3 /* MAS2 */ + lis %r3, TLB3_MAS3@h + ori %r3, %r3, TLB3_MAS3@l + mtspr 627, %r3 /* MAS3 */ + tlbwe + + /* + * TLB4 allocated to on-platform peripherals. + */ + lis %r3, TLB4_MAS0@h + mtspr 624, %r3 /* MAS0 */ + lis %r3, TLB4_MAS1@h + ori %r3, %r3, TLB4_MAS1@l + mtspr 625, %r3 /* MAS1 */ + lis %r3, TLB4_MAS2@h + ori %r3, %r3, TLB4_MAS2@l + mtspr 626, %r3 /* MAS2 */ + lis %r3, TLB4_MAS3@h + ori %r3, %r3, TLB4_MAS3@l + mtspr 627, %r3 /* MAS3 */ + tlbwe + + /* + * TLB5 allocated to on-platform peripherals. + */ + lis %r3, TLB5_MAS0@h + mtspr 624, %r3 /* MAS0 */ + lis %r3, TLB5_MAS1@h + ori %r3, %r3, TLB5_MAS1@l + mtspr 625, %r3 /* MAS1 */ + lis %r3, TLB5_MAS2@h + ori %r3, %r3, TLB5_MAS2@l + mtspr 626, %r3 /* MAS2 */ + lis %r3, TLB5_MAS3@h + ori %r3, %r3, TLB5_MAS3@l + mtspr 627, %r3 /* MAS3 */ + tlbwe + + /* + * RAM clearing, this device requires a write to all RAM location in + * order to initialize the ECC detection hardware, this is going to + * slow down the startup but there is no way around. + */ + xor %r0, %r0, %r0 + xor %r1, %r1, %r1 + xor %r2, %r2, %r2 + xor %r3, %r3, %r3 + xor %r4, %r4, %r4 + xor %r5, %r5, %r5 + xor %r6, %r6, %r6 + xor %r7, %r7, %r7 + xor %r8, %r8, %r8 + xor %r9, %r9, %r9 + xor %r10, %r10, %r10 + xor %r11, %r11, %r11 + xor %r12, %r12, %r12 + xor %r13, %r13, %r13 + xor %r14, %r14, %r14 + xor %r15, %r15, %r15 + xor %r16, %r16, %r16 + xor %r17, %r17, %r17 + xor %r18, %r18, %r18 + xor %r19, %r19, %r19 + xor %r20, %r20, %r20 + xor %r21, %r21, %r21 + xor %r22, %r22, %r22 + xor %r23, %r23, %r23 + xor %r24, %r24, %r24 + xor %r25, %r25, %r25 + xor %r26, %r26, %r26 + xor %r27, %r27, %r27 + xor %r28, %r28, %r28 + xor %r29, %r29, %r29 + xor %r30, %r30, %r30 + xor %r31, %r31, %r31 + lis %r4, __ram_start__@h + ori %r4, %r4, __ram_start__@l + lis %r5, __ram_end__@h + ori %r5, %r5, __ram_end__@l +.cleareccloop: + cmpl %cr0, %r4, %r5 + bge %cr0, .cleareccend + stmw %r16, 0(%r4) + addi %r4, %r4, 64 + b .cleareccloop +.cleareccend: + + /* + * Special function registers clearing, required in order to avoid + * possible problems with lockstep mode. + */ + mtcrf 0xFF, %r31 + mtspr 9, %r31 /* CTR */ + mtspr 22, %r31 /* DEC */ + mtspr 26, %r31 /* SRR0-1 */ + mtspr 27, %r31 + mtspr 54, %r31 /* DECAR */ + mtspr 58, %r31 /* CSRR0-1 */ + mtspr 59, %r31 + mtspr 61, %r31 /* DEAR */ + mtspr 256, %r31 /* USPRG0 */ + mtspr 272, %r31 /* SPRG1-7 */ + mtspr 273, %r31 + mtspr 274, %r31 + mtspr 275, %r31 + mtspr 276, %r31 + mtspr 277, %r31 + mtspr 278, %r31 + mtspr 279, %r31 + mtspr 285, %r31 /* TBU */ + mtspr 284, %r31 /* TBL */ +#if 0 + mtspr 318, %r31 /* DVC1-2 */ + mtspr 319, %r31 +#endif + mtspr 562, %r31 /* DBCNT */ + mtspr 570, %r31 /* MCSRR0 */ + mtspr 571, %r31 /* MCSRR1 */ + mtspr 604, %r31 /* SPRG8-9 */ + mtspr 605, %r31 + + /* + * *Finally* the TLB0 is re-allocated to flash, note, the final phase + * is executed from RAM. + */ + lis %r3, TLB0_MAS0@h + mtspr 624, %r3 /* MAS0 */ + lis %r3, TLB0_MAS1@h + ori %r3, %r3, TLB0_MAS1@l + mtspr 625, %r3 /* MAS1 */ + lis %r3, TLB0_MAS2@h + ori %r3, %r3, TLB0_MAS2@l + mtspr 626, %r3 /* MAS2 */ + lis %r3, TLB0_MAS3@h + ori %r3, %r3, TLB0_MAS3@l + mtspr 627, %r3 /* MAS3 */ + mflr %r4 + lis %r6, _ramcode@h + ori %r6, %r6, _ramcode@l + lis %r7, 0x40010000@h + mtctr %r7 + lwz %r3, 0(%r6) + stw %r3, 0(%r7) + lwz %r3, 4(%r6) + stw %r3, 4(%r7) + lwz %r3, 8(%r6) + stw %r3, 8(%r7) + bctrl + mtlr %r4 + + /* + * Branch prediction enabled. + */ + li %r3, BOOT_BUCSR_DEFAULT + mtspr 1013, %r3 /* BUCSR */ + + /* + * Cache invalidated and then enabled. + */ + li %r3, LICSR1_ICINV + mtspr 1011, %r3 /* LICSR1 */ +.inv: mfspr %r3, 1011 /* LICSR1 */ + andi. %r3, %r3, LICSR1_ICINV + bne .inv + lis %r3, BOOT_LICSR1_DEFAULT@h + ori %r3, %r3, BOOT_LICSR1_DEFAULT@l + mtspr 1011, %r3 /* LICSR1 */ + + blr +#endif /* BOOT_PERFORM_CORE_INIT */ + + /* + * Exception vectors initialization. + */ + .align 2 +_ivinit: + /* MSR initialization.*/ + lis %r3, BOOT_MSR_DEFAULT@h + ori %r3, %r3, BOOT_MSR_DEFAULT@l + mtMSR %r3 + + /* IVPR initialization.*/ + lis %r3, __ivpr_base__@h + ori %r3, %r3, __ivpr_base__@l + mtIVPR %r3 + + /* IVORs initialization.*/ + lis %r3, _unhandled_exception@h + ori %r3, %r3, _unhandled_exception@l + + mtspr 400, %r3 /* IVOR0-15 */ + mtspr 401, %r3 + mtspr 402, %r3 + mtspr 403, %r3 + mtspr 404, %r3 + mtspr 405, %r3 + mtspr 406, %r3 + mtspr 407, %r3 + mtspr 408, %r3 + mtspr 409, %r3 + mtspr 410, %r3 + mtspr 411, %r3 + mtspr 412, %r3 + mtspr 413, %r3 + mtspr 414, %r3 + mtspr 415, %r3 + mtspr 528, %r3 /* IVOR32-34 */ + mtspr 529, %r3 + mtspr 530, %r3 + + blr + + .section .handlers, "ax" + + /* + * Unhandled exceptions handler. + */ + .weak _unhandled_exception + .type _unhandled_exception, @function +_unhandled_exception: + b _unhandled_exception + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC56ECxx/boot_cw.s b/os/common/startup/e200/devices/SPC56ECxx/boot_cw.s new file mode 100644 index 000000000..b6698607b --- /dev/null +++ b/os/common/startup/e200/devices/SPC56ECxx/boot_cw.s @@ -0,0 +1,403 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC56ECxx/boot.s + * @brief SPC56ECxx boot-related code. + * + * @addtogroup PPC_BOOT + * @{ + */ + +#include "boot.h" + +#if !defined(__DOXYGEN__) + + .extern _boot_address + .extern __ram_start__ + .extern __ram_end__ + .extern __ivpr_base__ + + .extern _unhandled_exception + + /* BAM record.*/ + .section .boot, 16 + +#if BOOT_USE_VLE + .long 0x015A0000 +#else + .long 0x005A0000 +#endif + .long _reset_address + + .align 4 + .globl _reset_address + .type _reset_address, @function +_reset_address: +#if BOOT_PERFORM_CORE_INIT + e_bl _coreinit +#endif + e_bl _ivinit + +#if BOOT_RELOCATE_IN_RAM + /* + * Image relocation in RAM. + */ + e_lis r4, __ram_reloc_start__@h + e_or2i r4, r4, __ram_reloc_start__@l + e_lis r5, __ram_reloc_dest__@h + e_or2i r5, r5, __ram_reloc_dest__@l + e_lis r6, __ram_reloc_end__@h + e_or2i r6, r6, __ram_reloc_end__@l +.relloop: + se_cmpl r4, r6 + se_bge .relend + se_lwz r7, 0(r4) + se_addi r4, 4 + se_stw r7, 0(r5) + se_addi r5, 4 + se_b .relloop +.relend: + e_lis r3, _boot_address@h + e_or2i r3, _boot_address@l + mtctr r3 + se_bctrl +#else + e_b _boot_address +#endif + +#if BOOT_PERFORM_CORE_INIT + .align 4 +_ramcode: + tlbwe + se_isync + se_blr + + .align 2 +_coreinit: + /* + * Invalidating all TLBs except TLB0. + */ + e_lis r3, 0 + mtspr 625, r3 /* MAS1 */ + mtspr 626, r3 /* MAS2 */ + mtspr 627, r3 /* MAS3 */ + e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(1))@h + mtspr 624, r3 /* MAS0 */ + tlbwe + e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(2))@h + mtspr 624, r3 /* MAS0 */ + tlbwe + e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(3))@h + mtspr 624, r3 /* MAS0 */ + tlbwe + e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(4))@h + mtspr 624, r3 /* MAS0 */ + tlbwe + e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(5))@h + mtspr 624, r3 /* MAS0 */ + tlbwe + e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(6))@h + mtspr 624, r3 /* MAS0 */ + tlbwe + e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(7))@h + mtspr 624, r3 /* MAS0 */ + tlbwe + e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(8))@h + mtspr 624, r3 /* MAS0 */ + tlbwe + e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(9))@h + mtspr 624, r3 /* MAS0 */ + tlbwe + e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(10))@h + mtspr 624, r3 /* MAS0 */ + tlbwe + e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(11))@h + mtspr 624, r3 /* MAS0 */ + tlbwe + e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(12))@h + mtspr 624, r3 /* MAS0 */ + tlbwe + e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(13))@h + mtspr 624, r3 /* MAS0 */ + tlbwe + e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(14))@h + mtspr 624, r3 /* MAS0 */ + tlbwe + e_lis r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(15))@h + mtspr 624, r3 /* MAS0 */ + tlbwe + + /* + * TLB1 allocated to internal RAM. + */ + e_lis r3, TLB1_MAS0@h + mtspr 624, r3 /* MAS0 */ + e_lis r3, TLB1_MAS1@h + e_or2i r3, TLB1_MAS1@l + mtspr 625, r3 /* MAS1 */ + e_lis r3, TLB1_MAS2@h + e_or2i r3, TLB1_MAS2@l + mtspr 626, r3 /* MAS2 */ + e_lis r3, TLB1_MAS3@h + e_or2i r3, TLB1_MAS3@l + mtspr 627, r3 /* MAS3 */ + tlbwe + + /* + * TLB2 allocated to internal Peripherals Bridge A. + */ + e_lis r3, TLB2_MAS0@h + mtspr 624, r3 /* MAS0 */ + e_lis r3, TLB2_MAS1@h + e_or2i r3, TLB2_MAS1@l + mtspr 625, r3 /* MAS1 */ + e_lis r3, TLB2_MAS2@h + e_or2i r3, TLB2_MAS2@l + mtspr 626, r3 /* MAS2 */ + e_lis r3, TLB2_MAS3@h + e_or2i r3, TLB2_MAS3@l + mtspr 627, r3 /* MAS3 */ + tlbwe + + /* + * TLB3 allocated to internal Peripherals Bridge B. + */ + e_lis r3, TLB3_MAS0@h + mtspr 624, r3 /* MAS0 */ + e_lis r3, TLB3_MAS1@h + e_or2i r3, TLB3_MAS1@l + mtspr 625, r3 /* MAS1 */ + e_lis r3, TLB3_MAS2@h + e_or2i r3, TLB3_MAS2@l + mtspr 626, r3 /* MAS2 */ + e_lis r3, TLB3_MAS3@h + e_or2i r3, TLB3_MAS3@l + mtspr 627, r3 /* MAS3 */ + tlbwe + + /* + * TLB4 allocated to on-platform peripherals. + */ + e_lis r3, TLB4_MAS0@h + mtspr 624, r3 /* MAS0 */ + e_lis r3, TLB4_MAS1@h + e_or2i r3, TLB4_MAS1@l + mtspr 625, r3 /* MAS1 */ + e_lis r3, TLB4_MAS2@h + e_or2i r3, TLB4_MAS2@l + mtspr 626, r3 /* MAS2 */ + e_lis r3, TLB4_MAS3@h + e_or2i r3, TLB4_MAS3@l + mtspr 627, r3 /* MAS3 */ + tlbwe + + /* + * TLB5 allocated to on-platform peripherals. + */ + e_lis r3, TLB5_MAS0@h + mtspr 624, r3 /* MAS0 */ + e_lis r3, TLB5_MAS1@h + e_or2i r3, TLB5_MAS1@l + mtspr 625, r3 /* MAS1 */ + e_lis r3, TLB5_MAS2@h + e_or2i r3, TLB5_MAS2@l + mtspr 626, r3 /* MAS2 */ + e_lis r3, TLB5_MAS3@h + e_or2i r3, TLB5_MAS3@l + mtspr 627, r3 /* MAS3 */ + tlbwe + + /* + * RAM clearing, this device requires a write to all RAM location in + * order to initialize the ECC detection hardware, this is going to + * slow down the startup but there is no way around. + */ + xor r0, r0, r0 + xor r1, r1, r1 + xor r2, r2, r2 + xor r3, r3, r3 + xor r4, r4, r4 + xor r5, r5, r5 + xor r6, r6, r6 + xor r7, r7, r7 + xor r8, r8, r8 + xor r9, r9, r9 + xor r10, r10, r10 + xor r11, r11, r11 + xor r12, r12, r12 + xor r13, r13, r13 + xor r14, r14, r14 + xor r15, r15, r15 + xor r16, r16, r16 + xor r17, r17, r17 + xor r18, r18, r18 + xor r19, r19, r19 + xor r20, r20, r20 + xor r21, r21, r21 + xor r22, r22, r22 + xor r23, r23, r23 + xor r24, r24, r24 + xor r25, r25, r25 + xor r26, r26, r26 + xor r27, r27, r27 + xor r28, r28, r28 + xor r29, r29, r29 + xor r30, r30, r30 + xor r31, r31, r31 + e_lis r4, __ram_start__@h + e_or2i r4, __ram_start__@l + e_lis r5, __ram_end__@h + e_or2i r5, __ram_end__@l +.cleareccloop: + se_cmpl r4, r5 + se_bge .cleareccend + e_stmw r16, 0(r4) + e_addi r4, r4, 64 + se_b .cleareccloop +.cleareccend: + + /* + * Special function registers clearing, required in order to avoid + * possible problems with lockstep mode. + */ + mtcrf 0xFF, r31 + mtspr 9, r31 /* CTR */ + mtspr 22, r31 /* DEC */ + mtspr 26, r31 /* SRR0-1 */ + mtspr 27, r31 + mtspr 54, r31 /* DECAR */ + mtspr 58, r31 /* CSRR0-1 */ + mtspr 59, r31 + mtspr 61, r31 /* DEAR */ + mtspr 256, r31 /* USPRG0 */ + mtspr 272, r31 /* SPRG1-7 */ + mtspr 273, r31 + mtspr 274, r31 + mtspr 275, r31 + mtspr 276, r31 + mtspr 277, r31 + mtspr 278, r31 + mtspr 279, r31 + mtspr 285, r31 /* TBU */ + mtspr 284, r31 /* TBL */ +#if 0 + mtspr 318, r31 /* DVC1-2 */ + mtspr 319, r31 +#endif + mtspr 562, r31 /* DBCNT */ + mtspr 570, r31 /* MCSRR0 */ + mtspr 571, r31 /* MCSRR1 */ + mtspr 604, r31 /* SPRG8-9 */ + mtspr 605, r31 + + /* + * *Finally* the TLB0 is re-allocated to flash, note, the final phase + * is executed from RAM. + */ + e_lis r3, TLB0_MAS0@h + mtspr 624, r3 /* MAS0 */ + e_lis r3, TLB0_MAS1@h + e_or2i r3, TLB0_MAS1@l + mtspr 625, r3 /* MAS1 */ + e_lis r3, TLB0_MAS2@h + e_or2i r3, TLB0_MAS2@l + mtspr 626, r3 /* MAS2 */ + e_lis r3, TLB0_MAS3@h + e_or2i r3, TLB0_MAS3@l + mtspr 627, r3 /* MAS3 */ + se_mflr r4 + e_lis r6, _ramcode@h + e_or2i r6, _ramcode@l + e_lis r7, 0x40010000@h + mtctr r7 + se_lwz r3, 0(r6) + se_stw r3, 0(r7) + se_lwz r3, 4(r6) + se_stw r3, 4(r7) + se_lwz r3, 8(r6) + se_stw r3, 8(r7) + se_bctrl + mtlr r4 + + /* + * Branch prediction enabled. + */ + e_li r3, BOOT_BUCSR_DEFAULT + mtspr 1013, r3 /* BUCSR */ + + /* + * Cache invalidated and then enabled. + */ + se_li r3, LICSR1_ICINV + mtspr 1011, r3 /* LICSR1 */ +.inv: mfspr r3, 1011 /* LICSR1 */ + e_andi. r3, r3, LICSR1_ICINV + se_bne .inv + e_lis r3, BOOT_LICSR1_DEFAULT@h + e_or2i r3, BOOT_LICSR1_DEFAULT@l + mtspr 1011, r3 /* LICSR1 */ + + se_blr +#endif /* BOOT_PERFORM_CORE_INIT */ + + /* + * Exception vectors initialization. + */ + .align 4 +_ivinit: + /* MSR initialization.*/ + e_lis r3, BOOT_MSR_DEFAULT@h + e_ori r3, r3, BOOT_MSR_DEFAULT@l + mtMSR r3 + + /* IVPR initialization.*/ + e_lis r3, __ivpr_base__@h + e_or2i r3, __ivpr_base__@l + mtIVPR r3 + + /* IVORs initialization.*/ + e_lis r3, _unhandled_exception@h + e_or2i r3, _unhandled_exception@l + + mtspr 400, r3 /* IVOR0-15 */ + mtspr 401, r3 + mtspr 402, r3 + mtspr 403, r3 + mtspr 404, r3 + mtspr 405, r3 + mtspr 406, r3 + mtspr 407, r3 + mtspr 408, r3 + mtspr 409, r3 + mtspr 410, r3 + mtspr 411, r3 + mtspr 412, r3 + mtspr 413, r3 + mtspr 414, r3 + mtspr 415, r3 + mtspr 528, r3 /* IVOR32-34 */ + mtspr 529, r3 + mtspr 530, r3 + + se_blr + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC56ECxx/intc.h b/os/common/startup/e200/devices/SPC56ECxx/intc.h new file mode 100644 index 000000000..bb8b13dbc --- /dev/null +++ b/os/common/startup/e200/devices/SPC56ECxx/intc.h @@ -0,0 +1,98 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC56ECxx/intc.h + * @brief SPC56ECxx INTC module header. + * + * @addtogroup INTC + * @{ + */ + +#ifndef _INTC_H_ +#define _INTC_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @name INTC addresses + * @{ + */ +#define INTC_BASE 0xFFF48000 +#define INTC_IACKR_ADDR (INTC_BASE + 0x10) +#define INTC_EOIR_ADDR (INTC_BASE + 0x18) +/** @} */ + +/** + * @brief INTC priority levels. + */ +#define INTC_PRIORITY_LEVELS 16U + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/** + * @name INTC-related macros + * @{ + */ +#define INTC_BCR (*((volatile uint32_t *)(INTC_BASE + 0))) +#define INTC_CPR(n) (*((volatile uint32_t *)(INTC_BASE + 8 + ((n) * sizeof (uint32_t))))) +#define INTC_IACKR(n) (*((volatile uint32_t *)(INTC_BASE + 0x10 + ((n) * sizeof (uint32_t))))) +#define INTC_EOIR(n) (*((volatile uint32_t *)(INTC_BASE + 0x18 + ((n) * sizeof (uint32_t))))) +#define INTC_PSR(n) (*((volatile uint8_t *)(INTC_BASE + 0x40 + ((n) * sizeof (uint8_t))))) +/** @} */ + +/** + * @brief Core selection macros for PSR register. + */ +#define INTC_PSR_CORE0 0x00 +#define INTC_PSR_CORE1 0xC0 +#define INTC_PSR_CORES01 0x40 + +/** + * @brief PSR register content helper + */ +#define INTC_PSR_ENABLE(cores, prio) ((uint32_t)(cores) | (uint32_t)(prio)) + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _INTC_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC56ECxx/ppcparams.h b/os/common/startup/e200/devices/SPC56ECxx/ppcparams.h new file mode 100644 index 000000000..90538fecb --- /dev/null +++ b/os/common/startup/e200/devices/SPC56ECxx/ppcparams.h @@ -0,0 +1,86 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC56ECxx/ppcparams.h + * @brief PowerPC parameters for the SPC56ECxx. + * + * @defgroup PPC_SPC56ECxx SPC56ECxx Specific Parameters + * @ingroup PPC_SPECIFIC + * @details This file contains the PowerPC specific parameters for the + * SPC56ECxx platform. + * @{ + */ + +#ifndef _PPCPARAMS_H_ +#define _PPCPARAMS_H_ + +/** + * @brief Family identification macro. + */ +#define PPC_SPC56ECxx + +/** + * @brief PPC core model. + */ +#define PPC_VARIANT PPC_VARIANT_e200z4 + +/** + * @brief Number of cores. + */ +#define PPC_CORE_NUMBER 1 + +/** + * @brief Number of writable bits in IVPR register. + */ +#define PPC_IVPR_BITS 16 + +/** + * @brief IVORx registers support. + */ +#define PPC_SUPPORTS_IVORS TRUE + +/** + * @brief Book E instruction set support. + */ +#define PPC_SUPPORTS_BOOKE TRUE + +/** + * @brief VLE instruction set support. + */ +#define PPC_SUPPORTS_VLE TRUE + +/** + * @brief Supports VLS Load/Store Multiple Volatile instructions. + */ +#define PPC_SUPPORTS_VLE_MULTI TRUE + +/** + * @brief Supports the decrementer timer. + */ +#define PPC_SUPPORTS_DECREMENTER TRUE + +/** + * @brief Number of interrupt sources. + */ +#define PPC_NUM_VECTORS 279 + +#endif /* _PPCPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC56ELxx/boot.h b/os/common/startup/e200/devices/SPC56ELxx/boot.h new file mode 100644 index 000000000..aeb2bc0bc --- /dev/null +++ b/os/common/startup/e200/devices/SPC56ELxx/boot.h @@ -0,0 +1,251 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file boot.h + * @brief Boot parameters for the SPC56ELxx. + * @{ + */ + +#ifndef _BOOT_H_ +#define _BOOT_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @name MASx registers definitions + * @{ + */ +#define MAS0_TBLMAS_TBL 0x10000000 +#define MAS0_ESEL_MASK 0x000F0000 +#define MAS0_ESEL(n) ((n) << 16) + +#define MAS1_VALID 0x80000000 +#define MAS1_IPROT 0x40000000 +#define MAS1_TID_MASK 0x00FF0000 +#define MAS1_TS 0x00001000 +#define MAS1_TSISE_MASK 0x00000F80 +#define MAS1_TSISE_1K 0x00000000 +#define MAS1_TSISE_2K 0x00000080 +#define MAS1_TSISE_4K 0x00000100 +#define MAS1_TSISE_8K 0x00000180 +#define MAS1_TSISE_16K 0x00000200 +#define MAS1_TSISE_32K 0x00000280 +#define MAS1_TSISE_64K 0x00000300 +#define MAS1_TSISE_128K 0x00000380 +#define MAS1_TSISE_256K 0x00000400 +#define MAS1_TSISE_512K 0x00000480 +#define MAS1_TSISE_1M 0x00000500 +#define MAS1_TSISE_2M 0x00000580 +#define MAS1_TSISE_4M 0x00000600 +#define MAS1_TSISE_8M 0x00000680 +#define MAS1_TSISE_16M 0x00000700 +#define MAS1_TSISE_32M 0x00000780 +#define MAS1_TSISE_64M 0x00000800 +#define MAS1_TSISE_128M 0x00000880 +#define MAS1_TSISE_256M 0x00000900 +#define MAS1_TSISE_512M 0x00000980 +#define MAS1_TSISE_1G 0x00000A00 +#define MAS1_TSISE_2G 0x00000A80 +#define MAS1_TSISE_4G 0x00000B00 + +#define MAS2_EPN_MASK 0xFFFFFC00 +#define MAS2_EPN(n) ((n) & MAS2_EPN_MASK) +#define MAS2_EBOOK 0x00000000 +#define MAS2_VLE 0x00000020 +#define MAS2_W 0x00000010 +#define MAS2_I 0x00000008 +#define MAS2_M 0x00000004 +#define MAS2_G 0x00000002 +#define MAS2_E 0x00000001 + +#define MAS3_RPN_MASK 0xFFFFFC00 +#define MAS3_RPN(n) ((n) & MAS3_RPN_MASK) +#define MAS3_U0 0x00000200 +#define MAS3_U1 0x00000100 +#define MAS3_U2 0x00000080 +#define MAS3_U3 0x00000040 +#define MAS3_UX 0x00000020 +#define MAS3_SX 0x00000010 +#define MAS3_UW 0x00000008 +#define MAS3_SW 0x00000004 +#define MAS3_UR 0x00000002 +#define MAS3_SR 0x00000001 +/** @} */ + +/** + * @name BUCSR registers definitions + * @{ + */ +#define BUCSR_BPEN 0x00000001 +#define BUCSR_BPRED_MASK 0x00000006 +#define BUCSR_BPRED_0 0x00000000 +#define BUCSR_BPRED_1 0x00000002 +#define BUCSR_BPRED_2 0x00000004 +#define BUCSR_BPRED_3 0x00000006 +#define BUCSR_BALLOC_MASK 0x00000030 +#define BUCSR_BALLOC_0 0x00000000 +#define BUCSR_BALLOC_1 0x00000010 +#define BUCSR_BALLOC_2 0x00000020 +#define BUCSR_BALLOC_3 0x00000030 +#define BUCSR_BALLOC_BFI 0x00000200 +/** @} */ + +/** + * @name LICSR1 registers definitions + * @{ + */ +#define LICSR1_ICE 0x00000001 +#define LICSR1_ICINV 0x00000002 +#define LICSR1_ICORG 0x00000010 +/** @} */ + +/** + * @name MSR register definitions + * @{ + */ +#define MSR_UCLE 0x04000000 +#define MSR_SPE 0x02000000 +#define MSR_WE 0x00040000 +#define MSR_CE 0x00020000 +#define MSR_EE 0x00008000 +#define MSR_PR 0x00004000 +#define MSR_FP 0x00002000 +#define MSR_ME 0x00001000 +#define MSR_FE0 0x00000800 +#define MSR_DE 0x00000200 +#define MSR_FE1 0x00000100 +#define MSR_IS 0x00000020 +#define MSR_DS 0x00000010 +#define MSR_RI 0x00000002 +/** @} */ + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/* + * TLB default settings. + */ +#define TLB0_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(0)) +#define TLB0_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_2M) +#define TLB0_MAS2 (MAS2_EPN(0x00000000) | MAS2_VLE) +#define TLB0_MAS3 (MAS3_RPN(0x00000000) | \ + MAS3_UX | MAS3_SX | MAS3_UW | MAS3_SW | \ + MAS3_UR | MAS3_SR) + +#define TLB1_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(1)) +#define TLB1_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_256K) +#define TLB1_MAS2 (MAS2_EPN(0x40000000) | MAS2_VLE) +#define TLB1_MAS3 (MAS3_RPN(0x40000000) | \ + MAS3_UX | MAS3_SX | MAS3_UW | MAS3_SW | \ + MAS3_UR | MAS3_SR) + +#define TLB2_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(2)) +#define TLB2_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) +#define TLB2_MAS2 (MAS2_EPN(0xC3F00000) | MAS2_I) +#define TLB2_MAS3 (MAS3_RPN(0xC3F00000) | \ + MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) + +#define TLB3_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(3)) +#define TLB3_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) +#define TLB3_MAS2 (MAS2_EPN(0xFFE00000) | MAS2_I) +#define TLB3_MAS3 (MAS3_RPN(0xFFE00000) | \ + MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) + +#define TLB4_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(4)) +#define TLB4_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) +#define TLB4_MAS2 (MAS2_EPN(0x8FF00000) | MAS2_I) +#define TLB4_MAS3 (MAS3_RPN(0x8FF00000) | \ + MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) + +#define TLB5_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(5)) +#define TLB5_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_1M) +#define TLB5_MAS2 (MAS2_EPN(0xFFF00000) | MAS2_I) +#define TLB5_MAS3 (MAS3_RPN(0xFFF00000) | \ + MAS3_UW | MAS3_SW | MAS3_UR | MAS3_SR) + +/* + * BUCSR default settings. + */ +#if !defined(BOOT_BUCSR_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BPRED_0 | \ + BUCSR_BALLOC_0 | BUCSR_BALLOC_BFI) +#endif + +/* + * LICSR1 default settings. + */ +#if !defined(BOOT_LICSR1_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_LICSR1_DEFAULT (LICSR1_ICE | LICSR1_ICORG) +#endif + +/* + * MSR default settings. + */ +#if !defined(BOOT_MSR_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_MSR_DEFAULT (MSR_SPE | MSR_WE | MSR_CE | MSR_ME) +#endif + +/* + * Boot default settings. + */ +#if !defined(BOOT_PERFORM_CORE_INIT) || defined(__DOXYGEN__) +#define BOOT_PERFORM_CORE_INIT 1 +#endif + +/* + * VLE mode default settings. + */ +#if !defined(BOOT_USE_VLE) || defined(__DOXYGEN__) +#define BOOT_USE_VLE 1 +#endif + +/* + * RAM relocation flag. + */ +#if !defined(BOOT_RELOCATE_IN_RAM) || defined(__DOXYGEN__) +#define BOOT_RELOCATE_IN_RAM 0 +#endif + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _BOOT_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC56ELxx/boot.s b/os/common/startup/e200/devices/SPC56ELxx/boot.s new file mode 100644 index 000000000..1508f0c17 --- /dev/null +++ b/os/common/startup/e200/devices/SPC56ELxx/boot.s @@ -0,0 +1,408 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC56ELxx/boot.s + * @brief SPC56ELxx boot-related code. + * + * @addtogroup PPC_BOOT + * @{ + */ + +#include "boot.h" + +#if !defined(__DOXYGEN__) + + /* BAM record.*/ + .section .boot, "ax" + +#if BOOT_USE_VLE + .long 0x015A0000 +#else + .long 0x005A0000 +#endif + .long _reset_address + + .align 2 + .globl _reset_address + .type _reset_address, @function +_reset_address: + bl _coreinit + bl _ivinit + +#if BOOT_RELOCATE_IN_RAM + /* + * Image relocation in RAM. + */ + lis %r4, __ram_reloc_start__@h + ori %r4, %r4, __ram_reloc_start__@l + lis %r5, __ram_reloc_dest__@h + ori %r5, %r5, __ram_reloc_dest__@l + lis %r6, __ram_reloc_end__@h + ori %r6, %r6, __ram_reloc_end__@l +.relloop: + cmpl cr0, %r4, %r6 + bge cr0, .relend + lwz %r7, 0(%r4) + addi %r4, %r4, 4 + stw %r7, 0(%r5) + addi %r5, %r5, 4 + b .relloop +.relend: + lis %r3, _boot_address@h + ori %r3, %r3, _boot_address@l + mtctr %r3 + bctrl +#else + b _boot_address +#endif + +#if BOOT_PERFORM_CORE_INIT + .align 2 +_ramcode: + tlbwe + isync + blr +#endif /* BOOT_PERFORM_CORE_INIT */ + + .align 2 +_coreinit: +#if BOOT_PERFORM_CORE_INIT + /* + * Invalidating all TLBs except TLB0. + */ + lis %r3, 0 + mtspr 625, %r3 /* MAS1 */ + mtspr 626, %r3 /* MAS2 */ + mtspr 627, %r3 /* MAS3 */ + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(1))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(2))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(3))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(4))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(5))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(6))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(7))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(8))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(9))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(10))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(11))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(12))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(13))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(14))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + lis %r3, (MAS0_TBLMAS_TBL | MAS0_ESEL(15))@h + mtspr 624, %r3 /* MAS0 */ + tlbwe + + /* + * TLB1 allocated to internal RAM. + */ + lis %r3, TLB1_MAS0@h + mtspr 624, %r3 /* MAS0 */ + lis %r3, TLB1_MAS1@h + ori %r3, %r3, TLB1_MAS1@l + mtspr 625, %r3 /* MAS1 */ + lis %r3, TLB1_MAS2@h + ori %r3, %r3, TLB1_MAS2@l + mtspr 626, %r3 /* MAS2 */ + lis %r3, TLB1_MAS3@h + ori %r3, %r3, TLB1_MAS3@l + mtspr 627, %r3 /* MAS3 */ + tlbwe + + /* + * TLB2 allocated to internal Peripherals Bridge A. + */ + lis %r3, TLB2_MAS0@h + mtspr 624, %r3 /* MAS0 */ + lis %r3, TLB2_MAS1@h + ori %r3, %r3, TLB2_MAS1@l + mtspr 625, %r3 /* MAS1 */ + lis %r3, TLB2_MAS2@h + ori %r3, %r3, TLB2_MAS2@l + mtspr 626, %r3 /* MAS2 */ + lis %r3, TLB2_MAS3@h + ori %r3, %r3, TLB2_MAS3@l + mtspr 627, %r3 /* MAS3 */ + tlbwe + + /* + * TLB3 allocated to internal Peripherals Bridge B. + */ + lis %r3, TLB3_MAS0@h + mtspr 624, %r3 /* MAS0 */ + lis %r3, TLB3_MAS1@h + ori %r3, %r3, TLB3_MAS1@l + mtspr 625, %r3 /* MAS1 */ + lis %r3, TLB3_MAS2@h + ori %r3, %r3, TLB3_MAS2@l + mtspr 626, %r3 /* MAS2 */ + lis %r3, TLB3_MAS3@h + ori %r3, %r3, TLB3_MAS3@l + mtspr 627, %r3 /* MAS3 */ + tlbwe + + /* + * TLB4 allocated to on-platform peripherals. + */ + lis %r3, TLB4_MAS0@h + mtspr 624, %r3 /* MAS0 */ + lis %r3, TLB4_MAS1@h + ori %r3, %r3, TLB4_MAS1@l + mtspr 625, %r3 /* MAS1 */ + lis %r3, TLB4_MAS2@h + ori %r3, %r3, TLB4_MAS2@l + mtspr 626, %r3 /* MAS2 */ + lis %r3, TLB4_MAS3@h + ori %r3, %r3, TLB4_MAS3@l + mtspr 627, %r3 /* MAS3 */ + tlbwe + + /* + * TLB5 allocated to on-platform peripherals. + */ + lis %r3, TLB5_MAS0@h + mtspr 624, %r3 /* MAS0 */ + lis %r3, TLB5_MAS1@h + ori %r3, %r3, TLB5_MAS1@l + mtspr 625, %r3 /* MAS1 */ + lis %r3, TLB5_MAS2@h + ori %r3, %r3, TLB5_MAS2@l + mtspr 626, %r3 /* MAS2 */ + lis %r3, TLB5_MAS3@h + ori %r3, %r3, TLB5_MAS3@l + mtspr 627, %r3 /* MAS3 */ + tlbwe + + /* + * RAM clearing, this device requires a write to all RAM location in + * order to initialize the ECC detection hardware, this is going to + * slow down the startup but there is no way around. + */ + xor %r0, %r0, %r0 + xor %r1, %r1, %r1 + xor %r2, %r2, %r2 + xor %r3, %r3, %r3 + xor %r4, %r4, %r4 + xor %r5, %r5, %r5 + xor %r6, %r6, %r6 + xor %r7, %r7, %r7 + xor %r8, %r8, %r8 + xor %r9, %r9, %r9 + xor %r10, %r10, %r10 + xor %r11, %r11, %r11 + xor %r12, %r12, %r12 + xor %r13, %r13, %r13 + xor %r14, %r14, %r14 + xor %r15, %r15, %r15 + xor %r16, %r16, %r16 + xor %r17, %r17, %r17 + xor %r18, %r18, %r18 + xor %r19, %r19, %r19 + xor %r20, %r20, %r20 + xor %r21, %r21, %r21 + xor %r22, %r22, %r22 + xor %r23, %r23, %r23 + xor %r24, %r24, %r24 + xor %r25, %r25, %r25 + xor %r26, %r26, %r26 + xor %r27, %r27, %r27 + xor %r28, %r28, %r28 + xor %r29, %r29, %r29 + xor %r30, %r30, %r30 + xor %r31, %r31, %r31 + lis %r4, __ram_start__@h + ori %r4, %r4, __ram_start__@l + lis %r5, __ram_end__@h + ori %r5, %r5, __ram_end__@l +.cleareccloop: + cmpl %cr0, %r4, %r5 + bge %cr0, .cleareccend + stmw %r16, 0(%r4) + addi %r4, %r4, 64 + b .cleareccloop +.cleareccend: +#endif /* BOOT_PERFORM_CORE_INIT */ + + /* + * Special function registers clearing, required in order to avoid + * possible problems with lockstep mode. + */ + mtcrf 0xFF, %r31 + mtspr 9, %r31 /* CTR */ + mtspr 22, %r31 /* DEC */ + mtspr 26, %r31 /* SRR0-1 */ + mtspr 27, %r31 + mtspr 54, %r31 /* DECAR */ + mtspr 58, %r31 /* CSRR0-1 */ + mtspr 59, %r31 + mtspr 61, %r31 /* DEAR */ + mtspr 256, %r31 /* USPRG0 */ + mtspr 272, %r31 /* SPRG1-7 */ + mtspr 273, %r31 + mtspr 274, %r31 + mtspr 275, %r31 + mtspr 276, %r31 + mtspr 277, %r31 + mtspr 278, %r31 + mtspr 279, %r31 + mtspr 285, %r31 /* TBU */ + mtspr 284, %r31 /* TBL */ +#if 0 + mtspr 318, %r31 /* DVC1-2 */ + mtspr 319, %r31 +#endif + mtspr 562, %r31 /* DBCNT */ + mtspr 570, %r31 /* MCSRR0 */ + mtspr 571, %r31 /* MCSRR1 */ + mtspr 604, %r31 /* SPRG8-9 */ + mtspr 605, %r31 + +#if BOOT_PERFORM_CORE_INIT + /* + * *Finally* the TLB0 is re-allocated to flash, note, the final phase + * is executed from RAM. + */ + lis %r3, TLB0_MAS0@h + mtspr 624, %r3 /* MAS0 */ + lis %r3, TLB0_MAS1@h + ori %r3, %r3, TLB0_MAS1@l + mtspr 625, %r3 /* MAS1 */ + lis %r3, TLB0_MAS2@h + ori %r3, %r3, TLB0_MAS2@l + mtspr 626, %r3 /* MAS2 */ + lis %r3, TLB0_MAS3@h + ori %r3, %r3, TLB0_MAS3@l + mtspr 627, %r3 /* MAS3 */ + mflr %r4 + lis %r6, _ramcode@h + ori %r6, %r6, _ramcode@l + lis %r7, 0x40010000@h + mtctr %r7 + lwz %r3, 0(%r6) + stw %r3, 0(%r7) + lwz %r3, 4(%r6) + stw %r3, 4(%r7) + lwz %r3, 8(%r6) + stw %r3, 8(%r7) + bctrl + mtlr %r4 +#endif /* BOOT_PERFORM_CORE_INIT */ + + /* + * Branch prediction enabled. + */ + li %r3, BOOT_BUCSR_DEFAULT + mtspr 1013, %r3 /* BUCSR */ + + /* + * Cache invalidated and then enabled. + */ + li %r3, LICSR1_ICINV + mtspr 1011, %r3 /* LICSR1 */ +.inv: mfspr %r3, 1011 /* LICSR1 */ + andi. %r3, %r3, LICSR1_ICINV + bne .inv + lis %r3, BOOT_LICSR1_DEFAULT@h + ori %r3, %r3, BOOT_LICSR1_DEFAULT@l + mtspr 1011, %r3 /* LICSR1 */ + + blr + + /* + * Exception vectors initialization. + */ + .align 2 +_ivinit: + /* MSR initialization.*/ + lis %r3, BOOT_MSR_DEFAULT@h + ori %r3, %r3, BOOT_MSR_DEFAULT@l + mtMSR %r3 + + /* IVPR initialization.*/ + lis %r3, __ivpr_base__@h + ori %r3, %r3, __ivpr_base__@l + mtIVPR %r3 + + /* IVORs initialization.*/ + lis %r3, _unhandled_exception@h + ori %r3, %r3, _unhandled_exception@l + + mtspr 400, %r3 /* IVOR0-15 */ + mtspr 401, %r3 + mtspr 402, %r3 + mtspr 403, %r3 + mtspr 404, %r3 + mtspr 405, %r3 + mtspr 406, %r3 + mtspr 407, %r3 + mtspr 408, %r3 + mtspr 409, %r3 + mtspr 410, %r3 + mtspr 411, %r3 + mtspr 412, %r3 + mtspr 413, %r3 + mtspr 414, %r3 + mtspr 415, %r3 + mtspr 528, %r3 /* IVOR32-34 */ + mtspr 529, %r3 + mtspr 530, %r3 + + blr + + .section .handlers, "ax" + + /* + * Unhandled exceptions handler. + */ + .weak _unhandled_exception + .type _unhandled_exception, @function +_unhandled_exception: + b _unhandled_exception + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC56ELxx/intc.h b/os/common/startup/e200/devices/SPC56ELxx/intc.h new file mode 100644 index 000000000..bb4c98f57 --- /dev/null +++ b/os/common/startup/e200/devices/SPC56ELxx/intc.h @@ -0,0 +1,96 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC56ELxx/intc.h + * @brief SPC56ELxx INTC module header. + * + * @addtogroup INTC + * @{ + */ + +#ifndef _INTC_H_ +#define _INTC_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @name INTC addresses + * @{ + */ +#define INTC_BASE 0xFFF48000 +#define INTC_IACKR_ADDR (INTC_BASE + 0x10) +#define INTC_EOIR_ADDR (INTC_BASE + 0x18) +/** @} */ + +/** + * @brief INTC priority levels. + */ +#define INTC_PRIORITY_LEVELS 16U + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/** + * @name INTC-related macros + * @{ + */ +#define INTC_BCR (*((volatile uint32_t *)(INTC_BASE + 0))) +#define INTC_CPR(n) (*((volatile uint32_t *)(INTC_BASE + 8 + ((n) * sizeof (uint32_t))))) +#define INTC_IACKR(n) (*((volatile uint32_t *)(INTC_BASE + 0x10 + ((n) * sizeof (uint32_t))))) +#define INTC_EOIR(n) (*((volatile uint32_t *)(INTC_BASE + 0x18 + ((n) * sizeof (uint32_t))))) +#define INTC_PSR(n) (*((volatile uint8_t *)(INTC_BASE + 0x40 + ((n) * sizeof (uint8_t))))) +/** @} */ + +/** + * @brief Core selection macros for PSR register. + */ +#define INTC_PSR_CORE0 0x00 + +/** + * @brief PSR register content helper + */ +#define INTC_PSR_ENABLE(cores, prio) ((uint32_t)(cores) | (uint32_t)(prio)) + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _INTC_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC56ELxx/ppcparams.h b/os/common/startup/e200/devices/SPC56ELxx/ppcparams.h new file mode 100644 index 000000000..c7bceb487 --- /dev/null +++ b/os/common/startup/e200/devices/SPC56ELxx/ppcparams.h @@ -0,0 +1,86 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC56ELxx/ppcparams.h + * @brief PowerPC parameters for the SPC56ELxx. + * + * @defgroup PPC_SPC56ELxx SPC56ELxx Specific Parameters + * @ingroup PPC_SPECIFIC + * @details This file contains the PowerPC specific parameters for the + * SPC56ELxx platform. + * @{ + */ + +#ifndef _PPCPARAMS_H_ +#define _PPCPARAMS_H_ + +/** + * @brief Family identification macro. + */ +#define PPC_SPC56ELxx + +/** + * @brief PPC core model. + */ +#define PPC_VARIANT PPC_VARIANT_e200z4 + +/** + * @brief Number of cores. + */ +#define PPC_CORE_NUMBER 1 + +/** + * @brief Number of writable bits in IVPR register. + */ +#define PPC_IVPR_BITS 16 + +/** + * @brief IVORx registers support. + */ +#define PPC_SUPPORTS_IVORS TRUE + +/** + * @brief Book E instruction set support. + */ +#define PPC_SUPPORTS_BOOKE TRUE + +/** + * @brief VLE instruction set support. + */ +#define PPC_SUPPORTS_VLE TRUE + +/** + * @brief Supports VLS Load/Store Multiple Volatile instructions. + */ +#define PPC_SUPPORTS_VLE_MULTI TRUE + +/** + * @brief Supports the decrementer timer. + */ +#define PPC_SUPPORTS_DECREMENTER TRUE + +/** + * @brief Number of interrupt sources. + */ +#define PPC_NUM_VECTORS 256 + +#endif /* _PPCPARAMS_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC57EMxx_HSM/boot.h b/os/common/startup/e200/devices/SPC57EMxx_HSM/boot.h new file mode 100644 index 000000000..e00933bbf --- /dev/null +++ b/os/common/startup/e200/devices/SPC57EMxx_HSM/boot.h @@ -0,0 +1,96 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file boot.h + * @brief Boot parameters for the SPC57EMxx_HSM. + * @{ + */ + +#ifndef _BOOT_H_ +#define _BOOT_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @name BUCSR registers definitions + * @{ + */ +#define BUCSR_BPEN 0x00000001 +#define BUCSR_BALLOC_BFI 0x00000200 +/** @} */ + +/** + * @name MSR register definitions + * @{ + */ +#define MSR_WE 0x00040000 +#define MSR_CE 0x00020000 +#define MSR_EE 0x00008000 +#define MSR_PR 0x00004000 +#define MSR_ME 0x00001000 +#define MSR_DE 0x00000200 +#define MSR_IS 0x00000020 +#define MSR_DS 0x00000010 +#define MSR_RI 0x00000002 +/** @} */ + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/* + * BUCSR default settings. + */ +#if !defined(BOOT_BUCSR_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_BUCSR_DEFAULT (BUCSR_BPEN | BUCSR_BALLOC_BFI) +#endif + +/* + * MSR default settings. + */ +#if !defined(BOOT_MSR_DEFAULT) || defined(__DOXYGEN__) +#define BOOT_MSR_DEFAULT (MSR_WE | MSR_CE | MSR_ME) +#endif + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _BOOT_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC57EMxx_HSM/boot.s b/os/common/startup/e200/devices/SPC57EMxx_HSM/boot.s new file mode 100644 index 000000000..3aa286d58 --- /dev/null +++ b/os/common/startup/e200/devices/SPC57EMxx_HSM/boot.s @@ -0,0 +1,211 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC57EMxx_HSM/boot.s + * @brief SPC57EMxx_HSM boot-related code. + * + * @addtogroup PPC_BOOT + * @{ + */ + +#include "boot.h" + +#define HSBI_CCR 0xA3F14004 +#define HSBI_CCR_CE 0x00000001 +#define HSBI_CCR_INV 0x00000002 + +#if !defined(__DOXYGEN__) + + /* Boot record.*/ + .section .boot, "ax" + + .long 0xFFFF0000 + .long 0xFFFF0000 + .long 0xFFFFFFFF + .long _reset_address + .long 0xFFFFFFFF + .long 0xFFFFFFFF + .long 0xFFFFFFFF + .long 0xFFFFFFFF + + .align 2 + .globl _reset_address + .type _reset_address, @function +_reset_address: + bl _coreinit + bl _ivinit + b _boot_address + + .align 2 +_coreinit: +#if 0 + /* + * Cache invalidate and enable. + */ + lis %r7, HSBI_CCR@h + ori %r7, %r7, HSBI_CCR@l + li %r0, HSBI_CCR_INV | HSBI_CCR_CE + stw %r0, 0(%r7) +.inv: + lwz %r0, 0(%r7) + andi. %r0, %r0, HSBI_CCR_INV + bne+ %cr0, .inv +#endif + + /* + * RAM clearing, this device requires a write to all RAM location in + * order to initialize the ECC detection hardware, this is going to + * slow down the startup but there is no way around. + */ + xor %r0, %r0, %r0 + xor %r1, %r1, %r1 + xor %r2, %r2, %r2 + xor %r3, %r3, %r3 + xor %r4, %r4, %r4 + xor %r5, %r5, %r5 + xor %r6, %r6, %r6 + xor %r7, %r7, %r7 + xor %r8, %r8, %r8 + xor %r9, %r9, %r9 + xor %r10, %r10, %r10 + xor %r11, %r11, %r11 + xor %r12, %r12, %r12 + xor %r13, %r13, %r13 + xor %r14, %r14, %r14 + xor %r15, %r15, %r15 + xor %r16, %r16, %r16 + xor %r17, %r17, %r17 + xor %r18, %r18, %r18 + xor %r19, %r19, %r19 + xor %r20, %r20, %r20 + xor %r21, %r21, %r21 + xor %r22, %r22, %r22 + xor %r23, %r23, %r23 + xor %r24, %r24, %r24 + xor %r25, %r25, %r25 + xor %r26, %r26, %r26 + xor %r27, %r27, %r27 + xor %r28, %r28, %r28 + xor %r29, %r29, %r29 + xor %r30, %r30, %r30 + xor %r31, %r31, %r31 + lis %r4, __ram_start__@h + ori %r4, %r4, __ram_start__@l + lis %r5, __ram_end__@h + ori %r5, %r5, __ram_end__@l +.cleareccloop: + cmpl %cr0, %r4, %r5 + bge %cr0, .cleareccend + stmw %r16, 0(%r4) + addi %r4, %r4, 64 + b .cleareccloop +.cleareccend: + + /* + * Branch prediction enabled. + */ + li %r3, BUCSR_DEFAULT + mtspr 1013, %r3 /* BUCSR */ + + blr + + /* + * Exception vectors initialization. + */ + .align 2 +_ivinit: + /* MSR initialization.*/ + lis %r3, MSR_DEFAULT@h + ori %r3, %r3, MSR_DEFAULT@l + mtMSR %r3 + + /* IVPR initialization.*/ + lis %r3, __ivpr_base__@h + ori %r3, %r3, __ivpr_base__@l + mtIVPR %r3 + + blr + + .section .ivors, "ax" + + .globl IVORS +IVORS: +IVOR0: b _IVOR0 + .align 4 +IVOR1: b _IVOR1 + .align 4 +IVOR2: b _IVOR2 + .align 4 +IVOR3: b _IVOR3 + .align 4 +IVOR4: b _IVOR4 + .align 4 +IVOR5: b _IVOR5 + .align 4 +IVOR6: b _IVOR6 + .align 4 +IVOR7: b _IVOR7 + .align 4 +IVOR8: b _IVOR8 + .align 4 +IVOR9: b _IVOR9 + .align 4 +IVOR10: b _IVOR10 + .align 4 +IVOR11: b _IVOR11 + .align 4 +IVOR12: b _IVOR12 + .align 4 +IVOR13: b _IVOR13 + .align 4 +IVOR14: b _IVOR14 + .align 4 +IVOR15: b _IVOR15 + + .section .handlers, "ax" + + /* + * Default IVOR handlers. + */ + .align 2 + .weak _IVOR0, _IVOR1, _IVOR2, _IVOR3, _IVOR4, _IVOR5 + .weak _IVOR6, _IVOR7, _IVOR8, _IVOR9, _IVOR10, _IVOR11 + .weak _IVOR12, _IVOR13, _IVOR14, _IVOR15 +_IVOR0: +_IVOR1: +_IVOR2: +_IVOR3: +_IVOR5: +_IVOR6: +_IVOR7: +_IVOR8: +_IVOR9: +_IVOR11: +_IVOR12: +_IVOR13: +_IVOR14: +_IVOR15: + .global _unhandled_exception +_unhandled_exception: + b _unhandled_exception + +#endif /* !defined(__DOXYGEN__) */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC57EMxx_HSM/intc.h b/os/common/startup/e200/devices/SPC57EMxx_HSM/intc.h new file mode 100644 index 000000000..ef660f195 --- /dev/null +++ b/os/common/startup/e200/devices/SPC57EMxx_HSM/intc.h @@ -0,0 +1,97 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC57EMxx_HSM/intc.h + * @brief SPC57EMxx_HSM INTC module header. + * + * @addtogroup INTC + * @{ + */ + +#ifndef _INTC_H_ +#define _INTC_H_ + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +/** + * @name INTC addresses + * @{ + */ +#define INTC_BASE 0xA3F48000 +#define INTC_IACKR_ADDR (INTC_BASE + 0x20) +#define INTC_EOIR_ADDR (INTC_BASE + 0x30) +/** @} */ + +/** + * @brief INTC priority levels. + */ +#define INTC_PRIORITY_LEVELS 16U + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/** + * @name INTC-related macros + * @{ + */ +#define INTC_BCR (*((volatile uint32_t *)(INTC_BASE + 0))) +#define INTC_MPROT (*((volatile uint32_t *)(INTC_BASE + 4))) +#define INTC_CPR(n) (*((volatile uint32_t *)(INTC_BASE + 0x10 + ((n) * sizeof (uint32_t))))) +#define INTC_IACKR(n) (*((volatile uint32_t *)(INTC_BASE + 0x20 + ((n) * sizeof (uint32_t))))) +#define INTC_EOIR(n) (*((volatile uint32_t *)(INTC_BASE + 0x30 + ((n) * sizeof (uint32_t))))) +#define INTC_PSR(n) (*((volatile uint16_t *)(INTC_BASE + 0x60 + ((n) * sizeof (uint16_t))))) +/** @} */ + +/** + * @brief Core selection macros for PSR register. + */ +#define INTC_PSR_CORE4 0x8000 + +/** + * @brief PSR register content helper + */ +#define INTC_PSR_ENABLE(cores, prio) ((uint32_t)(cores) | (uint32_t)(prio)) + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* _INTC_H_ */ + +/** @} */ diff --git a/os/common/startup/e200/devices/SPC57EMxx_HSM/ppcparams.h b/os/common/startup/e200/devices/SPC57EMxx_HSM/ppcparams.h new file mode 100644 index 000000000..96ee29e27 --- /dev/null +++ b/os/common/startup/e200/devices/SPC57EMxx_HSM/ppcparams.h @@ -0,0 +1,91 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio. + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @file SPC57EMxx_HSM/ppcparams.h + * @brief PowerPC parameters for the SPC57EMxx_HSM. + * + * @defgroup PPC_SPC57EMxx_HSM SPC57EMxx_HSM Specific Parameters + * @ingroup PPC_SPECIFIC + * @details This file contains the PowerPC specific parameters for the + * SPC57EMxx_HSM platform. + * @{ + */ + +#ifndef _PPCPARAMS_H_ +#define _PPCPARAMS_H_ + +/** + * @brief Family identification macro. + */ +#define PPC_SPC560Dxx + +/** + * @brief Alternate identification macro. + */ +#define PPC_SPC57EMxx_HSM + +/** + * @brief PPC core model. + */ +#define PPC_VARIANT PPC_VARIANT_e200z0 + +/** + * @brief Number of cores. + */ +#define PPC_CORE_NUMBER 1 + +/** + * @brief Number of writable bits in IVPR register. + */ +#define PPC_IVPR_BITS 20 + +/** + * @brief IVORx registers support. + */ +#define PPC_SUPPORTS_IVORS FALSE + +/** + * @brief Book E instruction set support. + */ +#define PPC_SUPPORTS_BOOKE FALSE + +/** + * @brief VLE instruction set support. + */ +#define PPC_SUPPORTS_VLE TRUE + +/** + * @brief Supports VLS Load/Store Multiple Volatile instructions. + */ +#define PPC_SUPPORTS_VLE_MULTI TRUE + +/** + * @brief Supports the decrementer timer. + */ +#define PPC_SUPPORTS_DECREMENTER FALSE + +/** + * @brief Number of interrupt sources. + */ +#define PPC_NUM_VECTORS 64 + +#endif /* _PPCPARAMS_H_ */ + +/** @} */ -- cgit v1.2.3