generally translates to "high interrupt load") -- the old code re-enabled
interrupts in the machine-specific hardware interrupt handler causing the
handler to be re-entered, possible multiple times. Could lead to kernel
stack overflows, and all sorts of mysterious crashes/hangs as a result.
While here, fix up the IP32 interrupt handler code to also not re-enable
interrupts.
Thanks for ideas/comments go to Chuq and Stephen Ma.
delete csh, netstat, tset, and vi to reduce GOT size.
otherwise, libc.a and other objects which was not compiled with -xgot
won't link. (in general, you can't mix -xgot and no -xgot binaries.)
current GOT size is 0000f590 (see below).
10 .got 0000f590 10010360 10010360 00269360 2**4
CONTENTS, ALLOC, LOAD, DATA
otherwise, libc.a and other objects which was not compiled with -xgot
won't link. (in general, you can't mix -xgot and no -xgot binaries.)
current GOT size is 0000f618 (see below).
10 .got 0000f618 10010460 10010460 0026c460 2**4
CONTENTS, ALLOC, LOAD, DATA
* make kloader optional.
* default value of kernel path is KLOADER_KERNEL_PATH.
* options KLOADER_KERNEL_PATH can override kernel path.
* when bootstr is passed (RB_STRING), use it as kernel path.
Note:
(1) Character device major number chages to 49 from 48(in my original
code). So it is necessary to rebuild device files.
(2) Must use Booter 2.0.0a10 or later.
(3) Default mode is cpu busy wait. It is defined by flags 0x1000.
It will be more slow than before.
No flags means hardware interrupt mode. But it might be able to
get no interrupts.
Support machines:
(1) Quadra 630 series
(2) PowerBook 150
Non tested machine:
(1) PowerBook 190 series
Approved by: briggs
if error occurs after status is collected) race condition
when using the status byte to detect completed commands (a command descriptor
could be recycled before the device disconnected), and make the
interrupt routine handling completed commands more efficient (no need to
scan target * lun * tag array any more).
* default value of kernel path is KLOADER_KERNEL_PATH.
* options KLOADER_KERNEL_PATH can override kernel path.
* when bootstr is passed (RB_STRING), use it as kernel path.