Re: More acorn32 breakage (was Re: Issues with new i2c framework)

Richard Earnshaw <[email protected]> Thu, 09 Oct 2003 10:46:45 +0100
Newsgroups gmane.os.netbsd.ports.acorn32,gmane.os.netbsd.ports.arm,gmane.os.netbsd.ports.arm26
Organization ARM Ltd.
Message-ID <[email protected]>
> 
> Problem 2:
> /usr/tools//bin/arm--netbsdelf-gcc   -ffreestanding  -O2 -march=armv3m
> -mtune=strongarm -Wcomment -Werror -Wall -Wno-main
> -Wno-format-zero-length -Wpointer-arith -Wmissing-prototypes
> -Wstrict-prototypes -Wno-sign-compare -Wno-uninitialized  -Darm32 -I. 
> -I/work/src/sys/arch -I/work/src/sys -nostdinc -DNMBCLUSTERS="0x800"
> -DNBUF="0x800" -DLKM -DARM32_PMAP_NEW -DMAXUSERS=32 -D_KERNEL
> -D_KERNEL_OPT   -c
> /work/src/sys/arch/arm/arm32/fault.c/var/tmp//ccKPl5KD.s: Assembler
> messages:/var/tmp//ccKPl5KD.s:184: Error: selected processor does not
> support `ldrh r1,[r5]'
> 
> *** Failed target:  fault.o
> 
> 
> 
> fault.c contains an ARMV4 specific instruction ldrh. Which is not
> available on ARM6/7 and even StrongARM on acorn32 due to limitations of
> the CPU bus. I'm not sure what the correct fix for this is. Looking at
> CVS this has been in the code since revision 1.3 of this file but the
> new tools are being more strict and complaining about the problem.
> 

Well, the bad instruction is in badaddr_read, which is currently only 
needed for PCI support.   And PCI support is going to be unlikely on any 
machine that doesn't support ldrh.  So why not just include "opt_pci.h and 
wrap the entire badaddr_read function in

#if NPCI > 0

That way we don't get a dead function on other machines that don't have 
PCI either (eg on a Shark).

R.