zephyr/include
Marcus Shawcroft 15bc537712 kernel: Fix ARM irq_lock() ordering bug.
The inline asm definition of irq_lock() on the ARM architecture marks
the ASM as volatile which prevents the compiler from removing the
isntruction but does provide any information to the compiler to
prevent the inline ASM instruction being re-ordered relative to other
instructions.  The instruction used in irq_lock() do not touch memory,
however in order to acheive their intended purpose they must be
ordered relative to other memory access instruction.  This is acheived
by adding the "memory" clobber.

Instances of the compiler inappropriately re-ordering irq_lock() calls
relative to other instructions without this patch can be observed in
the code generated for k_sleep() on NRF51 target boards.

Signed-off-by: Marcus Shawcroft <marcus.shawcroft@arm.com>
Change-Id: I9d42d54cd9a50e8150c10ce6715af7ca2f5cfe51
2016-12-02 15:28:45 +01:00
..
arch kernel: Fix ARM irq_lock() ordering bug. 2016-12-02 15:28:45 +01:00
bluetooth Bluetooth: GATT: Fix using out of scope variable 2016-11-18 07:47:50 +02:00
display drivers: Replace DEV_OK by 0 2016-03-16 19:30:04 -04:00
drivers uart: fix typo in uart_console.h 2016-11-30 15:05:19 +00:00
fs fs: expose generic ramdisk/flash disk access functions 2016-11-09 02:45:45 +00:00
linker unified: Add linker script support for all kernel object types 2016-11-02 21:56:26 +00:00
misc logging: add exeternal hook to sys_log 2016-11-27 23:07:35 -05:00
net net: buf: Add extra logic when debug is enabled 2016-11-28 14:57:44 +00:00
toolchain kernel: Add __unused tag 2016-10-03 20:22:05 +00:00
usb usb: Add end-point stall APIs and flow control APIS 2016-11-09 02:45:46 +00:00
adc.h drivers/adc: Make references to driver_api const 2016-10-24 22:22:20 +00:00
aio_comparator.h aio_cmp_qmsi: Add get_pending_int API 2016-11-03 21:30:02 +00:00
atomic.h doc: Various corrections to doxygen info for Kernel APIs 2016-11-16 21:43:16 +00:00
cache.h cache: add implementation for cache-less systems 2016-02-05 20:25:24 -05:00
clock_control.h drivers/clock_control: Make references to driver_api const 2016-10-24 22:22:21 +00:00
counter.h counter: Fix interface 2016-11-30 14:39:10 +00:00
device.h kernel: deprecate old init levels 2016-11-09 17:59:44 +00:00
disk_access.h include: Add a generic disk interface 2016-11-09 02:45:44 +00:00
dma.h dma.h: add missing includes 2016-11-10 01:04:27 +00:00
eth.h drivers/eth: Make references to driver_api const 2016-10-24 22:22:22 +00:00
flash.h drivers/flash: Make references to driver_api const 2016-10-24 22:22:26 +00:00
fs.h fs: Make API naming adhere to the appropriate namespace 2016-10-31 08:08:10 +02:00
gpio.h gpio: Add doxygen markup for internal only definitions. 2016-11-22 17:01:27 +00:00
i2c.h drivers/i2c: Make references to driver_api const 2016-10-24 22:22:25 +00:00
init.h kernel: deprecate old init levels 2016-11-09 17:59:44 +00:00
ipm.h drivers/ipm: Make references to driver_api const 2016-10-24 22:22:25 +00:00
irq_offload.h doc: Fix misuse of @file doxygen tag 2016-02-11 20:11:03 +00:00
irq.h doc: Fix up API description for IRQ_CONNECT() 2016-11-18 02:31:33 +00:00
kernel_version.h kernel: Allow SYS_KERNEL_VER_MAJOR(), etc. return full range of values. 2016-10-22 10:04:00 +00:00
kernel.h kernel: add emphasis to nano_sem_take/k_sem_take return code difference 2016-12-01 17:57:23 +00:00
legacy.h kernel: add emphasis to nano_sem_take/k_sem_take return code difference 2016-12-01 17:57:23 +00:00
linker-defs.h kernel/arch: consolidate tTCS and TNANO definitions 2016-11-12 07:04:52 -05:00
linker-tool-gcc.h x86 link: Specify ALIGN_WITH_INPUT for XIP data sections 2016-10-01 01:41:50 +00:00
linker-tool.h
microkernel.h include: remove old kernel defintions 2016-11-07 11:32:57 -08:00
nanokernel.h include: remove old kernel defintions 2016-11-07 11:32:57 -08:00
pinmux.h drivers/pinmux: Make references to driver_api const 2016-10-24 22:22:24 +00:00
power.h power_mgmt: Rename _sys_soc_resume notification disabling API 2016-11-11 20:40:54 +00:00
pwm.h drivers: pwm: re-design pwm API interfaces 2016-10-31 20:01:04 +00:00
rtc.h rtc_qmsi: Add get_pending_int API 2016-11-03 21:30:21 +00:00
section_tags.h
sections.h
sensor.h drivers/sensor: Make references to driver_api const 2016-10-24 22:22:23 +00:00
shared_irq.h drivers/shared_irq: Make references to driver_api const 2016-10-24 22:22:23 +00:00
spi.h drivers/spi: Make references to driver_api const 2016-10-24 22:22:20 +00:00
sw_isr_table.h nios2: add static interrupt handling code 2016-06-22 16:42:21 +00:00
sys_clock.h doc: Add descriptions for clock-related helper macros 2016-11-18 02:31:35 +00:00
sys_io.h sys_io: don't allow negative bit offsets 2016-03-04 16:26:21 +00:00
toolchain.h doc: revert unnamed union/struct workaround in favour of known-issues 2016-07-01 21:53:45 +00:00
uart.h serial: fix up uart_poll_in docstring 2016-11-16 22:57:30 +00:00
watchdog.h drivers/watchdog: Make references to driver_api const. 2016-10-24 22:22:19 +00:00
zephyr.h include: remove old kernel defintions 2016-11-07 11:32:57 -08:00