[Top] [All Lists]

Re: M700 partition problem

Subject: Re: M700 partition problem
From: Per Fogelstrom <>
Date: Thu, 18 Apr 1996 15:47:20 +0200 (MET DST)
In-reply-to: <> from "Wayne Hodgen" at Apr 18, 96 02:30:53 pm
> Hi all,
> I finally got started working on Olli stuff. I put a half G ide disk in
> the Olli so I can avoid our (overloaded) net. There were of course a
> set of DOS partitions on it already. This causes an adel in genhd.c->
> extended_partition when it tries to do a partition check on the contents
> of the extended partition. I traced the problem to the line
> if (!NR_SECTS(p) || is_extended_partition(p))
> (line 163 in drivers/block/genhd.c). The crash comes at NR_SECTS(p), this
> is defined at the top of genhd as follows:
> #ifdef __alpha__
> /*
>  * On the Alpha, we get unaligned access exceptions on
>  *  p->nr_sects and p->start_sect, when the partition table
>  *  is not on a 4-byte boundary, which is frequently the case.
>  * This code uses unaligned load instructions to prevent
>  *  such exceptions.
>  */
> #include <asm/unaligned.h>
> #define NR_SECTS(p)     ldl_u(&p->nr_sects)
> #define START_SECT(p)   ldl_u(&p->start_sect)
> #else /* __alpha__ */
> #define NR_SECTS(p)     p->nr_sects
> #define START_SECT(p)   p->start_sect
> #endif /* __alpha__ */
You need to do the same as alphas do. Mipses can't load unaligned without
using special instructions or load a byte at  a time and merge them.

I ran into this when porting XFree86 to my 4000 running NetBSD.


<Prev in Thread] Current Thread [Next in Thread>