> Require the machine-dependant DDB commands to be in db_machine_command_table[]
> and link it directly to db_command_table[] so that it's not necessary
> to do this at runtime. Make db_machine_command_table[] const on all ports.
> g/c now unneded stuff, like db_machine_commands_install(), db_machine_init()
>
> Patch written by enami.
revision 1.76. It avoids problems where an I/O interrupt for physio,
using a bounce buffer, would find the destination address mapped
read-only because the syncer process hit.
Suggested by Chuck Cranor.
* dopowerhooks(PWR_SOFTSTANDBY) in apm_standby().
* dopowerhooks(PWR_SOFTRESUME) in apm_resume().
* dopowerhooks(PWR_RESUME), dopowerhooks(PWR_STANDBY),
dopowerhooks(PWR_SUSPEND) run in splhigh() state.
These changes sync with arch/i386/i386/apm.c.
Also, most device functions related to IRQ handling no longer take a device
pointer. We make so many assumptions about the machine's layout in irq.c that
this just seemed silly.
The architecture here follows that of the vax port -- each device has its
evcnt in its softc, but defers actually incrementing it to the IRQ
dispatcher. This way, devices can attach sub-counts (e.g. Rx and Tx counts
for Ethernet interfaces), but don't all have to have code to increment the
counters.
Drivers deliberately call evcnt_attach_dynamic() before establishing their
interrupt handler so that the establish routine can attach a parent event if
that's appropriate. At present, it isn't.
The architecture here follows that of the vax port -- each device has its
evcnt in its softc, but defers actually incrementing it to the IRQ
dispatcher. This way, devices can attach sub-counts (e.g. Rx and Tx counts
for Ethernet interfaces), but don't all have to have code to increment the
counters.
Drivers deliberately call evcnt_attach_dynamic() before establishing their
interrupt handler so that the establish routine can attach a parent event if
that's appropriate. At present, it isn't.
NULL "name" argument to irq_establish indicates that the device will maintain
an evcnt structure for this interrupt. In this case, irq_establish will still
maintain its own count (for DDB machine irqstat), but won't attach it to the
global list.
Change use of ev_group and ev_name to follow guidelines in evcnt(9).
Switch arckbd(4) over to the new arrangements.
This adds support for EtherExpress/16 cards with 16k of RAM, and in the
process adds general support for PIO mode on these cards. This entails
changing the way the i82586 driver handles bus barriers, since it doesn't
allow for strange cases like this.
This has been tested on the i386 port with the 'ix' driver in both
16KB (which was the source of the problem) and 32KB modes, as well
as with the 'ef' driver. I've tested it (briefly) with 'ei' on arm26
as well. In theory, drivers other than 'ix' should follow precisely the
same code paths as before.
and link it directly to db_command_table[] so that it's not necessary
to do this at runtime. Make db_machine_command_table[] const on all ports.
g/c now unneded stuff, like db_machine_commands_install(), db_machine_init()
Patch written by enami.
is fussy about the order of sections and location of memory gaps so we
must produce a firmware friendly version of the kernel as netbsd.ecoff for
network booting
The ELF version uses the standard mips linker script which can be loaded
by the new bootstrap routines
- status stay in touching while pen don't realy touch.
- cursor often jumps to center of screen.
But it seems that 'stay in touching' still occurs at rare intervals.
when the display is closed, the machine suspends (as expected).
when the display is opened again, it resumes and suspends again
(must manually wake).
problem happens because driver fills the event queue with duplicate
events without allowing apmd to drain it by running. fix it by
improving detection of duplicate events.
also cleanup and add some extra APMDEBUG code.
shape as the old arm32 one, but there are a few #defines to keep arm26 code
happy. Anything that depends on the precise shape of the trapframe,
and especially on being able to treat it as an array of registers, has been
updated.
a constant PAGE_SIZE value didn't include setting the UVM pagesize, and the
attempt to add this ended up in the wrong place. Amiga should now boot
again.
enough, e.g. it has been initialized already by inittodr() or set
explicitly before by resettodr(). This prevents the TOD clock from going
way backwards when typing `halt' at the `mount root filesystem' prompt.
all of the read-only data. Move _etext after all the read-only
data in the LARGEPAGES script, as well.
This will cause const data to actually be const on i386 kernels now
(it was, by sheer luck, on LARGEPAGES kernels simply because of the
section rounding that the LARGEPAGES script performed).
Also, if the so-called DMA operation is a write and ends without target-
complete set, count the data in the FIFO as residual and add that to the
amount in the counters. Hauke Fath reports that this passes early testing
on his Quantum Viking.
the link level name for the interface (ifp->if_sadl) is allocated
before ifp->if_addrlen is initialized, which could lead to allocating
too little space for the link level address.
Do this by splitting allocation of the link level name out of
if_attach() and into if_alloc_sadl(), which is normally called
by functions like ether_ifattach(). Network interfaces which
don't have a link-specific attach routine must call if_alloc_sadl()
themselves (example: gif).
Link level names are freed by if_free_sadl(), which can be called
from e.g. ether_ifdetach(). Drivers never need call if_free_sadl()
themselves as if_detach() will do it if it is not already done.
While here, add the ability to pass an AF_LINK address to
SIOCSIFADDR in ether_ioctl() (this is what caused me to notice
the problem that the above fixes).
as hacked by mycroft.
- Use syscall_intern() to give a process a plain or fancy
syscall based on ktrace flags.
- Avoid copying from the trapframe into a local array as much
as possible.
Yields roughly 5% improvement on a 25MHz R3000 (DECstation 5000/200)
on a simple syscall benchmark.
There's still some work that can be done using __HAVE_MINIMAL_EMUL.
Yes, this causes binary incompatibility. Yes, it's Evil, Bad and Wrong.
Nonetheless, I think it's probably the least unpleasant way to get close to
binary compatibility with NetBSD/arm32, and a very much doubt there are any
arm26 binaries out there that depend on the old shape of struct sigcontext.