zephyr/lib/os
Andy Ross 668bb3cb22 lib/os/heap: Compiler bug workaround on ARC
This is a workaround for a compiler bug on (at least) GCC 12.1.0 in
Zephyr SDK 0.15.1.  The optimizer generates this function with a last
instruction that is an unconditional branch (a tail call into the
chunk_set() handling).  But that means that the NEXT instruction gets
decoded as part of the branch delay slot, but that instruction isn't
part of this function!  Some instructions aren't legal in branch delay
slots.  One of those is ENTER_S, which is a very common entry
instruction for whatever function the linker places after us.  It
seems like the compiler doesn't understand this problem.  Stuff a NOP
in to guarantee the code is legal.

Comment above is duplicated in the code.  The workaround is
straightforward once the issue is understood, but the path to get here
was hilariously weird.

Fixes #54720

Signed-off-by: Andy Ross <andyross@google.com>
2023-02-10 14:32:26 -05:00
..
CMakeLists.txt lib: os: add CRC shell command for integrity verification 2022-11-29 09:32:28 +01:00
Kconfig lib: os: add CRC shell command for integrity verification 2022-11-29 09:32:28 +01:00
Kconfig.cbprintf lib: os: cbprintf: Mechanism for detecting %p in static package 2022-09-19 10:14:23 +00:00
Kconfig.heap lib/os: add statistics tracking to mem_blocks 2022-07-12 13:59:26 +00:00
assert.c includes: prefer <zephyr/kernel.h> over <zephyr/zephyr.h> 2022-09-05 16:31:47 +02:00
base64.c lib: migrate includes to <zephyr/...> 2022-05-06 19:58:09 +02:00
bitarray.c lib: bitarray: Remove dead statement 2022-06-06 22:46:37 +02:00
cbprintf.c lib: migrate includes to <zephyr/...> 2022-05-06 19:58:09 +02:00
cbprintf_complete.c coding guidelines: comply with MISRA C:2012 Rule 21.13 2022-06-30 17:34:28 -04:00
cbprintf_nano.c lib: os: cbprint: enable tagged arguments for packaging 2022-06-08 00:15:55 +09:00
cbprintf_packaged.c lib: os: cbprintf: Mechanism for detecting %p in static package 2022-09-19 10:14:23 +00:00
crc7_sw.c lib: migrate includes to <zephyr/...> 2022-05-06 19:58:09 +02:00
crc8_sw.c lib: migrate includes to <zephyr/...> 2022-05-06 19:58:09 +02:00
crc16_sw.c lib: migrate includes to <zephyr/...> 2022-05-06 19:58:09 +02:00
crc32_sw.c coding guidelines: comply with MISRA C:2012 Rule 7.2 2022-06-14 13:36:14 -04:00
crc32c_sw.c lib: migrate includes to <zephyr/...> 2022-05-06 19:58:09 +02:00
crc_shell.c posix: getopt: move declarations to unistd.h 2022-12-04 14:51:52 +01:00
dec.c lib: migrate includes to <zephyr/...> 2022-05-06 19:58:09 +02:00
fdtable.c lib: os: Fix note on fdtable.c 2023-01-11 10:54:42 +01:00
heap-validate.c lib/os: use generic mem stats structure for heap 2022-07-12 13:59:26 +00:00
heap.c lib/os/heap: Compiler bug workaround on ARC 2023-02-10 14:32:26 -05:00
heap.h sys: heap: support maximum allocated bytes statistic 2022-04-13 13:27:28 -07:00
heap_listener.c lib: migrate includes to <zephyr/...> 2022-05-06 19:58:09 +02:00
hex.c lib: migrate includes to <zephyr/...> 2022-05-06 19:58:09 +02:00
json.c json: Increase max number of descriptor elements from 30 to 62 2023-01-26 09:51:54 +00:00
mem_blocks.c includes: prefer <zephyr/kernel.h> over <zephyr/zephyr.h> 2022-09-05 16:31:47 +02:00
mpsc_pbuf.c lib: os: mpsc_pbuf: Fix concurrency issues 2022-12-29 10:33:29 +01:00
multi_heap.c lib: add mising braces to single line if statements 2022-07-06 11:00:45 -04:00
mutex.c lib: migrate includes to <zephyr/...> 2022-05-06 19:58:09 +02:00
notify.c lib: migrate includes to <zephyr/...> 2022-05-06 19:58:09 +02:00
onoff.c lib: os: Remove unneeded assignment 2022-06-23 15:43:59 -05:00
p4wq.c lib: os: p4wq: Convert CONFIG_MP_NUM_CPUS handling 2022-10-31 17:08:34 +01:00
printk.c lib/printk: Use picolibc's vfprintf instead of cbvprintf 2022-06-24 20:30:03 +02:00
rb.c lib: rb: Remove unneeded statement 2022-06-05 14:49:37 +02:00
reboot.c lib: os: reboot: include zephyr/cache.h 2023-01-24 14:35:49 +00:00
ring_buffer.c lib: ring_buf: Make code consistent 2022-06-06 22:46:43 +02:00
sem.c lib: migrate includes to <zephyr/...> 2022-05-06 19:58:09 +02:00
shared_multi_heap.c includes: prefer <zephyr/kernel.h> over <zephyr/zephyr.h> 2022-09-05 16:31:47 +02:00
spsc_pbuf.c spsc_pbuf: Fix cache wb in spsc_pbuf_free 2022-12-07 10:21:33 +00:00
thread_entry.c lib: migrate includes to <zephyr/...> 2022-05-06 19:58:09 +02:00
timeutil.c lib: migrate includes to <zephyr/...> 2022-05-06 19:58:09 +02:00
user_work.c lib: migrate includes to <zephyr/...> 2022-05-06 19:58:09 +02:00
utf8.c zephyr: Fix n=0 for utf8_lcpy 2022-07-04 15:49:22 +02:00
winstream.c lib/os: winstream: properly include string.h for memcpy 2022-06-21 14:02:13 -04:00