Commit Graph

61 Commits

Author SHA1 Message Date
thorpej 95281cabad Use PAGE_SIZE rather than NBPG. 2003-04-01 23:19:08 +00:00
thorpej d071d9a8d0 Use PAGE_SIZE rather than NBPG. 2003-04-01 15:02:05 +00:00
chris 9fd86b683f Add __KERNEL_RCSID tags to footbridge files. 2003-03-23 14:12:25 +00:00
skrll bcc03a47aa Add NULL cn_halt and cn_flush entries to consdevs. Hi Matt! 2003-03-06 13:09:28 +00:00
thorpej 23bc250391 Merge the nathanw_sa branch. 2003-01-17 21:55:23 +00:00
thorpej b179f9cf73 Use the generic irq_dispatch.S 2003-01-03 00:55:59 +00:00
thorpej 6c9c7f3b21 Garbage-collect prev_intr_depth; nothing uses it. 2003-01-02 23:54:39 +00:00
thorpej 359ed65495 Use aprint_normal() for cfprint routines. 2003-01-01 00:46:13 +00:00
lukem 0635de35a3 Remove KDIR=, since SYS_INCLUDE=symlinks and KDIR are not supported any more. 2002-11-26 23:30:07 +00:00
chris 689b975b68 Belatedly correct the copyright notice. I ported the new footbridge IRQ code
from the xscale interrupt code, it therefore should have Jason/Wasabi
copyright.

There is none of the original arm32 derived interrupt code here.
2002-11-11 20:44:41 +00:00
itohy 94b2e6e61d Dump DDB_* and SYMTAB_SPACE options to opt_ddbparam.h rather than opt_ddb.h.
These options are used in limited files but #include "opt_ddb.h" are
everywhere, and changing them caused almost full recompilation.
2002-11-04 06:24:38 +00:00
chris 61578bc307 Checkin new interrupt handling code for the footbridge.
This is based upon Jason's work on xscale.

Most of the interrupt handling code is now written in C using an asm stub to
call into the C code.

spl* now only updates a software mask, and does not update the hardware,
this should be much faster.

The new code works well on cats, it's untested on netwinder, but should work.

The code implements generic soft interrupts.

