Commit Graph

257 Commits

Author SHA1 Message Date
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 d9374670ba Put PERFCTRS under "Development and Debugging options". 2002-08-29 02:25:22 +00:00
thorpej 12f448527a Don't need SOSEND_LOAN here anymore. 2002-08-29 02:22:46 +00:00
thorpej 77a6866508 Enable caching on kernel and user page tables. This saves having
to do uncached memory access during VM operations (which can be
quite expensive on some CPUs).

We currently write-back PTEs as soon as they're modified; there is
some room for optimization (to write them back in larger chunks).
For PTEs in the APTE space (i.e. PTEs for pmaps that describe another
process's address space), PTEs must also be evicted from the cache
complete (PTEs in PTE space will be evicted durint a context switch).
2002-08-24 02:16:30 +00:00
thorpej 6cc7c1c1ff * Add PTE_SYNC() and PTE_SYNC_RANGE() macros. These don't actually do
anything yet.
* Use PTE_SYNC() and PTE_SYNC_RANGE() in some obvious places, i.e.
  where vtopte() is used.
2002-08-22 01:13:53 +00:00
thorpej 5fddbbe3d5 Do cached memory access to L1 tables, making sure to write-back the
cache after any L1 table modifications.
2002-08-21 18:34:31 +00:00
briggs d2c9e5deb4 Disable coalesced writes on IOP310-based systems. 2002-08-20 02:34:04 +00:00
briggs d5135f0f8e We do not need HZ=512 here, for sure. 2002-08-18 04:12:42 +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
briggs c7ee5cd55e Compile properly without DIAGNOSTIC defined. 2002-08-17 19:19:57 +00:00
briggs 126f6cf9bc Add a new option EVBARM_BOARDTYPE to differentiate between different
evbarm ports.  Inline _splraise/_spllower/splx for i80321 and iq80310
for more performance.
2002-08-17 16:42:20 +00:00
thorpej eeebe88acf Don't need to frob CPSR in _splraise(). 2002-08-14 19:47:18 +00:00
briggs 0b956d0b8b Implement pmc(9) -- An interface to hardware performance monitoring
counters.  These counters do not exist on all CPUs, but where they
do exist, can be used for counting events such as dcache misses that
would otherwise be difficult or impossible to instrument by code
inspection or hardware simulation.

pmc(9) is meant to be a general interface.  Initially, the Intel XScale
counters are the only ones supported.
2002-08-07 05:14:47 +00:00
thorpej c67cc2a5b8 Add iopaau, swdmover (commented out), and dmoverio. 2002-08-07 03:41:43 +00:00
thorpej d6003ab996 Use -mcpu=xscale. 2002-08-07 03:40:01 +00:00
thorpej 22e32aa941 #if 0 the stray interrupt messages -- we tend to get them "a lot"
during normal activity on some IOP310-based designs.
2002-08-04 17:52:46 +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
thorpej 79af00bddb Move the calls to uvm_page_physload() out of pmap_bootstrap() and
into platform-specific initialization code, giving platform-specific
code control over which free list a given chunk of memory gets put
onto.

Changes are essentially mechanical.  Test compiled for all ARM
platforms, test booted on Intel IQ80321 and Shark.

Discussed some time ago on port-arm.
2002-07-31 00:20:51 +00:00
thorpej d3aa5664b7 Move the uvm_setpagesize() call to platform-dependent code in preparation
for other changes to pmap_bootstrap().
2002-07-30 16:16:38 +00:00
thorpej 5fed6739d9 Use more descriptive interrupt names. 2002-07-30 04:45:41 +00:00
thorpej 26f7a64dc3 Add iopwdog (i80321 built-in watchdog timer), fxp, and inphy. 2002-07-29 18:42:27 +00:00
thorpej 7b652cb939 Change the way that DMA map syncs are done. Instead of remembering
the virtual address for each DMA segment, just cache a pointer to the
original buffer/buftype used to load the DMA map, and use that.  This
lets us shrink the bus_dma_segment_t down from 12 bytes to 8, and the
cache flushing is also more efficient.

Tested on an i80321 -- changes to others are mechanical.
2002-07-28 17:54:05 +00:00
ichiro ea20391445 make compile when PCI_DEBUG was defined 2002-07-21 22:16:58 +00:00
ichiro 6cac77a3ea cosmetic change
mapping i21555 control/status registers
2002-07-21 14:26:05 +00:00
ichiro 2556a42f35 attach/match separated from ixp12x0_com
Some bug of com driver have been improved.
2002-07-20 03:09:03 +00:00
ichiro 78573b4061 delete unneed file 2002-07-15 17:21:12 +00:00
ichiro ed89c15166 add configuration file
Netwise APlication Platform Board
2002-07-15 17:18:03 +00:00
ichiro 3aee04fce7 add support ixp12x0 eva-board "IXM1200" 2002-07-15 17:13:30 +00:00
rearnsha a1614f2bc8 Changes to allow for the fact that the kernel is now mapped at
0xc0200000.  Tidy up to remove dead comments and code.
Allow more than one L1 entry for the kernel space and use the 'spare'
memory below the kernel code for the initial page tables in the same
way that the iq80310 does.
2002-07-08 16:20:07 +00:00
rearnsha 20ea379ed5 Map the low 4M of memory at 0xc0000000. 2002-07-08 16:17:42 +00:00
rearnsha 9fb9bc0c8a Use the Integrator ldscript and build .bin and .srec versions of the
kernel.
2002-07-08 16:15:44 +00:00
rearnsha 165a2e8904 Script file for linking an Integrator kernel image. 2002-07-08 16:14:54 +00:00
thorpej a572f8f4a5 Report stray interrupts. 2002-06-26 01:06:44 +00:00
lukem fde6ae6f04 Enable "pseudo-device clockctl" in all kernels, except
installation related kernels (INSTALL* and RAMDISK*).
This enables rc.conf(5) $ntpd_chroot to be used "out of the box"
2002-06-17 05:14:02 +00:00
drochner d2b9876081 move initialization of the "struct pglist" returned by uvm_pglistalloc()
from the calling code into uvm_pglistalloc() itself for consistency
and easier error handling
2002-06-02 14:44:35 +00:00
briggs f03fce66ce Fix odd typo from addition of pba_bridgetag. 2002-05-22 23:54:14 +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
thorpej 35fd50c116 Switch to esiop by default (again); it is fully-baked enough to use
in production now.
2002-05-03 19:35:53 +00:00
thorpej bfd9280083 Issue a CPWAIT sequence after enabling the MMU to make sure
it's really enabled.
2002-04-26 18:01:21 +00:00
thorpej 6b4a2676fd Give gzboot a 1M heap, so that loading gzip -9'd kernels works
reliably.
2002-04-25 22:30:38 +00:00
thorpej 248e944701 Allow the size of the heap to be specified at build time. 2002-04-25 22:11:51 +00:00
atatat d1b3852365 Add the INCLUDE_CONFIG_FILE option to all config files. In config
files that are generic (ie, GENERIC, GENERICSBC, GENERIC32, ALL, or
ALPHA), it is uncommented.
2002-04-25 15:06:20 +00:00
briggs 3d46ca0e98 XSCALE_CCLKCFG should not be set in std.iq80310. Set IQ80310 to use
XSCALE_CCLKCFG=9 (733MHz) and TEAMASA_NPWR to use XSCALE_CCLKCFG=7 (600MHz)
as that's what the part on the board is rated for.
2002-04-25 01:50:00 +00:00
thorpej 1ca5e360be Use LOADADDR() where appropriate. 2002-04-25 01:48:21 +00:00
briggs 24bc04a204 80321 doesn't have a CCLKCFG register. 2002-04-25 01:47:56 +00:00
thorpej 48774f52db Add iq80321.c 2002-04-25 01:47:54 +00:00
thorpej 509fd84067 Add iq80310.c 2002-04-25 01:47:41 +00:00
thorpej 643663fa93 Go back to siop; esiop isn't fully baked yet. 2002-04-24 20:38:24 +00:00
thorpej fda6669861 Use esiop. 2002-04-24 17:45:55 +00:00
briggs 29e436c9e8 Enable new option SIOP_SYMLED 2002-04-18 14:32:57 +00:00