Base gcc fails to compile sys/dev/si/si_isa.c and
sys/dev/si/si_pci.c for i386, with the following -Werror warnings:
cc1: warnings being treated as errors /usr/src/sys/modules/si/../../dev/si/si_isa.c: In function 'si_isa_probe': /usr/src/sys/modules/si/../../dev/si/si_isa.c:68: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] /usr/src/sys/modules/si/../../dev/si/si_isa.c: In function 'si_isa_attach': /usr/src/sys/modules/si/../../dev/si/si_isa.c:282: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] cc1: warnings being treated as errors /usr/src/sys/modules/si/../../dev/si/si_pci.c: In function 'si_pci_attach': /usr/src/sys/modules/si/../../dev/si/si_pci.c:89: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
This is because on i386, the casts from rman_res_t (aka uintmax_t)
to a pointer reduces the value from 64 bit to 32 bit.
For gcc, this can be fixed by an intermediate cast to uintptr_t. Note
that I am assuming the incoming values will always fit into 32 bit!