1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
Commit Graph

307 Commits

Author SHA1 Message Date
Leandro Lanzieri
649017f0b2
cpu/cortexm_common: Rename arch_cortexm feature to cpu_core_cortexm 2020-06-16 12:05:41 +02:00
Leandro Lanzieri
4d65bc8e0a
cpu: Rename CPU_ARCH to CPU_CORE 2020-06-16 12:05:40 +02:00
8466946ea1 cpu/cortexm_common/Kconfig: add cortexm_svc feature 2020-06-10 23:13:43 +02:00
dbe7331d10 cpu/cortexm: "free" SVC 2020-06-10 23:12:58 +02:00
Jean Pierre Dudey
fea44e8b35
cpu/cortexm_common: add HAS_CORTEX_MPU feature
Signed-off-by: Jean Pierre Dudey <jeandudey@hotmail.com>
2020-06-04 22:16:43 -05:00
José Alamos
917cc66e48
Merge pull request #14162 from jia200x/pr/kconfig/cortex
Kconfig/armv7_m/cortexm: declare CPU_ARCH and CPU_CORE symbols
2020-05-28 14:59:37 +02:00
Leandro Lanzieri
be8289bd8d cpu/cortexm_common: Add Kconfig symbols
This declares the architecture and core specific Kconfig symbols and the
features provided by it are selected.
2020-05-28 14:11:21 +02:00
Francisco Molina
b5e4224a6f
cpu/cortexm_common: remove special cortexm_sleep handle for stm32l152re
__set_PRIMASK(state) had been directly inlined to avoid a hardfault that
occured when branching after waking up from sleep with DBG_STANDBY,
DBG_STOP or DBG_SLEEP set in DBG_CR.

The hardfault occured when returning from the branch to irq_restore,
since the function is now inlined the branch does not happen either.

Refer to #14015 for more details.
2020-05-12 16:37:34 +02:00
Francisco Molina
4ad3164599
cpu/cortexm_common/irq_arch: fix irq_enable return type 2020-05-12 16:37:34 +02:00
Francisco Molina
cb5cbe7431
cpu/cortexm_common: add inlined header only def for irq_%
irq_% are not inlined by the compiler which leads to it branching
to a function that actually implement a single machine instruction.

Inlining these functions makes the call more efficient as well as
saving some bytes in ROM.
2020-05-12 16:37:34 +02:00
iosabi
7e7b6e1cfe Allow to define reserved fields in CortexM vector table.
The ARM CortexM vector table has some reserved fields which are used by
some manufacturers to store their custom image information. In
particular, NXP QN908X stores the checksum, Code Read Protection, image
type and boot block pointer in this region.

This patch allows the cpu and board modules to define the value of these
fields at build time by defining a macro.
2020-04-10 10:37:41 +00:00
Pekka Nikander
4534e9b773
cpu/cortexm_common: add irq sub-priorities
This commit enables Cortex-M CPU interrupt sub-priorities
and allows the PendSV interrupt to have a priority different
from the default one.  Together these two preprocessor
defines can be used to have PendSV always run as the last interrupt
before returning from the interrupt stack back to the user space.

Running PendSV as the last interrupt before returning to the
user space is recommended by ARM, as it increases efficiency.
Furthermore, that change enhances stability a lot with the
new nRF52 SoftDevice support, currently being worked in
PR #9473.

This commit merely enables sub-priorities and a separate
PendSV priority to be used without changing the default
RIOT behaviour.
2020-04-03 17:49:31 +02:00
Leandro Lanzieri
ea2f963302
cpu/cortexm: Add 'cortexm_fpu' as a DEFAULT_MODULE if possible
This adds cortexm_fpu to the DEFAULT_MODULE list when the feature
cortexm_fpu is provided by the architecture. It also moves the
dependency resolution of this module to the architecture-specific
Makefile.dep file.
2020-04-01 09:46:29 +02:00
Leandro Lanzieri
64552a3b9a
cpu/cortexm_common: Move common modules to Makefile.dep
This moves the following modules to a architecture-specific Makefile.dep
file:
- cortexm_common
- cortexm_common_periph
- newlib
- newlib_nano
- periph
2020-04-01 09:46:21 +02:00
Benjamin Valentin
a11bcdcd5c cpu/cortexm_common: define BACKUP_RAM attribute 2020-03-19 13:37:58 +01:00
Sören Tempel
59676a1f5e Make sure the mpu_noexec_ram regions has the lowest priority
From the ARMv7-M ARM section B3.5.3:

	Where there is an overlap between two regions, the register with
	the highest region number takes priority.

