svn commit: r223307 - head/sys/vm

Warner Losh imp at bsdimp.com
Wed Jun 22 02:09:51 UTC 2011


On Jun 21, 2011, at 5:29 PM, Bruce Evans wrote:

> On Tue, 21 Jun 2011, Attilio Rao wrote:
> 
>> 2011/6/21 Bruce Evans <brde at optusnet.com.au>:
>>>> vm_page.o: In function `vm_page_clear_dirty':
>>>> /sys/vm/vm_page.c:(.text+0x18d0): undefined reference to `atomic_clear_8'
>>>> /sys/vm/vm_page.c:(.text+0x18d0): relocation truncated to fit: R_MIPS_26
>>>> against `atomic_clear_8'
>>>> vm_page.o: In function `vm_page_set_validclean':
>>>> /sys/vm/vm_page.c:(.text+0x38f0): undefined reference to `atomic_clear_8'
>>>> /sys/vm/vm_page.c:(.text+0x38f0): relocation truncated to fit: R_MIPS_26
>>>> against `atomic_clear_8'
>>> 
>>> Atomic types shorter than int cannot be used in MI code, since they might
>>> not exist. Â Apparently they don't exist on mips. Â jake@ fixed all their
>>> old uses for sparc4 in ~Y2K.
>> 
>> I'm sure they do, they exist in support.S though and may not have the
>> _8 form (they may just have the _char version). I may look at the code
>> again to be sure.
> 
> Perhaps more like the reverse.  They are correctly spelled with _char
> form in the C code.  This is needed to match the declarations of the
> variables literally.  They are translated to the _8 form by
> <machine/atomic.h> but the _8 form doesn't exist.  I think the acq and
> rel forms exist in <machine/atomic.h>.  mips/support.S only has a limited
> set of atomics, including clear_16 but not including clear_8.

Yup.

> Anyway, they shouldn't be used in either form.  They certainly don't
> exist on sparc64, but sparc64 compiles because it is on the other half
> of the ifdef.  sparc64 atomic support is actually 4 times smaller than
> mips atomic support, not just 2.5 times, since it doesn't have extras
> in support.S.

I'm not sure what you are saying...

Warner



More information about the svn-src-all mailing list