mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-09-22 22:11:38 +08:00
MIPS: early_printk: drop __init annotations
We cannot use __init for earlyprintk code or data, since the kernel parameter "keep_bootcon" allows leaving the boot console enabled. Currently MIPS will crash/hang/die if you use keep_bootcon. The patch fixes it at least on Lemote FuLoong mini-PC. Changes for other boards were done based on what I could find with grep... Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi> Patchwork: http://patchwork.linux-mips.org/patch/4935/ Signed-off-by: John Crispin <blogic@openwrt.org>
This commit is contained in:
parent
1e7decdb27
commit
f7be4e754b
@ -10,7 +10,7 @@
|
|||||||
#include <bcm63xx_io.h>
|
#include <bcm63xx_io.h>
|
||||||
#include <bcm63xx_regs.h>
|
#include <bcm63xx_regs.h>
|
||||||
|
|
||||||
static void __init wait_xfered(void)
|
static void wait_xfered(void)
|
||||||
{
|
{
|
||||||
unsigned int val;
|
unsigned int val;
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ static void __init wait_xfered(void)
|
|||||||
} while (1);
|
} while (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init prom_putchar(char c)
|
void prom_putchar(char c)
|
||||||
{
|
{
|
||||||
wait_xfered();
|
wait_xfered();
|
||||||
bcm_uart0_writel(c, UART_FIFO_REG);
|
bcm_uart0_writel(c, UART_FIFO_REG);
|
||||||
|
@ -14,8 +14,7 @@
|
|||||||
|
|
||||||
extern void prom_putchar(char);
|
extern void prom_putchar(char);
|
||||||
|
|
||||||
static void __init
|
static void early_console_write(struct console *con, const char *s, unsigned n)
|
||||||
early_console_write(struct console *con, const char *s, unsigned n)
|
|
||||||
{
|
{
|
||||||
while (n-- && *s) {
|
while (n-- && *s) {
|
||||||
if (*s == '\n')
|
if (*s == '\n')
|
||||||
@ -25,7 +24,7 @@ early_console_write(struct console *con, const char *s, unsigned n)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct console early_console __initdata = {
|
static struct console early_console = {
|
||||||
.name = "early",
|
.name = "early",
|
||||||
.write = early_console_write,
|
.write = early_console_write,
|
||||||
.flags = CON_PRINTBUFFER | CON_BOOT,
|
.flags = CON_PRINTBUFFER | CON_BOOT,
|
||||||
|
@ -73,7 +73,7 @@ void __init prom_free_prom_memory(void)
|
|||||||
|
|
||||||
#define PORT(offset) (u8 *)(KSEG1ADDR(LS1X_UART0_BASE + offset))
|
#define PORT(offset) (u8 *)(KSEG1ADDR(LS1X_UART0_BASE + offset))
|
||||||
|
|
||||||
void __init prom_putchar(char c)
|
void prom_putchar(char c)
|
||||||
{
|
{
|
||||||
int timeout;
|
int timeout;
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ static inline struct ioc3_uartregs *console_uart(void)
|
|||||||
return &ioc3->sregs.uarta;
|
return &ioc3->sregs.uarta;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init prom_putchar(char c)
|
void prom_putchar(char c)
|
||||||
{
|
{
|
||||||
struct ioc3_uartregs *uart = console_uart();
|
struct ioc3_uartregs *uart = console_uart();
|
||||||
|
|
||||||
|
@ -513,19 +513,19 @@ void __init txx9_sio_init(unsigned long baseaddr, int irq,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_EARLY_PRINTK
|
#ifdef CONFIG_EARLY_PRINTK
|
||||||
static void __init null_prom_putchar(char c)
|
static void null_prom_putchar(char c)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
void (*txx9_prom_putchar)(char c) __initdata = null_prom_putchar;
|
void (*txx9_prom_putchar)(char c) = null_prom_putchar;
|
||||||
|
|
||||||
void __init prom_putchar(char c)
|
void prom_putchar(char c)
|
||||||
{
|
{
|
||||||
txx9_prom_putchar(c);
|
txx9_prom_putchar(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __iomem *early_txx9_sio_port;
|
static void __iomem *early_txx9_sio_port;
|
||||||
|
|
||||||
static void __init early_txx9_sio_putchar(char c)
|
static void early_txx9_sio_putchar(char c)
|
||||||
{
|
{
|
||||||
#define TXX9_SICISR 0x0c
|
#define TXX9_SICISR 0x0c
|
||||||
#define TXX9_SITFIFO 0x1c
|
#define TXX9_SITFIFO 0x1c
|
||||||
|
Loading…
Reference in New Issue
Block a user