--- arch/m68k/amiga/config.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) --- a/arch/m68k/amiga/config.c +++ b/arch/m68k/amiga/config.c @@ -104,6 +104,7 @@ static void amiga_reset(void); extern void amiga_init_sound(void); static void amiga_mem_console_write(struct console *co, const char *b, unsigned int count); +static void __init amiga_savekmsg_init(void); #ifdef CONFIG_HEARTBEAT static void amiga_heartbeat(int on); #endif @@ -114,6 +115,8 @@ static struct console amiga_console_driv .index = -1, }; +static int __initdata amiga_enable_debug_mem; + /* * Motherboard Resources present in all Amiga models @@ -459,6 +462,9 @@ void __init config_amiga(void) /* initialize chipram allocator */ amiga_chip_init(); + if (amiga_enable_debug_mem && AMIGAHW_PRESENT(CHIP_RAM)) + amiga_savekmsg_init(); + /* our beloved beeper */ if (AMIGAHW_PRESENT(AMI_AUDIO)) amiga_init_sound(); @@ -777,18 +783,10 @@ static void amiga_mem_console_write(stru } } -static int __init amiga_savekmsg_setup(char *arg) +static void __init amiga_savekmsg_init(void) { static struct resource debug_res = { .name = "Debug" }; - if (!MACH_IS_AMIGA || strcmp(arg, "mem")) - goto done; - - if (!AMIGAHW_PRESENT(CHIP_RAM)) { - printk("Warning: no chipram present for debugging\n"); - goto done; - } - savekmsg = amiga_chip_alloc_res(SAVEKMSG_MAXMEM, &debug_res); savekmsg->magic1 = SAVEKMSG_MAGIC1; savekmsg->magic2 = SAVEKMSG_MAGIC2; @@ -797,6 +795,20 @@ static int __init amiga_savekmsg_setup(c amiga_console_driver.write = amiga_mem_console_write; register_console(&amiga_console_driver); +} + +static int __init amiga_savekmsg_setup(char *arg) +{ + if (!MACH_IS_AMIGA || strcmp(arg, "mem")) + goto done; + + if (!AMIGAHW_PRESENT(CHIP_RAM)) { + printk("Warning: no chipram present for debugging\n"); + amiga_enable_debug_mem = 1; + goto done; + } + + amiga_savekmsg_init(); done: return 0;