Subject: Re: Success: kernel compile
To: Chuck Silvers <chuq@chuq.com>
From: Jochen Kunz <jkunz@unixag-kl.fh-kl.de>
List: port-hp700
Date: 10/10/2003 22:35:50
On 2003.10.10 19:16 Chuck Silvers wrote:

> to make a netbootable LIF image, cd to arch/hp700/stand/mkboot and do
> 
> 	make && ./mkboot BOOT ../compile/GENERIC/netbsd netbsd.lif
> 
> I've been working with a 735 (which uses rbootd), I imagine the same
> image will work with a newer model that uses BOOTP/DHCP.
I do my tests with a B132L that does dhcp/tftp and it worked, in theory.
The image was to big for the bootrom. I am going to cut down the kernel
like you already sugested. 

Meanwhile I fixed boot only to notice that it doesn't support loading an
ELF image via dhcp/NFS. Seams I got spoilt by ofwboot.elf. ;-)

Anyway, below are patches to make boot compile again. (Feel free to
remove my comment about the pointer arithmetic. ;-) ) 

Main Menu: Enter command > boot lan
Interact with IPL (Y, N, Q)?> y

Booting... 
Network Station Address 080009-0affe0
System IP Address 192.168.2.9
Server IP Address 192.168.2.2

Boot IO Dependent Code (IODC) revision 2


SOFT Booted.


>> NetBSD/hp700 LIF Boot, Revision 1.1
>> (jkunz@SirTobie, Fri Oct 10 21:42:11 CEST 2003)
>> Enter "reset" to reset system.
Boot: [[[lf0a:]netbsd][-a][-c][-d][-s][-v][-q]] :- 
open lf0a:netbsd: Input/output error




--- arch/hp700/stand/boot/boot.c.orig	Fri Oct 10 17:41:31 2003
+++ arch/hp700/stand/boot/boot.c	Fri Oct 10 17:42:27 2003
@@ -72,6 +72,7 @@
 #include <lib/libsa/loadfile.h>
 
 #include <machine/pdc.h>
+#include <machine/vmparam.h>
 
 #include <arch/hp700/stand/common/dev_hppa.h>
 
--- arch/hp700/stand/common/dk.c.orig	Fri Oct 10 20:53:32 2003
+++ arch/hp700/stand/common/dk.c	Fri Oct 10 20:53:50 2003
@@ -40,7 +40,7 @@
 dk_disklabel(struct hppa_dev *dp, struct disklabel *label)
 {
 	char buf[DEV_BSIZE];
-	int ret;
+	size_t ret;
 
 	if (iodcstrategy(dp, F_READ, LABELSECTOR, DEV_BSIZE, buf,
&ret))
 		if (ret != DEV_BSIZE)
--- arch/hp700/stand/common/libsa.h.orig	Fri Oct 10 20:45:44 2003
+++ arch/hp700/stand/common/libsa.h	Fri Oct 10 20:47:55 2003
@@ -76,7 +76,7 @@
 void devboot(dev_t, char *);
 void fcacheall(void);
 
-int     lif_open(char *, struct open_file *);
+int     lif_open(const char *, struct open_file *);
 int     lif_close(struct open_file *);
 int     lif_read(struct open_file *, void *, size_t, size_t *);
 int     lif_write(struct open_file *, void *, size_t, size_t *);
--- arch/hp700/stand/common/lif.c.orig	Fri Oct 10 20:45:29 2003
+++ arch/hp700/stand/common/lif.c	Fri Oct 10 22:16:45 2003
@@ -53,13 +53,14 @@
 };
 
 int
-lif_open(char *path, struct open_file *f)
+lif_open(const char *path, struct open_file *f)
 {
 	struct file *fp;
 	struct lifdir *dp;
 	char *p, *q;
 	struct lif_load load;
-	int err, buf_size, l;
+	int err;
+	size_t buf_size;
 
 #ifdef LIFDEBUG
 	if (debug)
@@ -86,7 +87,9 @@
 			sizeof(struct lifdir);
 
 		/* no dirs on the lif */
-		for (p = path + (l = strlen(path)); p >= path; p--)
+		/* Ewww, this pointer arithmetic is more then ugly. 
+		 * I should rewrite this. jkunz */
+		for (p = (char*) ((size_t) path + strlen(path)); p >=
path; p--)
 			if (*p == '/') {
 				p++;
 				break;
@@ -110,7 +113,7 @@
 				       dp->dir_name[6], dp->dir_name[7],

 				       dp->dir_name[8], dp->dir_name[9]);
 #endif
-			for (p = path, q = dp->dir_name;
+			for (p = (char*) path, q = dp->dir_name;
 			     *q && *q != ' '; q++, p++)
 				if (tolower(*q) != tolower(*p))
 					break;

-- 


tschüß,
       Jochen

Homepage: http://www.unixag-kl.fh-kl.de/~jkunz/