We want to make sure the mpu_noexec_ram region has the lowest
priority to allow the mpu_stack_guard region to overwrite the first N
bytes of it.

This change fixes using mpu_noexec_ram and mpu_stack_guard together.
2020-03-10 11:16:22 +01:00
Sören Tempel
2c1a627118 Add mpu_noexec_ram pseudomodule 2020-03-07 13:09:55 +01:00
Gunar Schorcht
f688f84a15
Merge pull request #12928 from benpicco/newlib-multiheap
sys/newlib: enable multiple heaps in _sbrk_r()
2020-02-25 19:16:42 +01:00
Benjamin Valentin
cfd0ef415e cpu/sam0_common: hook up low power RAM as extra heap
This enables unused low-lower RAM on saml21/samd5x to be used for
heap memory.
2020-02-20 17:11:25 +01:00
496ae49692
Merge pull request #13091 from bergzand/pr/mpu/enable_once
cortexm_common/mpu: Only enable during low low level init
2020-02-11 11:11:13 +01:00
Sören Tempel
5ef5ab7e4b Add CPU feature for stack smash protections 2020-01-22 15:59:02 +01:00
c1cd286ec5
mpu: remove harmful assertion 2020-01-11 13:37:20 +01:00
88bdf166ec
cortexm_common: Enable the mpu only in the low level init 2020-01-11 13:36:23 +01:00
84bf543d78 cpu/cortexm_common: fix typos 2019-11-23 22:39:36 +01:00
Francois Berder
4a31f94cfc many typo fixes
Signed-off-by: Francois Berder <18538310+francois-berder@users.noreply.github.com>
2019-11-23 22:39:07 +01:00
Marian Buschsieweke
314184adb5
cpu: Platform specific C11 atomics compat headers
Added headers to define platform specific sizes and types for the C11 atomics
compatibility module for C++.
2019-10-24 23:08:36 +02:00
ebf43616b7 cpu: add arch_* features 2019-10-13 21:03:41 +02:00
Marian Buschsieweke
d749e2de5d
Merge pull request #12312 from kaspar030/cortexm_dont_disable_irq_in_cpu_jump_to_image
cpu/cortexm: don't disable IRQs in cpu_jump_to_image()
2019-10-08 11:20:06 +02:00
Benjamin Valentin
84a8a26dde cpu/cortexm: pointer to .text should be const
A pointer to read-only ROM data should be const.
2019-10-01 18:42:56 +02:00
Benjamin Valentin
2c09d9bd5b cpu/cortexm_common: Make Low-Power SRAM available to programs
Many MCUs contain some Backup or Low Power SRAM that is retained'even
in the deepest sleep modes.

In such sleep modes the MCU is essentually turned off with only the RTC
still running.
It can be woken by a GPIO or a RTC alarm. When this happens, a reset is
triggered and the normal startup routine is invoked.

This adds bss & data section for this memory in the linker script.
This allows for structures to be placed in it e.g.:

e.g.:

    static uint8_t persistent_buffer[64] __attribute__((section(".backup.bss")));
    static uint32_t persistent_counter __attribute__((section(".backup.data"))) = 1234;
2019-10-01 18:39:40 +02:00
a7f6508109 cpu/cortexm: don't disable IRQs in cpu_jump_to_image() 2019-09-26 23:38:43 +02:00
Francisco Molina
d075e55bb4 cpu/cortexm_common: replace irq_restore by __set_PRIMASK for stm32l152re
- The __NOP() that was added in #8518 is now remooved.
- When DBG_STANDBY, DBG_STOP or DBG_SLEEP are set in DBG_CR a hardfault
  occurs on wakeup from sleep. This was first diagnosed in #8518. When
  enabled, a hardfault occured when returning from a branch to irq_restore()
  we avoid the call by inlining the function call. See #11830 for more
  details.
2019-08-05 10:40:28 +02:00
francisco
4acceefa65 cortexm_common/Makefile.include: set RIOTBOOT_HRD_LEN for cortex-m
- Since the Vector table must be naturally aligned to the next power
  of two of the amount of supported ISR, and the table will be
  placed after riotboot_hdr, we must ensure RIOTBOOT_HRD_LEN has the
  same alignment.
