diff -urN linuxppc_2_4.orig/arch/ppc/config.in linuxppc_2_4/arch/ppc/config.in --- linuxppc_2_4.orig/arch/ppc/config.in Fri Mar 9 16:50:00 2001 +++ linuxppc_2_4/arch/ppc/config.in Fri Mar 9 16:28:18 2001 @@ -86,6 +86,12 @@ APUS CONFIG_APUS" PowerMac/PReP/MTX/CHRP fi +if [ "$CONFIG_6xx" = "y" -o \ + "$CONFIG_4xx" = "y" -o \ + "$CONFIG_8xx" = "y" ]; then + bool 'PPCBoot support' CONFIG_PPCBOOT +fi + if [ "$CONFIG_PPC64BRIDGE" != "y" ]; then bool 'Workarounds for PPC601 bugs' CONFIG_PPC601_SYNC_FIX fi Binary files linuxppc_2_4.orig/image.fads823 and linuxppc_2_4/image.fads823 differ diff -urN linuxppc_2_4.orig/include/asm-ppc/bseip.h linuxppc_2_4/include/asm-ppc/bseip.h --- linuxppc_2_4.orig/include/asm-ppc/bseip.h Thu Mar 8 05:00:19 2001 +++ linuxppc_2_4/include/asm-ppc/bseip.h Fri Mar 9 16:38:54 2001 @@ -8,6 +8,9 @@ #ifndef __MACH_BSEIP_DEFS #define __MACH_BSEIP_DEFS +#ifdef CONFIG_PPCBOOT +#include +#else /* A Board Information structure that is given to a program when * prom starts it up. */ @@ -19,6 +22,7 @@ unsigned char bi_enetaddr[6]; unsigned int bi_baudrate; } bd_t; +#endif /* CONFIG_PPCBOOT */ extern bd_t m8xx_board_info; diff -urN linuxppc_2_4.orig/include/asm-ppc/est8260.h linuxppc_2_4/include/asm-ppc/est8260.h --- linuxppc_2_4.orig/include/asm-ppc/est8260.h Thu Mar 8 05:00:11 2001 +++ linuxppc_2_4/include/asm-ppc/est8260.h Fri Mar 9 16:39:20 2001 @@ -7,7 +7,9 @@ #define IMAP_ADDR ((uint)0xf0000000) - +#ifdef CONFIG_PPCBOOT +#include +#else /* A Board Information structure that is given to a program when * prom starts it up. */ @@ -23,6 +25,7 @@ unsigned int bi_immr; /* IMMR when called from boot rom */ unsigned char bi_enetaddr[6]; } bd_t; +#endif /* CONFIG_PPCBOOT */ extern bd_t m8xx_board_info; diff -urN linuxppc_2_4.orig/include/asm-ppc/fads.h linuxppc_2_4/include/asm-ppc/fads.h --- linuxppc_2_4.orig/include/asm-ppc/fads.h Fri Mar 9 16:50:00 2001 +++ linuxppc_2_4/include/asm-ppc/fads.h Fri Mar 9 16:41:53 2001 @@ -8,6 +8,9 @@ #ifndef __MACH_FADS_DEFS #define __MACH_FADS_DEFS +#ifdef CONFIG_PPCBOOT +#include +#else /* A Board Information structure that is given to a program when * prom starts it up. */ @@ -19,6 +22,7 @@ unsigned char bi_enetaddr[6]; unsigned int bi_baudrate; } bd_t; +#endif /* CONFIG_PPCBOOT */ extern bd_t m8xx_board_info; diff -urN linuxppc_2_4.orig/include/asm-ppc/ivms8.h linuxppc_2_4/include/asm-ppc/ivms8.h --- linuxppc_2_4.orig/include/asm-ppc/ivms8.h Thu Mar 8 05:00:18 2001 +++ linuxppc_2_4/include/asm-ppc/ivms8.h Fri Mar 9 16:42:01 2001 @@ -9,6 +9,9 @@ #ifndef __ASSEMBLY__ +#ifdef CONFIG_PPCBOOT +#include +#else typedef void (interrupt_handler_t)(void *); typedef struct serial_io { @@ -46,6 +49,7 @@ serial_io_t bi_serial_io; /* Addr of monitor fnc for Console I/O */ intr_util_t bi_interrupt; /* Addr of monitor fnc for Interrupts */ } bd_t; +#endif /* CONFIG_PPCBOOT */ #endif /* __ASSEMBLY__ */ diff -urN linuxppc_2_4.orig/include/asm-ppc/mbx.h linuxppc_2_4/include/asm-ppc/mbx.h --- linuxppc_2_4.orig/include/asm-ppc/mbx.h Thu Mar 8 05:00:12 2001 +++ linuxppc_2_4/include/asm-ppc/mbx.h Fri Mar 9 16:42:16 2001 @@ -11,6 +11,9 @@ #ifndef __MACH_MBX_DEFS #define __MACH_MBX_DEFS +#ifdef CONFIG_PPCBOOT +#include +#else /* A Board Information structure that is given to a program when * EPPC-Bug starts it up. */ @@ -27,6 +30,7 @@ unsigned int bi_dlun; /* Boot device logical dev */ unsigned int bi_baudrate; /* ...to be like everyone else */ } bd_t; +#endif /* CONFIG_PPCBOOT */ /* Memory map for the MBX as configured by EPPC-Bug. We could reprogram * The SIU and PCI bridge, and try to use larger MMU pages, but the diff -urN linuxppc_2_4.orig/include/asm-ppc/ppcboot.h linuxppc_2_4/include/asm-ppc/ppcboot.h --- linuxppc_2_4.orig/include/asm-ppc/ppcboot.h Wed Dec 31 16:00:00 1969 +++ linuxppc_2_4/include/asm-ppc/ppcboot.h Fri Mar 9 15:59:58 2001 @@ -0,0 +1,82 @@ +/* + * (C) Copyright 2000 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef _PPCBOOT_H_ +#define _PPCBOOT_H_ 1 + +typedef void (interrupt_handler_t)(void *); + +typedef struct monitor_functions { + int (*getc)(void); + int (*tstc)(void); + void (*putc)(const char c); + void (*puts)(const char *s); + void (*printf)(const char *fmt, ...); + void (*install_hdlr)(int, interrupt_handler_t *, void *); + void (*free_hdlr)(int); + void *(*malloc)(size_t); + void (*free)(void *); +} mon_fnc_t; + +/* A Board Information structure that is given to a program when + * ppcboot starts it up. + */ +typedef struct bd_info { + unsigned long bi_memstart; /* start of DRAM memory */ + unsigned long bi_memsize; /* size of DRAM memory in bytes */ + unsigned long bi_flashstart; /* start of FLASH memory */ + unsigned long bi_flashsize; /* size of FLASH memory */ + unsigned long bi_flashoffset; /* reserved area for startup monitor */ + unsigned long bi_sramstart; /* start of SRAM memory */ + unsigned long bi_sramsize; /* size of SRAM memory */ +#if defined(CONFIG_8xx) || defined(CONFIG_8260) + unsigned long bi_immr_base; /* base of IMMR register */ +#endif + unsigned long bi_bootflags; /* boot / reboot flag (for LynxOS) */ + unsigned long bi_ip_addr; /* IP Address */ + unsigned char bi_enetaddr[6]; /* Ethernet adress */ + unsigned short bi_ethspeed; /* Ethernet speed in Mbps */ + unsigned long bi_intfreq; /* Internal Freq, in MHz */ + unsigned long bi_busfreq; /* Bus Freq, in MHz */ +#if defined(CONFIG_8260) + unsigned long bi_cpmfreq; /* CPM_CLK Freq, in MHz */ + unsigned long bi_brgfreq; /* BRG_CLK Freq, in MHz */ + unsigned long bi_sccfreq; /* SCC_CLK Freq, in MHz */ + unsigned long bi_vco; /* VCO Out from PLL, in MHz */ +#endif + unsigned long bi_baudrate; /* Console Baudrate */ +#if defined(CONFIG_PPC405) + unsigned char bi_s_version[4]; /* Version of this structure */ + unsigned char bi_r_version[32]; /* Version of the ROM (IBM) */ + unsigned int bi_procfreq; /* CPU (Internal) Freq, in Hz */ + unsigned int bi_plb_busfreq; /* PLB Bus speed, in Hz */ + unsigned int bi_pci_busfreq; /* PCI Bus speed, in Hz */ + unsigned char bi_pci_enetaddr[6]; /* PCI Ethernet MAC address */ +#endif +#if defined(CONFIG_HYMOD) + hymod_conf_t bi_hymod_conf; /* hymod configuration information */ +#endif + mon_fnc_t *bi_mon_fnc; /* Pointer to monitor functions */ +} bd_t; + +#endif /* _PPCBOOT_H_ */ diff -urN linuxppc_2_4.orig/include/asm-ppc/rpxclassic.h linuxppc_2_4/include/asm-ppc/rpxclassic.h --- linuxppc_2_4.orig/include/asm-ppc/rpxclassic.h Thu Mar 8 05:00:35 2001 +++ linuxppc_2_4/include/asm-ppc/rpxclassic.h Fri Mar 9 16:42:30 2001 @@ -11,6 +11,9 @@ #include +#ifdef CONFIG_PPCBOOT +#include +#else /* A Board Information structure that is given to a program when * prom starts it up. */ @@ -22,6 +25,7 @@ unsigned char bi_enetaddr[6]; unsigned int bi_baudrate; } bd_t; +#endif /* CONFIG_PPCBOOT */ extern bd_t m8xx_board_info; diff -urN linuxppc_2_4.orig/include/asm-ppc/rpxlite.h linuxppc_2_4/include/asm-ppc/rpxlite.h --- linuxppc_2_4.orig/include/asm-ppc/rpxlite.h Thu Mar 8 05:00:20 2001 +++ linuxppc_2_4/include/asm-ppc/rpxlite.h Fri Mar 9 16:42:49 2001 @@ -9,6 +9,9 @@ #ifndef __MACH_RPX_DEFS #define __MACH_RPX_DEFS +#ifdef CONFIG_PPCBOOT +#include +#else /* A Board Information structure that is given to a program when * prom starts it up. */ @@ -20,6 +23,7 @@ unsigned char bi_enetaddr[6]; unsigned int bi_baudrate; } bd_t; +#endif /* CONFIG_PPCBOOT */ extern bd_t m8xx_board_info; diff -urN linuxppc_2_4.orig/include/asm-ppc/spd8xx.h linuxppc_2_4/include/asm-ppc/spd8xx.h --- linuxppc_2_4.orig/include/asm-ppc/spd8xx.h Thu Mar 8 05:00:13 2001 +++ linuxppc_2_4/include/asm-ppc/spd8xx.h Fri Mar 9 16:43:11 2001 @@ -9,6 +9,9 @@ #ifndef __ASSEMBLY__ +#ifdef CONFIG_PPCBOOT +#include +#else typedef void (interrupt_handler_t)(void *); typedef struct serial_io { @@ -46,6 +49,7 @@ serial_io_t bi_serial_io; /* Addr of monitor fnc for Console I/O */ intr_util_t bi_interrupt; /* Addr of monitor fnc for Interrupts */ } bd_t; +#endif /* CONFIG_PPCBOOT */ #endif /* __ASSEMBLY__ */ diff -urN linuxppc_2_4.orig/include/asm-ppc/tqm8xx.h linuxppc_2_4/include/asm-ppc/tqm8xx.h --- linuxppc_2_4.orig/include/asm-ppc/tqm8xx.h Thu Mar 8 05:00:20 2001 +++ linuxppc_2_4/include/asm-ppc/tqm8xx.h Fri Mar 9 16:43:41 2001 @@ -14,6 +14,9 @@ #ifndef __ASSEMBLY__ +#ifdef CONFIG_PPCBOOT +#include +#else typedef void (interrupt_handler_t)(void *); typedef struct serial_io { @@ -51,6 +54,7 @@ serial_io_t bi_serial_io; /* Addr of monitor fnc for Console I/O */ intr_util_t bi_interrupt; /* Addr of monitor fnc for Interrupts */ } bd_t; +#endif /* CONFIG_PPCBOOT */ #endif /* __ASSEMBLY__ */