linux/debian/patches/bugfix/m68k/2.6.24/amiga-debug=mem.diff

75 lines
1.9 KiB
Diff

---
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
@@ -109,6 +109,7 @@ static void amiga_mem_console_write(stru
unsigned int count);
void amiga_serial_console_write(struct console *co, const char *s,
unsigned int count);
+static void __init amiga_savekmsg_init(void);
#ifdef CONFIG_HEARTBEAT
static void amiga_heartbeat(int on);
#endif
@@ -119,6 +120,8 @@ static struct console amiga_console_driv
.index = -1,
};
+static int __initdata amiga_enable_debug_mem;
+
/*
* Motherboard Resources present in all Amiga models
@@ -465,6 +468,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();
@@ -783,18 +789,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;
@@ -803,6 +801,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;