Subject: Re: More acorn32 breakage (was Re: Issues with new i2c framework)
To: Mike Pumford <email@example.com>
From: Richard Earnshaw <firstname.lastname@example.org>
Date: 10/09/2003 10:46:45
> 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).