2019-06-18 15:11:05 +02:00
Gaëtan Harter
bbb6dec054
Merge pull request #11630 from fjmolinas/pr_kinetis_ld
kinetis/ldscript: handle _rom_offset
2019-06-05 16:12:25 +02:00
francisco
43182bd8f7 cortexm_common/ldscript: use cortexm_rom_offset.ld 2019-06-04 18:05:35 +02:00
francisco
1e5a485539 cortexm_common/ldscript: add common script for rom_offset calculation 2019-06-04 18:05:35 +02:00
Benjamin Valentin
1c3f96495d ldscripts: move .noinit section behind .bss section
If the .noinit section starts at the beginning of the RAM,
a bootloader that is unaware of it will clear it.
Instead, move it behind the .bss section, hoping that a bootloader
will always use less .bss memory than RIOT proper.
2019-05-16 23:11:45 +02:00
bf000a1fa5
Merge pull request #11514 from kaspar030/fix_c11_atomic_definitions
core: fix c11 atomic definitions (fix gcc9 compilation)
2019-05-15 12:29:23 +02:00
Benjamin Valentin
29bf6c712b cortexm_common: add .noinit section
Make it possible to specify a section of RAM that is not touched by
the init routing so data can be kept across resets.

This should behave the same as on atmega & lpc2387.
2019-05-14 12:10:27 +02:00
68a4099c1c cpu/cortexm: fix pointer calculation
gcc9 started realizing that _sram is basically an uint8_t[1] and thus
HARDFAULT_HANDLER_REQUIRED_STACK_SPACE cannot be added to it without
exceeding the one-sized array.

This commit casts _sram to (uintptr_t) where that happens.
2019-05-13 17:38:10 +02:00
Oleg Artamonov
a5ce6deb02 cpu/cortexm_common: function to check address validity 2019-05-13 09:35:34 +02:00
emmanuelsearch
61c793aa4c cpu/cortexm_common: Add image_baseaddr support for Cortex-M23 2019-03-26 11:46:00 +01:00
3163b8d6e2
nrf52: use cortexm.ld script when applicable
The common linker script is not used when the nordic_softdevice_ble is
included
2019-03-13 11:57:44 +01:00
Dylan Laduranty
6d3fda7260 cpu/cortexm: add cortex-m23 support 2019-01-21 17:04:20 +01:00
7226daf33e
Merge pull request #10558 from dylad/pr/update_arm_cmsis
cpu/cortexm_common: Update ARM CMSIS to V5.4.0
2019-01-16 16:49:14 +01:00
Emmanuel Baccelli
209d90bc00
Merge pull request #10215 from kYc0o/pr/riotboot_multislot
riotboot: add multislot support
2019-01-15 19:04:28 +01:00
Dylan Laduranty
fdcac731eb cpu/cortexm_common: Update ARM CMSIS to V5.4.0
Signed-off-by: Dylan Laduranty <dylan.laduranty@mesotic.com>
2019-01-15 17:35:40 +01:00
Vincent Dupont
06f0c14460 cortexm_common: enable FPU on cortex-m4f 2019-01-03 15:24:20 +01:00
Francisco Acosta
e8660b2012 cpu/cortex_common: add support for multislot
A second slot is defined with a calculated size, from the
remaining flash after the bootloader and the first slot.
Both slots are defined as equal size, but it can be overriden.
2019-01-02 17:56:11 +01:00
7a6849ca17 cpu/cortexm_common: add riotboot and slot support
RIOTBOOT_SLOT_LEN is calculated as an hexadecimal value and
handles ROM_LEN defined as kilobytes like '512K'

This enables support for all the cortex-m0+/3/4/7 arch,
so most boards embedding these are potentially supported.
One needs just to ensure that the CPU can be initialised
at least twice.

Co-authored-by: Gaëtan Harter <gaetan.harter@fu-berlin.de>
2018-12-18 19:31:35 +01:00
9cfdf6e379 cpu/cortexm_common: introduce cpu_jump_to_image()
This new function allows to jump to another execution
environment (VTOR) located at a certain (aligned) address.
It's used to boot firmwares at another location than
`CPU_FLASH_BASE`.

The user needs to ensure that the CPU using this feature
is able to be initialised at least twice while jumping
to the RIOT `reset_handler_default` function, since it
initialises the CPU again (calls cpu_init()).

