diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2022-11-07 11:33:40 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2022-11-23 11:51:25 +0100 |
commit | 0ca53d06cad2e153e7583c83b68e7bf74cce2947 (patch) | |
tree | b73263181a4327ac6c93907e3f818a66a942e6c7 | |
parent | af3ab6492459a70f9fe572c3a42e6cdb6cbc44c4 (diff) | |
download | barebox-0ca53d06cad2e153e7583c83b68e7bf74cce2947.tar.gz barebox-0ca53d06cad2e153e7583c83b68e7bf74cce2947.tar.xz |
ARM: i.MX: romapi: Hide using NULL pointers from gcc #2
The i.MX ROM API lies in the NULL page. Accessing that results in
compiler warnings like:
include/asm-generic/io.h:27:51: warning: array subscript 0 is outside array bounds of 'volatile unsigned char[0]' [-Warray-bounds]
Use OPTIMIZER_HIDE_VAR() to hide using NULL pointers from the compiler.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | arch/arm/mach-imx/imx50.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-imx/imx53.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-imx/include/mach/vf610.h | 7 |
3 files changed, 10 insertions, 1 deletions
diff --git a/arch/arm/mach-imx/imx50.c b/arch/arm/mach-imx/imx50.c index 20670a7446..e1a743f403 100644 --- a/arch/arm/mach-imx/imx50.c +++ b/arch/arm/mach-imx/imx50.c @@ -21,6 +21,8 @@ static int imx50_silicon_revision(void) u32 rev; u32 mx50_silicon_revision; + OPTIMIZER_HIDE_VAR(rom); + rev = readl(rom + SI_REV); switch (rev) { case 0x10: diff --git a/arch/arm/mach-imx/imx53.c b/arch/arm/mach-imx/imx53.c index 3906a48917..e5da326a7f 100644 --- a/arch/arm/mach-imx/imx53.c +++ b/arch/arm/mach-imx/imx53.c @@ -21,6 +21,8 @@ static int imx53_silicon_revision(void) u32 rev; u32 mx53_silicon_revision; + OPTIMIZER_HIDE_VAR(rom); + rev = readl(rom + SI_REV); switch (rev) { case 0x10: diff --git a/arch/arm/mach-imx/include/mach/vf610.h b/arch/arm/mach-imx/include/mach/vf610.h index 6de300a2a0..505aab0211 100644 --- a/arch/arm/mach-imx/include/mach/vf610.h +++ b/arch/arm/mach-imx/include/mach/vf610.h @@ -15,6 +15,7 @@ #define VF610_CPUTYPE_VF510 0x510 #define VF610_CPUTYPE_VF500 0x500 +#define VF610_ROM_BASE_ADDR 0x0 #define VF610_ROM_VERSION_OFFSET 0x80 static inline int __vf610_cpu_type(void) @@ -39,6 +40,10 @@ static inline int vf610_cpu_type(void) static inline int vf610_cpu_revision(void) { + void __iomem *rom = IOMEM(VF610_ROM_BASE_ADDR); + + OPTIMIZER_HIDE_VAR(rom); + if (!cpu_is_vf610()) return IMX_CHIP_REV_UNKNOWN; @@ -47,7 +52,7 @@ static inline int vf610_cpu_revision(void) * silicon revision on VFxxx cpus, so we just report Mask ROM * version instead */ - return readl(VF610_ROM_VERSION_OFFSET) & 0xff; + return readl(rom + VF610_ROM_VERSION_OFFSET) & 0xff; } u64 vf610_uid(void); |