mirror of
https://github.com/openwrt/openwrt.git
synced 2025-03-22 12:05:32 +00:00
brcm63xx: fix build with GCC 8.3
Fixes the following build error when building when using GCC 8.3: In file included from ./include/linux/string.h:19, from ./include/linux/bitmap.h:9, from ./include/linux/cpumask.h:12, from ./arch/mips/include/asm/processor.h:15, from ./arch/mips/include/asm/thread_info.h:16, from ./include/linux/thread_info.h:38, from ./include/asm-generic/preempt.h:5, from ./arch/mips/include/generated/asm/preempt.h:1, from ./include/linux/preempt.h:81, from ./include/linux/spinlock.h:51, from ./include/linux/mmzone.h:8, from ./include/linux/bootmem.h:8, from arch/mips/bcm63xx/prom.c:10: arch/mips/bcm63xx/prom.c: In function 'prom_init': ./arch/mips/include/asm/string.h:162:11: error: '__builtin_memcpy' forming offset [2, 32] is out of the bounds [0, 1] of object 'bmips_smp_movevec' with type 'char' [-Werror=array-bounds] __ret = __builtin_memcpy((dst), (src), __len); \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/mips/bcm63xx/prom.c:97:3: note: in expansion of macro 'memcpy' memcpy((void *)0xa0000200, &bmips_smp_movevec, 0x20); ^~~~~~ In file included from arch/mips/bcm63xx/prom.c:14: ./arch/mips/include/asm/bmips.h:80:13: note: 'bmips_smp_movevec' declared here extern char bmips_smp_movevec; Reported-by: Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
This commit is contained in:
parent
2dd1755fe4
commit
4f86397022
@ -0,0 +1,93 @@
|
||||
From badf0fc9f7dc72d06a47357123c7d97dc45792f5 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
Date: Tue, 15 Oct 2019 23:27:10 +0200
|
||||
Subject: [PATCH v2] MIPS: bmips: mark exception vectors as char arrays
|
||||
|
||||
The vectors span more than one byte, so mark them as arrays.
|
||||
|
||||
Fixes the following build error when building when using GCC 8.3:
|
||||
|
||||
In file included from ./include/linux/string.h:19,
|
||||
from ./include/linux/bitmap.h:9,
|
||||
from ./include/linux/cpumask.h:12,
|
||||
from ./arch/mips/include/asm/processor.h:15,
|
||||
from ./arch/mips/include/asm/thread_info.h:16,
|
||||
from ./include/linux/thread_info.h:38,
|
||||
from ./include/asm-generic/preempt.h:5,
|
||||
from ./arch/mips/include/generated/asm/preempt.h:1,
|
||||
from ./include/linux/preempt.h:81,
|
||||
from ./include/linux/spinlock.h:51,
|
||||
from ./include/linux/mmzone.h:8,
|
||||
from ./include/linux/bootmem.h:8,
|
||||
from arch/mips/bcm63xx/prom.c:10:
|
||||
arch/mips/bcm63xx/prom.c: In function 'prom_init':
|
||||
./arch/mips/include/asm/string.h:162:11: error: '__builtin_memcpy' forming offset [2, 32] is out of the bounds [0, 1] of object 'bmips_smp_movevec' with type 'char' [-Werror=array-bounds]
|
||||
__ret = __builtin_memcpy((dst), (src), __len); \
|
||||
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
arch/mips/bcm63xx/prom.c:97:3: note: in expansion of macro 'memcpy'
|
||||
memcpy((void *)0xa0000200, &bmips_smp_movevec, 0x20);
|
||||
^~~~~~
|
||||
In file included from arch/mips/bcm63xx/prom.c:14:
|
||||
./arch/mips/include/asm/bmips.h:80:13: note: 'bmips_smp_movevec' declared here
|
||||
extern char bmips_smp_movevec;
|
||||
|
||||
Fixes: 18a1eef92dcd ("MIPS: BMIPS: Introduce bmips.h")
|
||||
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
---
|
||||
|
||||
v1 -> v2:
|
||||
* Actually update the callers as well, to not break the build in a
|
||||
different way.
|
||||
|
||||
arch/mips/bcm63xx/prom.c | 2 +-
|
||||
arch/mips/include/asm/bmips.h | 10 +++++-----
|
||||
arch/mips/kernel/smp-bmips.c | 8 ++++----
|
||||
3 files changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
--- a/arch/mips/bcm63xx/prom.c
|
||||
+++ b/arch/mips/bcm63xx/prom.c
|
||||
@@ -84,7 +84,7 @@ void __init prom_init(void)
|
||||
* Here we will start up CPU1 in the background and ask it to
|
||||
* reconfigure itself then go back to sleep.
|
||||
*/
|
||||
- memcpy((void *)0xa0000200, &bmips_smp_movevec, 0x20);
|
||||
+ memcpy((void *)0xa0000200, bmips_smp_movevec, 0x20);
|
||||
__sync();
|
||||
set_c0_cause(C_SW0);
|
||||
cpumask_set_cpu(1, &bmips_booted_mask);
|
||||
--- a/arch/mips/include/asm/bmips.h
|
||||
+++ b/arch/mips/include/asm/bmips.h
|
||||
@@ -75,11 +75,11 @@ static inline int register_bmips_smp_ops
|
||||
#endif
|
||||
}
|
||||
|
||||
-extern char bmips_reset_nmi_vec;
|
||||
-extern char bmips_reset_nmi_vec_end;
|
||||
-extern char bmips_smp_movevec;
|
||||
-extern char bmips_smp_int_vec;
|
||||
-extern char bmips_smp_int_vec_end;
|
||||
+extern char bmips_reset_nmi_vec[];
|
||||
+extern char bmips_reset_nmi_vec_end[];
|
||||
+extern char bmips_smp_movevec[];
|
||||
+extern char bmips_smp_int_vec[];
|
||||
+extern char bmips_smp_int_vec_end[];
|
||||
|
||||
extern int bmips_smp_enabled;
|
||||
extern int bmips_cpu_offset;
|
||||
--- a/arch/mips/kernel/smp-bmips.c
|
||||
+++ b/arch/mips/kernel/smp-bmips.c
|
||||
@@ -457,10 +457,10 @@ static void bmips_wr_vec(unsigned long d
|
||||
|
||||
static inline void bmips_nmi_handler_setup(void)
|
||||
{
|
||||
- bmips_wr_vec(BMIPS_NMI_RESET_VEC, &bmips_reset_nmi_vec,
|
||||
- &bmips_reset_nmi_vec_end);
|
||||
- bmips_wr_vec(BMIPS_WARM_RESTART_VEC, &bmips_smp_int_vec,
|
||||
- &bmips_smp_int_vec_end);
|
||||
+ bmips_wr_vec(BMIPS_NMI_RESET_VEC, bmips_reset_nmi_vec,
|
||||
+ bmips_reset_nmi_vec_end);
|
||||
+ bmips_wr_vec(BMIPS_WARM_RESTART_VEC, bmips_smp_int_vec,
|
||||
+ bmips_smp_int_vec_end);
|
||||
}
|
||||
|
||||
struct reset_vec_info {
|
Loading…
x
Reference in New Issue
Block a user