summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2022-11-07 11:33:40 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2022-11-23 11:51:25 +0100
commit0ca53d06cad2e153e7583c83b68e7bf74cce2947 (patch)
treeb73263181a4327ac6c93907e3f818a66a942e6c7
parentaf3ab6492459a70f9fe572c3a42e6cdb6cbc44c4 (diff)
downloadbarebox-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.c2
-rw-r--r--arch/arm/mach-imx/imx53.c2
-rw-r--r--arch/arm/mach-imx/include/mach/vf610.h7
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);