One of the problems in development of a kernel for a new machine type is early kernel hangs. Without feed back from the kernel it is difficult to understand what is going wrong. To combat this you can enable under "kernel hacking" the option for "kernel low-level debugging functions". The will enable the usage of the printascii() function. This writes hard coded information directly to the sa-1100 uarts. In order to make maxium usage of the printascii() function it is nessary to modify the printk() function so that all console messages are sent to the uart. Here is an example of the printk() modified with the addition of the printascii() function: The printk function is defined in linux/kernel/printk.c asmlinkage int printk(const char *fmt, ...) { va_list args; int i; char *msg, *p, *buf_end; int line_feed; static signed char msg_level = -1; long flags; spin_lock_irqsave(&console_lock, flags); va_start(args, fmt); i = vsprintf(buf + 3, fmt, args); /* hopefully i < sizeof(buf)-4 */ buf_end = buf + 3 + i; va_end(args); printascii(buf+3); for (p = buf + 3; p < buf_end; p++) { msg = p; if (msg_level < 0) { Additionaly you may need to modify the arch/arm/kernel/debug-armv.S so that the out is pointed to the correct uart. #elif defined(CONFIG_ARCH_SA1100) .macro addruart,rx mrc p15, 0, \rx, c1, c0 tst \rx, #1 @ MMU enabled? moveq \rx, #0x80000000 @ physical base address movne \rx, #0xf8000000 @ virtual address @add \rx, \rx, #0x00050000 @ Ser3 add \rx, \rx, #0x00010000 @ Ser1 .endm in this example the printascii() result will be sent to Ser1 and Ser3 is commented out. UPDATE: it has been reported that some kernel versions don't work with the original modification of printk(), however erikm has provided this - Index: kernel/printk.c =================================================================== RCS file: /home/erik/cvsroot/elinux/kernel/printk.c,v retrieving revision 1.1.1.94 diff -u -r1.1.1.94 printk.c --- kernel/printk.c 2001/09/12 02:00:04 1.1.1.94 +++ kernel/printk.c 2001/09/18 16:32:33 @@ -412,6 +412,8 @@ printed_len = vsnprintf(printk_buf, sizeof(printk_buf), fmt, args); va_end(args); + printascii(printk_buf); + /* * Copy the output into log_buf. If the caller didn't provide * appropriate log level tags, we insert them here