From: Thomas Petazzoni Date: Wed, 4 Dec 2013 21:11:00 +0000 (+0100) Subject: grub: bump to 0.97-67 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a79ea8a60bd43f968e5235deffe6bff7ed140c94;p=buildroot.git grub: bump to 0.97-67 Bump to a more recent version of the Debian patches for grub legacy, that fix an incorrect build with gcc 4.6. Fixes #6092 and #2629. Signed-off-by: Thomas Petazzoni Signed-off-by: Peter Korsgaard --- diff --git a/boot/grub/grub.200-fix_mbr_handling.patch b/boot/grub/grub.200-fix_mbr_handling.patch index fdee0ef877..21e200f172 100644 --- a/boot/grub/grub.200-fix_mbr_handling.patch +++ b/boot/grub/grub.200-fix_mbr_handling.patch @@ -1,8 +1,10 @@ ---- grub-0.97.oorig/stage2/disk_io.c 2004-05-23 18:35:24.000000000 +0200 -+++ grub-0.97/stage2/disk_io.c 2006-03-12 14:11:51.000000000 +0100 -@@ -365,7 +365,7 @@ rawwrite (int drive, int sector, char *b +Index: b/stage2/disk_io.c +=================================================================== +--- a/stage2/disk_io.c ++++ b/stage2/disk_io.c +@@ -365,7 +365,7 @@ int - devwrite (int sector, int sector_count, char *buf) + devwrite (unsigned int sector, int sector_count, char *buf) { -#if defined(GRUB_UTIL) && defined(__linux__) +#if defined(GRUB_UTIL) && defined(__linux__) && !defined(SUPPORT_LOOPDEV) diff --git a/boot/grub/grub.300-honor_UCLIBC_HAS_LFS.patch b/boot/grub/grub.300-honor_UCLIBC_HAS_LFS.patch index 5b941865ba..8ed9d76c36 100644 --- a/boot/grub/grub.300-honor_UCLIBC_HAS_LFS.patch +++ b/boot/grub/grub.300-honor_UCLIBC_HAS_LFS.patch @@ -1,6 +1,7 @@ -diff -rup grub-0.97.orig/grub/asmstub.c grub-0.97/grub/asmstub.c ---- grub-0.97.orig/grub/asmstub.c 2006-11-29 20:36:20.000000000 +0100 -+++ grub-0.97/grub/asmstub.c 2006-11-29 21:26:16.000000000 +0100 +Index: b/grub/asmstub.c +=================================================================== +--- a/grub/asmstub.c ++++ b/grub/asmstub.c @@ -18,10 +18,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ @@ -15,9 +16,10 @@ diff -rup grub-0.97.orig/grub/asmstub.c grub-0.97/grub/asmstub.c /* Simulator entry point. */ int grub_stage2 (void); -diff -rup grub-0.97.orig/lib/device.c grub-0.97/lib/device.c ---- grub-0.97.orig/lib/device.c 2006-11-29 20:36:20.000000000 +0100 -+++ grub-0.97/lib/device.c 2006-11-29 21:25:19.000000000 +0100 +Index: b/lib/device.c +=================================================================== +--- a/lib/device.c ++++ b/lib/device.c @@ -18,10 +18,13 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ diff --git a/boot/grub/grub.400-nic_update2.patch b/boot/grub/grub.400-nic_update2.patch index 064c953f09..5e3c16d46c 100644 --- a/boot/grub/grub.400-nic_update2.patch +++ b/boot/grub/grub.400-nic_update2.patch @@ -7,9 +7,10 @@ Description: Adds support for Forcedeth and other NIC's Fixes for GCC 4.x Removal of bad network drivers -diff -Naur grub-0.97.orig/configure grub-0.97/configure ---- grub-0.97.orig/configure 2005-05-08 02:48:12.000000000 +0000 -+++ grub-0.97/configure 2005-09-01 00:15:48.000000000 +0000 +Index: b/configure +=================================================================== +--- a/configure ++++ b/configure @@ -872,47 +872,32 @@ --disable-packet-retransmission turn off packet retransmission @@ -66,9 +67,9 @@ diff -Naur grub-0.97.orig/configure grub-0.97/configure set the default memory location for WD/SMC - --enable-cs-scan=LIST probe for CS89x0 base address using LIST --enable-diskless enable diskless support + --disable-graphics disable graphics terminal support --disable-hercules disable hercules terminal support - --disable-serial disable serial terminal support -@@ -5559,7 +5544,7 @@ +@@ -5537,7 +5522,7 @@ fi; if test "x$enable_packet_retransmission" != xno; then @@ -77,7 +78,7 @@ diff -Naur grub-0.97.orig/configure grub-0.97/configure fi # Check whether --enable-pci-direct or --disable-pci-direct was given. -@@ -5571,26 +5556,6 @@ +@@ -5549,26 +5534,6 @@ NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCONFIG_PCI_DIRECT=1" fi @@ -104,7 +105,7 @@ diff -Naur grub-0.97.orig/configure grub-0.97/configure # Check whether --enable-3c595 or --disable-3c595 was given. if test "${enable_3c595+set}" = set; then enableval="$enable_3c595" -@@ -5611,16 +5576,6 @@ +@@ -5589,16 +5554,6 @@ NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c90x.o" fi @@ -121,7 +122,7 @@ diff -Naur grub-0.97.orig/configure grub-0.97/configure # Check whether --enable-davicom or --disable-davicom was given. if test "${enable_davicom+set}" = set; then enableval="$enable_davicom" -@@ -5631,24 +5586,14 @@ +@@ -5609,24 +5564,14 @@ NETBOOT_DRIVERS="$NETBOOT_DRIVERS davicom.o" fi @@ -152,7 +153,7 @@ diff -Naur grub-0.97.orig/configure grub-0.97/configure fi # Check whether --enable-eepro100 or --disable-eepro100 was given. -@@ -5671,64 +5616,14 @@ +@@ -5649,64 +5594,14 @@ NETBOOT_DRIVERS="$NETBOOT_DRIVERS epic100.o" fi @@ -223,7 +224,7 @@ diff -Naur grub-0.97.orig/configure grub-0.97/configure fi # Check whether --enable-natsemi or --disable-natsemi was given. -@@ -5741,34 +5636,14 @@ +@@ -5719,34 +5614,14 @@ NETBOOT_DRIVERS="$NETBOOT_DRIVERS natsemi.o" fi @@ -264,7 +265,7 @@ diff -Naur grub-0.97.orig/configure grub-0.97/configure fi # Check whether --enable-ns8390 or --disable-ns8390 was given. -@@ -5781,24 +5656,24 @@ +@@ -5759,24 +5634,24 @@ NETBOOT_DRIVERS="$NETBOOT_DRIVERS ns8390.o" fi @@ -301,7 +302,7 @@ diff -Naur grub-0.97.orig/configure grub-0.97/configure fi # Check whether --enable-rtl8139 or --disable-rtl8139 was given. -@@ -5811,6 +5686,16 @@ +@@ -5789,6 +5664,16 @@ NETBOOT_DRIVERS="$NETBOOT_DRIVERS rtl8139.o" fi @@ -318,7 +319,7 @@ diff -Naur grub-0.97.orig/configure grub-0.97/configure # Check whether --enable-sis900 or --disable-sis900 was given. if test "${enable_sis900+set}" = set; then enableval="$enable_sis900" -@@ -5821,34 +5706,14 @@ +@@ -5799,34 +5684,14 @@ NETBOOT_DRIVERS="$NETBOOT_DRIVERS sis900.o" fi @@ -359,7 +360,7 @@ diff -Naur grub-0.97.orig/configure grub-0.97/configure fi # Check whether --enable-tulip or --disable-tulip was given. -@@ -5861,6 +5726,16 @@ +@@ -5839,6 +5704,16 @@ NETBOOT_DRIVERS="$NETBOOT_DRIVERS tulip.o" fi @@ -376,7 +377,7 @@ diff -Naur grub-0.97.orig/configure grub-0.97/configure # Check whether --enable-via-rhine or --disable-via-rhine was given. if test "${enable_via_rhine+set}" = set; then enableval="$enable_via_rhine" -@@ -5895,24 +5770,6 @@ +@@ -5873,24 +5748,6 @@ FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_TFTP=1" fi @@ -401,7 +402,7 @@ diff -Naur grub-0.97.orig/configure grub-0.97/configure # Check whether --enable-compex-rl2000-fix or --disable-compex-rl2000-fix was given. if test "${enable_compex_rl2000_fix+set}" = set; then enableval="$enable_compex_rl2000_fix" -@@ -5922,12 +5779,6 @@ +@@ -5900,12 +5757,6 @@ NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCOMPEX_RL2000_FIX=1" fi @@ -414,7 +415,7 @@ diff -Naur grub-0.97.orig/configure grub-0.97/configure # Check whether --enable-ne-scan or --disable-ne-scan was given. if test "${enable_ne_scan+set}" = set; then enableval="$enable_ne_scan" -@@ -5944,12 +5795,6 @@ +@@ -5922,12 +5773,6 @@ NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DWD_DEFAULT_MEM=0xCC000" fi; @@ -427,10 +428,11 @@ diff -Naur grub-0.97.orig/configure grub-0.97/configure # Check whether --enable-diskless or --disable-diskless was given. if test "${enable_diskless+set}" = set; then enableval="$enable_diskless" -diff -Naur grub-0.97.orig/configure.ac grub-0.97/configure.ac ---- grub-0.97.orig/configure.ac 2005-05-08 02:36:03.000000000 +0000 -+++ grub-0.97/configure.ac 2005-09-01 00:16:05.000000000 +0000 -@@ -317,7 +317,7 @@ +Index: b/configure.ac +=================================================================== +--- a/configure.ac ++++ b/configure.ac +@@ -344,7 +344,7 @@ [ --disable-packet-retransmission turn off packet retransmission]) if test "x$enable_packet_retransmission" != xno; then @@ -439,7 +441,7 @@ diff -Naur grub-0.97.orig/configure.ac grub-0.97/configure.ac fi AC_ARG_ENABLE(pci-direct, -@@ -327,20 +327,6 @@ +@@ -354,20 +354,6 @@ fi dnl Device drivers. @@ -460,7 +462,7 @@ diff -Naur grub-0.97.orig/configure.ac grub-0.97/configure.ac AC_ARG_ENABLE(3c595, [ --enable-3c595 enable 3Com595 driver]) if test "x$enable_3c595" = xyes; then -@@ -355,13 +341,6 @@ +@@ -382,13 +368,6 @@ NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c90x.o" fi @@ -474,7 +476,7 @@ diff -Naur grub-0.97.orig/configure.ac grub-0.97/configure.ac AC_ARG_ENABLE(davicom, [ --enable-davicom enable Davicom driver]) if test "x$enable_davicom" = xyes; then -@@ -369,18 +348,11 @@ +@@ -396,18 +375,11 @@ NETBOOT_DRIVERS="$NETBOOT_DRIVERS davicom.o" fi @@ -498,7 +500,7 @@ diff -Naur grub-0.97.orig/configure.ac grub-0.97/configure.ac fi AC_ARG_ENABLE(eepro100, -@@ -397,46 +369,11 @@ +@@ -424,46 +396,11 @@ NETBOOT_DRIVERS="$NETBOOT_DRIVERS epic100.o" fi @@ -550,7 +552,7 @@ diff -Naur grub-0.97.orig/configure.ac grub-0.97/configure.ac fi AC_ARG_ENABLE(natsemi, -@@ -446,25 +383,11 @@ +@@ -473,25 +410,11 @@ NETBOOT_DRIVERS="$NETBOOT_DRIVERS natsemi.o" fi @@ -581,7 +583,7 @@ diff -Naur grub-0.97.orig/configure.ac grub-0.97/configure.ac fi AC_ARG_ENABLE(ns8390, -@@ -474,18 +397,18 @@ +@@ -501,18 +424,18 @@ NETBOOT_DRIVERS="$NETBOOT_DRIVERS ns8390.o" fi @@ -610,7 +612,7 @@ diff -Naur grub-0.97.orig/configure.ac grub-0.97/configure.ac fi AC_ARG_ENABLE(rtl8139, -@@ -495,6 +418,13 @@ +@@ -522,6 +445,13 @@ NETBOOT_DRIVERS="$NETBOOT_DRIVERS rtl8139.o" fi @@ -624,7 +626,7 @@ diff -Naur grub-0.97.orig/configure.ac grub-0.97/configure.ac AC_ARG_ENABLE(sis900, [ --enable-sis900 enable SIS 900 and SIS 7016 driver]) if test "x$enable_sis900" = xyes; then -@@ -502,25 +432,11 @@ +@@ -529,25 +459,11 @@ NETBOOT_DRIVERS="$NETBOOT_DRIVERS sis900.o" fi @@ -655,7 +657,7 @@ diff -Naur grub-0.97.orig/configure.ac grub-0.97/configure.ac fi AC_ARG_ENABLE(tulip, -@@ -530,6 +446,13 @@ +@@ -557,6 +473,13 @@ NETBOOT_DRIVERS="$NETBOOT_DRIVERS tulip.o" fi @@ -669,7 +671,7 @@ diff -Naur grub-0.97.orig/configure.ac grub-0.97/configure.ac AC_ARG_ENABLE(via-rhine, [ --enable-via-rhine enable Rhine-I/II driver]) if test "x$enable_via_rhine" = xyes; then -@@ -538,7 +461,7 @@ +@@ -565,7 +488,7 @@ fi AC_ARG_ENABLE(w89c840, @@ -678,7 +680,7 @@ diff -Naur grub-0.97.orig/configure.ac grub-0.97/configure.ac if test "x$enable_w89c840" = xyes; then NET_CFLAGS="$NET_CFLAGS -DINCLUDE_W89C840=1" NETBOOT_DRIVERS="$NETBOOT_DRIVERS w89c840.o" -@@ -550,19 +473,7 @@ +@@ -577,19 +500,7 @@ FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_TFTP=1" fi @@ -699,7 +701,7 @@ diff -Naur grub-0.97.orig/configure.ac grub-0.97/configure.ac AC_ARG_ENABLE(compex-rl2000-fix, [ --enable-compex-rl2000-fix specify this if you have a Compex RL2000 PCI]) -@@ -570,11 +481,6 @@ +@@ -597,11 +508,6 @@ NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCOMPEX_RL2000_FIX=1" fi @@ -711,7 +713,7 @@ diff -Naur grub-0.97.orig/configure.ac grub-0.97/configure.ac AC_ARG_ENABLE(ne-scan, [ --enable-ne-scan=LIST probe for NE base address using LIST], [NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DNE_SCAN=$enable_ne_scan"], -@@ -586,10 +492,6 @@ +@@ -613,10 +519,6 @@ [NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DWD_DEFAULT_MEM=$enable_wd_default_mem"], [NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DWD_DEFAULT_MEM=0xCC000"]) @@ -722,9 +724,10 @@ diff -Naur grub-0.97.orig/configure.ac grub-0.97/configure.ac dnl Diskless AC_ARG_ENABLE(diskless, [ --enable-diskless enable diskless support]) -diff -Naur grub-0.97.orig/netboot/3c509.h grub-0.97/netboot/3c509.h ---- grub-0.97.orig/netboot/3c509.h 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/3c509.h 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/3c509.h +=================================================================== +--- a/netboot/3c509.h ++++ /dev/null @@ -1,397 +0,0 @@ -/* - * Copyright (c) 1993 Herb Peyerl (hpeyerl@novatel.ca) All rights reserved. @@ -1123,9 +1126,10 @@ diff -Naur grub-0.97.orig/netboot/3c509.h grub-0.97/netboot/3c509.h - * c-basic-offset: 8 - * End: - */ -diff -Naur grub-0.97.orig/netboot/3c595.c grub-0.97/netboot/3c595.c ---- grub-0.97.orig/netboot/3c595.c 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/3c595.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/3c595.c +=================================================================== +--- a/netboot/3c595.c ++++ b/netboot/3c595.c @@ -20,6 +20,7 @@ * * Copyright (c) 1994 Herb Peyerl @@ -1317,9 +1321,10 @@ diff -Naur grub-0.97.orig/netboot/3c595.c grub-0.97/netboot/3c595.c /* * Local variables: * c-basic-offset: 8 -diff -Naur grub-0.97.orig/netboot/3c90x.c grub-0.97/netboot/3c90x.c ---- grub-0.97.orig/netboot/3c90x.c 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/3c90x.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/3c90x.c +=================================================================== +--- a/netboot/3c90x.c ++++ b/netboot/3c90x.c @@ -1,7 +1,7 @@ /* * 3c90x.c -- This file implements the 3c90x driver for etherboot. Written @@ -1655,9 +1660,10 @@ diff -Naur grub-0.97.orig/netboot/3c90x.c grub-0.97/netboot/3c90x.c + .id_count = sizeof(a3c90x_nics)/sizeof(a3c90x_nics[0]), + .class = 0, +}; -diff -Naur grub-0.97.orig/netboot/3c90x.txt grub-0.97/netboot/3c90x.txt ---- grub-0.97.orig/netboot/3c90x.txt 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/3c90x.txt 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/3c90x.txt +=================================================================== +--- a/netboot/3c90x.txt ++++ /dev/null @@ -1,307 +0,0 @@ - - Instructions for use of the 3C90X driver for EtherBoot @@ -1966,9 +1972,10 @@ diff -Naur grub-0.97.orig/netboot/3c90x.txt grub-0.97/netboot/3c90x.txt -without this bugfix parameter, to boot the machine from the PROM chip. - -[Any recent Etherboot version should do, not just 4.6.10 - Ed.] -diff -Naur grub-0.97.orig/netboot/Makefile.am grub-0.97/netboot/Makefile.am ---- grub-0.97.orig/netboot/Makefile.am 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/Makefile.am 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/Makefile.am +=================================================================== +--- a/netboot/Makefile.am ++++ b/netboot/Makefile.am @@ -10,58 +10,72 @@ noinst_LIBRARIES = $(LIBDRIVERS) @@ -2310,10 +2317,11 @@ diff -Naur grub-0.97.orig/netboot/Makefile.am grub-0.97/netboot/Makefile.am +undi_o_CFLAGS = -DINCLUDE_UNDI=1 via_rhine_o_CFLAGS = -DINCLUDE_VIA_RHINE=1 w89c840_o_CFLAGS = -DINCLUDE_W89C840=1 -diff -Naur grub-0.97.orig/netboot/Makefile.in grub-0.97/netboot/Makefile.in ---- grub-0.97.orig/netboot/Makefile.in 2005-05-08 02:42:35.000000000 +0000 -+++ grub-0.97/netboot/Makefile.in 2005-09-01 00:14:15.000000000 +0000 -@@ -48,18 +47,51 @@ +Index: b/netboot/Makefile.in +=================================================================== +--- a/netboot/Makefile.in ++++ b/netboot/Makefile.in +@@ -46,18 +46,51 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -2369,7 +2377,7 @@ diff -Naur grub-0.97.orig/netboot/Makefile.in grub-0.97/netboot/Makefile.in COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) -@@ -148,8 +180,6 @@ +@@ -148,8 +181,6 @@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -2378,7 +2386,7 @@ diff -Naur grub-0.97.orig/netboot/Makefile.in grub-0.97/netboot/Makefile.in bindir = @bindir@ build = @build@ build_alias = @build_alias@ -@@ -186,16 +216,19 @@ +@@ -186,16 +217,19 @@ # Don't build the netboot support by default. @NETBOOT_SUPPORT_TRUE@LIBDRIVERS = libdrivers.a noinst_LIBRARIES = $(LIBDRIVERS) @@ -2408,7 +2416,7 @@ diff -Naur grub-0.97.orig/netboot/Makefile.in grub-0.97/netboot/Makefile.in libdrivers_a_CFLAGS = $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ -DFSYS_TFTP=1 $(NET_CFLAGS) $(NET_EXTRAFLAGS) -@@ -203,69 +236,83 @@ +@@ -203,69 +237,83 @@ # Filled by configure. libdrivers_a_LIBADD = @NETBOOT_DRIVERS@ libdrivers_a_DEPENDENCIES = $(libdrivers_a_LIBADD) @@ -2525,7 +2533,7 @@ diff -Naur grub-0.97.orig/netboot/Makefile.in grub-0.97/netboot/Makefile.in tulip_o_CFLAGS = -DINCLUDE_TULIP=1 via_rhine_o_CFLAGS = -DINCLUDE_VIA_RHINE=1 w89c840_o_CFLAGS = -DINCLUDE_W89C840=1 -@@ -316,32 +363,32 @@ +@@ -316,32 +364,32 @@ distclean-compile: -rm -f *.tab.c @@ -2571,7 +2579,7 @@ diff -Naur grub-0.97.orig/netboot/Makefile.in grub-0.97/netboot/Makefile.in @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-timer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-tlan.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdrivers_a-tulip.Po@am__quote@ -@@ -352,450 +399,513 @@ +@@ -352,450 +400,513 @@ @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -3301,7 +3309,7 @@ diff -Naur grub-0.97.orig/netboot/Makefile.in grub-0.97/netboot/Makefile.in ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -@@ -817,11 +927,9 @@ +@@ -817,11 +928,9 @@ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ @@ -3316,7 +3324,7 @@ diff -Naur grub-0.97.orig/netboot/Makefile.in grub-0.97/netboot/Makefile.in ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) -@@ -895,7 +1003,7 @@ +@@ -895,7 +1004,7 @@ clean-generic: distclean-generic: @@ -3325,7 +3333,7 @@ diff -Naur grub-0.97.orig/netboot/Makefile.in grub-0.97/netboot/Makefile.in maintainer-clean-generic: @echo "This command is intended for maintainers to use" -@@ -962,10 +1070,10 @@ +@@ -962,10 +1071,10 @@ # Is it really necessary to specify dependecies explicitly? @@ -3340,7 +3348,7 @@ diff -Naur grub-0.97.orig/netboot/Makefile.in grub-0.97/netboot/Makefile.in $(3c595_drivers): 3c595.c 3c595.h $(3c595_drivers): %.o: 3c595.c -@@ -977,23 +1085,28 @@ +@@ -977,23 +1086,28 @@ $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< @@ -3379,7 +3387,7 @@ diff -Naur grub-0.97.orig/netboot/Makefile.in grub-0.97/netboot/Makefile.in $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< -@@ -1007,28 +1120,38 @@ +@@ -1007,28 +1121,38 @@ $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< @@ -3428,7 +3436,7 @@ diff -Naur grub-0.97.orig/netboot/Makefile.in grub-0.97/netboot/Makefile.in $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< -@@ -1037,41 +1160,62 @@ +@@ -1037,41 +1161,62 @@ $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $< @@ -3505,9 +3513,10 @@ diff -Naur grub-0.97.orig/netboot/Makefile.in grub-0.97/netboot/Makefile.in $(tulip_drivers): tulip.c $(tulip_drivers): %.o: tulip.c $(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ -diff -Naur grub-0.97.orig/netboot/basemem.c grub-0.97/netboot/basemem.c ---- grub-0.97.orig/netboot/basemem.c 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/basemem.c 2005-08-31 19:24:28.000000000 +0000 +Index: b/netboot/basemem.c +=================================================================== +--- /dev/null ++++ b/netboot/basemem.c @@ -0,0 +1,178 @@ +#include "etherboot.h" +#define DEBUG_BASEMEM @@ -3687,9 +3696,10 @@ diff -Naur grub-0.97.orig/netboot/basemem.c grub-0.97/netboot/basemem.c + adjust_real_mode_stack (); +} + -diff -Naur grub-0.97.orig/netboot/big_bswap.h grub-0.97/netboot/big_bswap.h ---- grub-0.97.orig/netboot/big_bswap.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/big_bswap.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/big_bswap.h +=================================================================== +--- /dev/null ++++ b/netboot/big_bswap.h @@ -0,0 +1,17 @@ +#ifndef ETHERBOOT_BIG_BSWAP_H +#define ETHERBOOT_BIG_BSWAP_H @@ -3708,9 +3718,10 @@ diff -Naur grub-0.97.orig/netboot/big_bswap.h grub-0.97/netboot/big_bswap.h +#define be16_to_cpu(x) (x) + +#endif /* ETHERBOOT_BIG_BSWAP_H */ -diff -Naur grub-0.97.orig/netboot/bootp.h grub-0.97/netboot/bootp.h ---- grub-0.97.orig/netboot/bootp.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/bootp.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/bootp.h +=================================================================== +--- /dev/null ++++ b/netboot/bootp.h @@ -0,0 +1,182 @@ +#ifndef _BOOTP_H +#define _BOOTP_H @@ -3894,9 +3905,10 @@ diff -Naur grub-0.97.orig/netboot/bootp.h grub-0.97/netboot/bootp.h +#define BOOTP_DATA_ADDR (&bootp_data) + +#endif /* _BOOTP_H */ -diff -Naur grub-0.97.orig/netboot/byteswap.h grub-0.97/netboot/byteswap.h ---- grub-0.97.orig/netboot/byteswap.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/byteswap.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/byteswap.h +=================================================================== +--- /dev/null ++++ b/netboot/byteswap.h @@ -0,0 +1,20 @@ +#ifndef ETHERBOOT_BYTESWAP_H +#define ETHERBOOT_BYTESWAP_H @@ -3918,9 +3930,10 @@ diff -Naur grub-0.97.orig/netboot/byteswap.h grub-0.97/netboot/byteswap.h +#define bswap_16(x) __bswap_16(x) + +#endif /* ETHERBOOT_BYTESWAP_H */ -diff -Naur grub-0.97.orig/netboot/cards.h grub-0.97/netboot/cards.h ---- grub-0.97.orig/netboot/cards.h 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/cards.h 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/cards.h +=================================================================== +--- a/netboot/cards.h ++++ /dev/null @@ -1,183 +0,0 @@ -#ifndef CARDS_H -#define CARDS_H @@ -4105,9 +4118,10 @@ diff -Naur grub-0.97.orig/netboot/cards.h grub-0.97/netboot/cards.h -#endif - -#endif /* CARDS_H */ -diff -Naur grub-0.97.orig/netboot/config.c grub-0.97/netboot/config.c ---- grub-0.97.orig/netboot/config.c 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/config.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/config.c +=================================================================== +--- a/netboot/config.c ++++ b/netboot/config.c @@ -1,598 +1,165 @@ /* - * GRUB -- GRand Unified Bootloader @@ -4842,9 +4856,10 @@ diff -Naur grub-0.97.orig/netboot/config.c grub-0.97/netboot/config.c + dev->disable = 0; + } } -diff -Naur grub-0.97.orig/netboot/cpu.h grub-0.97/netboot/cpu.h ---- grub-0.97.orig/netboot/cpu.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/cpu.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/cpu.h +=================================================================== +--- /dev/null ++++ b/netboot/cpu.h @@ -0,0 +1,243 @@ +#ifndef I386_BITS_CPU_H +#define I386_BITS_CPU_H @@ -5089,10 +5104,14 @@ diff -Naur grub-0.97.orig/netboot/cpu.h grub-0.97/netboot/cpu.h +#endif + +#endif /* I386_BITS_CPU_H */ -diff -Naur grub-0.97.orig/netboot/cs89x0.c grub-0.97/netboot/cs89x0.c ---- grub-0.97.orig/netboot/cs89x0.c 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/cs89x0.c 1970-01-01 00:00:00.000000000 +0000 -@@ -1,659 +0,0 @@ +Index: b/netboot/cs89x0.c +=================================================================== +--- a/netboot/cs89x0.c ++++ b/netboot/cs89x0.c +@@ -16,662 +16,3 @@ + -- quote from email + **/ + -/* cs89x0.c: A Crystal Semiconductor CS89[02]0 driver for etherboot. */ -/* - Permission is granted to distribute the enclosed cs89x0.[ch] driver @@ -5752,10 +5771,14 @@ diff -Naur grub-0.97.orig/netboot/cs89x0.c grub-0.97/netboot/cs89x0.c - * End: - */ - -diff -Naur grub-0.97.orig/netboot/cs89x0.h grub-0.97/netboot/cs89x0.h ---- grub-0.97.orig/netboot/cs89x0.h 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/cs89x0.h 1970-01-01 00:00:00.000000000 +0000 -@@ -1,461 +0,0 @@ +Index: b/netboot/cs89x0.h +=================================================================== +--- a/netboot/cs89x0.h ++++ b/netboot/cs89x0.h +@@ -16,464 +16,3 @@ + -- quote from email + **/ + -/* Copyright, 1988-1992, Russell Nelson, Crynwr Software - - This program is free software; you can redistribute it and/or modify @@ -6217,9 +6240,10 @@ diff -Naur grub-0.97.orig/netboot/cs89x0.h grub-0.97/netboot/cs89x0.h - * End: - */ - -diff -Naur grub-0.97.orig/netboot/cs89x0.txt grub-0.97/netboot/cs89x0.txt ---- grub-0.97.orig/netboot/cs89x0.txt 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/cs89x0.txt 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/cs89x0.txt +=================================================================== +--- a/netboot/cs89x0.txt ++++ /dev/null @@ -1,26 +0,0 @@ -Permission is granted to distribute the enclosed cs89x0.[ch] driver -only in conjunction with the Etherboot package. The code is @@ -6247,9 +6271,10 @@ diff -Naur grub-0.97.orig/netboot/cs89x0.txt grub-0.97/netboot/cs89x0.txt - for writing the Linux device driver for the CS89x0 - chipset. Russel's code is very well designed and simplified my - job a lot. -diff -Naur grub-0.97.orig/netboot/davicom.c grub-0.97/netboot/davicom.c ---- grub-0.97.orig/netboot/davicom.c 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/davicom.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/davicom.c +=================================================================== +--- a/netboot/davicom.c ++++ b/netboot/davicom.c @@ -1,12 +1,12 @@ +#ifdef ALLMULTI +#error multicast support is not yet implemented @@ -6523,9 +6548,10 @@ diff -Naur grub-0.97.orig/netboot/davicom.c grub-0.97/netboot/davicom.c + .id_count = sizeof(davicom_nics)/sizeof(davicom_nics[0]), + .class = 0, +}; -diff -Naur grub-0.97.orig/netboot/depca.c grub-0.97/netboot/depca.c ---- grub-0.97.orig/netboot/depca.c 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/depca.c 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/depca.c +=================================================================== +--- a/netboot/depca.c ++++ /dev/null @@ -1,752 +0,0 @@ -/* Etherboot: depca.h merged, comments from Linux driver retained */ -/* depca.c: A DIGITAL DEPCA & EtherWORKS ethernet driver for linux. @@ -7279,9 +7305,10 @@ diff -Naur grub-0.97.orig/netboot/depca.c grub-0.97/netboot/depca.c - nic->disable = depca_disable; - return (nic); -} -diff -Naur grub-0.97.orig/netboot/dev.h grub-0.97/netboot/dev.h ---- grub-0.97.orig/netboot/dev.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/dev.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/dev.h +=================================================================== +--- /dev/null ++++ b/netboot/dev.h @@ -0,0 +1,83 @@ +#ifndef _DEV_H +#define _DEV_H @@ -7366,9 +7393,10 @@ diff -Naur grub-0.97.orig/netboot/dev.h grub-0.97/netboot/dev.h +extern void disable(struct dev *dev); + +#endif /* _DEV_H */ -diff -Naur grub-0.97.orig/netboot/e1000.c grub-0.97/netboot/e1000.c ---- grub-0.97.orig/netboot/e1000.c 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/e1000.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/e1000.c +=================================================================== +--- /dev/null ++++ b/netboot/e1000.c @@ -0,0 +1,3682 @@ +/************************************************************************** +Etherboot - BOOTP/TFTP Bootstrap Program @@ -11052,9 +11080,10 @@ diff -Naur grub-0.97.orig/netboot/e1000.c grub-0.97/netboot/e1000.c + .id_count = sizeof(e1000_nics)/sizeof(e1000_nics[0]), + .class = 0, +}; -diff -Naur grub-0.97.orig/netboot/e1000_hw.h grub-0.97/netboot/e1000_hw.h ---- grub-0.97.orig/netboot/e1000_hw.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/e1000_hw.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/e1000_hw.h +=================================================================== +--- /dev/null ++++ b/netboot/e1000_hw.h @@ -0,0 +1,2058 @@ +/******************************************************************************* + @@ -13114,9 +13143,10 @@ diff -Naur grub-0.97.orig/netboot/e1000_hw.h grub-0.97/netboot/e1000_hw.h +#define AUTONEG_ADVERTISE_10_ALL 0x0003 /* 10Mbps Full & Half speeds*/ + +#endif /* _E1000_HW_H_ */ -diff -Naur grub-0.97.orig/netboot/eepro.c grub-0.97/netboot/eepro.c ---- grub-0.97.orig/netboot/eepro.c 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/eepro.c 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/eepro.c +=================================================================== +--- a/netboot/eepro.c ++++ /dev/null @@ -1,586 +0,0 @@ -/************************************************************************** -Etherboot - BOOTP/TFTP Bootstrap Program @@ -13704,9 +13734,10 @@ diff -Naur grub-0.97.orig/netboot/eepro.c grub-0.97/netboot/eepro.c - nic->disable = eepro_disable; - return (nic); -} -diff -Naur grub-0.97.orig/netboot/eepro100.c grub-0.97/netboot/eepro100.c ---- grub-0.97.orig/netboot/eepro100.c 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/eepro100.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/eepro100.c +=================================================================== +--- a/netboot/eepro100.c ++++ b/netboot/eepro100.c @@ -80,8 +80,8 @@ * * Caveats: @@ -14538,9 +14569,10 @@ diff -Naur grub-0.97.orig/netboot/eepro100.c grub-0.97/netboot/eepro100.c + .id_count = sizeof(eepro100_nics)/sizeof(eepro100_nics[0]), + .class = 0 +}; -diff -Naur grub-0.97.orig/netboot/elf.h grub-0.97/netboot/elf.h ---- grub-0.97.orig/netboot/elf.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/elf.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/elf.h +=================================================================== +--- /dev/null ++++ b/netboot/elf.h @@ -0,0 +1,234 @@ +#ifndef ELF_H +#define ELF_H @@ -14776,9 +14808,10 @@ diff -Naur grub-0.97.orig/netboot/elf.h grub-0.97/netboot/elf.h +//#include "elf_boot.h" + +#endif /* ELF_H */ -diff -Naur grub-0.97.orig/netboot/endian.h grub-0.97/netboot/endian.h ---- grub-0.97.orig/netboot/endian.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/endian.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/endian.h +=================================================================== +--- /dev/null ++++ b/netboot/endian.h @@ -0,0 +1,19 @@ +#ifndef ETHERBOOT_ENDIAN_H +#define ETHERBOOT_ENDIAN_H @@ -14799,9 +14832,10 @@ diff -Naur grub-0.97.orig/netboot/endian.h grub-0.97/netboot/endian.h + + +#endif /* ETHERBOOT_ENDIAN_H */ -diff -Naur grub-0.97.orig/netboot/epic100.c grub-0.97/netboot/epic100.c ---- grub-0.97.orig/netboot/epic100.c 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/epic100.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/epic100.c +=================================================================== +--- a/netboot/epic100.c ++++ b/netboot/epic100.c @@ -1,15 +1,18 @@ + /* epic100.c: A SMC 83c170 EPIC/100 fast ethernet driver for Etherboot */ @@ -15198,9 +15232,10 @@ diff -Naur grub-0.97.orig/netboot/epic100.c grub-0.97/netboot/epic100.c + .id_count = sizeof(epic100_nics)/sizeof(epic100_nics[0]), + .class = 0, +}; -diff -Naur grub-0.97.orig/netboot/etherboot.h grub-0.97/netboot/etherboot.h ---- grub-0.97.orig/netboot/etherboot.h 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/etherboot.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/etherboot.h +=================================================================== +--- a/netboot/etherboot.h ++++ b/netboot/etherboot.h @@ -1,6 +1,6 @@ /* * GRUB -- GRand Unified Bootloader @@ -15209,13 +15244,15 @@ diff -Naur grub-0.97.orig/netboot/etherboot.h grub-0.97/netboot/etherboot.h * * 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 -@@ -17,531 +17,45 @@ +@@ -17,528 +17,40 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* RULE: You must define the macro ``GRUB'' when including this header - file in GRUB code. */ -- ++#ifndef ETHERBOOT_H ++#define ETHERBOOT_H + -/* Based on "src/etherboot.h" in etherboot-5.0.5. */ - -/************************************************************************** @@ -15247,36 +15284,31 @@ diff -Naur grub-0.97.orig/netboot/etherboot.h grub-0.97/netboot/etherboot.h - -#ifndef MAX_TFTP_RETRIES -# define MAX_TFTP_RETRIES 20 --#endif -- ++#include "shared.h" ++#include "osdep.h" ++#include "if_ether.h" ++#include "in.h" ++ ++/* Link configuration time in tenths of a second */ ++#ifndef VALID_LINK_TIMEOUT ++#define VALID_LINK_TIMEOUT 100 /* 10.0 seconds */ + #endif + -#ifndef MAX_BOOTP_RETRIES -# define MAX_BOOTP_RETRIES 20 -#endif - -#define MAX_BOOTP_EXTLEN (ETH_FRAME_LEN - ETH_HLEN - \ - sizeof (struct bootp_t)) -+/* -+ * Transport layer to use Etherboot NIC drivers in GRUB. -+ */ - +- -#ifndef MAX_ARP_RETRIES -# define MAX_ARP_RETRIES 20 -#endif -+#ifndef ETHERBOOT_H -+#define ETHERBOOT_H - +- -#ifndef MAX_RPC_RETRIES -# define MAX_RPC_RETRIES 20 -+#include "shared.h" -+#include "osdep.h" -+#include "if_ether.h" -+#include "in.h" -+ -+/* Link configuration time in tenths of a second */ -+#ifndef VALID_LINK_TIMEOUT -+#define VALID_LINK_TIMEOUT 100 /* 10.0 seconds */ - #endif - +-#endif +- -#define TICKS_PER_SEC 18 - -/* Inter-packet retry in ticks */ @@ -15289,8 +15321,7 @@ diff -Naur grub-0.97.orig/netboot/etherboot.h grub-0.97/netboot/etherboot.h -#define TFTP_REXMT (3 * TICKS_PER_SEC) - #ifndef NULL --# define NULL ((void *) 0) -+#define NULL ((void *)0) + # define NULL ((void *) 0) #endif -/* @@ -15741,10 +15772,7 @@ diff -Naur grub-0.97.orig/netboot/etherboot.h grub-0.97/netboot/etherboot.h -extern int network_ready; -extern struct rom_info rom; -extern struct arptable_t arptable[MAX_ARP]; --extern struct bootpd_t bootp_data; --#define BOOTP_DATA_ADDR (&bootp_data) --extern unsigned char *end_of_rfc1533; - +- -/* config.c */ -extern struct nic nic; +#define gateA20_set() gateA20(1) @@ -15774,9 +15802,10 @@ diff -Naur grub-0.97.orig/netboot/etherboot.h grub-0.97/netboot/etherboot.h -# define sprintf etherboot_sprintf -#endif /* GRUB */ +#endif /* ETHERBOOT_H */ -diff -Naur grub-0.97.orig/netboot/fa311.c grub-0.97/netboot/fa311.c ---- grub-0.97.orig/netboot/fa311.c 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/fa311.c 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/fa311.c +=================================================================== +--- a/netboot/fa311.c ++++ /dev/null @@ -1,421 +0,0 @@ -/* - Driver for the National Semiconductor DP83810 Ethernet controller. @@ -16199,9 +16228,10 @@ diff -Naur grub-0.97.orig/netboot/fa311.c grub-0.97/netboot/fa311.c - return; -} - -diff -Naur grub-0.97.orig/netboot/forcedeth.c grub-0.97/netboot/forcedeth.c ---- grub-0.97.orig/netboot/forcedeth.c 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/forcedeth.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/forcedeth.c +=================================================================== +--- /dev/null ++++ b/netboot/forcedeth.c @@ -0,0 +1,1039 @@ +/************************************************************************** +* forcedeth.c -- Etherboot device driver for the NVIDIA nForce @@ -17242,9 +17272,10 @@ diff -Naur grub-0.97.orig/netboot/forcedeth.c grub-0.97/netboot/forcedeth.c + .id_count = sizeof(forcedeth_nics) / sizeof(forcedeth_nics[0]), + .class = 0, +}; -diff -Naur grub-0.97.orig/netboot/fsys_tftp.c grub-0.97/netboot/fsys_tftp.c ---- grub-0.97.orig/netboot/fsys_tftp.c 2004-04-15 11:38:40.000000000 +0000 -+++ grub-0.97/netboot/fsys_tftp.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/fsys_tftp.c +=================================================================== +--- a/netboot/fsys_tftp.c ++++ b/netboot/fsys_tftp.c @@ -29,14 +29,15 @@ /* #define TFTP_DEBUG 1 */ @@ -17465,9 +17496,10 @@ diff -Naur grub-0.97.orig/netboot/fsys_tftp.c grub-0.97/netboot/fsys_tftp.c #ifdef TFTP_DEBUG grub_printf ("send_rrq ()\n"); -diff -Naur grub-0.97.orig/netboot/grub.h grub-0.97/netboot/grub.h ---- grub-0.97.orig/netboot/grub.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/grub.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/grub.h +=================================================================== +--- /dev/null ++++ b/netboot/grub.h @@ -0,0 +1,171 @@ +#ifndef GRUB_H +#define GRUB_H @@ -17640,9 +17672,10 @@ diff -Naur grub-0.97.orig/netboot/grub.h grub-0.97/netboot/grub.h + +extern struct nic nic; +#endif /* GRUB_H */ -diff -Naur grub-0.97.orig/netboot/i386_byteswap.h grub-0.97/netboot/i386_byteswap.h ---- grub-0.97.orig/netboot/i386_byteswap.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/i386_byteswap.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/i386_byteswap.h +=================================================================== +--- /dev/null ++++ b/netboot/i386_byteswap.h @@ -0,0 +1,46 @@ +#ifndef ETHERBOOT_BITS_BYTESWAP_H +#define ETHERBOOT_BITS_BYTESWAP_H @@ -17690,9 +17723,10 @@ diff -Naur grub-0.97.orig/netboot/i386_byteswap.h grub-0.97/netboot/i386_byteswa + + +#endif /* ETHERBOOT_BITS_BYTESWAP_H */ -diff -Naur grub-0.97.orig/netboot/i386_elf.h grub-0.97/netboot/i386_elf.h ---- grub-0.97.orig/netboot/i386_elf.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/i386_elf.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/i386_elf.h +=================================================================== +--- /dev/null ++++ b/netboot/i386_elf.h @@ -0,0 +1,91 @@ +#ifndef I386_BITS_ELF_H +#define I386_BITS_ELF_H @@ -17785,9 +17819,10 @@ diff -Naur grub-0.97.orig/netboot/i386_elf.h grub-0.97/netboot/i386_elf.h +#endif /* IMAGE_FREEBSD */ + +#endif /* I386_BITS_ELF_H */ -diff -Naur grub-0.97.orig/netboot/i386_endian.h grub-0.97/netboot/i386_endian.h ---- grub-0.97.orig/netboot/i386_endian.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/i386_endian.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/i386_endian.h +=================================================================== +--- /dev/null ++++ b/netboot/i386_endian.h @@ -0,0 +1,6 @@ +#ifndef ETHERBOOT_BITS_ENDIAN_H +#define ETHERBOOT_BITS_ENDIAN_H @@ -17795,9 +17830,10 @@ diff -Naur grub-0.97.orig/netboot/i386_endian.h grub-0.97/netboot/i386_endian.h +#define __BYTE_ORDER __LITTLE_ENDIAN + +#endif /* ETHERBOOT_BITS_ENDIAN_H */ -diff -Naur grub-0.97.orig/netboot/i386_timer.c grub-0.97/netboot/i386_timer.c ---- grub-0.97.orig/netboot/i386_timer.c 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/i386_timer.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/i386_timer.c +=================================================================== +--- /dev/null ++++ b/netboot/i386_timer.c @@ -0,0 +1,192 @@ +/* A couple of routines to implement a low-overhead timer for drivers */ + @@ -17991,9 +18027,10 @@ diff -Naur grub-0.97.orig/netboot/i386_timer.c grub-0.97/netboot/i386_timer.c +} + +#endif /* RTC_CURRTICKS */ -diff -Naur grub-0.97.orig/netboot/i82586.c grub-0.97/netboot/i82586.c ---- grub-0.97.orig/netboot/i82586.c 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/i82586.c 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/i82586.c +=================================================================== +--- a/netboot/i82586.c ++++ /dev/null @@ -1,825 +0,0 @@ -/************************************************************************** -Etherboot - BOOTP/TFTP Bootstrap Program @@ -18820,9 +18857,10 @@ diff -Naur grub-0.97.orig/netboot/i82586.c grub-0.97/netboot/i82586.c -} - -#endif -diff -Naur grub-0.97.orig/netboot/if_arp.h grub-0.97/netboot/if_arp.h ---- grub-0.97.orig/netboot/if_arp.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/if_arp.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/if_arp.h +=================================================================== +--- /dev/null ++++ b/netboot/if_arp.h @@ -0,0 +1,29 @@ +#ifndef _IF_ARP_H +#define _IF_ARP_H @@ -18853,9 +18891,10 @@ diff -Naur grub-0.97.orig/netboot/if_arp.h grub-0.97/netboot/if_arp.h +}; + +#endif /* _IF_ARP_H */ -diff -Naur grub-0.97.orig/netboot/if_ether.h grub-0.97/netboot/if_ether.h ---- grub-0.97.orig/netboot/if_ether.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/if_ether.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/if_ether.h +=================================================================== +--- /dev/null ++++ b/netboot/if_ether.h @@ -0,0 +1,21 @@ +#ifndef _IF_ETHER_H +#define _IF_ETHER_H @@ -18878,9 +18917,10 @@ diff -Naur grub-0.97.orig/netboot/if_ether.h grub-0.97/netboot/if_ether.h +#endif + +#endif /* _IF_ETHER_H */ -diff -Naur grub-0.97.orig/netboot/igmp.h grub-0.97/netboot/igmp.h ---- grub-0.97.orig/netboot/igmp.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/igmp.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/igmp.h +=================================================================== +--- /dev/null ++++ b/netboot/igmp.h @@ -0,0 +1,27 @@ +#ifndef _IGMP_H +#define _IGMP_H @@ -18909,9 +18949,10 @@ diff -Naur grub-0.97.orig/netboot/igmp.h grub-0.97/netboot/igmp.h +}; + +#endif /* _IGMP_H */ -diff -Naur grub-0.97.orig/netboot/in.h grub-0.97/netboot/in.h ---- grub-0.97.orig/netboot/in.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/in.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/in.h +=================================================================== +--- /dev/null ++++ b/netboot/in.h @@ -0,0 +1,21 @@ +#ifndef _IN_H +#define _IN_H @@ -18934,9 +18975,10 @@ diff -Naur grub-0.97.orig/netboot/in.h grub-0.97/netboot/in.h +} in_addr; + +#endif /* _IN_H */ -diff -Naur grub-0.97.orig/netboot/io.h grub-0.97/netboot/io.h ---- grub-0.97.orig/netboot/io.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/io.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/io.h +=================================================================== +--- /dev/null ++++ b/netboot/io.h @@ -0,0 +1,239 @@ +#ifndef IO_H +#define IO_H @@ -19177,9 +19219,10 @@ diff -Naur grub-0.97.orig/netboot/io.h grub-0.97/netboot/io.h + __inl_p(port)) + +#endif /* ETHERBOOT_IO_H */ -diff -Naur grub-0.97.orig/netboot/ip.h grub-0.97/netboot/ip.h ---- grub-0.97.orig/netboot/ip.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/ip.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/ip.h +=================================================================== +--- /dev/null ++++ b/netboot/ip.h @@ -0,0 +1,36 @@ +#ifndef _IP_H +#define _IP_H @@ -19217,9 +19260,10 @@ diff -Naur grub-0.97.orig/netboot/ip.h grub-0.97/netboot/ip.h + + +#endif /* _IP_H */ -diff -Naur grub-0.97.orig/netboot/isa.h grub-0.97/netboot/isa.h ---- grub-0.97.orig/netboot/isa.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/isa.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/isa.h +=================================================================== +--- /dev/null ++++ b/netboot/isa.h @@ -0,0 +1,27 @@ +#if !defined(ISA_H) && defined(CONFIG_ISA) +#define ISA_H @@ -19248,9 +19292,10 @@ diff -Naur grub-0.97.orig/netboot/isa.h grub-0.97/netboot/isa.h + +#endif /* ISA_H */ + -diff -Naur grub-0.97.orig/netboot/lance.c grub-0.97/netboot/lance.c ---- grub-0.97.orig/netboot/lance.c 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/lance.c 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/lance.c +=================================================================== +--- a/netboot/lance.c ++++ /dev/null @@ -1,564 +0,0 @@ -/************************************************************************** -Etherboot - BOOTP/TFTP Bootstrap Program @@ -19816,9 +19861,10 @@ diff -Naur grub-0.97.orig/netboot/lance.c grub-0.97/netboot/lance.c - /* no board found */ - return 0; -} -diff -Naur grub-0.97.orig/netboot/latch.h grub-0.97/netboot/latch.h ---- grub-0.97.orig/netboot/latch.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/latch.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/latch.h +=================================================================== +--- /dev/null ++++ b/netboot/latch.h @@ -0,0 +1,10 @@ +#ifndef LATCH_H +#define LATCH_H @@ -19830,9 +19876,10 @@ diff -Naur grub-0.97.orig/netboot/latch.h grub-0.97/netboot/latch.h + */ + +#endif /* LATCH_H */ -diff -Naur grub-0.97.orig/netboot/linux-asm-io.h grub-0.97/netboot/linux-asm-io.h ---- grub-0.97.orig/netboot/linux-asm-io.h 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/linux-asm-io.h 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/linux-asm-io.h +=================================================================== +--- a/netboot/linux-asm-io.h ++++ /dev/null @@ -1,187 +0,0 @@ -#ifndef _ASM_IO_H -#define _ASM_IO_H @@ -20021,9 +20068,10 @@ diff -Naur grub-0.97.orig/netboot/linux-asm-io.h grub-0.97/netboot/linux-asm-io. - __inl_p(port)) - -#endif -diff -Naur grub-0.97.orig/netboot/linux-asm-string.h grub-0.97/netboot/linux-asm-string.h ---- grub-0.97.orig/netboot/linux-asm-string.h 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/linux-asm-string.h 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/linux-asm-string.h +=================================================================== +--- a/netboot/linux-asm-string.h ++++ /dev/null @@ -1,291 +0,0 @@ -/* - * Taken from Linux /usr/include/asm/string.h @@ -20316,9 +20364,10 @@ diff -Naur grub-0.97.orig/netboot/linux-asm-string.h grub-0.97/netboot/linux-asm -} - -#endif -diff -Naur grub-0.97.orig/netboot/little_bswap.h grub-0.97/netboot/little_bswap.h ---- grub-0.97.orig/netboot/little_bswap.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/little_bswap.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/little_bswap.h +=================================================================== +--- /dev/null ++++ b/netboot/little_bswap.h @@ -0,0 +1,17 @@ +#ifndef ETHERBOOT_LITTLE_BSWAP_H +#define ETHERBOOT_LITTLE_BSWAP_H @@ -20337,1184 +20386,10 @@ diff -Naur grub-0.97.orig/netboot/little_bswap.h grub-0.97/netboot/little_bswap. +#define be16_to_cpu(x) __bswap_16(x) + +#endif /* ETHERBOOT_LITTLE_BSWAP_H */ -diff -Naur grub-0.97.orig/netboot/main.c grub-0.97/netboot/main.c ---- grub-0.97.orig/netboot/main.c 2004-05-20 22:19:33.000000000 +0000 -+++ grub-0.97/netboot/main.c 1970-01-01 00:00:00.000000000 +0000 -@@ -1,1171 +0,0 @@ --/* -- * GRUB -- GRand Unified Bootloader -- * Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. -- * -- * 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., 675 Mass Ave, Cambridge, MA 02139, USA. -- */ -- --/* Based on "src/main.c" in etherboot-5.0.5. */ -- --/************************************************************************** --ETHERBOOT - BOOTP/TFTP Bootstrap Program -- --Author: Martin Renters -- Date: Dec/93 -- --Literature dealing with the network protocols: -- ARP - RFC826 -- RARP - RFC903 -- UDP - RFC768 -- BOOTP - RFC951, RFC2132 (vendor extensions) -- DHCP - RFC2131, RFC2132 (options) -- TFTP - RFC1350, RFC2347 (options), RFC2348 (blocksize), RFC2349 (tsize) -- RPC - RFC1831, RFC1832 (XDR), RFC1833 (rpcbind/portmapper) -- NFS - RFC1094, RFC1813 (v3, useful for clarifications, not implemented) -- --**************************************************************************/ -- --#define GRUB 1 --#include --#include -- --/* #define DEBUG 1 */ -- --struct arptable_t arptable[MAX_ARP]; -- --/* Set if the user pushes Control-C. */ --int ip_abort = 0; --/* Set if an ethernet card is probed and IP addresses are set. */ --int network_ready = 0; -- --struct rom_info rom; -- --static int vendorext_isvalid; --static unsigned long netmask; --static struct bootpd_t bootp_data; --static unsigned long xid; --static unsigned char *end_of_rfc1533 = NULL; -- --#ifndef NO_DHCP_SUPPORT --#endif /* NO_DHCP_SUPPORT */ -- --/* äEth */ --static unsigned char vendorext_magic[] = {0xE4, 0x45, 0x74, 0x68}; --static const unsigned char broadcast[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; -- --#ifdef NO_DHCP_SUPPORT -- --static unsigned char rfc1533_cookie[5] = {RFC1533_COOKIE, RFC1533_END}; -- --#else /* ! NO_DHCP_SUPPORT */ -- --static int dhcp_reply; --static in_addr dhcp_server = {0L}; --static in_addr dhcp_addr = {0L}; --static unsigned char rfc1533_cookie[] = {RFC1533_COOKIE}; --static unsigned char rfc1533_end[] = {RFC1533_END}; -- --static const unsigned char dhcpdiscover[] = --{ -- RFC2132_MSG_TYPE, 1, DHCPDISCOVER, -- RFC2132_MAX_SIZE,2, /* request as much as we can */ -- ETH_MAX_MTU / 256, ETH_MAX_MTU % 256, -- RFC2132_PARAM_LIST, 4, RFC1533_NETMASK, RFC1533_GATEWAY, -- RFC1533_HOSTNAME, RFC1533_EXTENSIONPATH --}; -- --static const unsigned char dhcprequest[] = --{ -- RFC2132_MSG_TYPE, 1, DHCPREQUEST, -- RFC2132_SRV_ID, 4, 0, 0, 0, 0, -- RFC2132_REQ_ADDR, 4, 0, 0, 0, 0, -- RFC2132_MAX_SIZE, 2, /* request as much as we can */ -- ETH_MAX_MTU / 256, ETH_MAX_MTU % 256, -- /* request parameters */ -- RFC2132_PARAM_LIST, -- /* 4 standard + 2 vendortags */ -- 4 + 2, -- /* Standard parameters */ -- RFC1533_NETMASK, RFC1533_GATEWAY, -- RFC1533_HOSTNAME, RFC1533_EXTENSIONPATH, -- /* Etherboot vendortags */ -- RFC1533_VENDOR_MAGIC, -- RFC1533_VENDOR_CONFIGFILE, --}; -- --#endif /* ! NO_DHCP_SUPPORT */ -- --static unsigned short ipchksum (unsigned short *ip, int len); --static unsigned short udpchksum (struct iphdr *packet); -- --void --print_network_configuration (void) --{ -- if (! eth_probe ()) -- grub_printf ("No ethernet card found.\n"); -- else if (! network_ready) -- grub_printf ("Not initialized yet.\n"); -- else -- { -- etherboot_printf ("Address: %@\n", arptable[ARP_CLIENT].ipaddr.s_addr); -- etherboot_printf ("Netmask: %@\n", netmask); -- etherboot_printf ("Server: %@\n", arptable[ARP_SERVER].ipaddr.s_addr); -- etherboot_printf ("Gateway: %@\n", arptable[ARP_GATEWAY].ipaddr.s_addr); -- } --} -- -- --/************************************************************************** --DEFAULT_NETMASK - Return default netmask for IP address --**************************************************************************/ --static inline unsigned long --default_netmask (void) --{ -- int net = ntohl (arptable[ARP_CLIENT].ipaddr.s_addr) >> 24; -- if (net <= 127) -- return (htonl (0xff000000)); -- else if (net < 192) -- return (htonl (0xffff0000)); -- else -- return (htonl (0xffffff00)); --} -- --/* ifconfig - configure network interface. */ --int --ifconfig (char *ip, char *sm, char *gw, char *svr) --{ -- in_addr tmp; -- -- if (sm) -- { -- if (! inet_aton (sm, &tmp)) -- return 0; -- -- netmask = tmp.s_addr; -- } -- -- if (ip) -- { -- if (! inet_aton (ip, &arptable[ARP_CLIENT].ipaddr)) -- return 0; -- -- if (! netmask && ! sm) -- netmask = default_netmask (); -- } -- -- if (gw && ! inet_aton (gw, &arptable[ARP_GATEWAY].ipaddr)) -- return 0; -- -- /* Clear out the ARP entry. */ -- grub_memset (arptable[ARP_GATEWAY].node, 0, ETH_ALEN); -- -- if (svr && ! inet_aton (svr, &arptable[ARP_SERVER].ipaddr)) -- return 0; -- -- /* Likewise. */ -- grub_memset (arptable[ARP_SERVER].node, 0, ETH_ALEN); -- -- if (ip || sm) -- { -- if (IP_BROADCAST == (netmask | arptable[ARP_CLIENT].ipaddr.s_addr) -- || netmask == (netmask | arptable[ARP_CLIENT].ipaddr.s_addr) -- || ! netmask) -- network_ready = 0; -- else -- network_ready = 1; -- } -- -- return 1; --} -- -- --/************************************************************************** --UDP_TRANSMIT - Send a UDP datagram --**************************************************************************/ --int --udp_transmit (unsigned long destip, unsigned int srcsock, -- unsigned int destsock, int len, const void *buf) --{ -- struct iphdr *ip; -- struct udphdr *udp; -- struct arprequest arpreq; -- int arpentry, i; -- int retry; -- -- ip = (struct iphdr *) buf; -- udp = (struct udphdr *) ((unsigned long) buf + sizeof (struct iphdr)); -- ip->verhdrlen = 0x45; -- ip->service = 0; -- ip->len = htons (len); -- ip->ident = 0; -- ip->frags = 0; -- ip->ttl = 60; -- ip->protocol = IP_UDP; -- ip->chksum = 0; -- ip->src.s_addr = arptable[ARP_CLIENT].ipaddr.s_addr; -- ip->dest.s_addr = destip; -- ip->chksum = ipchksum ((unsigned short *) buf, sizeof (struct iphdr)); -- udp->src = htons (srcsock); -- udp->dest = htons (destsock); -- udp->len = htons (len - sizeof (struct iphdr)); -- udp->chksum = 0; -- udp->chksum = htons (udpchksum (ip)); -- -- if (udp->chksum == 0) -- udp->chksum = 0xffff; -- -- if (destip == IP_BROADCAST) -- { -- eth_transmit (broadcast, IP, len, buf); -- } -- else -- { -- if (((destip & netmask) -- != (arptable[ARP_CLIENT].ipaddr.s_addr & netmask)) -- && arptable[ARP_GATEWAY].ipaddr.s_addr) -- destip = arptable[ARP_GATEWAY].ipaddr.s_addr; -- -- for (arpentry = 0; arpentry < MAX_ARP; arpentry++) -- if (arptable[arpentry].ipaddr.s_addr == destip) -- break; -- -- if (arpentry == MAX_ARP) -- { -- etherboot_printf ("%@ is not in my arp table!\n", destip); -- return 0; -- } -- -- for (i = 0; i < ETH_ALEN; i++) -- if (arptable[arpentry].node[i]) -- break; -- -- if (i == ETH_ALEN) -- { -- /* Need to do arp request. */ --#ifdef DEBUG -- grub_printf ("arp request.\n"); --#endif -- arpreq.hwtype = htons (1); -- arpreq.protocol = htons (IP); -- arpreq.hwlen = ETH_ALEN; -- arpreq.protolen = 4; -- arpreq.opcode = htons (ARP_REQUEST); -- grub_memmove (arpreq.shwaddr, arptable[ARP_CLIENT].node, -- ETH_ALEN); -- grub_memmove (arpreq.sipaddr, (char *) &arptable[ARP_CLIENT].ipaddr, -- sizeof (in_addr)); -- grub_memset (arpreq.thwaddr, 0, ETH_ALEN); -- grub_memmove (arpreq.tipaddr, (char *) &destip, sizeof (in_addr)); -- -- for (retry = 1; retry <= MAX_ARP_RETRIES; retry++) -- { -- long timeout; -- -- eth_transmit (broadcast, ARP, sizeof (arpreq), &arpreq); -- timeout = rfc2131_sleep_interval (TIMEOUT, retry); -- -- if (await_reply (AWAIT_ARP, arpentry, arpreq.tipaddr, timeout)) -- goto xmit; -- -- if (ip_abort) -- return 0; -- } -- -- return 0; -- } -- -- xmit: -- eth_transmit (arptable[arpentry].node, IP, len, buf); -- } -- -- return 1; --} -- --/************************************************************************** --TFTP - Download extended BOOTP data, or kernel image --**************************************************************************/ --static int --tftp (const char *name, int (*fnc) (unsigned char *, int, int, int)) --{ -- int retry = 0; -- static unsigned short iport = 2000; -- unsigned short oport = 0; -- unsigned short len, block = 0, prevblock = 0; -- int bcounter = 0; -- struct tftp_t *tr; -- struct tftpreq_t tp; -- int rc; -- int packetsize = TFTP_DEFAULTSIZE_PACKET; -- -- /* Clear out the Rx queue first. It contains nothing of interest, -- * except possibly ARP requests from the DHCP/TFTP server. We use -- * polling throughout Etherboot, so some time may have passed since we -- * last polled the receive queue, which may now be filled with -- * broadcast packets. This will cause the reply to the packets we are -- * about to send to be lost immediately. Not very clever. */ -- await_reply (AWAIT_QDRAIN, 0, NULL, 0); -- -- tp.opcode = htons (TFTP_RRQ); -- len = (grub_sprintf ((char *) tp.u.rrq, "%s%coctet%cblksize%c%d", -- name, 0, 0, 0, TFTP_MAX_PACKET) -- + sizeof (tp.ip) + sizeof (tp.udp) + sizeof (tp.opcode) + 1); -- if (! udp_transmit (arptable[ARP_SERVER].ipaddr.s_addr, ++iport, -- TFTP_PORT, len, &tp)) -- return 0; -- -- for (;;) -- { -- long timeout; -- --#ifdef CONGESTED -- timeout = rfc2131_sleep_interval (block ? TFTP_REXMT : TIMEOUT, retry); --#else -- timeout = rfc2131_sleep_interval (TIMEOUT, retry); --#endif -- -- if (! await_reply (AWAIT_TFTP, iport, NULL, timeout)) -- { -- if (! block && retry++ < MAX_TFTP_RETRIES) -- { -- /* Maybe initial request was lost. */ -- if (! udp_transmit (arptable[ARP_SERVER].ipaddr.s_addr, -- ++iport, TFTP_PORT, len, &tp)) -- return 0; -- -- continue; -- } -- --#ifdef CONGESTED -- if (block && ((retry += TFTP_REXMT) < TFTP_TIMEOUT)) -- { -- /* We resend our last ack. */ --#ifdef MDEBUG -- grub_printf ("\n"); --#endif -- udp_transmit (arptable[ARP_SERVER].ipaddr.s_addr, -- iport, oport, -- TFTP_MIN_PACKET, &tp); -- continue; -- } --#endif -- /* Timeout. */ -- break; -- } -- -- tr = (struct tftp_t *) &nic.packet[ETH_HLEN]; -- if (tr->opcode == ntohs (TFTP_ERROR)) -- { -- grub_printf ("TFTP error %d (%s)\n", -- ntohs (tr->u.err.errcode), -- tr->u.err.errmsg); -- break; -- } -- -- if (tr->opcode == ntohs (TFTP_OACK)) -- { -- char *p = tr->u.oack.data, *e; -- -- /* Shouldn't happen. */ -- if (prevblock) -- /* Ignore it. */ -- continue; -- -- len = ntohs (tr->udp.len) - sizeof (struct udphdr) - 2; -- if (len > TFTP_MAX_PACKET) -- goto noak; -- -- e = p + len; -- while (*p != '\000' && p < e) -- { -- if (! grub_strcmp ("blksize", p)) -- { -- p += 8; -- if ((packetsize = getdec (&p)) < TFTP_DEFAULTSIZE_PACKET) -- goto noak; -- -- while (p < e && *p) -- p++; -- -- if (p < e) -- p++; -- } -- else -- { -- noak: -- tp.opcode = htons (TFTP_ERROR); -- tp.u.err.errcode = 8; -- len = (grub_sprintf ((char *) tp.u.err.errmsg, -- "RFC1782 error") -- + sizeof (tp.ip) + sizeof (tp.udp) -- + sizeof (tp.opcode) + sizeof (tp.u.err.errcode) -- + 1); -- udp_transmit (arptable[ARP_SERVER].ipaddr.s_addr, -- iport, ntohs (tr->udp.src), -- len, &tp); -- return 0; -- } -- } -- -- if (p > e) -- goto noak; -- -- /* This ensures that the packet does not get processed as data! */ -- block = tp.u.ack.block = 0; -- } -- else if (tr->opcode == ntohs (TFTP_DATA)) -- { -- len = ntohs (tr->udp.len) - sizeof (struct udphdr) - 4; -- /* Shouldn't happen. */ -- if (len > packetsize) -- /* Ignore it. */ -- continue; -- -- block = ntohs (tp.u.ack.block = tr->u.data.block); -- } -- else -- /* Neither TFTP_OACK nor TFTP_DATA. */ -- break; -- -- if ((block || bcounter) && (block != prevblock + 1)) -- /* Block order should be continuous */ -- tp.u.ack.block = htons (block = prevblock); -- -- /* Should be continuous. */ -- tp.opcode = htons (TFTP_ACK); -- oport = ntohs (tr->udp.src); -- /* Ack. */ -- udp_transmit (arptable[ARP_SERVER].ipaddr.s_addr, iport, -- oport, TFTP_MIN_PACKET, &tp); -- -- if ((unsigned short) (block - prevblock) != 1) -- /* Retransmission or OACK, don't process via callback -- * and don't change the value of prevblock. */ -- continue; -- -- prevblock = block; -- /* Is it the right place to zero the timer? */ -- retry = 0; -- -- if ((rc = fnc (tr->u.data.download, -- ++bcounter, len, len < packetsize)) >= 0) -- return rc; -- -- /* End of data. */ -- if (len < packetsize) -- return 1; -- } -- -- return 0; --} -- --/************************************************************************** --RARP - Get my IP address and load information --**************************************************************************/ --int --rarp (void) --{ -- int retry; -- -- /* arp and rarp requests share the same packet structure. */ -- struct arprequest rarpreq; -- -- /* Make sure that an ethernet is probed. */ -- if (! eth_probe ()) -- return 0; -- -- /* Clear the ready flag. */ -- network_ready = 0; -- -- grub_memset (&rarpreq, 0, sizeof (rarpreq)); -- -- rarpreq.hwtype = htons (1); -- rarpreq.protocol = htons (IP); -- rarpreq.hwlen = ETH_ALEN; -- rarpreq.protolen = 4; -- rarpreq.opcode = htons (RARP_REQUEST); -- grub_memmove ((char *) &rarpreq.shwaddr, arptable[ARP_CLIENT].node, -- ETH_ALEN); -- /* sipaddr is already zeroed out */ -- grub_memmove ((char *) &rarpreq.thwaddr, arptable[ARP_CLIENT].node, -- ETH_ALEN); -- /* tipaddr is already zeroed out */ -- -- for (retry = 0; retry < MAX_ARP_RETRIES; ++retry) -- { -- long timeout; -- -- eth_transmit (broadcast, RARP, sizeof (rarpreq), &rarpreq); -- -- timeout = rfc2131_sleep_interval (TIMEOUT, retry); -- if (await_reply (AWAIT_RARP, 0, rarpreq.shwaddr, timeout)) -- break; -- -- if (ip_abort) -- return 0; -- } -- -- if (retry < MAX_ARP_RETRIES) -- { -- network_ready = 1; -- return 1; -- } -- -- return 0; --} -- --/************************************************************************** --BOOTP - Get my IP address and load information --**************************************************************************/ --int --bootp (void) --{ -- int retry; --#ifndef NO_DHCP_SUPPORT -- int reqretry; --#endif /* ! NO_DHCP_SUPPORT */ -- struct bootpip_t ip; -- unsigned long starttime; -- -- /* Make sure that an ethernet is probed. */ -- if (! eth_probe ()) -- return 0; -- -- /* Clear the ready flag. */ -- network_ready = 0; -- --#ifdef DEBUG -- grub_printf ("network is ready.\n"); --#endif -- -- grub_memset (&ip, 0, sizeof (struct bootpip_t)); -- ip.bp.bp_op = BOOTP_REQUEST; -- ip.bp.bp_htype = 1; -- ip.bp.bp_hlen = ETH_ALEN; -- starttime = currticks (); -- /* Use lower 32 bits of node address, more likely to be -- distinct than the time since booting */ -- grub_memmove (&xid, &arptable[ARP_CLIENT].node[2], sizeof(xid)); -- ip.bp.bp_xid = xid += htonl (starttime); -- grub_memmove (ip.bp.bp_hwaddr, arptable[ARP_CLIENT].node, ETH_ALEN); --#ifdef DEBUG -- etherboot_printf ("bp_op = %d\n", ip.bp.bp_op); -- etherboot_printf ("bp_htype = %d\n", ip.bp.bp_htype); -- etherboot_printf ("bp_hlen = %d\n", ip.bp.bp_hlen); -- etherboot_printf ("bp_xid = %d\n", ip.bp.bp_xid); -- etherboot_printf ("bp_hwaddr = %!\n", ip.bp.bp_hwaddr); -- etherboot_printf ("bp_hops = %d\n", (int) ip.bp.bp_hops); -- etherboot_printf ("bp_secs = %d\n", (int) ip.bp.bp_hwaddr); --#endif -- --#ifdef NO_DHCP_SUPPORT -- /* Request RFC-style options. */ -- grub_memmove (ip.bp.bp_vend, rfc1533_cookie, 5); --#else -- /* Request RFC-style options. */ -- grub_memmove (ip.bp.bp_vend, rfc1533_cookie, sizeof rfc1533_cookie); -- grub_memmove (ip.bp.bp_vend + sizeof rfc1533_cookie, dhcpdiscover, -- sizeof dhcpdiscover); -- grub_memmove (ip.bp.bp_vend + sizeof rfc1533_cookie + sizeof dhcpdiscover, -- rfc1533_end, sizeof rfc1533_end); --#endif /* ! NO_DHCP_SUPPORT */ -- -- for (retry = 0; retry < MAX_BOOTP_RETRIES;) -- { -- long timeout; -- --#ifdef DEBUG -- grub_printf ("retry = %d\n", retry); --#endif -- -- /* Clear out the Rx queue first. It contains nothing of -- * interest, except possibly ARP requests from the DHCP/TFTP -- * server. We use polling throughout Etherboot, so some time -- * may have passed since we last polled the receive queue, -- * which may now be filled with broadcast packets. This will -- * cause the reply to the packets we are about to send to be -- * lost immediately. Not very clever. */ -- await_reply (AWAIT_QDRAIN, 0, NULL, 0); -- -- udp_transmit (IP_BROADCAST, BOOTP_CLIENT, BOOTP_SERVER, -- sizeof (struct bootpip_t), &ip); -- timeout = rfc2131_sleep_interval (TIMEOUT, retry++); --#ifdef NO_DHCP_SUPPORT -- if (await_reply (AWAIT_BOOTP, 0, NULL, timeout)) -- { -- network_ready = 1; -- return 1; -- } --#else /* ! NO_DHCP_SUPPORT */ -- if (await_reply (AWAIT_BOOTP, 0, NULL, timeout)) -- { -- if (dhcp_reply != DHCPOFFER) -- { -- network_ready = 1; -- return 1; -- } -- -- dhcp_reply = 0; --#ifdef DEBUG -- etherboot_printf ("bp_op = %d\n", (int) ip.bp.bp_op); -- etherboot_printf ("bp_htype = %d\n", (int) ip.bp.bp_htype); -- etherboot_printf ("bp_hlen = %d\n", (int) ip.bp.bp_hlen); -- etherboot_printf ("bp_xid = %d\n", (int) ip.bp.bp_xid); -- etherboot_printf ("bp_hwaddr = %!\n", ip.bp.bp_hwaddr); -- etherboot_printf ("bp_hops = %d\n", (int) ip.bp.bp_hops); -- etherboot_printf ("bp_secs = %d\n", (int) ip.bp.bp_hwaddr); --#endif -- grub_memmove (ip.bp.bp_vend, rfc1533_cookie, sizeof rfc1533_cookie); -- grub_memmove (ip.bp.bp_vend + sizeof rfc1533_cookie, -- dhcprequest, sizeof dhcprequest); -- grub_memmove (ip.bp.bp_vend + sizeof rfc1533_cookie -- + sizeof dhcprequest, -- rfc1533_end, sizeof rfc1533_end); -- grub_memmove (ip.bp.bp_vend + 9, (char *) &dhcp_server, -- sizeof (in_addr)); -- grub_memmove (ip.bp.bp_vend + 15, (char *) &dhcp_addr, -- sizeof (in_addr)); --#ifdef DEBUG -- grub_printf ("errnum = %d\n", errnum); --#endif -- for (reqretry = 0; reqretry < MAX_BOOTP_RETRIES;) -- { -- int ret; --#ifdef DEBUG -- grub_printf ("reqretry = %d\n", reqretry); --#endif -- -- ret = udp_transmit (IP_BROADCAST, BOOTP_CLIENT, BOOTP_SERVER, -- sizeof (struct bootpip_t), &ip); -- if (! ret) -- grub_printf ("udp_transmit failed.\n"); -- -- dhcp_reply = 0; -- timeout = rfc2131_sleep_interval (TIMEOUT, reqretry++); -- if (await_reply (AWAIT_BOOTP, 0, NULL, timeout)) -- if (dhcp_reply == DHCPACK) -- { -- network_ready = 1; -- return 1; -- } -- --#ifdef DEBUG -- grub_printf ("dhcp_reply = %d\n", dhcp_reply); --#endif -- -- if (ip_abort) -- return 0; -- } -- } --#endif /* ! NO_DHCP_SUPPORT */ -- -- if (ip_abort) -- return 0; -- -- ip.bp.bp_secs = htons ((currticks () - starttime) / TICKS_PER_SEC); -- } -- -- /* Timeout. */ -- return 0; --} -- --/************************************************************************** --UDPCHKSUM - Checksum UDP Packet (one of the rare cases when assembly is -- actually simpler...) -- RETURNS: checksum, 0 on checksum error. This -- allows for using the same routine for RX and TX summing: -- RX if (packet->udp.chksum && udpchksum(packet)) -- error("checksum error"); -- TX packet->udp.chksum=0; -- if (0==(packet->udp.chksum=udpchksum(packet))) -- packet->upd.chksum=0xffff; --**************************************************************************/ --static inline void --dosum (unsigned short *start, unsigned int len, unsigned short *sum) --{ -- __asm__ __volatile__ -- ("clc\n" -- "1:\tlodsw\n\t" -- "xchg %%al,%%ah\n\t" /* convert to host byte order */ -- "adcw %%ax,%0\n\t" /* add carry of previous iteration */ -- "loop 1b\n\t" -- "adcw $0,%0" /* add carry of last iteration */ -- : "=b" (*sum), "=S"(start), "=c"(len) -- : "0"(*sum), "1"(start), "2"(len) -- : "ax", "cc" -- ); --} -- --/* UDP sum: -- * proto, src_ip, dst_ip, udp_dport, udp_sport, 2*udp_len, payload -- */ --static unsigned short --udpchksum (struct iphdr *packet) --{ -- int len = ntohs (packet->len); -- unsigned short rval; -- -- /* add udplength + protocol number */ -- rval = (len - sizeof (struct iphdr)) + IP_UDP; -- -- /* pad to an even number of bytes */ -- if (len % 2) { -- ((char *) packet)[len++] = 0; -- } -- -- /* sum over src/dst ipaddr + udp packet */ -- len -= (char *) &packet->src - (char *) packet; -- dosum ((unsigned short *) &packet->src, len >> 1, &rval); -- -- /* take one's complement */ -- return ~rval; --} -- --/************************************************************************** --AWAIT_REPLY - Wait until we get a response for our request --**************************************************************************/ --int --await_reply (int type, int ival, void *ptr, int timeout) --{ -- unsigned long time; -- struct iphdr *ip; -- struct udphdr *udp; -- struct arprequest *arpreply; -- struct bootp_t *bootpreply; -- unsigned short ptype; -- unsigned int protohdrlen = (ETH_HLEN + sizeof (struct iphdr) -- + sizeof (struct udphdr)); -- -- /* Clear the abort flag. */ -- ip_abort = 0; -- -- time = timeout + currticks (); -- /* The timeout check is done below. The timeout is only checked if -- * there is no packet in the Rx queue. This assumes that eth_poll() -- * needs a negligible amount of time. */ -- for (;;) -- { -- if (eth_poll ()) -- { -- /* We have something! */ -- -- /* Check for ARP - No IP hdr. */ -- if (nic.packetlen >= ETH_HLEN) -- { -- ptype = (((unsigned short) nic.packet[12]) << 8 -- | ((unsigned short) nic.packet[13])); -- } -- else -- /* What else could we do with it? */ -- continue; -- -- if (nic.packetlen >= ETH_HLEN + sizeof (struct arprequest) -- && ptype == ARP) -- { -- unsigned long tmp; -- -- arpreply = (struct arprequest *) &nic.packet[ETH_HLEN]; -- -- if (arpreply->opcode == htons (ARP_REPLY) -- && ! grub_memcmp (arpreply->sipaddr, ptr, sizeof (in_addr)) -- && type == AWAIT_ARP) -- { -- grub_memmove ((char *) arptable[ival].node, -- arpreply->shwaddr, -- ETH_ALEN); -- return 1; -- } -- -- grub_memmove ((char *) &tmp, arpreply->tipaddr, -- sizeof (in_addr)); -- -- if (arpreply->opcode == htons (ARP_REQUEST) -- && tmp == arptable[ARP_CLIENT].ipaddr.s_addr) -- { -- arpreply->opcode = htons (ARP_REPLY); -- grub_memmove (arpreply->tipaddr, arpreply->sipaddr, -- sizeof (in_addr)); -- grub_memmove (arpreply->thwaddr, (char *) arpreply->shwaddr, -- ETH_ALEN); -- grub_memmove (arpreply->sipaddr, -- (char *) &arptable[ARP_CLIENT].ipaddr, -- sizeof (in_addr)); -- grub_memmove (arpreply->shwaddr, -- arptable[ARP_CLIENT].node, -- ETH_ALEN); -- eth_transmit (arpreply->thwaddr, ARP, -- sizeof (struct arprequest), -- arpreply); --#ifdef MDEBUG -- grub_memmove (&tmp, arpreply->tipaddr, sizeof (in_addr)); -- etherboot_printf ("Sent ARP reply to: %@\n", tmp); --#endif /* MDEBUG */ -- } -- -- continue; -- } -- -- if (type == AWAIT_QDRAIN) -- continue; -- -- /* Check for RARP - No IP hdr. */ -- if (type == AWAIT_RARP -- && nic.packetlen >= ETH_HLEN + sizeof (struct arprequest) -- && ptype == RARP) -- { -- arpreply = (struct arprequest *) &nic.packet[ETH_HLEN]; -- -- if (arpreply->opcode == htons (RARP_REPLY) -- && ! grub_memcmp (arpreply->thwaddr, ptr, ETH_ALEN)) -- { -- grub_memmove ((char *) arptable[ARP_SERVER].node, -- arpreply->shwaddr, ETH_ALEN); -- grub_memmove ((char *) &arptable[ARP_SERVER].ipaddr, -- arpreply->sipaddr, sizeof (in_addr)); -- grub_memmove ((char *) &arptable[ARP_CLIENT].ipaddr, -- arpreply->tipaddr, sizeof (in_addr)); -- return 1; -- } -- -- continue; -- } -- -- /* Anything else has IP header. */ -- if (nic.packetlen < protohdrlen || ptype != IP) -- continue; -- -- ip = (struct iphdr *) &nic.packet[ETH_HLEN]; -- if (ip->verhdrlen != 0x45 -- || ipchksum ((unsigned short *) ip, sizeof (struct iphdr)) -- || ip->protocol != IP_UDP) -- continue; -- -- /* -- - Till Straumann -- added udp checksum (safer on a wireless link) -- added fragmentation check: I had a corrupted image -- in memory due to fragmented TFTP packets - took me -- 3 days to find the cause for this :-( -- */ -- -- /* If More Fragments bit and Fragment Offset field -- are non-zero then packet is fragmented */ -- if (ip->frags & htons(0x3FFF)) -- { -- grub_printf ("ALERT: got a fragmented packet - reconfigure your server\n"); -- continue; -- } -- -- udp = (struct udphdr *) &nic.packet[(ETH_HLEN -- + sizeof (struct iphdr))]; -- if (udp->chksum && udpchksum (ip)) -- { -- grub_printf ("UDP checksum error\n"); -- continue; -- } -- -- /* BOOTP ? */ -- bootpreply = (struct bootp_t *) -- &nic.packet[(ETH_HLEN + sizeof (struct iphdr) -- + sizeof (struct udphdr))]; -- if (type == AWAIT_BOOTP --#ifdef NO_DHCP_SUPPORT -- && (nic.packetlen -- >= (ETH_HLEN + sizeof (struct bootp_t) - BOOTP_VENDOR_LEN)) --#else -- && (nic.packetlen -- >= (ETH_HLEN + sizeof (struct bootp_t) - DHCP_OPT_LEN)) --#endif /* ! NO_DHCP_SUPPORT */ -- && udp->dest == htons (BOOTP_CLIENT) -- && bootpreply->bp_op == BOOTP_REPLY -- && bootpreply->bp_xid == xid -- && (! grub_memcmp (broadcast, bootpreply->bp_hwaddr, ETH_ALEN) -- || ! grub_memcmp (arptable[ARP_CLIENT].node, -- bootpreply->bp_hwaddr, ETH_ALEN))) -- { --#ifdef DEBUG -- grub_printf ("BOOTP packet was received.\n"); --#endif -- arptable[ARP_CLIENT].ipaddr.s_addr -- = bootpreply->bp_yiaddr.s_addr; --#ifndef NO_DHCP_SUPPORT -- dhcp_addr.s_addr = bootpreply->bp_yiaddr.s_addr; --#ifdef DEBUG -- etherboot_printf ("dhcp_addr = %@\n", dhcp_addr.s_addr); --#endif --#endif /* ! NO_DHCP_SUPPORT */ -- netmask = default_netmask (); -- arptable[ARP_SERVER].ipaddr.s_addr -- = bootpreply->bp_siaddr.s_addr; -- /* Kill arp. */ -- grub_memset (arptable[ARP_SERVER].node, 0, ETH_ALEN); -- arptable[ARP_GATEWAY].ipaddr.s_addr -- = bootpreply->bp_giaddr.s_addr; -- /* Kill arp. */ -- grub_memset (arptable[ARP_GATEWAY].node, 0, ETH_ALEN); -- -- grub_memmove ((char *) BOOTP_DATA_ADDR, (char *) bootpreply, -- sizeof (struct bootpd_t)); --#ifdef NO_DHCP_SUPPORT -- decode_rfc1533 (BOOTP_DATA_ADDR->bootp_reply.bp_vend, -- 0, BOOTP_VENDOR_LEN + MAX_BOOTP_EXTLEN, 1); --#else -- decode_rfc1533 (BOOTP_DATA_ADDR->bootp_reply.bp_vend, -- 0, DHCP_OPT_LEN + MAX_BOOTP_EXTLEN, 1); --#endif /* ! NO_DHCP_SUPPORT */ -- -- return 1; -- } -- -- /* TFTP ? */ -- if (type == AWAIT_TFTP && ntohs (udp->dest) == ival) -- return 1; -- } -- else -- { -- /* Check for abort key only if the Rx queue is empty - -- * as long as we have something to process, don't -- * assume that something failed. It is unlikely that -- * we have no processing time left between packets. */ -- if (checkkey () != -1 && ASCII_CHAR (getkey ()) == CTRL_C) -- { -- ip_abort = 1; -- return 0; -- } -- -- /* Do the timeout after at least a full queue walk. */ -- if ((timeout == 0) || (currticks() > time)) -- { -- break; -- } -- } -- } -- -- return 0; --} -- --/************************************************************************** --DECODE_RFC1533 - Decodes RFC1533 header --**************************************************************************/ --int --decode_rfc1533 (unsigned char *p, int block, int len, int eof) --{ -- static unsigned char *extdata = NULL, *extend = NULL; -- unsigned char *extpath = NULL; -- unsigned char *endp; -- -- if (block == 0) -- { -- end_of_rfc1533 = NULL; -- vendorext_isvalid = 0; -- -- if (grub_memcmp (p, rfc1533_cookie, 4)) -- /* no RFC 1533 header found */ -- return 0; -- -- p += 4; -- endp = p + len; -- } -- else -- { -- if (block == 1) -- { -- if (grub_memcmp (p, rfc1533_cookie, 4)) -- /* no RFC 1533 header found */ -- return 0; -- -- p += 4; -- len -= 4; -- } -- -- if (extend + len -- <= ((unsigned char *) -- &(BOOTP_DATA_ADDR->bootp_extension[MAX_BOOTP_EXTLEN]))) -- { -- grub_memmove (extend, p, len); -- extend += len; -- } -- else -- { -- grub_printf ("Overflow in vendor data buffer! Aborting...\n"); -- *extdata = RFC1533_END; -- return 0; -- } -- -- p = extdata; -- endp = extend; -- } -- -- if (! eof) -- return -1; -- -- while (p < endp) -- { -- unsigned char c = *p; -- -- if (c == RFC1533_PAD) -- { -- p++; -- continue; -- } -- else if (c == RFC1533_END) -- { -- end_of_rfc1533 = endp = p; -- continue; -- } -- else if (c == RFC1533_NETMASK) -- { -- grub_memmove ((char *) &netmask, p + 2, sizeof (in_addr)); -- } -- else if (c == RFC1533_GATEWAY) -- { -- /* This is a little simplistic, but it will -- usually be sufficient. -- Take only the first entry. */ -- if (TAG_LEN (p) >= sizeof (in_addr)) -- grub_memmove ((char *) &arptable[ARP_GATEWAY].ipaddr, p + 2, -- sizeof (in_addr)); -- } -- else if (c == RFC1533_EXTENSIONPATH) -- extpath = p; --#ifndef NO_DHCP_SUPPORT -- else if (c == RFC2132_MSG_TYPE) -- { -- dhcp_reply = *(p + 2); -- } -- else if (c == RFC2132_SRV_ID) -- { -- grub_memmove ((char *) &dhcp_server, p + 2, sizeof (in_addr)); --#ifdef DEBUG -- etherboot_printf ("dhcp_server = %@\n", dhcp_server.s_addr); --#endif -- } --#endif /* ! NO_DHCP_SUPPORT */ -- else if (c == RFC1533_VENDOR_MAGIC -- && TAG_LEN(p) >= 6 -- && ! grub_memcmp (p + 2, vendorext_magic, 4) -- && p[6] == RFC1533_VENDOR_MAJOR) -- vendorext_isvalid++; -- /* GRUB now handles its own tag. Get the name of a configuration -- file from the network. Cool... */ -- else if (c == RFC1533_VENDOR_CONFIGFILE) -- { -- int l = TAG_LEN (p); -- -- /* Eliminate the trailing NULs according to RFC 2132. */ -- while (*(p + 2 + l - 1) == '\000' && l > 0) -- l--; -- -- /* XXX: Should check if LEN is less than the maximum length -- of CONFIG_FILE. This kind of robustness will be a goal -- in GRUB 1.0. */ -- grub_memmove (config_file, p + 2, l); -- config_file[l] = 0; -- } -- -- p += TAG_LEN (p) + 2; -- } -- -- extdata = extend = endp; -- -- /* Perhaps we can eliminate this because we doesn't require so -- much information, but I leave this alone. */ -- if (block == 0 && extpath != NULL) -- { -- char fname[64]; -- int fnamelen = TAG_LEN (extpath); -- -- while (*(extpath + 2 + fnamelen - 1) == '\000' && fnamelen > 0) -- fnamelen--; -- -- if (fnamelen + 1 > sizeof (fname)) -- { -- grub_printf ("Too long file name for Extensions Path\n"); -- return 0; -- } -- else if (! fnamelen) -- { -- grub_printf ("Empty file name for Extensions Path\n"); -- return 0; -- } -- -- grub_memmove (fname, extpath + 2, fnamelen); -- fname[fnamelen] = '\000'; -- grub_printf ("Loading BOOTP-extension file: %s\n", fname); -- tftp (fname, decode_rfc1533); -- } -- -- /* Proceed with next block. */ -- return -1; --} -- --/************************************************************************** --IPCHKSUM - Checksum IP Header --**************************************************************************/ --static unsigned short --ipchksum (unsigned short *ip, int len) --{ -- unsigned long sum = 0; -- len >>= 1; -- while (len--) -- { -- sum += *(ip++); -- if (sum > 0xFFFF) -- sum -= 0xFFFF; -- } -- return (~sum) & 0x0000FFFF; --} -- --#define TWO_SECOND_DIVISOR (2147483647l/TICKS_PER_SEC) -- --/************************************************************************** --RFC2131_SLEEP_INTERVAL - sleep for expotentially longer times --**************************************************************************/ --long --rfc2131_sleep_interval (int base, int exp) --{ -- static long seed = 0; -- long q; -- unsigned long tmo; -- --#ifdef BACKOFF_LIMIT -- if (exp > BACKOFF_LIMIT) -- exp = BACKOFF_LIMIT; --#endif -- if (!seed) -- /* Initialize linear congruential generator */ -- seed = (currticks () + *((long *) &arptable[ARP_CLIENT].node) -- + ((short *) arptable[ARP_CLIENT].node)[2]); -- /* simplified version of the LCG given in Bruce Schneier's -- "Applied Cryptography" */ -- q = seed / 53668; -- if ((seed = 40014 * (seed - 53668 * q) - 12211 *q ) < 0) -- seed += 2147483563L; -- tmo = (base << exp) + (TICKS_PER_SEC - (seed / TWO_SECOND_DIVISOR)); -- return tmo; --} -- --/************************************************************************** --CLEANUP - shut down networking --**************************************************************************/ --void --cleanup_net (void) --{ -- if (network_ready) -- { -- /* Stop receiving packets. */ -- eth_disable (); -- network_ready = 0; -- } --} -diff -Naur grub-0.97.orig/netboot/mii.h grub-0.97/netboot/mii.h ---- grub-0.97.orig/netboot/mii.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/mii.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/mii.h +=================================================================== +--- /dev/null ++++ b/netboot/mii.h @@ -0,0 +1,105 @@ +/* + * linux/mii.h: definitions for MII-compatible transceivers @@ -21621,9 +20496,10 @@ diff -Naur grub-0.97.orig/netboot/mii.h grub-0.97/netboot/mii.h +#define NWAYTEST_LOOPBACK 0x0100 /* Enable loopback for N-way */ +#define NWAYTEST_RESV2 0xfe00 /* Unused... */ + -diff -Naur grub-0.97.orig/netboot/misc.c grub-0.97/netboot/misc.c ---- grub-0.97.orig/netboot/misc.c 2003-07-09 11:45:37.000000000 +0000 -+++ grub-0.97/netboot/misc.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/misc.c +=================================================================== +--- a/netboot/misc.c ++++ b/netboot/misc.c @@ -19,37 +19,90 @@ /* Based on "src/misc.c" in etherboot-5.0.5. */ @@ -21743,9 +20619,10 @@ diff -Naur grub-0.97.orig/netboot/misc.c grub-0.97/netboot/misc.c } + + -diff -Naur grub-0.97.orig/netboot/natsemi.c grub-0.97/netboot/natsemi.c ---- grub-0.97.orig/netboot/natsemi.c 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/natsemi.c 2005-08-31 19:53:07.000000000 +0000 +Index: b/netboot/natsemi.c +=================================================================== +--- a/netboot/natsemi.c ++++ b/netboot/natsemi.c @@ -47,15 +47,15 @@ /* Revision History */ @@ -21966,7 +20843,7 @@ diff -Naur grub-0.97.orig/netboot/natsemi.c grub-0.97/netboot/natsemi.c { - u32 status, to, nstype; + u32 to, nstype; - u32 tx_status; + volatile u32 tx_status; /* Stop the transmitter */ outl(TxOff, ioaddr + ChipCmd); @@ -21990,8 +20867,8 @@ diff -Naur grub-0.97.orig/netboot/natsemi.c grub-0.97/netboot/natsemi.c to = currticks() + TX_TIMEOUT; -- while ((((volatile u32) tx_status=txd.cmdsts) & OWN) && (currticks() < to)) -+ while ((volatile u32) ( tx_status=txd.cmdsts & OWN) && (currticks() < to)) +- while (((tx_status=txd.cmdsts) & OWN) && (currticks() < to)) ++ while (((tx_status=txd.cmdsts & OWN) && (currticks() < to)) /* wait */ ; if (currticks() >= to) { @@ -22076,9 +20953,10 @@ diff -Naur grub-0.97.orig/netboot/natsemi.c grub-0.97/netboot/natsemi.c + .id_count = sizeof(natsemi_nics)/sizeof(natsemi_nics[0]), + .class = 0, +}; -diff -Naur grub-0.97.orig/netboot/nfs.h grub-0.97/netboot/nfs.h ---- grub-0.97.orig/netboot/nfs.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/nfs.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/nfs.h +=================================================================== +--- /dev/null ++++ b/netboot/nfs.h @@ -0,0 +1,63 @@ +#ifndef _NFS_H +#define _NFS_H @@ -22143,9 +21021,10 @@ diff -Naur grub-0.97.orig/netboot/nfs.h grub-0.97/netboot/nfs.h +}; + +#endif /* _NFS_H */ -diff -Naur grub-0.97.orig/netboot/ni5010.c grub-0.97/netboot/ni5010.c ---- grub-0.97.orig/netboot/ni5010.c 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/ni5010.c 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/ni5010.c +=================================================================== +--- a/netboot/ni5010.c ++++ /dev/null @@ -1,371 +0,0 @@ -/************************************************************************** -Etherboot - BOOTP/TFTP Bootstrap Program @@ -22518,9 +21397,10 @@ diff -Naur grub-0.97.orig/netboot/ni5010.c grub-0.97/netboot/ni5010.c - nic->disable = ni5010_disable; - return (nic); -} -diff -Naur grub-0.97.orig/netboot/nic.c grub-0.97/netboot/nic.c ---- grub-0.97.orig/netboot/nic.c 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/nic.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/nic.c +=================================================================== +--- /dev/null ++++ b/netboot/nic.c @@ -0,0 +1,1198 @@ +/************************************************************************** +Etherboot - Network Bootstrap Program @@ -23720,9 +22600,10 @@ diff -Naur grub-0.97.orig/netboot/nic.c grub-0.97/netboot/nic.c + network_ready = 0; + } +} -diff -Naur grub-0.97.orig/netboot/nic.h grub-0.97/netboot/nic.h ---- grub-0.97.orig/netboot/nic.h 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/nic.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/nic.h +=================================================================== +--- a/netboot/nic.h ++++ b/netboot/nic.h @@ -8,24 +8,38 @@ #ifndef NIC_H #define NIC_H @@ -23767,9 +22648,10 @@ diff -Naur grub-0.97.orig/netboot/nic.h grub-0.97/netboot/nic.h +extern void eth_disable(void); +extern void eth_irq(irq_action_t action); #endif /* NIC_H */ -diff -Naur grub-0.97.orig/netboot/ns83820.c grub-0.97/netboot/ns83820.c ---- grub-0.97.orig/netboot/ns83820.c 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/ns83820.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/ns83820.c +=================================================================== +--- /dev/null ++++ b/netboot/ns83820.c @@ -0,0 +1,1020 @@ +/************************************************************************** +* ns83820.c: Etherboot device driver for the National Semiconductor 83820 @@ -24791,9 +23673,10 @@ diff -Naur grub-0.97.orig/netboot/ns83820.c grub-0.97/netboot/ns83820.c + .id_count = sizeof(ns83820_nics) / sizeof(ns83820_nics[0]), + .class = 0, +}; -diff -Naur grub-0.97.orig/netboot/ns8390.c grub-0.97/netboot/ns8390.c ---- grub-0.97.orig/netboot/ns8390.c 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/ns8390.c 2005-08-31 21:13:41.000000000 +0000 +Index: b/netboot/ns8390.c +=================================================================== +--- a/netboot/ns8390.c ++++ b/netboot/ns8390.c @@ -13,11 +13,15 @@ the proper functioning of this software, nor do the authors assume any responsibility for damages incurred with its use. @@ -25409,9 +24292,10 @@ diff -Naur grub-0.97.orig/netboot/ns8390.c grub-0.97/netboot/ns8390.c /* * Local variables: * c-basic-offset: 8 -diff -Naur grub-0.97.orig/netboot/osdep.h grub-0.97/netboot/osdep.h ---- grub-0.97.orig/netboot/osdep.h 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/osdep.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/osdep.h +=================================================================== +--- a/netboot/osdep.h ++++ b/netboot/osdep.h @@ -1,94 +1,18 @@ -#ifndef __OSDEP_H__ -#define __OSDEP_H__ @@ -25516,9 +24400,10 @@ diff -Naur grub-0.97.orig/netboot/osdep.h grub-0.97/netboot/osdep.h - * c-basic-offset: 8 - * End: - */ -diff -Naur grub-0.97.orig/netboot/otulip.c grub-0.97/netboot/otulip.c ---- grub-0.97.orig/netboot/otulip.c 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/otulip.c 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/otulip.c +=================================================================== +--- a/netboot/otulip.c ++++ /dev/null @@ -1,374 +0,0 @@ -/* - Etherboot DEC Tulip driver @@ -25894,9 +24779,10 @@ diff -Naur grub-0.97.orig/netboot/otulip.c grub-0.97/netboot/otulip.c - nic->disable = tulip_disable; - return nic; -} -diff -Naur grub-0.97.orig/netboot/otulip.h grub-0.97/netboot/otulip.h ---- grub-0.97.orig/netboot/otulip.h 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/otulip.h 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/otulip.h +=================================================================== +--- a/netboot/otulip.h ++++ /dev/null @@ -1,76 +0,0 @@ -/* mostly stolen from FreeBSD if_de.c, if_devar.h */ - @@ -25974,9 +24860,10 @@ diff -Naur grub-0.97.orig/netboot/otulip.h grub-0.97/netboot/otulip.h - unsigned char *buf1addr; /* buffer 1 address */ - unsigned char *buf2addr; /* buffer 2 address */ -}; -diff -Naur grub-0.97.orig/netboot/pci.c grub-0.97/netboot/pci.c ---- grub-0.97.orig/netboot/pci.c 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/pci.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/pci.c +=================================================================== +--- a/netboot/pci.c ++++ b/netboot/pci.c @@ -1,15 +1,3 @@ -/* -** Support for NE2000 PCI clones added David Monro June 1997 @@ -26914,9 +25801,10 @@ diff -Naur grub-0.97.orig/netboot/pci.c grub-0.97/netboot/pci.c + return 0; +} + -diff -Naur grub-0.97.orig/netboot/pci.h grub-0.97/netboot/pci.h ---- grub-0.97.orig/netboot/pci.h 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/pci.h 2005-08-31 21:31:46.000000000 +0000 +Index: b/netboot/pci.h +=================================================================== +--- a/netboot/pci.h ++++ b/netboot/pci.h @@ -1,4 +1,4 @@ -#ifndef PCI_H +#if !defined(PCI_H) && defined(CONFIG_PCI) @@ -27334,9 +26222,10 @@ diff -Naur grub-0.97.orig/netboot/pci.h grub-0.97/netboot/pci.h -extern int pcibios_write_config_dword(unsigned int bus, unsigned int device_fn, unsigned int where, unsigned int value); -void adjust_pci_device(struct pci_device *p); #endif /* PCI_H */ -diff -Naur grub-0.97.orig/netboot/pci_ids.h grub-0.97/netboot/pci_ids.h ---- grub-0.97.orig/netboot/pci_ids.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/pci_ids.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/pci_ids.h +=================================================================== +--- /dev/null ++++ b/netboot/pci_ids.h @@ -0,0 +1,1809 @@ +/* + * PCI Class, Vendor and Device IDs @@ -29147,9 +28036,10 @@ diff -Naur grub-0.97.orig/netboot/pci_ids.h grub-0.97/netboot/pci_ids.h +#define PCI_DEVICE_ID_ARK_STINGARK 0xa099 +#define PCI_DEVICE_ID_ARK_2000MT 0xa0a1 + -diff -Naur grub-0.97.orig/netboot/pci_io.c grub-0.97/netboot/pci_io.c ---- grub-0.97.orig/netboot/pci_io.c 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/pci_io.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/pci_io.c +=================================================================== +--- /dev/null ++++ b/netboot/pci_io.c @@ -0,0 +1,431 @@ +/* +** Support for NE2000 PCI clones added David Monro June 1997 @@ -29582,9 +28472,10 @@ diff -Naur grub-0.97.orig/netboot/pci_io.c grub-0.97/netboot/pci_io.c + LeaveFunction("find_pci"); + return scan_pci_bus(type, dev); +} -diff -Naur grub-0.97.orig/netboot/pcnet32.c grub-0.97/netboot/pcnet32.c ---- grub-0.97.orig/netboot/pcnet32.c 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/pcnet32.c 2005-08-31 22:57:50.000000000 +0000 +Index: b/netboot/pcnet32.c +=================================================================== +--- /dev/null ++++ b/netboot/pcnet32.c @@ -0,0 +1,1004 @@ +/************************************************************************** +* @@ -30590,9 +29481,10 @@ diff -Naur grub-0.97.orig/netboot/pcnet32.c grub-0.97/netboot/pcnet32.c + .id_count = sizeof(pcnet32_nics) / sizeof(pcnet32_nics[0]), + .class = 0, +}; -diff -Naur grub-0.97.orig/netboot/pic8259.c grub-0.97/netboot/pic8259.c ---- grub-0.97.orig/netboot/pic8259.c 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/pic8259.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/pic8259.c +=================================================================== +--- /dev/null ++++ b/netboot/pic8259.c @@ -0,0 +1,267 @@ +/* + * Basic support for controlling the 8259 Programmable Interrupt Controllers. @@ -30861,9 +29753,10 @@ diff -Naur grub-0.97.orig/netboot/pic8259.c grub-0.97/netboot/pic8259.c + } +} +#endif -diff -Naur grub-0.97.orig/netboot/pic8259.h grub-0.97/netboot/pic8259.h ---- grub-0.97.orig/netboot/pic8259.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/pic8259.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/pic8259.h +=================================================================== +--- /dev/null ++++ b/netboot/pic8259.h @@ -0,0 +1,99 @@ +/* + * Basic support for controlling the 8259 Programmable Interrupt Controllers. @@ -30964,9 +29857,10 @@ diff -Naur grub-0.97.orig/netboot/pic8259.h grub-0.97/netboot/pic8259.h +#endif + +#endif /* PIC8259_H */ -diff -Naur grub-0.97.orig/netboot/pnic.c grub-0.97/netboot/pnic.c ---- grub-0.97.orig/netboot/pnic.c 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/pnic.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/pnic.c +=================================================================== +--- /dev/null ++++ b/netboot/pnic.c @@ -0,0 +1,267 @@ +/************************************************************************** +Etherboot - BOOTP/TFTP Bootstrap Program @@ -31235,9 +30129,10 @@ diff -Naur grub-0.97.orig/netboot/pnic.c grub-0.97/netboot/pnic.c + .id_count = sizeof(pnic_nics)/sizeof(pnic_nics[0]), + .class = 0, +}; -diff -Naur grub-0.97.orig/netboot/pnic_api.h grub-0.97/netboot/pnic_api.h ---- grub-0.97.orig/netboot/pnic_api.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/pnic_api.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/pnic_api.h +=================================================================== +--- /dev/null ++++ b/netboot/pnic_api.h @@ -0,0 +1,59 @@ +/* + * Constants etc. for the Bochs/Etherboot pseudo-NIC @@ -31298,9 +30193,10 @@ diff -Naur grub-0.97.orig/netboot/pnic_api.h grub-0.97/netboot/pnic_api.h + */ + +#define PNIC_API_VERSION 0x0101 /* 1.1 */ -diff -Naur grub-0.97.orig/netboot/pxe.h grub-0.97/netboot/pxe.h ---- grub-0.97.orig/netboot/pxe.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/pxe.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/pxe.h +=================================================================== +--- /dev/null ++++ b/netboot/pxe.h @@ -0,0 +1,521 @@ +/* + * Copyright (c) 2000 Alfred Perlstein @@ -31823,9 +30719,10 @@ diff -Naur grub-0.97.orig/netboot/pxe.h grub-0.97/netboot/pxe.h +typedef struct { + PXENV_STATUS_t Status; +} PACKED t_PXENV_STOP_BASE; -diff -Naur grub-0.97.orig/netboot/r8169.c grub-0.97/netboot/r8169.c ---- grub-0.97.orig/netboot/r8169.c 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/r8169.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/r8169.c +=================================================================== +--- /dev/null ++++ b/netboot/r8169.c @@ -0,0 +1,854 @@ +/************************************************************************** +* r8169.c: Etherboot device driver for the RealTek RTL-8169 Gigabit @@ -32681,9 +31578,10 @@ diff -Naur grub-0.97.orig/netboot/r8169.c grub-0.97/netboot/r8169.c + .id_count = sizeof(r8169_nics) / sizeof(r8169_nics[0]), + .class = 0, +}; -diff -Naur grub-0.97.orig/netboot/rtl8139.c grub-0.97/netboot/rtl8139.c ---- grub-0.97.orig/netboot/rtl8139.c 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/rtl8139.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/rtl8139.c +=================================================================== +--- a/netboot/rtl8139.c ++++ b/netboot/rtl8139.c @@ -17,6 +17,8 @@ /*********************************************************************/ @@ -33103,9 +32001,10 @@ diff -Naur grub-0.97.orig/netboot/rtl8139.c grub-0.97/netboot/rtl8139.c + .id_count = sizeof(rtl8139_nics)/sizeof(rtl8139_nics[0]), + .class = 0, +}; -diff -Naur grub-0.97.orig/netboot/segoff.h grub-0.97/netboot/segoff.h ---- grub-0.97.orig/netboot/segoff.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/segoff.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/segoff.h +=================================================================== +--- /dev/null ++++ b/netboot/segoff.h @@ -0,0 +1,43 @@ +/* + * Segment:offset types and macros @@ -33150,9 +32049,10 @@ diff -Naur grub-0.97.orig/netboot/segoff.h grub-0.97/netboot/segoff.h +#define VIRTUAL(x,y) ( phys_to_virt ( ( ( x ) << 4 ) + ( y ) ) ) + +#endif /* SEGOFF_H */ -diff -Naur grub-0.97.orig/netboot/sis900.c grub-0.97/netboot/sis900.c ---- grub-0.97.orig/netboot/sis900.c 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/sis900.c 2005-08-31 20:02:38.000000000 +0000 +Index: b/netboot/sis900.c +=================================================================== +--- a/netboot/sis900.c ++++ b/netboot/sis900.c @@ -27,6 +27,11 @@ /* Revision History */ @@ -33910,7 +32810,7 @@ diff -Naur grub-0.97.orig/netboot/sis900.c grub-0.97/netboot/sis900.c { - u32 status, to, nstype; + u32 to, nstype; - u32 tx_status; + volatile u32 tx_status; /* Stop the transmitter */ - outl(TxDIS, ioaddr + cr); @@ -33939,8 +32839,8 @@ diff -Naur grub-0.97.orig/netboot/sis900.c grub-0.97/netboot/sis900.c to = currticks() + TX_TIMEOUT; -- while ((((volatile u32) tx_status=txd.cmdsts) & OWN) && (currticks() < to)) -+ while ((volatile u32) ( tx_status=txd.cmdsts & OWN) && (currticks() < to)) +- while (((tx_status=txd.cmdsts) & OWN) && (currticks() < to)) ++ while (((tx_status=txd.cmdsts & OWN) && (currticks() < to)) /* wait */ ; if (currticks() >= to) { @@ -34048,9 +32948,10 @@ diff -Naur grub-0.97.orig/netboot/sis900.c grub-0.97/netboot/sis900.c + .id_count = sizeof(sis900_nics)/sizeof(sis900_nics[0]), + .class = 0, +}; -diff -Naur grub-0.97.orig/netboot/sis900.h grub-0.97/netboot/sis900.h ---- grub-0.97.orig/netboot/sis900.h 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/sis900.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/sis900.h +=================================================================== +--- a/netboot/sis900.h ++++ b/netboot/sis900.h @@ -39,14 +39,16 @@ /* Symbolic names for bits in various registers */ @@ -34132,9 +33033,10 @@ diff -Naur grub-0.97.orig/netboot/sis900.h grub-0.97/netboot/sis900.h }; enum sis630_revision_id { -diff -Naur grub-0.97.orig/netboot/sis900.txt grub-0.97/netboot/sis900.txt ---- grub-0.97.orig/netboot/sis900.txt 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/sis900.txt 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/sis900.txt +=================================================================== +--- a/netboot/sis900.txt ++++ /dev/null @@ -1,91 +0,0 @@ -How I added the SIS900 card to Etherboot - @@ -34227,1345 +33129,10 @@ diff -Naur grub-0.97.orig/netboot/sis900.txt grub-0.97/netboot/sis900.txt -assistance. - -Enjoy. -diff -Naur grub-0.97.orig/netboot/sk_g16.c grub-0.97/netboot/sk_g16.c ---- grub-0.97.orig/netboot/sk_g16.c 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/sk_g16.c 1970-01-01 00:00:00.000000000 +0000 -@@ -1,1160 +0,0 @@ --/************************************************************************** --Etherboot - BOOTP/TFTP Bootstrap Program --Schneider & Koch G16 NIC driver for Etherboot --heavily based on SK G16 driver from Linux 2.0.36 --Changes to make it work with Etherboot by Georg Baum --***************************************************************************/ -- --/*- -- * Copyright (C) 1994 by PJD Weichmann & SWS Bern, Switzerland -- * -- * This software may be used and distributed according to the terms -- * of the GNU Public License, incorporated herein by reference. -- * -- * Module : sk_g16.c -- * -- * Version : $Revision: 1.4 $ -- * -- * Author : Patrick J.D. Weichmann -- * -- * Date Created : 94/05/26 -- * Last Updated : $Date: 2002/01/02 21:56:40 $ -- * -- * Description : Schneider & Koch G16 Ethernet Device Driver for -- * Linux Kernel >= 1.1.22 -- * Update History : -- * ---*/ -- --/* -- * The Schneider & Koch (SK) G16 Network device driver is based -- * on the 'ni6510' driver from Michael Hipp which can be found at -- * ftp://sunsite.unc.edu/pub/Linux/system/Network/drivers/nidrivers.tar.gz -- * -- * Sources: 1) ni6510.c by M. Hipp -- * 2) depca.c by D.C. Davies -- * 3) skeleton.c by D. Becker -- * 4) Am7990 Local Area Network Controller for Ethernet (LANCE), -- * AMD, Pub. #05698, June 1989 -- * -- * Many Thanks for helping me to get things working to: -- * -- * A. Cox (A.Cox@swansea.ac.uk) -- * M. Hipp (mhipp@student.uni-tuebingen.de) -- * R. Bolz (Schneider & Koch, Germany) -- * -- * See README.sk_g16 for details about limitations and bugs for the -- * current version. -- * -- * To Do: -- * - Support of SK_G8 and other SK Network Cards. -- * - Autoset memory mapped RAM. Check for free memory and then -- * configure RAM correctly. -- * - SK_close should really set card in to initial state. -- * - Test if IRQ 3 is not switched off. Use autoirq() functionality. -- * (as in /drivers/net/skeleton.c) -- * - Implement Multicast addressing. At minimum something like -- * in depca.c. -- * - Redo the statistics part. -- * - Try to find out if the board is in 8 Bit or 16 Bit slot. -- * If in 8 Bit mode don't use IRQ 11. -- * - (Try to make it slightly faster.) -- */ -- --/* to get some global routines like printf */ --#include "etherboot.h" --/* to get the interface to the body of the program */ --#include "nic.h" -- --/* From linux/if_ether.h: */ --#define ETH_ZLEN 60 /* Min. octets in frame sans FCS */ -- --#include "sk_g16.h" -- --/* -- * Schneider & Koch Card Definitions -- * ================================= -- */ -- --#define SK_NAME "SK_G16" -- --/* -- * SK_G16 Configuration -- * -------------------- -- */ -- --/* -- * Abbreviations -- * ------------- -- * -- * RAM - used for the 16KB shared memory -- * Boot_ROM, ROM - are used for referencing the BootEPROM -- * -- * SK_ADDR is a symbolic constant used to configure -- * the behaviour of the driver and the SK_G16. -- * -- * SK_ADDR defines the address where the RAM will be mapped into the real -- * host memory. -- * valid addresses are from 0xa0000 to 0xfc000 in 16Kbyte steps. -- */ -- --#define SK_ADDR 0xcc000 -- --/* -- * In POS3 are bits A14-A19 of the address bus. These bits can be set -- * to choose the RAM address. That's why we only can choose the RAM address -- * in 16KB steps. -- */ -- --#define POS_ADDR (rom_addr>>14) /* Do not change this line */ -- --/* -- * SK_G16 I/O PORT's + IRQ's + Boot_ROM locations -- * ---------------------------------------------- -- */ -- --/* -- * As nearly every card has also SK_G16 a specified I/O Port region and -- * only a few possible IRQ's. -- * In the Installation Guide from Schneider & Koch is listed a possible -- * Interrupt IRQ2. IRQ2 is always IRQ9 in boards with two cascaded interrupt -- * controllers. So we use in SK_IRQS IRQ9. -- */ -- --/* Don't touch any of the following #defines. */ -- --#define SK_IO_PORTS { 0x100, 0x180, 0x208, 0x220, 0x288, 0x320, 0x328, 0x390, 0 } -- --/* -- * SK_G16 POS REGISTERS -- * -------------------- -- */ -- --/* -- * SK_G16 has a Programmable Option Select (POS) Register. -- * The POS is composed of 8 separate registers (POS0-7) which -- * are I/O mapped on an address set by the W1 switch. -- * -- */ -- --#define SK_POS_SIZE 8 /* 8 I/O Ports are used by SK_G16 */ -- --#define SK_POS0 ioaddr /* Card-ID Low (R) */ --#define SK_POS1 ioaddr+1 /* Card-ID High (R) */ --#define SK_POS2 ioaddr+2 /* Card-Enable, Boot-ROM Disable (RW) */ --#define SK_POS3 ioaddr+3 /* Base address of RAM */ --#define SK_POS4 ioaddr+4 /* IRQ */ -- --/* POS5 - POS7 are unused */ -- --/* -- * SK_G16 MAC PREFIX -- * ----------------- -- */ -- --/* -- * Scheider & Koch manufacturer code (00:00:a5). -- * This must be checked, that we are sure it is a SK card. -- */ -- --#define SK_MAC0 0x00 --#define SK_MAC1 0x00 --#define SK_MAC2 0x5a -- --/* -- * SK_G16 ID -- * --------- -- */ -- --/* -- * If POS0,POS1 contain the following ID, then we know -- * at which I/O Port Address we are. -- */ -- --#define SK_IDLOW 0xfd --#define SK_IDHIGH 0x6a -- -- --/* -- * LANCE POS Bit definitions -- * ------------------------- -- */ -- --#define SK_ROM_RAM_ON (POS2_CARD) --#define SK_ROM_RAM_OFF (POS2_EPROM) --#define SK_ROM_ON (inb(SK_POS2) & POS2_CARD) --#define SK_ROM_OFF (inb(SK_POS2) | POS2_EPROM) --#define SK_RAM_ON (inb(SK_POS2) | POS2_CARD) --#define SK_RAM_OFF (inb(SK_POS2) & POS2_EPROM) -- --#define POS2_CARD 0x0001 /* 1 = SK_G16 on 0 = off */ --#define POS2_EPROM 0x0002 /* 1 = Boot EPROM off 0 = on */ -- --/* -- * SK_G16 Memory mapped Registers -- * ------------------------------ -- * -- */ -- --#define SK_IOREG (board->ioreg) /* LANCE data registers. */ --#define SK_PORT (board->port) /* Control, Status register */ --#define SK_IOCOM (board->iocom) /* I/O Command */ -- --/* -- * SK_G16 Status/Control Register bits -- * ----------------------------------- -- * -- * (C) Controlreg (S) Statusreg -- */ -- --/* -- * Register transfer: 0 = no transfer -- * 1 = transferring data between LANCE and I/O reg -- */ --#define SK_IORUN 0x20 -- --/* -- * LANCE interrupt: 0 = LANCE interrupt occurred -- * 1 = no LANCE interrupt occurred -- */ --#define SK_IRQ 0x10 -- --#define SK_RESET 0x08 /* Reset SK_CARD: 0 = RESET 1 = normal */ --#define SK_RW 0x02 /* 0 = write to 1 = read from */ --#define SK_ADR 0x01 /* 0 = REG DataPort 1 = RAP Reg addr port */ -- -- --#define SK_RREG SK_RW /* Transferdirection to read from lance */ --#define SK_WREG 0 /* Transferdirection to write to lance */ --#define SK_RAP SK_ADR /* Destination Register RAP */ --#define SK_RDATA 0 /* Destination Register REG DataPort */ -- --/* -- * SK_G16 I/O Command -- * ------------------ -- */ -- --/* -- * Any bitcombination sets the internal I/O bit (transfer will start) -- * when written to I/O Command -- */ -- --#define SK_DOIO 0x80 /* Do Transfer */ -- --/* -- * LANCE RAP (Register Address Port). -- * --------------------------------- -- */ -- --/* -- * The LANCE internal registers are selected through the RAP. -- * The Registers are: -- * -- * CSR0 - Status and Control flags -- * CSR1 - Low order bits of initialize block (bits 15:00) -- * CSR2 - High order bits of initialize block (bits 07:00, 15:08 are reserved) -- * CSR3 - Allows redefinition of the Bus Master Interface. -- * This register must be set to 0x0002, which means BSWAP = 0, -- * ACON = 1, BCON = 0; -- * -- */ -- --#define CSR0 0x00 --#define CSR1 0x01 --#define CSR2 0x02 --#define CSR3 0x03 -- --/* -- * General Definitions -- * =================== -- */ -- --/* -- * Set the number of Tx and Rx buffers, using Log_2(# buffers). -- * We have 16KB RAM which can be accessed by the LANCE. In the -- * memory are not only the buffers but also the ring descriptors and -- * the initialize block. -- * Don't change anything unless you really know what you do. -- */ -- --#define LC_LOG_TX_BUFFERS 1 /* (2 == 2^^1) 2 Transmit buffers */ --#define LC_LOG_RX_BUFFERS 2 /* (8 == 2^^3) 8 Receive buffers */ -- --/* Descriptor ring sizes */ -- --#define TMDNUM (1 << (LC_LOG_TX_BUFFERS)) /* 2 Transmit descriptor rings */ --#define RMDNUM (1 << (LC_LOG_RX_BUFFERS)) /* 8 Receive Buffers */ -- --/* Define Mask for setting RMD, TMD length in the LANCE init_block */ -- --#define TMDNUMMASK (LC_LOG_TX_BUFFERS << 29) --#define RMDNUMMASK (LC_LOG_RX_BUFFERS << 29) -- --/* -- * Data Buffer size is set to maximum packet length. -- */ -- --#define PKT_BUF_SZ 1518 -- --/* -- * The number of low I/O ports used by the ethercard. -- */ -- --#define ETHERCARD_TOTAL_SIZE SK_POS_SIZE -- --/* -- * Portreserve is there to mark the Card I/O Port region as used. -- * Check_region is to check if the region at ioaddr with the size "size" -- * is free or not. -- * Snarf_region allocates the I/O Port region. -- */ -- --#ifndef HAVE_PORTRESERVE -- --#define check_region(ioaddr1, size) 0 --#define request_region(ioaddr1, size,name) do ; while (0) -- --#endif -- --/* -- * SK_DEBUG -- * -- * Here you can choose what level of debugging wanted. -- * -- * If SK_DEBUG and SK_DEBUG2 are undefined, then only the -- * necessary messages will be printed. -- * -- * If SK_DEBUG is defined, there will be many debugging prints -- * which can help to find some mistakes in configuration or even -- * in the driver code. -- * -- * If SK_DEBUG2 is defined, many many messages will be printed -- * which normally you don't need. I used this to check the interrupt -- * routine. -- * -- * (If you define only SK_DEBUG2 then only the messages for -- * checking interrupts will be printed!) -- * -- * Normal way of live is: -- * -- * For the whole thing get going let both symbolic constants -- * undefined. If you face any problems and you know what's going -- * on (you know something about the card and you can interpret some -- * hex LANCE register output) then define SK_DEBUG -- * -- */ -- --#undef SK_DEBUG /* debugging */ --#undef SK_DEBUG2 /* debugging with more verbose report */ -- --#ifdef SK_DEBUG --#define PRINTF(x) printf x --#else --#define PRINTF(x) /**/ --#endif -- --#ifdef SK_DEBUG2 --#define PRINTF2(x) printf x --#else --#define PRINTF2(x) /**/ --#endif -- --/* -- * SK_G16 RAM -- * -- * The components are memory mapped and can be set in a region from -- * 0x00000 through 0xfc000 in 16KB steps. -- * -- * The Network components are: dual ported RAM, Prom, I/O Reg, Status-, -- * Controlregister and I/O Command. -- * -- * dual ported RAM: This is the only memory region which the LANCE chip -- * has access to. From the Lance it is addressed from 0x0000 to -- * 0x3fbf. The host accesses it normally. -- * -- * PROM: The PROM obtains the ETHERNET-MAC-Address. It is realised as a -- * 8-Bit PROM, this means only the 16 even addresses are used of the -- * 32 Byte Address region. Access to a odd address results in invalid -- * data. -- * -- * LANCE I/O Reg: The I/O Reg is build of 4 single Registers, Low-Byte Write, -- * Hi-Byte Write, Low-Byte Read, Hi-Byte Read. -- * Transfer from or to the LANCE is always in 16Bit so Low and High -- * registers are always relevant. -- * -- * The Data from the Readregister is not the data in the Writeregister!! -- * -- * Port: Status- and Controlregister. -- * Two different registers which share the same address, Status is -- * read-only, Control is write-only. -- * -- * I/O Command: -- * Any bitcombination written in here starts the transmission between -- * Host and LANCE. -- */ -- --typedef struct --{ -- unsigned char ram[0x3fc0]; /* 16KB dual ported ram */ -- unsigned char rom[0x0020]; /* 32Byte PROM containing 6Byte MAC */ -- unsigned char res1[0x0010]; /* reserved */ -- unsigned volatile short ioreg;/* LANCE I/O Register */ -- unsigned volatile char port; /* Statusregister and Controlregister */ -- unsigned char iocom; /* I/O Command Register */ --} SK_RAM; -- --/* struct */ -- --/* -- * This is the structure for the dual ported ram. We -- * have exactly 16 320 Bytes. In here there must be: -- * -- * - Initialize Block (starting at a word boundary) -- * - Receive and Transmit Descriptor Rings (quadword boundary) -- * - Data Buffers (arbitrary boundary) -- * -- * This is because LANCE has on SK_G16 only access to the dual ported -- * RAM and nowhere else. -- */ -- --struct SK_ram --{ -- struct init_block ib; -- struct tmd tmde[TMDNUM]; -- struct rmd rmde[RMDNUM]; -- char tmdbuf[TMDNUM][PKT_BUF_SZ]; -- char rmdbuf[RMDNUM][PKT_BUF_SZ]; --}; -- --/* -- * Structure where all necessary information is for ring buffer -- * management and statistics. -- */ -- --struct priv --{ -- struct SK_ram *ram; /* dual ported ram structure */ -- struct rmd *rmdhead; /* start of receive ring descriptors */ -- struct tmd *tmdhead; /* start of transmit ring descriptors */ -- int rmdnum; /* actual used ring descriptor */ -- int tmdnum; /* actual transmit descriptor for transmitting data */ -- int tmdlast; /* last sent descriptor used for error handling, etc */ -- void *rmdbufs[RMDNUM]; /* pointer to the receive buffers */ -- void *tmdbufs[TMDNUM]; /* pointer to the transmit buffers */ --}; -- --/* global variable declaration */ -- --/* static variables */ -- --static SK_RAM *board; /* pointer to our memory mapped board components */ --static unsigned short ioaddr; /* base io address */ --static struct priv p_data; -- --/* Macros */ -- -- --/* Function Prototypes */ -- --/* -- * Device Driver functions -- * ----------------------- -- * See for short explanation of each function its definitions header. -- */ -- --static int SK_probe1(struct nic *nic, short ioaddr1); -- --static void SK_reset(struct nic *nic); --static int SK_poll(struct nic *nic); --static void SK_transmit( --struct nic *nic, --const char *d, /* Destination */ --unsigned int t, /* Type */ --unsigned int s, /* size */ --const char *p); /* Packet */ --static void SK_disable(struct nic *nic); --struct nic *SK_probe(struct nic *nic, unsigned short *probe_addrs); -- --/* -- * LANCE Functions -- * --------------- -- */ -- --static int SK_lance_init(struct nic *nic, unsigned short mode); --static void SK_reset_board(void); --static void SK_set_RAP(int reg_number); --static int SK_read_reg(int reg_number); --static int SK_rread_reg(void); --static void SK_write_reg(int reg_number, int value); -- --/* -- * Debugging functions -- * ------------------- -- */ -- --static void SK_print_pos(struct nic *nic, char *text); --static void SK_print_ram(struct nic *nic); -- -- --/************************************************************************** --RESET - Reset adapter --***************************************************************************/ --static void SK_reset(struct nic *nic) --{ -- /* put the card in its initial state */ -- SK_lance_init(nic, MODE_NORMAL); --} -- --/************************************************************************** --POLL - Wait for a frame --***************************************************************************/ --static int SK_poll(struct nic *nic) --{ -- /* return true if there's an ethernet packet ready to read */ -- struct priv *p; /* SK_G16 private structure */ -- struct rmd *rmdp; -- int csr0, rmdstat, packet_there; -- PRINTF2(("## %s: At beginning of SK_poll(). CSR0: %#hX\n", -- SK_NAME, SK_read_reg(CSR0))); -- -- p = nic->priv_data; -- csr0 = SK_read_reg(CSR0); /* store register for checking */ -- -- /* -- * Acknowledge all of the current interrupt sources, disable -- * Interrupts (INEA = 0) -- */ -- -- SK_write_reg(CSR0, csr0 & CSR0_CLRALL); -- -- if (csr0 & CSR0_ERR) /* LANCE Error */ -- { -- printf("%s: error: %#hX", SK_NAME, csr0); -- -- if (csr0 & CSR0_MISS) /* No place to store packet ? */ -- { -- printf(", Packet dropped."); -- } -- putchar('\n'); -- } -- -- rmdp = p->rmdhead + p->rmdnum; -- packet_there = 0; -- /* As long as we own the next entry, check status and send -- * it up to higher layer -- */ -- -- while (!( (rmdstat = rmdp->u.s.status) & RX_OWN)) -- { -- /* -- * Start and end of packet must be set, because we use -- * the ethernet maximum packet length (1518) as buffer size. -- * -- * Because our buffers are at maximum OFLO and BUFF errors are -- * not to be concerned (see Data sheet) -- */ -- -- if ((rmdstat & (RX_STP | RX_ENP)) != (RX_STP | RX_ENP)) -- { -- /* Start of a frame > 1518 Bytes ? */ -- -- if (rmdstat & RX_STP) -- { -- printf("%s: packet too long\n", SK_NAME); -- } -- -- /* -- * All other packets will be ignored until a new frame with -- * start (RX_STP) set follows. -- * -- * What we do is just give descriptor free for new incoming -- * packets. -- */ -- -- rmdp->u.s.status = RX_OWN; /* Relinquish ownership to LANCE */ -- -- } -- else if (rmdstat & RX_ERR) /* Receive Error ? */ -- { -- printf("%s: RX error: %#hX\n", SK_NAME, (int) rmdstat); -- rmdp->u.s.status = RX_OWN; /* Relinquish ownership to LANCE */ -- } -- else /* We have a packet which can be queued for the upper layers */ -- { -- -- int len = (rmdp->mlen & 0x0fff); /* extract message length from receive buffer */ -- -- /* -- * Copy data out of our receive descriptor into nic->packet. -- * -- * (rmdp->u.buffer & 0x00ffffff) -> get address of buffer and -- * ignore status fields) -- */ -- -- memcpy(nic->packet, (unsigned char *) (rmdp->u.buffer & 0x00ffffff), nic->packetlen = len); -- packet_there = 1; -- -- -- /* -- * Packet is queued and marked for processing so we -- * free our descriptor -- */ -- -- rmdp->u.s.status = RX_OWN; -- -- p->rmdnum++; -- p->rmdnum %= RMDNUM; -- -- rmdp = p->rmdhead + p->rmdnum; -- } -- } -- SK_write_reg(CSR0, CSR0_INEA); /* Enable Interrupts */ -- return (packet_there); --} -- --/************************************************************************** --TRANSMIT - Transmit a frame --***************************************************************************/ --static void SK_transmit( --struct nic *nic, --const char *d, /* Destination */ --unsigned int t, /* Type */ --unsigned int s, /* size */ --const char *pack) /* Packet */ --{ -- /* send the packet to destination */ -- struct priv *p; /* SK_G16 private structure */ -- struct tmd *tmdp; -- short len; -- int csr0, i, tmdstat; -- -- PRINTF2(("## %s: At beginning of SK_transmit(). CSR0: %#hX\n", -- SK_NAME, SK_read_reg(CSR0))); -- p = nic->priv_data; -- tmdp = p->tmdhead + p->tmdnum; /* Which descriptor for transmitting */ -- -- /* Copy data into dual ported ram */ -- -- memcpy(&p->ram->tmdbuf[p->tmdnum][0], d, ETH_ALEN); /* dst */ -- memcpy(&p->ram->tmdbuf[p->tmdnum][ETH_ALEN], nic->node_addr, ETH_ALEN); /* src */ -- p->ram->tmdbuf[p->tmdnum][ETH_ALEN + ETH_ALEN] = t >> 8; /* type */ -- p->ram->tmdbuf[p->tmdnum][ETH_ALEN + ETH_ALEN + 1] = t; /* type */ -- memcpy(&p->ram->tmdbuf[p->tmdnum][ETH_HLEN], pack, s); -- s += ETH_HLEN; -- while (s < ETH_ZLEN) /* pad to min length */ -- p->ram->tmdbuf[p->tmdnum][s++] = 0; -- p->ram->tmde[p->tmdnum].status2 = 0x0; -- -- /* Evaluate Packet length */ -- len = ETH_ZLEN < s ? s : ETH_ZLEN; -- -- /* Fill in Transmit Message Descriptor */ -- -- tmdp->blen = -len; /* set length to transmit */ -- -- /* -- * Packet start and end is always set because we use the maximum -- * packet length as buffer length. -- * Relinquish ownership to LANCE -- */ -- -- tmdp->u.s.status = TX_OWN | TX_STP | TX_ENP; -- -- /* Start Demand Transmission */ -- SK_write_reg(CSR0, CSR0_TDMD | CSR0_INEA); -- -- csr0 = SK_read_reg(CSR0); /* store register for checking */ -- -- /* -- * Acknowledge all of the current interrupt sources, disable -- * Interrupts (INEA = 0) -- */ -- -- SK_write_reg(CSR0, csr0 & CSR0_CLRALL); -- -- if (csr0 & CSR0_ERR) /* LANCE Error */ -- { -- printf("%s: error: %#hX", SK_NAME, csr0); -- -- if (csr0 & CSR0_MISS) /* No place to store packet ? */ -- { -- printf(", Packet dropped."); -- } -- putchar('\n'); -- } -- -- -- /* Set next buffer */ -- p->tmdlast++; -- p->tmdlast &= TMDNUM-1; -- -- tmdstat = tmdp->u.s.status & 0xff00; /* filter out status bits 15:08 */ -- -- /* -- * We check status of transmitted packet. -- * see LANCE data-sheet for error explanation -- */ -- if (tmdstat & TX_ERR) /* Error occurred */ -- { -- printf("%s: TX error: %#hX %#hX\n", SK_NAME, (int) tmdstat, -- (int) tmdp->status2); -- -- if (tmdp->status2 & TX_TDR) /* TDR problems? */ -- { -- printf("%s: tdr-problems \n", SK_NAME); -- } -- -- if (tmdp->status2 & TX_UFLO) /* Underflow error ? */ -- { -- /* -- * If UFLO error occurs it will turn transmitter of. -- * So we must reinit LANCE -- */ -- -- SK_lance_init(nic, MODE_NORMAL); -- } -- -- tmdp->status2 = 0; /* Clear error flags */ -- } -- -- SK_write_reg(CSR0, CSR0_INEA); /* Enable Interrupts */ -- -- /* Set pointer to next transmit buffer */ -- p->tmdnum++; -- p->tmdnum &= TMDNUM-1; -- --} -- --/************************************************************************** --DISABLE - Turn off ethernet interface --***************************************************************************/ --static void SK_disable(struct nic *nic) --{ -- PRINTF(("## %s: At beginning of SK_disable(). CSR0: %#hX\n", -- SK_NAME, SK_read_reg(CSR0))); -- PRINTF(("%s: Shutting %s down CSR0 %#hX\n", SK_NAME, SK_NAME, -- (int) SK_read_reg(CSR0))); -- -- SK_write_reg(CSR0, CSR0_STOP); /* STOP the LANCE */ --} -- --/************************************************************************** --PROBE - Look for an adapter, this routine's visible to the outside --***************************************************************************/ --struct nic *SK_probe(struct nic *nic, unsigned short *probe_addrs) --{ -- unsigned short *p; -- static unsigned short io_addrs[] = SK_IO_PORTS; -- /* if probe_addrs is 0, then routine can use a hardwired default */ -- putchar('\n'); -- nic->priv_data = &p_data; -- if (probe_addrs == 0) -- probe_addrs = io_addrs; -- for (p = probe_addrs; (ioaddr = *p) != 0; ++p) -- { -- long offset1, offset0 = inb(ioaddr); -- if ((offset0 == SK_IDLOW) && -- ((offset1 = inb(ioaddr + 1)) == SK_IDHIGH)) -- if (SK_probe1(nic, ioaddr) >= 0) -- break; -- } -- /* if board found */ -- if (ioaddr != 0) -- { -- /* point to NIC specific routines */ -- nic->reset = SK_reset; -- nic->poll = SK_poll; -- nic->transmit = SK_transmit; -- nic->disable = SK_disable; -- return nic; -- } -- /* else */ -- { -- return 0; -- } --} -- --int SK_probe1(struct nic *nic, short ioaddr1) --{ -- int i,j; /* Counters */ -- int sk_addr_flag = 0; /* SK ADDR correct? 1 - no, 0 - yes */ -- unsigned int rom_addr; /* used to store RAM address used for POS_ADDR */ -- -- struct priv *p; /* SK_G16 private structure */ -- -- if (SK_ADDR & 0x3fff || SK_ADDR < 0xa0000) -- { -- /* -- * Now here we could use a routine which searches for a free -- * place in the ram and set SK_ADDR if found. TODO. -- */ -- printf("%s: SK_ADDR %#hX is not valid. Check configuration.\n", -- SK_NAME, SK_ADDR); -- return -1; -- } -- -- rom_addr = SK_ADDR; -- -- outb(SK_ROM_RAM_OFF, SK_POS2); /* Boot_ROM + RAM off */ -- outb(POS_ADDR, SK_POS3); /* Set RAM address */ -- outb(SK_ROM_RAM_ON, SK_POS2); /* RAM on, BOOT_ROM on */ --#ifdef SK_DEBUG -- SK_print_pos(nic, "POS registers after ROM, RAM config"); --#endif -- -- board = (SK_RAM *) rom_addr; -- PRINTF(("adr[0]: %hX, adr[1]: %hX, adr[2]: %hX\n", -- board->rom[0], board->rom[2], board->rom[4])); -- -- /* Read in station address */ -- for (i = 0, j = 0; i < ETH_ALEN; i++, j+=2) -- { -- *(nic->node_addr+i) = board->rom[j]; -- } -- -- /* Check for manufacturer code */ --#ifdef SK_DEBUG -- if (!(*(nic->node_addr+0) == SK_MAC0 && -- *(nic->node_addr+1) == SK_MAC1 && -- *(nic->node_addr+2) == SK_MAC2) ) -- { -- PRINTF(("## %s: We did not find SK_G16 at RAM location.\n", -- SK_NAME)); -- return -1; /* NO SK_G16 found */ -- } --#endif -- -- p = nic->priv_data; -- -- /* Initialize private structure */ -- -- p->ram = (struct SK_ram *) rom_addr; /* Set dual ported RAM addr */ -- p->tmdhead = &(p->ram)->tmde[0]; /* Set TMD head */ -- p->rmdhead = &(p->ram)->rmde[0]; /* Set RMD head */ -- -- printf("Schneider & Koch G16 at %#hX, mem at %#hX, HW addr: %!\n", -- (unsigned int) ioaddr, (unsigned int) p->ram, nic->node_addr); -- -- /* Initialize buffer pointers */ -- -- for (i = 0; i < TMDNUM; i++) -- { -- p->tmdbufs[i] = p->ram->tmdbuf[i]; -- } -- -- for (i = 0; i < RMDNUM; i++) -- { -- p->rmdbufs[i] = p->ram->rmdbuf[i]; -- } -- i = 0; -- -- if (!(i = SK_lance_init(nic, MODE_NORMAL))) /* LANCE init OK? */ -- { -- --#ifdef SK_DEBUG -- /* -- * This debug block tries to stop LANCE, -- * reinit LANCE with transmitter and receiver disabled, -- * then stop again and reinit with NORMAL_MODE -- */ -- -- printf("## %s: After lance init. CSR0: %#hX\n", -- SK_NAME, SK_read_reg(CSR0)); -- SK_write_reg(CSR0, CSR0_STOP); -- printf("## %s: LANCE stopped. CSR0: %#hX\n", -- SK_NAME, SK_read_reg(CSR0)); -- SK_lance_init(nic, MODE_DTX | MODE_DRX); -- printf("## %s: Reinit with DTX + DRX off. CSR0: %#hX\n", -- SK_NAME, SK_read_reg(CSR0)); -- SK_write_reg(CSR0, CSR0_STOP); -- printf("## %s: LANCE stopped. CSR0: %#hX\n", -- SK_NAME, SK_read_reg(CSR0)); -- SK_lance_init(nic, MODE_NORMAL); -- printf("## %s: LANCE back to normal mode. CSR0: %#hX\n", -- SK_NAME, SK_read_reg(CSR0)); -- SK_print_pos(nic, "POS regs before returning OK"); -- --#endif /* SK_DEBUG */ -- -- } -- else /* LANCE init failed */ -- { -- -- PRINTF(("## %s: LANCE init failed: CSR0: %#hX\n", -- SK_NAME, SK_read_reg(CSR0))); -- return -1; -- } -- --#ifdef SK_DEBUG -- SK_print_pos(nic, "End of SK_probe1"); -- SK_print_ram(nic); --#endif -- -- return 0; /* Initialization done */ -- --} /* End of SK_probe1() */ -- --static int SK_lance_init(struct nic *nic, unsigned short mode) --{ -- int i; -- struct priv *p = (struct priv *) nic->priv_data; -- struct tmd *tmdp; -- struct rmd *rmdp; -- -- PRINTF(("## %s: At beginning of LANCE init. CSR0: %#hX\n", -- SK_NAME, SK_read_reg(CSR0))); -- -- /* Reset LANCE */ -- SK_reset_board(); -- -- /* Initialize TMD's with start values */ -- p->tmdnum = 0; /* First descriptor for transmitting */ -- p->tmdlast = 0; /* First descriptor for reading stats */ -- -- for (i = 0; i < TMDNUM; i++) /* Init all TMD's */ -- { -- tmdp = p->tmdhead + i; -- -- tmdp->u.buffer = (unsigned long) p->tmdbufs[i]; /* assign buffer */ -- -- /* Mark TMD as start and end of packet */ -- tmdp->u.s.status = TX_STP | TX_ENP; -- } -- -- -- /* Initialize RMD's with start values */ -- -- p->rmdnum = 0; /* First RMD which will be used */ -- -- for (i = 0; i < RMDNUM; i++) /* Init all RMD's */ -- { -- rmdp = p->rmdhead + i; -- -- -- rmdp->u.buffer = (unsigned long) p->rmdbufs[i]; /* assign buffer */ -- -- /* -- * LANCE must be owner at beginning so that he can fill in -- * receiving packets, set status and release RMD -- */ -- -- rmdp->u.s.status = RX_OWN; -- -- rmdp->blen = -PKT_BUF_SZ; /* Buffer Size in a two's complement */ -- -- rmdp->mlen = 0; /* init message length */ -- -- } -- -- /* Fill LANCE Initialize Block */ -- -- (p->ram)->ib.mode = mode; /* Set operation mode */ -- -- for (i = 0; i < ETH_ALEN; i++) /* Set physical address */ -- { -- (p->ram)->ib.paddr[i] = *(nic->node_addr+i); -- } -- -- for (i = 0; i < 8; i++) /* Set multicast, logical address */ -- { -- (p->ram)->ib.laddr[i] = 0; /* We do not use logical addressing */ -- } -- -- /* Set ring descriptor pointers and set number of descriptors */ -- -- (p->ram)->ib.rdrp = (int) p->rmdhead | RMDNUMMASK; -- (p->ram)->ib.tdrp = (int) p->tmdhead | TMDNUMMASK; -- -- /* Prepare LANCE Control and Status Registers */ -- -- SK_write_reg(CSR3, CSR3_ACON); /* Ale Control !!!THIS MUST BE SET!!!! */ -- -- /* -- * LANCE addresses the RAM from 0x0000 to 0x3fbf and has no access to -- * PC Memory locations. -- * -- * In structure SK_ram is defined that the first thing in ram -- * is the initialization block. So his address is for LANCE always -- * 0x0000 -- * -- * CSR1 contains low order bits 15:0 of initialization block address -- * CSR2 is built of: -- * 7:0 High order bits 23:16 of initialization block address -- * 15:8 reserved, must be 0 -- */ -- -- /* Set initialization block address (must be on word boundary) */ -- SK_write_reg(CSR1, 0); /* Set low order bits 15:0 */ -- SK_write_reg(CSR2, 0); /* Set high order bits 23:16 */ -- -- -- PRINTF(("## %s: After setting CSR1-3. CSR0: %#hX\n", -- SK_NAME, SK_read_reg(CSR0))); -- -- /* Initialize LANCE */ -- -- /* -- * INIT = Initialize, when set, causes the LANCE to begin the -- * initialization procedure and access the Init Block. -- */ -- -- SK_write_reg(CSR0, CSR0_INIT); -- -- /* Wait until LANCE finished initialization */ -- -- SK_set_RAP(CSR0); /* Register Address Pointer to CSR0 */ -- -- for (i = 0; (i < 100) && !(SK_rread_reg() & CSR0_IDON); i++) -- ; /* Wait until init done or go ahead if problems (i>=100) */ -- -- if (i >= 100) /* Something is wrong ! */ -- { -- printf("%s: can't init am7990, status: %#hX " -- "init_block: %#hX\n", -- SK_NAME, (int) SK_read_reg(CSR0), -- (unsigned int) &(p->ram)->ib); -- --#ifdef SK_DEBUG -- SK_print_pos(nic, "LANCE INIT failed"); --#endif -- -- return -1; /* LANCE init failed */ -- } -- -- PRINTF(("## %s: init done after %d ticks\n", SK_NAME, i)); -- -- /* Clear Initialize done, enable Interrupts, start LANCE */ -- -- SK_write_reg(CSR0, CSR0_IDON | CSR0_INEA | CSR0_STRT); -- -- PRINTF(("## %s: LANCE started. CSR0: %#hX\n", SK_NAME, -- SK_read_reg(CSR0))); -- -- return 0; /* LANCE is up and running */ -- --} /* End of SK_lance_init() */ -- --/* LANCE access functions -- * -- * ! CSR1-3 can only be accessed when in CSR0 the STOP bit is set ! -- */ -- --static void SK_reset_board(void) --{ -- int i; -- -- PRINTF(("## %s: At beginning of SK_reset_board.\n", SK_NAME)); -- SK_PORT = 0x00; /* Reset active */ -- for (i = 0; i < 10 ; i++) /* Delay min 5ms */ -- ; -- SK_PORT = SK_RESET; /* Set back to normal operation */ -- --} /* End of SK_reset_board() */ -- --static void SK_set_RAP(int reg_number) --{ -- SK_IOREG = reg_number; -- SK_PORT = SK_RESET | SK_RAP | SK_WREG; -- SK_IOCOM = SK_DOIO; -- -- while (SK_PORT & SK_IORUN) -- ; --} /* End of SK_set_RAP() */ -- --static int SK_read_reg(int reg_number) --{ -- SK_set_RAP(reg_number); -- -- SK_PORT = SK_RESET | SK_RDATA | SK_RREG; -- SK_IOCOM = SK_DOIO; -- -- while (SK_PORT & SK_IORUN) -- ; -- return (SK_IOREG); -- --} /* End of SK_read_reg() */ -- --static int SK_rread_reg(void) --{ -- SK_PORT = SK_RESET | SK_RDATA | SK_RREG; -- -- SK_IOCOM = SK_DOIO; -- -- while (SK_PORT & SK_IORUN) -- ; -- return (SK_IOREG); -- --} /* End of SK_rread_reg() */ -- --static void SK_write_reg(int reg_number, int value) --{ -- SK_set_RAP(reg_number); -- -- SK_IOREG = value; -- SK_PORT = SK_RESET | SK_RDATA | SK_WREG; -- SK_IOCOM = SK_DOIO; -- -- while (SK_PORT & SK_IORUN) -- ; --} /* End of SK_write_reg */ -- --/* -- * Debugging functions -- * ------------------- -- */ -- --#ifdef SK_DEBUG --static void SK_print_pos(struct nic *nic, char *text) --{ -- -- unsigned char pos0 = inb(SK_POS0), -- pos1 = inb(SK_POS1), -- pos2 = inb(SK_POS2), -- pos3 = inb(SK_POS3), -- pos4 = inb(SK_POS4); -- -- -- printf("## %s: %s.\n" -- "## pos0=%#hX pos1=%#hX pos2=%#hX pos3=%#hX pos4=%#hX\n", -- SK_NAME, text, pos0, pos1, pos2, (pos3<<14), pos4); -- --} /* End of SK_print_pos() */ -- --static void SK_print_ram(struct nic *nic) --{ -- -- int i; -- struct priv *p = (struct priv *) nic->priv_data; -- -- printf("## %s: RAM Details.\n" -- "## RAM at %#hX tmdhead: %#hX rmdhead: %#hX initblock: %#hX\n", -- SK_NAME, -- (unsigned int) p->ram, -- (unsigned int) p->tmdhead, -- (unsigned int) p->rmdhead, -- (unsigned int) &(p->ram)->ib); -- -- printf("## "); -- -- for(i = 0; i < TMDNUM; i++) -- { -- if (!(i % 3)) /* Every third line do a newline */ -- { -- printf("\n## "); -- } -- printf("tmdbufs%d: %#hX ", (i+1), (int) p->tmdbufs[i]); -- } -- printf("## "); -- -- for(i = 0; i < RMDNUM; i++) -- { -- if (!(i % 3)) /* Every third line do a newline */ -- { -- printf("\n## "); -- } -- printf("rmdbufs%d: %#hX ", (i+1), (int) p->rmdbufs[i]); -- } -- putchar('\n'); -- --} /* End of SK_print_ram() */ --#endif -diff -Naur grub-0.97.orig/netboot/sk_g16.h grub-0.97/netboot/sk_g16.h ---- grub-0.97.orig/netboot/sk_g16.h 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/sk_g16.h 1970-01-01 00:00:00.000000000 +0000 -@@ -1,168 +0,0 @@ --/*- -- * -- * This software may be used and distributed according to the terms -- * of the GNU Public License, incorporated herein by reference. -- * -- * Module : sk_g16.h -- * Version : $Revision: 1.3 $ -- * -- * Author : M.Hipp (mhipp@student.uni-tuebingen.de) -- * changes by : Patrick J.D. Weichmann -- * -- * Date Created : 94/05/25 -- * -- * Description : In here are all necessary definitions of -- * the am7990 (LANCE) chip used for writing a -- * network device driver which uses this chip -- * -- * $Log: sk_g16.h,v $ -- * Revision 1.3 2000/07/29 19:22:54 okuji -- * update the network support to etherboot-4.6.4. -- * ---*/ -- --#ifndef SK_G16_H -- --#define SK_G16_H -- -- --/* -- * Control and Status Register 0 (CSR0) bit definitions -- * -- * (R=Readable) (W=Writeable) (S=Set on write) (C-Clear on write) -- * -- */ -- --#define CSR0_ERR 0x8000 /* Error summary (R) */ --#define CSR0_BABL 0x4000 /* Babble transmitter timeout error (RC) */ --#define CSR0_CERR 0x2000 /* Collision Error (RC) */ --#define CSR0_MISS 0x1000 /* Missed packet (RC) */ --#define CSR0_MERR 0x0800 /* Memory Error (RC) */ --#define CSR0_RINT 0x0400 /* Receiver Interrupt (RC) */ --#define CSR0_TINT 0x0200 /* Transmit Interrupt (RC) */ --#define CSR0_IDON 0x0100 /* Initialization Done (RC) */ --#define CSR0_INTR 0x0080 /* Interrupt Flag (R) */ --#define CSR0_INEA 0x0040 /* Interrupt Enable (RW) */ --#define CSR0_RXON 0x0020 /* Receiver on (R) */ --#define CSR0_TXON 0x0010 /* Transmitter on (R) */ --#define CSR0_TDMD 0x0008 /* Transmit Demand (RS) */ --#define CSR0_STOP 0x0004 /* Stop (RS) */ --#define CSR0_STRT 0x0002 /* Start (RS) */ --#define CSR0_INIT 0x0001 /* Initialize (RS) */ -- --#define CSR0_CLRALL 0x7f00 /* mask for all clearable bits */ -- --/* -- * Control and Status Register 3 (CSR3) bit definitions -- * -- */ -- --#define CSR3_BSWAP 0x0004 /* Byte Swap (RW) */ --#define CSR3_ACON 0x0002 /* ALE Control (RW) */ --#define CSR3_BCON 0x0001 /* Byte Control (RW) */ -- --/* -- * Initialization Block Mode operation Bit Definitions. -- */ -- --#define MODE_PROM 0x8000 /* Promiscuous Mode */ --#define MODE_INTL 0x0040 /* Internal Loopback */ --#define MODE_DRTY 0x0020 /* Disable Retry */ --#define MODE_COLL 0x0010 /* Force Collision */ --#define MODE_DTCR 0x0008 /* Disable Transmit CRC) */ --#define MODE_LOOP 0x0004 /* Loopback */ --#define MODE_DTX 0x0002 /* Disable the Transmitter */ --#define MODE_DRX 0x0001 /* Disable the Receiver */ -- --#define MODE_NORMAL 0x0000 /* Normal operation mode */ -- --/* -- * Receive message descriptor status bit definitions. -- */ -- --#define RX_OWN 0x80 /* Owner bit 0 = host, 1 = lance */ --#define RX_ERR 0x40 /* Error Summary */ --#define RX_FRAM 0x20 /* Framing Error */ --#define RX_OFLO 0x10 /* Overflow Error */ --#define RX_CRC 0x08 /* CRC Error */ --#define RX_BUFF 0x04 /* Buffer Error */ --#define RX_STP 0x02 /* Start of Packet */ --#define RX_ENP 0x01 /* End of Packet */ -- -- --/* -- * Transmit message descriptor status bit definitions. -- */ -- --#define TX_OWN 0x80 /* Owner bit 0 = host, 1 = lance */ --#define TX_ERR 0x40 /* Error Summary */ --#define TX_MORE 0x10 /* More the 1 retry needed to Xmit */ --#define TX_ONE 0x08 /* One retry needed to Xmit */ --#define TX_DEF 0x04 /* Deferred */ --#define TX_STP 0x02 /* Start of Packet */ --#define TX_ENP 0x01 /* End of Packet */ -- --/* -- * Transmit status (2) (valid if TX_ERR == 1) -- */ -- --#define TX_BUFF 0x8000 /* Buffering error (no ENP) */ --#define TX_UFLO 0x4000 /* Underflow (late memory) */ --#define TX_LCOL 0x1000 /* Late collision */ --#define TX_LCAR 0x0400 /* Loss of Carrier */ --#define TX_RTRY 0x0200 /* Failed after 16 retransmissions */ --#define TX_TDR 0x003f /* Time-domain-reflectometer-value */ -- -- --/* -- * Structures used for Communication with the LANCE -- */ -- --/* LANCE Initialize Block */ -- --struct init_block --{ -- unsigned short mode; /* Mode Register */ -- unsigned char paddr[6]; /* Physical Address (MAC) */ -- unsigned char laddr[8]; /* Logical Filter Address (not used) */ -- unsigned int rdrp; /* Receive Descriptor Ring pointer */ -- unsigned int tdrp; /* Transmit Descriptor Ring pointer */ --}; -- -- --/* Receive Message Descriptor Entry */ -- --struct rmd --{ -- union rmd_u -- { -- unsigned long buffer; /* Address of buffer */ -- struct rmd_s -- { -- unsigned char unused[3]; -- unsigned volatile char status; /* Status Bits */ -- } s; -- } u; -- volatile short blen; /* Buffer Length (two's complement) */ -- unsigned short mlen; /* Message Byte Count */ --}; -- -- --/* Transmit Message Descriptor Entry */ -- --struct tmd --{ -- union tmd_u -- { -- unsigned long buffer; /* Address of buffer */ -- struct tmd_s -- { -- unsigned char unused[3]; -- unsigned volatile char status; /* Status Bits */ -- } s; -- } u; -- unsigned short blen; /* Buffer Length (two's complement) */ -- unsigned volatile short status2; /* Error Status Bits */ --}; -- --#endif /* End of SK_G16_H */ -diff -Naur grub-0.97.orig/netboot/smc9000.c grub-0.97/netboot/smc9000.c ---- grub-0.97.orig/netboot/smc9000.c 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/smc9000.c 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/smc9000.c +=================================================================== +--- a/netboot/smc9000.c ++++ /dev/null @@ -1,522 +0,0 @@ - /*------------------------------------------------------------------------ - * smc9000.c @@ -36089,9 +33656,10 @@ diff -Naur grub-0.97.orig/netboot/smc9000.c grub-0.97/netboot/smc9000.c - - - -diff -Naur grub-0.97.orig/netboot/smc9000.h grub-0.97/netboot/smc9000.h ---- grub-0.97.orig/netboot/smc9000.h 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/smc9000.h 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/smc9000.h +=================================================================== +--- a/netboot/smc9000.h ++++ /dev/null @@ -1,205 +0,0 @@ -/*------------------------------------------------------------------------ - * smc9000.h @@ -36298,9 +33866,10 @@ diff -Naur grub-0.97.orig/netboot/smc9000.h grub-0.97/netboot/smc9000.h - -#endif /* _SMC_9000_H_ */ - -diff -Naur grub-0.97.orig/netboot/stdint.h grub-0.97/netboot/stdint.h ---- grub-0.97.orig/netboot/stdint.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/stdint.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/stdint.h +=================================================================== +--- /dev/null ++++ b/netboot/stdint.h @@ -0,0 +1,18 @@ +#ifndef STDINT_H +#define STDINT_H @@ -36320,9 +33889,10 @@ diff -Naur grub-0.97.orig/netboot/stdint.h grub-0.97/netboot/stdint.h +typedef signed long long int64_t; + +#endif /* STDINT_H */ -diff -Naur grub-0.97.orig/netboot/tftp.h grub-0.97/netboot/tftp.h ---- grub-0.97.orig/netboot/tftp.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/tftp.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/tftp.h +=================================================================== +--- /dev/null ++++ b/netboot/tftp.h @@ -0,0 +1,82 @@ +#ifndef _TFTP_H +#define _TFTP_H @@ -36406,9 +33976,10 @@ diff -Naur grub-0.97.orig/netboot/tftp.h grub-0.97/netboot/tftp.h +int tftp_file_read(const char *name, read_actor_t); + +#endif /* _TFTP_H */ -diff -Naur grub-0.97.orig/netboot/tg3.c grub-0.97/netboot/tg3.c ---- grub-0.97.orig/netboot/tg3.c 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/tg3.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/tg3.c +=================================================================== +--- /dev/null ++++ b/netboot/tg3.c @@ -0,0 +1,3322 @@ +/* $Id: grub-0.95-diskless-patch-2.patch,v 1.1.1.1 2005/06/14 08:18:50 wesolows Exp $ + * tg3.c: Broadcom Tigon3 ethernet driver. @@ -39732,9 +37303,10 @@ diff -Naur grub-0.97.orig/netboot/tg3.c grub-0.97/netboot/tg3.c + .id_count = sizeof(tg3_nics)/sizeof(tg3_nics[0]), + .class = 0, +}; -diff -Naur grub-0.97.orig/netboot/tg3.h grub-0.97/netboot/tg3.h ---- grub-0.97.orig/netboot/tg3.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/tg3.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/tg3.h +=================================================================== +--- /dev/null ++++ b/netboot/tg3.h @@ -0,0 +1,2203 @@ +/* $Id: grub-0.95-diskless-patch-2.patch,v 1.1.1.1 2005/06/14 08:18:50 wesolows Exp $ + * tg3.h: Definitions for Broadcom Tigon3 ethernet driver. @@ -41939,9 +39511,10 @@ diff -Naur grub-0.97.orig/netboot/tg3.h grub-0.97/netboot/tg3.h +}; + +#endif /* !(_T3_H) */ -diff -Naur grub-0.97.orig/netboot/tiara.c grub-0.97/netboot/tiara.c ---- grub-0.97.orig/netboot/tiara.c 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/tiara.c 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/tiara.c +=================================================================== +--- a/netboot/tiara.c ++++ /dev/null @@ -1,255 +0,0 @@ -/************************************************************************** -Etherboot - BOOTP/TFTP Bootstrap Program @@ -42198,9 +39771,10 @@ diff -Naur grub-0.97.orig/netboot/tiara.c grub-0.97/netboot/tiara.c - else - return (0); -} -diff -Naur grub-0.97.orig/netboot/timer.c grub-0.97/netboot/timer.c ---- grub-0.97.orig/netboot/timer.c 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/timer.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/timer.c +=================================================================== +--- a/netboot/timer.c ++++ b/netboot/timer.c @@ -6,122 +6,24 @@ * published by the Free Software Foundation; either version 2, or (at * your option) any later version. @@ -42335,9 +39909,10 @@ diff -Naur grub-0.97.orig/netboot/timer.c grub-0.97/netboot/timer.c } - -#endif /* RTC_CURRTICKS */ -diff -Naur grub-0.97.orig/netboot/timer.h grub-0.97/netboot/timer.h ---- grub-0.97.orig/netboot/timer.h 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/timer.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/timer.h +=================================================================== +--- a/netboot/timer.h ++++ b/netboot/timer.h @@ -36,7 +36,8 @@ #define BCD_COUNT 0x01 @@ -42379,9 +39954,10 @@ diff -Naur grub-0.97.orig/netboot/timer.h grub-0.97/netboot/timer.h +}; #endif /* TIMER_H */ -diff -Naur grub-0.97.orig/netboot/tlan.c grub-0.97/netboot/tlan.c ---- grub-0.97.orig/netboot/tlan.c 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/tlan.c 2005-09-01 00:05:20.000000000 +0000 +Index: b/netboot/tlan.c +=================================================================== +--- a/netboot/tlan.c ++++ b/netboot/tlan.c @@ -1,3746 +1,1814 @@ +#define EB51 + @@ -47600,9 +45176,10 @@ diff -Naur grub-0.97.orig/netboot/tlan.c grub-0.97/netboot/tlan.c + .class = 0, +}; #endif -diff -Naur grub-0.97.orig/netboot/tlan.h grub-0.97/netboot/tlan.h ---- grub-0.97.orig/netboot/tlan.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/tlan.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/tlan.h +=================================================================== +--- /dev/null ++++ b/netboot/tlan.h @@ -0,0 +1,536 @@ +/************************************************************************** +* @@ -48140,9 +45717,10 @@ diff -Naur grub-0.97.orig/netboot/tlan.h grub-0.97/netboot/tlan.h +} + +#endif /* I_LIKE_A_FAST_HASH_FUNCTION */ -diff -Naur grub-0.97.orig/netboot/tulip.c grub-0.97/netboot/tulip.c ---- grub-0.97.orig/netboot/tulip.c 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/tulip.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/tulip.c +=================================================================== +--- a/netboot/tulip.c ++++ b/netboot/tulip.c @@ -48,6 +48,7 @@ /*********************************************************************/ @@ -48619,9 +46197,10 @@ diff -Naur grub-0.97.orig/netboot/tulip.c grub-0.97/netboot/tulip.c + .id_count = sizeof(tulip_nics)/sizeof(tulip_nics[0]), + .class = 0, +}; -diff -Naur grub-0.97.orig/netboot/tulip.txt grub-0.97/netboot/tulip.txt ---- grub-0.97.orig/netboot/tulip.txt 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/tulip.txt 1970-01-01 00:00:00.000000000 +0000 +Index: b/netboot/tulip.txt +=================================================================== +--- a/netboot/tulip.txt ++++ /dev/null @@ -1,53 +0,0 @@ -This software may be used and distributed according to the terms of -the GNU Public License, incorporated herein by reference. @@ -48676,9 +46255,10 @@ diff -Naur grub-0.97.orig/netboot/tulip.txt grub-0.97/netboot/tulip.txt -Marty Connor -mdc@thinguin.org -http://www.thinguin.org/ -diff -Naur grub-0.97.orig/netboot/types.h grub-0.97/netboot/types.h ---- grub-0.97.orig/netboot/types.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/types.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/types.h +=================================================================== +--- /dev/null ++++ b/netboot/types.h @@ -0,0 +1,44 @@ +#ifndef _TYPES_H +#define _TYPES_H @@ -48724,9 +46304,10 @@ diff -Naur grub-0.97.orig/netboot/types.h grub-0.97/netboot/types.h +typedef char * caddr_t; + +#endif /* _TYPES_H */ -diff -Naur grub-0.97.orig/netboot/udp.h grub-0.97/netboot/udp.h ---- grub-0.97.orig/netboot/udp.h 1970-01-01 00:00:00.000000000 +0000 -+++ grub-0.97/netboot/udp.h 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/udp.h +=================================================================== +--- /dev/null ++++ b/netboot/udp.h @@ -0,0 +1,30 @@ +#ifndef _UDP_H +#define _UDP_H @@ -48758,9 +46339,10 @@ diff -Naur grub-0.97.orig/netboot/udp.h grub-0.97/netboot/udp.h + unsigned int __destsock, int __len, const void * __buf); + +#endif /* _UDP_H */ -diff -Naur grub-0.97.orig/netboot/via-rhine.c grub-0.97/netboot/via-rhine.c ---- grub-0.97.orig/netboot/via-rhine.c 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/via-rhine.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/via-rhine.c +=================================================================== +--- a/netboot/via-rhine.c ++++ b/netboot/via-rhine.c @@ -18,7 +18,7 @@ */ @@ -49118,9 +46700,10 @@ diff -Naur grub-0.97.orig/netboot/via-rhine.c grub-0.97/netboot/via-rhine.c +}; + /* EOF via-rhine.c */ -diff -Naur grub-0.97.orig/netboot/w89c840.c grub-0.97/netboot/w89c840.c ---- grub-0.97.orig/netboot/w89c840.c 2003-07-09 11:45:38.000000000 +0000 -+++ grub-0.97/netboot/w89c840.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/netboot/w89c840.c +=================================================================== +--- a/netboot/w89c840.c ++++ b/netboot/w89c840.c @@ -43,6 +43,9 @@ * using timer2 routines. Proposed * by Ken Yap to eliminate CPU speed @@ -49467,9 +47050,10 @@ diff -Naur grub-0.97.orig/netboot/w89c840.c grub-0.97/netboot/w89c840.c + .id_count = sizeof(w89c840_nics)/sizeof(w89c840_nics[0]), + .class = 0, +}; -diff -Naur grub-0.97.orig/stage2/disk_io.c grub-0.97/stage2/disk_io.c ---- grub-0.97.orig/stage2/disk_io.c 2004-05-23 16:35:24.000000000 +0000 -+++ grub-0.97/stage2/disk_io.c 2005-08-31 19:03:35.000000000 +0000 +Index: b/stage2/disk_io.c +=================================================================== +--- a/stage2/disk_io.c ++++ b/stage2/disk_io.c @@ -25,6 +25,7 @@ #ifdef SUPPORT_NETBOOT # define GRUB 1 diff --git a/boot/grub/grub.mk b/boot/grub/grub.mk index d22df8899d..dc11307988 100644 --- a/boot/grub/grub.mk +++ b/boot/grub/grub.mk @@ -6,8 +6,8 @@ GRUB_VERSION = 0.97 GRUB_SOURCE = grub_$(GRUB_VERSION).orig.tar.gz -GRUB_PATCH = grub_$(GRUB_VERSION)-35.diff.gz -GRUB_SITE = http://snapshot.debian.org/archive/debian/20080329T000000Z/pool/main/g/grub/ +GRUB_PATCH = grub_$(GRUB_VERSION)-67.diff.gz +GRUB_SITE = http://snapshot.debian.org/archive/debian/20130129T225227Z/pool/main/g/grub/ GRUB_LICENSE = GPLv2+ GRUB_LICENSE_FILES = COPYING @@ -64,7 +64,7 @@ GRUB_STAGE_1_5_TO_INSTALL += $(if $(BR2_TARGET_GRUB_FS_XFS),xfs) define GRUB_DEBIAN_PATCHES # Apply the patches from the Debian patch - (cd $(@D) ; for f in `cat debian/patches/00list | grep -v ^#` ; do \ + (cd $(@D) ; for f in `cat debian/patches/series | grep -v ^#` ; do \ cat debian/patches/$$f | patch -g0 -p1 ; \ done) endef