--- /dev/null
+--- grub-0.97/netboot/etherboot.h.orig 2003-07-09 13:45:37.000000000 +0200
++++ grub-0.97/netboot/etherboot.h 2005-06-12 15:52:11.000000000 +0200
+@@ -531,9 +531,6 @@
+ 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;
+--- grub-0.97/netboot/main.c.orig 2004-05-21 00:19:33.000000000 +0200
++++ grub-0.97/netboot/main.c 2005-06-12 15:52:45.000000000 +0200
+@@ -55,6 +55,7 @@
+ static int vendorext_isvalid;
+ static unsigned long netmask;
+ static struct bootpd_t bootp_data;
++#define BOOTP_DATA_ADDR (&bootp_data)
+ static unsigned long xid;
+ static unsigned char *end_of_rfc1533 = NULL;
+
+--- grub-0.97/netboot/natsemi.c.orig 2003-07-09 13:45:38.000000000 +0200
++++ grub-0.97/netboot/natsemi.c 2005-06-12 15:55:59.000000000 +0200
+@@ -608,7 +608,7 @@
+ const char *p) /* Packet */
+ {
+ u32 status, to, nstype;
+- u32 tx_status;
++ volatile u32 tx_status;
+
+ /* Stop the transmitter */
+ outl(TxOff, ioaddr + ChipCmd);
+@@ -647,7 +647,7 @@
+
+ to = currticks() + TX_TIMEOUT;
+
+- while ((((volatile u32) tx_status=txd.cmdsts) & OWN) && (currticks() < to))
++ while (((tx_status = txd.cmdsts) & OWN) && (currticks() < to))
+ /* wait */ ;
+
+ if (currticks() >= to) {