Subject: ACPI/PCI machine - how to completely get rid if ISA ?
To: None <port-i386@netbsd.org>
From: Ian Zagorskih <ianzag@megasignal.com>
List: port-i386
Date: 10/20/2004 13:25:30
# uname -a
NetBSD IANZAG 2.99.10 NetBSD 2.99.10 (IANZAG-ACPI) #0: Mon Oct 18 17:31:49 
NOVST 2004  ianzag@IANZAG:/usr/src/sys/arch/i386/compile/IANZAG-ACPI i386

For a long time on my workstation[s] i don't have ISA slots. Same as i don't 
have even single native ISA device. At hardware level, all peripherials are 
done through LPC -> Multi IO chipset and so on. I.e. i really do not have 
obsolete ISA stuff. All "ISA" devicec like lpt, com, npx and so on are 
configured through ACPI just fine so i don't need to specify them manually in 
kernel config file as isa bindings.

So i would like to make a pure non-ISA kernel for i386 arch. But when i remove 
all "isa0 at *" bindings, i got the following link errors:

---cut---
making sure the compat library is up to date...
`libcompat.a' is up to date.
making sure the kern library is up to date...
`libkern.o' is up to date.
#      link  IANZAG-ACPI/netbsd
ld -T ../../../../arch/i386/conf/kern.ldscript -Ttext c0100000 -e start -X -o 
netbsd ${SYSTEM_OBJ} ${EXTRA_OBJ} vers.o
microtime.o(.text+0x3e): In function `i8254_microtime':
: undefined reference to `isa_timer_tick'
microtime.o(.text+0x46): In function `i8254_microtime':
: undefined reference to `isa_timer_msb_table'
microtime.o(.text+0x4e): In function `i8254_microtime':
: undefined reference to `isa_timer_lsb_table'
init_main.o(.text+0x44a): In function `main':
: undefined reference to `inittodr'
kern_clock.o(.text+0xa20): In function `statclock':
: undefined reference to `setstatclockrate'
kern_time.o(.text+0x129): In function `settime':
: undefined reference to `resettodr'
lapic.o(.text+0x246): In function `lapic_calibrate_timer':
: undefined reference to `gettick'
lapic.o(.text+0x268): In function `lapic_calibrate_timer':
: undefined reference to `gettick'
lapic.o(.text+0x274): In function `lapic_calibrate_timer':
: undefined reference to `rtclock_tval'
lapic.o(.text+0x3dd): In function `lapic_calibrate_timer':
: undefined reference to `gettick'
lapic.o(.text+0x3fd): In function `lapic_calibrate_timer':
: undefined reference to `gettick'
pciide_machdep.o(.text+0x24): In function 
`pciide_machdep_compat_intr_establish':
: undefined reference to `isa_intr_establish'
autoconf.o(.text+0x7): In function `cpu_configure':
: undefined reference to `startrtclock'
machdep.o(.text+0xbc8): In function `cpu_reboot':
: undefined reference to `sysbeep'
machdep.o(.text+0xbef): In function `cpu_reboot':
: undefined reference to `sysbeep'
machdep.o(.text+0xce0): In function `cpu_reboot':
: undefined reference to `resettodr'
machdep.o(.data+0x24): undefined reference to `i8254_delay'
machdep.o(.data+0x2c): undefined reference to `i8254_initclocks'
identcpu.o(.text+0xc2): In function `cyrix6x86_cpu_setup':
: undefined reference to `clock_broken_latch'
mainbus.o(.text+0x8a): In function `mainbus_attach':
: undefined reference to `isa_bus_dma_tag'
fd.o(.text+0x20a): In function `fdcfinishattach':
: undefined reference to `mc146818_read'
com_acpi.o(.text+0x146): In function `com_acpi_attach':
: undefined reference to `isa_intr_establish'
fdc_acpi.o(.text+0x1b2): In function `fdc_acpi_attach':
: undefined reference to `isa_intr_establish'
lpt_acpi.o(.text+0xf1): In function `lpt_acpi_attach':
: undefined reference to `isa_intr_establish'
pckbc_acpi.o(.text+0x34e): In function `pckbc_acpi_intr_establish':
: undefined reference to `isa_intr_establish'
acpi_wakeup.o(.text+0x4d0): In function `acpi_md_sleep':
: undefined reference to `initrtclock'
acpi_wakeup.o(.text+0x4dc): In function `acpi_md_sleep':
: undefined reference to `inittodr'
npx_acpi.o(.text+0x16d): In function `npx_acpi_attach':
: undefined reference to `isa_intr_establish'
*** Error code 1

Stop.
mk: stopped in /usr/src/sys/arch/i386/compile/IANZAG-ACPI
---cut---

Looks like the i386 kernel code have some internal tight links with ISA bus 
code which arn't removed when ISA bus is abscent in kernel config file.

Any ideas what can i do with it? Is it possibly to build non-ISA kernels on 
i386?

// wbr