diff options
author | Max Filippov <jcmvbkbc@gmail.com> | 2020-02-01 06:33:28 +0100 |
---|---|---|
committer | Max Filippov <jcmvbkbc@gmail.com> | 2023-08-29 03:25:23 +0200 |
commit | 03ce34cf8f50e4c62f9a4b62caffdba1165ca977 (patch) | |
tree | ae0a4ae9bce6a357a4332051d79625ac3db41a62 /arch/xtensa/include | |
parent | xtensa: PMU: fix base address for the newer hardware (diff) | |
download | linux-03ce34cf8f50e4c62f9a4b62caffdba1165ca977.tar.xz linux-03ce34cf8f50e4c62f9a4b62caffdba1165ca977.zip |
xtensa: add XIP-aware MTD support
Add Kconfig symbol, asm/mtd-xip.h header and define related macros:
xip_cpu_idle, xip_irqpending, xip_currtime and xip_elapsed_since.
Append .xiptext to the vectors when separate vectors are configured
because otherwise they are appended to the data and data may not even be
executable in XIP configuration.
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Diffstat (limited to 'arch/xtensa/include')
-rw-r--r-- | arch/xtensa/include/asm/mtd-xip.h | 14 | ||||
-rw-r--r-- | arch/xtensa/include/asm/sections.h | 4 |
2 files changed, 18 insertions, 0 deletions
diff --git a/arch/xtensa/include/asm/mtd-xip.h b/arch/xtensa/include/asm/mtd-xip.h new file mode 100644 index 000000000000..514325155cf8 --- /dev/null +++ b/arch/xtensa/include/asm/mtd-xip.h @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#ifndef _ASM_MTD_XIP_H +#define _ASM_MTD_XIP_H + +#include <asm/processor.h> + +#define xip_irqpending() (xtensa_get_sr(interrupt) & xtensa_get_sr(intenable)) +#define xip_currtime() (xtensa_get_sr(ccount)) +#define xip_elapsed_since(x) ((xtensa_get_sr(ccount) - (x)) / 1000) /* should work up to 1GHz */ +#define xip_cpu_idle() do { asm volatile ("waiti 0"); } while (0) + +#endif /* _ASM_MTD_XIP_H */ + diff --git a/arch/xtensa/include/asm/sections.h b/arch/xtensa/include/asm/sections.h index 3bc6b9afa993..e5da6d7092be 100644 --- a/arch/xtensa/include/asm/sections.h +++ b/arch/xtensa/include/asm/sections.h @@ -34,6 +34,10 @@ extern char _SecondaryResetVector_text_start[]; extern char _SecondaryResetVector_text_end[]; #endif #ifdef CONFIG_XIP_KERNEL +#ifdef CONFIG_VECTORS_ADDR +extern char _xip_text_start[]; +extern char _xip_text_end[]; +#endif extern char _xip_start[]; extern char _xip_end[]; #endif |