On Sat, 24 Apr 1999, KATO Takenori wrote: > The type of the member id_port in isa_device structure is signed short > and a value is converted int unsigned long to allocate I/O port > resource via bus_alloc_resources. If an I/O port >= 0x8000, > conversion from signed short to unsigned long causes unexpected result > and nexus_alloc_resouce cannot allocate resouce. > > Fix is: > > ---------- BEGIN ---------- > *** isa.c.orig Sat Apr 24 20:55:32 1999 > --- isa.c Sat Apr 24 20:55:24 1999 > *************** > *** 75,81 **** > * The structure used to attach devices to the isa bus. > */ > struct isa_device { > ! short id_port[ISA_NPORT_IVARS]; > u_short id_portsize[ISA_NPORT_IVARS]; > vm_offset_t id_maddr[ISA_NMEM_IVARS]; > vm_size_t id_msize[ISA_NMEM_IVARS]; > --- 75,81 ---- > * The structure used to attach devices to the isa bus. > */ > struct isa_device { > ! u_short id_port[ISA_NPORT_IVARS]; > u_short id_portsize[ISA_NPORT_IVARS]; > vm_offset_t id_maddr[ISA_NMEM_IVARS]; > vm_size_t id_msize[ISA_NMEM_IVARS]; > ---------- END ---------- > > If this should not be in sys/i386/isa, I will copy this file into > sys/pc98/pc98. Comment please.
It needs to be signed since the value -1 is used to indicate no port resources. Perhaps it would be better to change it to 'int' instead of 'u_short'. -- Doug Rabson Mail: d...@nlsystems.com Nonlinear Systems Ltd. Phone: +44 181 442 9037 To Unsubscribe: send mail to majord...@freebsd.org with "unsubscribe freebsd-current" in the body of the message