Co-authored-by: Kaspar Schleiser <kaspar@schleiser.de>
2018-12-18 19:31:35 +01:00
PeterKietzmann
0be350e352 sys/puf_sram: CPU specific attributes for variables 2018-11-20 08:34:53 +01:00
smlng
59e299635b cppcheck: add/correct reason for cppcheck-suppress
Adding and correcting description/rational on why certain cppcheck
warnings or errors are intentionally suppressed.
2018-09-25 12:03:58 +02:00
Pekka Nikander
6aa0a48558 cpu/cortexm_common/cortexm_init: Allow piecewise calling
Refactor cortexm_init to allow bits and pieces of
   it to be called separately, while retaining the
   current API, too.  Needed for non-standard
   Cortex-M initialisation, such as with nRF52
   SoftDevice.
2018-08-28 14:07:50 +03:00
Martine Lenders
b305ee4b41 cortexm_common: Mark llvm and gnu as supported toolchains 2018-08-16 16:41:58 +02:00
Gaëtan Harter
7dad2e7096
cortexm_common/ldscript: allow defining FW_ROM_SIZE
Allow defining a specific rom length to use for linking the firmware,
_fw_rom_length, instead of the default configuration to use the whole rom from
_rom_offset to the end.

 * Add cortexm_common/Makefile.include FW_ROM_SIZE configuration
 * Add an assertion that _fw_rom_length still respects _rom_length
2018-08-11 11:34:01 +02:00
Gaëtan Harter
c84539fdb3
cortexm_common: allow defining ROM_OFFFSET in a compilation rule
Define _rom_offset with a conditional evaluated at execution time to allow
setting it in compilation rules and generate in the same make instance different
elf files with different configurations.
2018-08-11 11:33:55 +02:00
Gaëtan Harter
9103dcaeda
cortexm_common: refactor the definition test
The variables should all always be defined.
2018-08-11 11:33:52 +02:00
Gaëtan Harter
83a617261a
cortexm_common/ldscript: add _fw_rom_length variable
It will help testing if it is taken into account and for defining for outside
after.
2018-08-11 11:33:47 +02:00
Gaëtan Harter
d9db258411
cortexm_common/ldscript: re-use _rom_offset variable name
Inspired by kaspar030 version to removing the new _boot_offset variable.

cbf324a66d/cpu/cortexm_common/ldscripts/cortexm.ld
2018-08-11 11:33:39 +02:00
PeterKietzmann
20397c5b15 cortexm_common: add SRAM based PRNG seeder 2018-07-04 17:55:16 +02:00
938677cc83 cpu*: fix doxygen grouping 2018-06-11 19:12:02 +02:00
smlng
34ade00db9 cpu/cortex_common: fix indention in vector table 2018-05-24 11:26:46 +02:00
Joakim Nohlgård
77449aa592
Merge pull request #9103 from gebart/pr/cortexm-vectors-const
cortexm: const ISR vectors
2018-05-11 21:35:12 +02:00
Joakim Nohlgård
4532c348b4 cortexm_common: Adjust ldscript memory segment attributes 2018-05-09 06:44:12 +02:00
Joakim Nohlgård
b8d6bcdb07 cortexm_common: specify load segment instead of load address for .data 2018-05-09 00:41:27 +02:00
Joakim Nohlgård
f073fdb34f cortexm_common: Mark base ISR vector as const 2018-05-09 00:32:28 +02:00
c9c7cd4951 cpu: cortexm_common: use thread_yield_higher() in cortexm_isr_end() 2018-04-13 10:12:39 +02:00
Girts Folkmanis
b9744f698f cortexm_common: don't try to set MEMFAULTENA on ARMv6-M
Before this change, if one tried to build a Cortex-M0+ target that had
an MPU, compilation would fail due to missing
'SCB_SHCSR_MEMFAULTENA_Msk' in SCB structure. Cortex-M0+ is a ARMv6-M
arch (unlike most other targets that have MPU support). ARMv6-M has more
limited support for fault conditions, see ARMv6-M Architecture Reference
Manual, D3.6.2.
2018-03-12 19:57:29 -07:00
Francisco Acosta
ac9328381c cpu/cortexm_common: add NOP after WFI to avoid hardfault on stm32l152 2018-02-12 15:10:34 +01:00
99d484f336 cpu/cortexm_common: select bitarithm_lsb() by available instructions 2018-01-16 23:35:14 +01:00
32c10ae2c9 core, cpu: rename thread_start_threading() -> cpu_switch_context_exit() 2017-11-16 14:40:16 +01:00
86665b71bf cpu: adapt to COREIF_NG removal 2017-11-16 14:40:16 +01:00
f6d7e54228
Merge pull request #7739 from kYc0o/factorise_sam0_ldscripts
ld: refactor sam0 ldscripts
2017-11-13 11:36:25 +01:00
Joakim Nohlgård
e3d5a70e0c cpu/cortexm: Remove leftover _estack declarations
These are leftovers from before the Cortex-M common ISR vectors were
split into vectors_cortexm.c
2017-11-10 15:38:14 +01:00
kYc0o
d25fd647e7 cpu/cortexm_common/ldscripts: add common linker script for cortexm family 2017-11-07 15:05:43 +01:00
kYc0o
4d681ac862 cpu/cortexm_common/Makefile.include: define linker length vars if set 2017-11-07 15:05:43 +01:00
268e763d63 make: move mcuboot related stuff to makefiles/mcuboot.mk 2017-11-07 12:28:41 +01:00
3ec8126c84 cpu: cortexm: provide periph_pm for all cortexm 2017-11-06 12:01:19 +01:00
a20745b6c5 cpu: make use of Makefile.periph 2017-11-06 12:01:19 +01:00
7c9f6a4763
Merge pull request #7907 from gebart/pr/cortexm-fix-hardfault-print
cortexm_common: Correct offset for hardfault stack
2017-11-02 15:59:36 +01:00
b5b970d760 cpu: cortexm: add Makefile.features 2017-11-02 12:59:45 +01:00
Joakim Nohlgård
2f55fdcec4 cortexm_common: Correct offset for hardfault stack
The required space for the hardfault handler is defined by
HARDFAULT_HANDLER_REQUIRED_STACK_SPACE, which is given in bytes,
this length is added to &_sram to find a lower limit on the amount of
stack space that the hard fault handler can work with. The _sram
variable, was mistakenly defined as a uint32_t, which makes &_sram into
a uint32_t*, which through pointer addition, made the required space 4
times as big as it was supposed to. By changing the type of _sram to
uint8_t, the required stack space is correctly computed.

