mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
sparc32: Fix build with trapbase
Fix the following build errors: irq_32.c:258:7: error: array subscript [16, 79] is outside array bounds of 'struct tt_entry[1] irq_32.c:271:14: error: assignment to 'struct tt_entry *' from incompatible pointer type 'struct tt_entry (*)[] trapbase is a pointer to an array of tt_entry, but the code declared it as a pointer so the compiler see a single entry and not an array. Fix this by modifyinf the declaration to be an array, and modify all users to take the address of the first member. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Acked-by: Randy Dunlap <rdunlap@infradead.org> Tested-by: Randy Dunlap <rdunlap@infradead.org> # build-tested Cc: Andreas Larsson <andreas@gaisler.com> Cc: "David S. Miller" <davem@davemloft.net> Reviewed-by: Andreas Larsson <andreas@gaisler.com> Tested-by: Andreas Larsson <andreas@gaisler.com> Signed-off-by: Andreas Larsson <andreas@gaisler.com> Link: https://lore.kernel.org/r/20240224-sam-fix-sparc32-all-builds-v2-2-1f186603c5c4@ravnborg.org
This commit is contained in:
parent
802a8874a3
commit
7bfba2ca46
@ -268,11 +268,11 @@ int sparc_floppy_request_irq(unsigned int irq, irq_handler_t irq_handler)
|
||||
if (sparc_cpu_model != sparc_leon) {
|
||||
struct tt_entry *trap_table;
|
||||
|
||||
trap_table = &trapbase_cpu1;
|
||||
trap_table = &trapbase_cpu1[0];
|
||||
INSTANTIATE(trap_table)
|
||||
trap_table = &trapbase_cpu2;
|
||||
trap_table = &trapbase_cpu2[0];
|
||||
INSTANTIATE(trap_table)
|
||||
trap_table = &trapbase_cpu3;
|
||||
trap_table = &trapbase_cpu3[0];
|
||||
INSTANTIATE(trap_table)
|
||||
}
|
||||
#endif
|
||||
|
@ -138,10 +138,10 @@ extern unsigned int t_nmi[];
|
||||
extern unsigned int linux_trap_ipi15_sun4d[];
|
||||
extern unsigned int linux_trap_ipi15_sun4m[];
|
||||
|
||||
extern struct tt_entry trapbase;
|
||||
extern struct tt_entry trapbase_cpu1;
|
||||
extern struct tt_entry trapbase_cpu2;
|
||||
extern struct tt_entry trapbase_cpu3;
|
||||
extern struct tt_entry trapbase[];
|
||||
extern struct tt_entry trapbase_cpu1[];
|
||||
extern struct tt_entry trapbase_cpu2[];
|
||||
extern struct tt_entry trapbase_cpu3[];
|
||||
|
||||
extern char cputypval[];
|
||||
|
||||
|
@ -37,7 +37,7 @@ void pt_regs_to_gdb_regs(unsigned long *gdb_regs, struct pt_regs *regs)
|
||||
gdb_regs[GDB_Y] = regs->y;
|
||||
gdb_regs[GDB_PSR] = regs->psr;
|
||||
gdb_regs[GDB_WIM] = 0;
|
||||
gdb_regs[GDB_TBR] = (unsigned long) &trapbase;
|
||||
gdb_regs[GDB_TBR] = (unsigned long) &trapbase[0];
|
||||
gdb_regs[GDB_PC] = regs->pc;
|
||||
gdb_regs[GDB_NPC] = regs->npc;
|
||||
gdb_regs[GDB_FSR] = 0;
|
||||
@ -72,7 +72,7 @@ void sleeping_thread_to_gdb_regs(unsigned long *gdb_regs, struct task_struct *p)
|
||||
|
||||
gdb_regs[GDB_PSR] = t->kpsr;
|
||||
gdb_regs[GDB_WIM] = t->kwim;
|
||||
gdb_regs[GDB_TBR] = (unsigned long) &trapbase;
|
||||
gdb_regs[GDB_TBR] = (unsigned long) &trapbase[0];
|
||||
gdb_regs[GDB_PC] = t->kpc;
|
||||
gdb_regs[GDB_NPC] = t->kpc + 4;
|
||||
gdb_regs[GDB_FSR] = 0;
|
||||
|
@ -245,13 +245,13 @@ void __init leon_smp_done(void)
|
||||
|
||||
/* Free unneeded trap tables */
|
||||
if (!cpu_present(1)) {
|
||||
free_reserved_page(virt_to_page(&trapbase_cpu1));
|
||||
free_reserved_page(virt_to_page(&trapbase_cpu1[0]));
|
||||
}
|
||||
if (!cpu_present(2)) {
|
||||
free_reserved_page(virt_to_page(&trapbase_cpu2));
|
||||
free_reserved_page(virt_to_page(&trapbase_cpu2[0]));
|
||||
}
|
||||
if (!cpu_present(3)) {
|
||||
free_reserved_page(virt_to_page(&trapbase_cpu3));
|
||||
free_reserved_page(virt_to_page(&trapbase_cpu3[0]));
|
||||
}
|
||||
/* Ok, they are spinning and ready to go. */
|
||||
smp_processors_ready = 1;
|
||||
|
@ -67,7 +67,7 @@ static void prom_sync_me(void)
|
||||
__asm__ __volatile__("wr %0, 0x0, %%tbr\n\t"
|
||||
"nop\n\t"
|
||||
"nop\n\t"
|
||||
"nop\n\t" : : "r" (&trapbase));
|
||||
"nop\n\t" : : "r" (&trapbase[0]));
|
||||
|
||||
prom_printf("PROM SYNC COMMAND...\n");
|
||||
show_mem();
|
||||
@ -285,7 +285,7 @@ void __init setup_arch(char **cmdline_p)
|
||||
int i;
|
||||
unsigned long highest_paddr;
|
||||
|
||||
sparc_ttable = &trapbase;
|
||||
sparc_ttable = &trapbase[0];
|
||||
|
||||
/* Initialize PROM console and command line. */
|
||||
*cmdline_p = prom_getbootargs();
|
||||
|
Loading…
Reference in New Issue
Block a user