|
From: Dave A. <ai...@us...> - 2003-06-10 01:49:31
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/ppc/boot/common
In directory sc8-pr-cvs1:/tmp/cvs-serv23180/arch/ppc/boot/common
Modified Files:
misc-simple.c ns16550.c
Log Message:
DA: sync to Marcelo 2.4.18 + remove init_mmap (no longer needed)
Index: misc-simple.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/boot/common/misc-simple.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- misc-simple.c 10 Apr 2002 15:03:59 -0000 1.1
+++ misc-simple.c 10 Jun 2003 01:46:00 -0000 1.2
@@ -45,6 +45,15 @@
char *cmd_line = cmd_buf;
unsigned long initrd_start = 0, initrd_end = 0;
+
+/* These values must be variables. If not, the compiler optimizer
+ * will remove some code, causing the size of the code to vary
+ * when these values are zero. This is bad because we first
+ * compile with these zero to determine the size and offsets
+ * in an image, than compile again with these set to the proper
+ * discovered value.
+ */
+unsigned int initrd_offset, initrd_size;
char *zimage_start;
int zimage_size;
@@ -69,7 +78,8 @@
* were relocated to.
*/
puts("loaded at: "); puthex(load_addr);
- puts(" "); puthex((unsigned long)(load_addr + (4*num_words))); puts("\n");
+ puts(" "); puthex((unsigned long)(load_addr + (4*num_words)));
+ puts("\n");
if ( (unsigned long)load_addr != (unsigned long)&start )
{
puts("relocated to: "); puthex((unsigned long)&start);
@@ -82,45 +92,38 @@
the size of the elf header which we strip -- Cort */
zimage_start = (char *)(load_addr - 0x10000 + ZIMAGE_OFFSET);
zimage_size = ZIMAGE_SIZE;
+ initrd_offset = INITRD_OFFSET;
+ initrd_size = INITRD_SIZE;
- if ( INITRD_OFFSET )
- initrd_start = load_addr - 0x10000 + INITRD_OFFSET;
+ if ( initrd_offset )
+ initrd_start = load_addr - 0x10000 + initrd_offset;
else
initrd_start = 0;
- initrd_end = INITRD_SIZE + initrd_start;
+ initrd_end = initrd_size + initrd_start;
- /*
- * Find a place to stick the zimage and initrd and
- * relocate them if we have to. -- Cort
- */
+ /* Relocate the zImage */
avail_ram = (char *)PAGE_ALIGN((unsigned long)_end);
puts("zimage at: "); puthex((unsigned long)zimage_start);
- puts(" "); puthex((unsigned long)(zimage_size+zimage_start)); puts("\n");
- if ( (unsigned long)zimage_start <= 0x00800000 )
- {
- memcpy( (void *)avail_ram, (void *)zimage_start, zimage_size );
- zimage_start = (char *)avail_ram;
- puts("relocated to: "); puthex((unsigned long)zimage_start);
- puts(" ");
- puthex((unsigned long)zimage_size+(unsigned long)zimage_start);
- puts("\n");
+ puts(" "); puthex((unsigned long)(zimage_size+zimage_start));
+ puts("\n");
+ memcpy( (void *)avail_ram, (void *)zimage_start, zimage_size );
+ zimage_start = (char *)avail_ram;
+ puts("relocated to: "); puthex((unsigned long)zimage_start);
+ puts(" ");
+ puthex((unsigned long)zimage_size+(unsigned long)zimage_start);
+ puts("\n");
- /* relocate initrd */
- if ( initrd_start )
- {
- puts("initrd at: "); puthex(initrd_start);
- puts(" "); puthex(initrd_end); puts("\n");
- avail_ram = (char *)PAGE_ALIGN(
- (unsigned long)zimage_size+(unsigned long)zimage_start);
- memcpy ((void *)avail_ram, (void *)initrd_start, INITRD_SIZE );
- initrd_start = (unsigned long)avail_ram;
- initrd_end = initrd_start + INITRD_SIZE;
- puts("relocated to: "); puthex(initrd_start);
- puts(" "); puthex(initrd_end); puts("\n");
- }
- } else if ( initrd_start ) {
+ if ( initrd_start ) {
puts("initrd at: "); puthex(initrd_start);
puts(" "); puthex(initrd_end); puts("\n");
+ /* relocate initrd */
+ avail_ram = (char *)PAGE_ALIGN((unsigned long)zimage_size +
+ (unsigned long)zimage_start);
+ memcpy( (void *)avail_ram, (void *)initrd_start, initrd_size );
+ initrd_start = (unsigned long)avail_ram;
+ initrd_end = initrd_start + initrd_size;
+ puts("relocated to: "); puthex(initrd_start);
+ puts(" "); puthex(initrd_end); puts("\n");
}
avail_ram = (char *)0x00400000;
@@ -161,11 +164,9 @@
puts("\n");
/* mappings on early boot can only handle 16M */
- if ( (int)(cmd_line[0]) > (16<<20))
+ if ( (u32)(cmd_line) > (16<<20))
puts("cmd_line located > 16M\n");
- if ( initrd_start > (16<<20))
- puts("initrd_start located > 16M\n");
-
+
puts("Uncompressing Linux...");
gunzip(0, 0x400000, zimage_start, &zimage_size);
Index: ns16550.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/ppc/boot/common/ns16550.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ns16550.c 10 Apr 2002 15:03:59 -0000 1.1
+++ ns16550.c 10 Jun 2003 01:46:00 -0000 1.2
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.ns16550.c 1.9 07/30/01 17:19:40 trini
+ * BK Id: SCCS/s.ns16550.c 1.12 10/08/01 17:16:50 paulus
*/
/*
* COM1 NS16550 support
@@ -10,6 +10,9 @@
#include <linux/serial_reg.h>
#include <asm/serial.h>
+/* Default serial baud rate */
+#define SERIAL_BAUD 9600
+
extern void outb(int port, unsigned char val);
extern unsigned char inb(int port);
extern unsigned long ISA_io;
@@ -46,13 +49,20 @@
outb(com_port + (UART_IER << shift), 0x00);
/* Access baud rate */
outb(com_port + (UART_LCR << shift), 0x80);
-#ifdef CONFIG_SERIAL_CONSOLE_NONSTD
- /* Input clock. */
- outb(com_port + (UART_DLL << shift),
- (BASE_BAUD / CONFIG_SERIAL_CONSOLE_BAUD));
- outb(com_port + (UART_DLM << shift),
- (BASE_BAUD / CONFIG_SERIAL_CONSOLE_BAUD) >> 8);
-#endif
+ /*
+ * Test if serial port is unconfigured.
+ * We assume that no-one uses less than 110 baud or
+ * less than 7 bits per character these days.
+ * -- paulus.
+ */
+ if (inb(com_port + (UART_DLM << shift)) > 4
+ || (inb(com_port + (UART_LCR << shift)) & 2) == 0) {
+ /* Input clock. */
+ outb(com_port + (UART_DLL << shift),
+ (BASE_BAUD / SERIAL_BAUD));
+ outb(com_port + (UART_DLM << shift),
+ (BASE_BAUD / SERIAL_BAUD) >> 8);
+ }
/* 8 data, 1 stop, no parity */
outb(com_port + (UART_LCR << shift), 0x03);
/* RTS/DTR */
|