From 5b4c313702ac6a5b1255501b657cb4432b1a5bf2 Mon Sep 17 00:00:00 2001 From: Doug Rabson Date: Tue, 6 Oct 1998 11:57:08 +0000 Subject: Teach libdisk about alpha boot blocks. --- lib/libdisk/write_disk.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'lib/libdisk/write_disk.c') diff --git a/lib/libdisk/write_disk.c b/lib/libdisk/write_disk.c index cf7e87a2e297..6d3b2a7d1d1c 100644 --- a/lib/libdisk/write_disk.c +++ b/lib/libdisk/write_disk.c @@ -6,7 +6,7 @@ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * - * $Id: write_disk.c,v 1.21 1998/06/27 02:01:25 jdp Exp $ + * $Id: write_disk.c,v 1.22 1998/09/30 21:40:51 jkh Exp $ * */ @@ -38,17 +38,25 @@ Write_FreeBSD(int fd, struct disk *new, struct disk *old, struct chunk *c1) int i,j; void *p; u_char buf[BBSIZE]; +#ifdef __alpha__ + u_long *lp, sum; +#endif for(i=0;ioffset,new)); memcpy(buf+512*i,p,512); free(p); } +#if defined(__i386__) if(new->boot1) memcpy(buf,new->boot1,512); if(new->boot2) memcpy(buf+512,new->boot2,BBSIZE-512); +#elif defined(__alpha__) + if(new->boot1) + memcpy(buf+512,new->boot1,BBSIZE-512); +#endif dl = (struct disklabel *) (buf+512*LABELSECTOR+LABELOFFSET); memset(dl,0,sizeof *dl); @@ -100,6 +108,15 @@ Write_FreeBSD(int fd, struct disk *new, struct disk *old, struct chunk *c1) dl->d_magic2 = DISKMAGIC; dl->d_checksum = dkcksum(dl); +#ifdef __alpha__ + /* + * Generate the bootblock checksum for the SRM console. + */ + for (lp = (u_long *)buf, i = 0, sum = 0; i < 63; i++) + sum += lp[i]; + lp[63] = sum; +#endif + for(i=0;ioffset,new),buf+512*i); } -- cgit v1.3