More work is still required to bring the isa interrupt handling code upto
scratch currently all isa interrupts are handled at IPL_BIO on the footbridge.
This may cause isa interrupts to be handled later than they should be.
I plan to fix this in the near future.
2002-11-03 21:43:29 +00:00
tsutsui 4ece245b0e Initialize statprev in setstatclockrate(). 2002-10-29 14:30:03 +00:00
jdolecek 7579e4a9fb do not install footbridge_irqhandler.h 2002-10-25 07:57:39 +00:00
jdolecek e0cc03a09b merge kqueue branch into -current
kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
2002-10-23 09:10:23 +00:00
chris aa7f00f3de netwinder and cats can share irqhandler.h, so move (and rename) into the
footbridge dir, and share it.
2002-10-22 20:15:25 +00:00
bjh21 d599df9587 Continue the " - . - 8" purge. Specifically:
add	rd, pc, #foo - . - 8		->	adr	rd, foo
ldr	rd, [pc, #foo - . - 8]		->	ldr	rd, foo

Also, when saving the return address for a function pointer call, use
"mov lr, pc" just before the call unless the return address is somewhere
other than just after the call site.

Finally, a few obvious little micro-optimisations like using LDR directly
rather than ADR followed by LDR, and loading directly into PC rather than
bouncing via R0.
2002-10-14 22:32:50 +00:00
chris 603917a2c7 Merge isa_machdep.c from netwinder and cats into footbridge/isa (where it
joins other machdep files)
Saves maintaining multiple copies of the same thing, the only differences
were:
IRQ line used on the footbridge (made that a define in include/isa_machdep.h)
name of a dma_ranges variable contained arch name, so just made it generic.
2002-10-12 11:53:38 +00:00
chris 625d05a4ac Fix thinko from this morning, delay is reentrant, so resetting the timer
to 0 on entry will confuse any already running delay.
2002-10-10 23:19:13 +00:00
chris a8d4145f3a Minor tweaks to footbridge's delay, always reset the timer when starting delay run (and set last to the counter value).
When the read value is 0, reset the timer (don't wait till the next loop round to reset it)
Add a bit of debug to the calibration stuff to make sure its working ok.
2002-10-10 10:12:27 +00:00
thorpej ebd04dfa9b Properly prototype the netwinder isa/pci init funcs. 2002-10-09 00:33:38 +00:00
chris dfcb3e3552 Add random jitter to stat clock, the random jitter is +- 511 usec's, so
we should average the nominal clock rate.

stathz now runs at hz (the hard clock hz), without getting high amounts of
time in interrupt handling.
2002-10-05 12:22:55 +00:00
thorpej bd5bb4652b Add trailing ; to CFATTACH_DECL 2002-10-02 15:45:10 +00:00
thorpej c5e91d447d Use CFATTACH_DECL(). 2002-10-02 04:55:47 +00:00
thorpej f59e5352f2 Use CFATTACH_DECL(). 2002-10-01 04:21:32 +00:00
chris d0879e89ef cats and netwinder can share a common footbridge_intr.h file, so install and
share a common file.
2002-09-28 15:53:03 +00:00
chris 4c5586750b Enable the use of a seperate statclock.
Currently statclock runs at 64hz, maybe it should be faster or slower, I did
try it being the same as hz, but that just made it look like we spent 10% of
time handling interrupts, rather than the 3% that this gives.

Also fix the IPL_LEVELS for netwinder.
2002-09-28 15:44:29 +00:00
chris c3354b9779 Interrupt 19 does actually do something:
19	PMCSR written by host
(all to do with power management)
2002-09-28 10:34:02 +00:00
thorpej 9a711d6985 Declare all cfattach structures const. 2002-09-27 20:29:02 +00:00
provos 0f09ed48a5 remove trailing \n in panic(). approved perry. 2002-09-27 15:35:29 +00:00
gehenna 77a6b82b27 Merge the gehenna-devsw branch into the trunk.
This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

	device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
  by using this grammer.

- Added the new naming convention.
  The name of the device switch must be <prefix>_[bc]devsw for auto-generation
  of device switch tables.

- The backward compatibility of loading block/character device
  switch by LKM framework is broken. This is necessary to convert
  from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
  We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
  the LKM framework will refer it to assign device major number dynamically.
2002-09-06 13:18:43 +00:00
thorpej a7d44c2503 Use separate function pointers for dmamap_sync pre- vs post- operations.
Change the bus_dmamap_sync() macro to test the ops argument against pre-
and post- constants.  The compiler will optimize out dead code because
of the constants.  Since post- operations are not needed on ARM (except
for ISA bounce buffers), this eliminate a large number of function calls
which are noops, each of which cost at least 6 cycles just in the call
and return overhead (not to mention whatever other useless work the
compiler decides to do in the callee).
2002-08-17 20:46:26 +00:00
thorpej dce4476374 Overhaul how DMA ranges work in the ARM bus_dma implementation.
A new "arm32_dma_range" structure now describes a DMA window, with
a system address base, bus address base, and length.  In addition to
providing info about which memory regions are legal for DMA, the new
structure provides address translation support, as well.

As before, if a tag does not list any ranges, then all addresses are
considered valid, and no DMA address translation is performed.

This allows us to remove a large chunk of code which was duplicated and
tweaked slightly (to do the address translation) from the stock ARM
bus_dma in the XScale IOP and ARM Integrator ports.

Test compiled on all ARM platforms, test booted on Intel IQ80321 and Shark.
2002-07-31 17:34:23 +00:00
bjh21 fb65355d04 Remove #ifdef NC stuff, syncing with iomd/todclock.c. 2002-05-26 12:07:55 +00:00
thorpej 204183c0fa * Add "pcitag_t *pba_bridgetag" to pci_attach_args. This is set to
NULL for root PCI busses.  For busses behind a bridge, it points to
  a persistent copy of the bridge's pcitag_t.  This can be very useful
  for machine-dependent PCI bus enumeration code.
* Implement a machine-dependent pci_enumerate_bus() for sparc64 which
  uses OFW device nodes to enumerate the bus.  When a PCI bus that is
  behind a bridge is attached, pci_attach_hook() allocates a new PCI
  chipset tag for the new bus and sets it's "curnode" to the OFW node
  of the bridge.  This is used as a starting point when enumerating
  that bus.  Root busses get the OFW node of the host bridge (psycho).
* Garbage-collect "ofpci" and "ofppb" from the sparc64 port.
2002-05-16 01:01:28 +00:00
chris 6c4ac1de6e Implement a proper delay routine for footbridge based systems. Note that
until the footbridge is attached we still have to rely on a loop.  This
uses TIMER_3 running at 100Hz.
Sadly this doesn't appear to fix the tlp problems, which either means that this
delay routine is not as accurate as it should/could be or tlp is still broken.
2002-05-04 10:04:42 +00:00
rjs 767d5585e0 Use processor specific versions of ARM cache control functions for SA1100
and SA1110 instead of using SA110 ones.

Rename common StrongARM functions from sa110_* to sa1_*.

Reviewed by Jason Thorpe.
2002-05-03 16:45:21 +00:00
mycroft 47c99ba59e Fix off-by-one error in delay(). 2002-05-02 22:01:46 +00:00
thorpej f56b432a79 Use the bus_space_generic bus space ops. 2002-04-12 19:12:31 +00:00
thorpej 32a0860797 Centralize ARM CPU configuration information by adding a new header
file, <arm/cpuconf.h>, which pulls in "opt_cputypes.h" and then defines
the following:
* CPU_NTYPES -- now many CPU types are configured into the kernel.  What
  you really want to know is "== 1" or "> 1".
* Defines ARM_ARCH_2, ARM_ARCH_3, ARM_ARCH_4, ARM_ARCH_5, depending
  on which ARM architecture versions are configured (based on CPU_*
  options).  Also defines ARM_NARCH to determins how many architecture
  versions are configured.
* Defines ARM_MMU_MEMC, ARM_MMU_GENERIC, ARM_MMU_XSCALE depending on
  which classes of ARM MMUs are configured into the kernel, and ARM_NMMUS
  to determine how many MMU classes are configured.

Remove the needless inclusion of "opt_cputypes.h" in several places.
Convert remaining users to <arm/cpuconf.h>.
2002-04-12 18:50:29 +00:00
thorpej aee5994fce Use abstract names for the protection and PTE type bits in
L1 and L2 descriptors.  This will allow us to support different
PTE layouts that enable the use of extensions on different
processor models.
2002-04-09 19:37:14 +00:00
thorpej 5ffc15a083 Use vtopte() instead of pmap_pte(). 2002-03-24 18:12:54 +00:00
atatat 31144d9976 Convert ioctl code to use EPASSTHROUGH instead of -1 or ENOTTY for
indicating an unhandled "command".  ERESTART is -1, which can lead to
confusion.  ERESTART has been moved to -3 and EPASSTHROUGH has been
placed at -4.  No ioctl code should now return -1 anywhere.  The
ioctl() system call is now properly restartable.
2002-03-17 19:40:26 +00:00
chris a73dabb4b1 Following the demise of arch/arm32 update cats, and restore the isa files to a more sane location.
Also fix build break on GENERIC cats kernel, seems that conf.h should have been including arm/conf.h.

This completes the removal of arch/arm32.
2002-02-10 12:26:00 +00:00
chris 8dd3ca5994 Finish up the changes to get LOOSE_PROTOTYPES working for cats.
Note that this leaves a few inconsistencies (no more than we already had though) eg initarm is now prototyped in arm32/machdep.h, however only cats currently makes use of that header.
2002-01-07 22:58:07 +00:00
chris e3a3a9f56f Make some of the arm32 files build with LOOSE_PROTOTYPES not set in the makefile. Turned up a few mismatched functions. Note that this isn't all of the arm32 files. Aim will be to get arm32 kernels built with LOOSE_PROTOTYPES not set. 2002-01-05 22:41:46 +00:00
thorpej 014157862c * Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
  between arm26 and arm32.
2001-12-20 01:20:21 +00:00
thorpej 8cd82ab7b7 Move interrupt-related stuff out of the generic 32-bit ARM genassym.cf
and into platform-specific genassym.cf files.
2001-11-27 00:15:58 +00:00
thorpej 0c57d87232 Use <arm/cpufunc.h>, not <machine/cpufunc.h>. 2001-11-23 19:21:47 +00:00
thorpej fec02f1259 No need to pull in <machine/pte.h> directly. 2001-11-23 17:23:40 +00:00