[MIPS] Qemu: Add early printk, your friend in a cold night.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
a8049c53cd
commit
a57c228935
@ -361,10 +361,10 @@ config QEMU
|
|||||||
select PCSPEAKER
|
select PCSPEAKER
|
||||||
select SWAP_IO_SPACE
|
select SWAP_IO_SPACE
|
||||||
select SYS_HAS_CPU_MIPS32_R1
|
select SYS_HAS_CPU_MIPS32_R1
|
||||||
|
select SYS_HAS_EARLY_PRINTK
|
||||||
select SYS_SUPPORTS_32BIT_KERNEL
|
select SYS_SUPPORTS_32BIT_KERNEL
|
||||||
select SYS_SUPPORTS_BIG_ENDIAN
|
select SYS_SUPPORTS_BIG_ENDIAN
|
||||||
select SYS_SUPPORTS_LITTLE_ENDIAN
|
select SYS_SUPPORTS_LITTLE_ENDIAN
|
||||||
select ARCH_SPARSEMEM_ENABLE
|
|
||||||
select GENERIC_HARDIRQS_NO__DO_IRQ
|
select GENERIC_HARDIRQS_NO__DO_IRQ
|
||||||
select NR_CPUS_DEFAULT_1
|
select NR_CPUS_DEFAULT_1
|
||||||
select SYS_SUPPORTS_SMP
|
select SYS_SUPPORTS_SMP
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
obj-y = q-firmware.o q-irq.o q-mem.o q-setup.o q-reset.o
|
obj-y = q-firmware.o q-irq.o q-mem.o q-setup.o q-reset.o
|
||||||
|
|
||||||
obj-$(CONFIG_SMP) += q-smp.o
|
obj-$(CONFIG_EARLY_PRINTK) += q-console.o
|
||||||
|
obj-$(CONFIG_SMP) += q-smp.o
|
||||||
|
|
||||||
EXTRA_CFLAGS += -Werror
|
EXTRA_CFLAGS += -Werror
|
||||||
|
26
arch/mips/qemu/q-console.c
Normal file
26
arch/mips/qemu/q-console.c
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#include <linux/console.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/serial_reg.h>
|
||||||
|
#include <asm/io.h>
|
||||||
|
|
||||||
|
#define PORT(offset) (0x3f8 + (offset))
|
||||||
|
|
||||||
|
static inline unsigned int serial_in(int offset)
|
||||||
|
{
|
||||||
|
return inb(PORT(offset));
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void serial_out(int offset, int value)
|
||||||
|
{
|
||||||
|
outb(value, PORT(offset));
|
||||||
|
}
|
||||||
|
|
||||||
|
int prom_putchar(char c)
|
||||||
|
{
|
||||||
|
while ((serial_in(UART_LSR) & UART_LSR_THRE) == 0)
|
||||||
|
;
|
||||||
|
|
||||||
|
serial_out(UART_TX, c);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
@ -2,6 +2,9 @@
|
|||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <asm/addrspace.h>
|
#include <asm/addrspace.h>
|
||||||
#include <asm/bootinfo.h>
|
#include <asm/bootinfo.h>
|
||||||
|
#include <asm/io.h>
|
||||||
|
|
||||||
|
#define QEMU_PORT_BASE 0xb4000000
|
||||||
|
|
||||||
void __init prom_init(void)
|
void __init prom_init(void)
|
||||||
{
|
{
|
||||||
@ -15,4 +18,7 @@ void __init prom_init(void)
|
|||||||
} else {
|
} else {
|
||||||
add_memory_region(0x0<<20, 0x10<<20, BOOT_MEM_RAM);
|
add_memory_region(0x0<<20, 0x10<<20, BOOT_MEM_RAM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
set_io_port_base(QEMU_PORT_BASE);
|
||||||
}
|
}
|
||||||
|
@ -6,8 +6,6 @@
|
|||||||
|
|
||||||
extern void qemu_reboot_setup(void);
|
extern void qemu_reboot_setup(void);
|
||||||
|
|
||||||
#define QEMU_PORT_BASE 0xb4000000
|
|
||||||
|
|
||||||
const char *get_system_type(void)
|
const char *get_system_type(void)
|
||||||
{
|
{
|
||||||
return "Qemu";
|
return "Qemu";
|
||||||
@ -20,6 +18,5 @@ void __init plat_time_init(void)
|
|||||||
|
|
||||||
void __init plat_mem_setup(void)
|
void __init plat_mem_setup(void)
|
||||||
{
|
{
|
||||||
set_io_port_base(QEMU_PORT_BASE);
|
|
||||||
qemu_reboot_setup();
|
qemu_reboot_setup();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user