linux-mips-fnet
[Top] [All Lists]

Re: M700 partition problem

To: linux-mips@fnet.fr
Subject: Re: M700 partition problem
From: Per Fogelstrom <pefo@enea.se>
Date: Thu, 18 Apr 1996 15:47:20 +0200 (MET DST)
In-reply-to: <199604181232.OAA29644@informatik.uni-koblenz.de> 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.

Per

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