The symptom was that the hardfault handler always reported that the
stack pointer had been corrupted and it was impossible to get any useful
information from the crash text.
2017-10-30 07:08:33 +01:00
14646fb332 Merge pull request #7776 from kaspar030/fix_cortexm_vectors_lto
cpu: cortexm: fix LTO issue for shared vector table
2017-10-21 00:02:48 +02:00
96b1b76ac9 cpu: cortexm: fix LTO issue for shared vector table (see #5774) 2017-10-20 22:19:44 +02:00
167bd30453 all: fix my email address 2017-10-20 15:02:41 +02:00
Hauke Petersen
5920d99752 pm: fix weak-based default implementations
Instead of using `weak` function definitions, this PR handles
default implementations using `PROVIDES_x` defines, allowing
for cpus/pm realted modules to use their own implementations.
2017-10-16 14:27:35 +02:00
Vincent Dupont
dd49f22532 cpu/cortexm_common: use irq_disable/irq_restore 2017-10-06 17:40:47 +02:00
Hauke Petersen
3ede8e9d95 cpu: force size of CPU specific vector table 2017-09-04 15:13:43 +02:00
Hauke Petersen
1a20ef8223 cpu: unified cortex-m base interrupt vector 2017-09-04 15:13:32 +02:00
kYc0o
3b6fad4dde cpu/cortexm_common: add image headers default size 2017-07-17 14:48:30 +02:00
kYc0o
1a52c80bf4 cpu/cortexm_common/ldscripts: add multislot variables 2017-07-17 14:48:28 +02:00
smlng
692cf96297 doc: fix doxygen grouping of cpu periph drivers 2017-06-26 14:42:11 +02:00
Joakim Nohlgård
dc3aa13e90 cortexm_common: Introduce bitbanding macros 2017-06-09 05:19:13 +02:00
Hauke Petersen
fd981dff22 cpu/cortexm: set VTOR for selected M0+ CPUs 2017-06-02 11:53:59 +02:00
0fcc7d3834 cleanup: apply headerguard script output 2017-05-24 17:54:02 +02:00
Hauke Petersen
10a7486246 cpu/cortex_common: added support for Cortex-M7 2017-05-08 09:16:11 +02:00
Hauke Petersen
f875c3efc2 cpu/cortexm: s/cpu_sleep_until_.../cortexm_sle.../ 2017-05-04 13:45:11 +02:00
Vincent Dupont
f656a31e58 cpu/cortexm_common: use linker variable to initialize SCB->VTOR 2017-03-17 18:07:22 +01:00
Hauke Petersen
37d4f44379 cpus: mv vendor headers to include/vendor/. 2017-03-07 08:55:15 +01:00
Michael Andersen
a72df9f015 cpu/cortexm_common: fix periph_pm typo 2017-02-22 15:58:20 -08:00
Joakim Nohlgård
20b184604b cortexm_common: Remove atomic_arch 2017-02-08 16:23:49 +01:00
Hauke Petersen
3da9ceb705 cpu/cortexm: fixed cortexm_sleep() 2017-01-27 13:00:24 +01:00
Oleg Hahm
c5abb08316 Merge pull request #4058 from daniel-k/pr/gdb_threads_openocd
cortex_m: Add debug symbols for OpenOCD/GDB thread support
2017-01-25 17:49:42 +01:00
be7771e0b9 cpu: cortexm_common: add define for number of non-isr exceptions 2017-01-25 10:22:03 +01:00
d8f0eaf127 cpu: cortexm: fix signed<->unsigned compare 2017-01-25 10:10:47 +01:00
d1db946188 Merge pull request #6344 from haukepetersen/opt_pm_misc
pm: misc cleanup and fixes
2017-01-24 14:07:36 +01:00
Oleg Hahm
7ee7801c10 *: remove trailing underscores from header guards 2017-01-19 18:30:53 +01:00
Hauke Petersen
801eeceb59 cpu/cortexm: removed unused pm include in panic.c 2017-01-19 11:05:44 +01:00
Hauke Petersen
409516c4d2 cpu/cortexm: moved pm.c to periph/pm.c 2017-01-19 11:05:44 +01:00
079a6ec5f4 Merge pull request #6346 from haukepetersen/opt_pm_cortexmsleep
cpu/cortexm: added shared cortexm_sleep() function
2017-01-18 10:55:04 +01:00
daniel-k
9d403d95ce cortex_m: Add debug symbols for OpenOCD/GDB thread support 2017-01-16 20:50:35 +01:00
Joakim Nohlgård
8c82d9952b cortexm_common: Fix -Wsign-compare warning in cortexm_init 2017-01-16 08:55:08 +01:00
Joakim Nohlgård
2c5e1065c5 cortexm_common: Fix unused parameter warnings in mpu_configure 2017-01-16 08:55:08 +01:00
Hauke Petersen
ed5d7ac0fd cpu/cortexm: added shared cortexm_sleep() function 2017-01-13 12:26:42 +01:00
807a190e20 cpu: cortexm: adapt to periph/pm 2017-01-12 16:26:01 +01:00
ca7bf15ac4 core: panic: adapt to pariph/pm 2017-01-12 16:26:01 +01:00
0194091673 remove obsolete lpm code 2017-01-12 11:24:15 +01:00
Hauke Petersen
04b246cb01 cpu/cortexm_common: added cortexm_isr_end() function 2016-12-21 11:27:46 +01:00
Ian Martin
299a3eed3b cpu/cortexm_common: simplify ARVALID tests and fix BFARVALID test. 2016-12-01 17:18:06 -05:00
zhuoshuguo
a60fa5b8d3 cpu/cortexm_common: fix include guards. 2016-11-16 11:45:03 +01:00
0dfcefc003 cpu: cortexm_common: fix compile warning 2016-10-27 15:20:56 +02:00
Ian Martin
22b5de86a5 add mpu_stack_guard pseudomodule (just Cortex-M for now)
triggers an exception during stack overflow,
but at a cost of 32-63 bytes of RAM per thread.
2016-10-24 12:40:44 -04:00
Ian Martin
b7bd6b3479 cpu/cortexm_common: add Memory Protection Unit (MPU) driver 2016-10-19 11:12:36 -04:00
Joakim Nohlgård
11c11a5ecf Merge pull request #5727 from kaspar030/fix_panic_compile
cpu: cortexm_common: fix compile warning
2016-10-14 10:08:42 +02:00
3dfafde027 cpu: cortexm_common: fix compile warning 2016-10-07 12:06:43 +02:00
5a03f08f91 cpu: cortexm_common: compile thread_arch.c without LTO 2016-08-29 13:30:17 +02:00
0bd2805b0c cpu: cortexm_common: explicitly define isr_pendsv and isr_svc 2016-08-29 13:30:17 +02:00
Antoine Faure
31e675b359 cpu: cortex_common: Add entry point to tell gdb where to start 2016-07-23 13:27:47 +02:00
Joakim Nohlgård
5cd91bc784 cortexm: Hard fault: Try to output as much as possible even with corrupt stack 2016-07-20 13:25:23 +02:00
Joakim Nohlgård
b02e0eca47 ps: Add current stack pointer and start of stack to isr_stack ps output (DEVELHELP) 2016-07-12 10:17:49 +02:00
Joakim Nohlgård
cb19a4c709 cortexm_common: Fix isr_stack_usage
Refactor and add multiply by word size to get the usage in number of
bytes instead of in number of words.

Verified implementation by manual memory inspection in GDB.
2016-06-20 14:33:17 +02:00
Joakim Nohlgård
4c91121372 Merge pull request #5455 from locicontrols/move-stack
cortexm_common: move the stack to the bottom of RAM
2016-06-20 14:28:10 +02:00
zhuoshuguo
1cbe79a373 CPU: fix include header guards
Fix cpu/lpc2387/include/lpc2387.h
2016-06-08 16:38:20 +02:00
Martine Lenders
9b1ad7820c Merge pull request #5491 from MohmadAyman/isr_stack_usage
cpu: add capability to show stack usage of ISR
2016-06-02 12:31:06 +02:00
MohmadAyman
53df3e8b57 core: cpu: provide function to acquire ISR stack usage 2016-06-01 23:01:35 +02:00
Joakim Nohlgård
9ad9f400e6 cpu/cortexm_common: Remove register keyword from variables
register is deprecated when building C++11 code and removed in C++17,
using it will cause build failures with C++ and -Werror. The register
hint keyword is likely ignored in GCC anyway.
2016-06-01 16:12:38 +02:00
Ian Martin
87e06756a5 cortexm_common: move the stack to the bottom of RAM 2016-05-19 15:55:36 -04:00
Toon Stegen
63c0e9bec6 cortexm_common: print trapped interrupt from ipsr
The IPSR (=Interrupt Program Status Register) contains the exception
type number of the current Interrupt Service Routine. Printing this
out can be useful to detect if a certain interrupt is not implemented.
2016-04-20 11:41:13 +02:00
DipSwitch
b6140f15f3 cpu/cortex-m: Enable STKALIGN to make the Cortex-M keep the stack 8 byte aligned on 4 byte aligned stack pointers 2016-04-07 00:27:26 +02:00
c3f7186d4e unify usage of inline assembly 2016-03-31 22:23:35 +02:00
DipSwitch
64b3957323 cpu/cortexm_common: Fix cpu_sleep_until_event() 2016-03-16 00:23:50 +01:00
Joakim Nohlgård
d8b01a714c cpu/cortexm_common: Doxygen fix for cmsis_gcc.h 2016-03-14 22:16:52 +01:00
Joakim Nohlgård
61c9ba2c64 cpu/cortexm_common: Whitespace fix CMSIS header 2016-03-14 22:08:33 +01:00
Joakim Gebart
bea6cb9f15 cortexm: CMSIS: Add extern "C" to CMSIS headers 2016-03-14 22:05:57 +01:00
Joakim Nohlgård
26f43786b8 cpu/cortexm_common: Update CMSIS v4.5
Original headers unmodified from CMSIS-SP-00300-r4p5-00rel0.zip
2016-03-14 18:16:36 +01:00
6881f65f46 cpu: cortexm*: move cpu_conf.h stuff from cpu.h into cpu_conf_common.h 2016-03-05 18:20:17 +01:00
Martine Lenders
01248f0599 Merge pull request #4944 from gebart/pr/cortexm-irqn-unsigned-int
cpu/cortexm_common: use int for counter in startup IRQn loop
2016-03-04 05:40:51 +01:00
Oleg Hahm
cdd6878fca Merge pull request #4942 from gebart/pr/clang-asm
cpu/cortexm_common: Fix inline asm for ARMv6-M so that it compiles in Clang as well
2016-03-03 12:53:24 +01:00
Joakim Nohlgård
3da2c2d1c1 cpu/cortexm_common: use int for counter in startup IRQn loop 2016-03-02 10:58:59 +01:00