Commit Graph

52 Commits

Author SHA1 Message Date
wiz ee1b406595 Spell address with two d's. Inspired by similar changes in OpenBSD,
originating from Jonathon Gray and forwarded by jmc@openbsd.
2003-11-10 08:51:51 +00:00
matt 6bf111a80e Fix GCC 3.3.1 nits. 2003-09-21 19:32:37 +00:00
ichiro 22d06d95f5 fix typo
#if DEBUG -> #ifdef PCI_DEBUG
2003-09-15 05:11:31 +00:00
ichiro 4be788fe81 add address decode of "PCI Configuration type 1" 2003-09-15 05:07:29 +00:00
agc aad01611e7 Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
2003-08-07 16:26:28 +00:00
igy fcd9e244be Delaying to mask interrupt by hardware until actually it occurs.
The new code maintains two variables 'current_spl_level' and
'hardware_spl_level'.  Variable hardware_spl_level reflects actual
priority level at the hardware's point of view.  hardware_spl_level is
always synchronized to hardware.

splraise() just increases current_spl_level.  splx() sets
current_spl_level.  If (and only if) hardware_spl_level and
current_spl_level is not same, splx() synchronizes interrupt mask
register and hardware_spl_level to current_spl_level.

In most case, splraise() raises current_spl_level and splx() restores
only current_spl_level.

When an interrupt occurs, hardware_spl_level and interrupt mask
register are synchronized to current_spl_level.

In this implementation, during a higher priority interrupt handler is
running, lower priority interrupts never cause intr_dispatch() to run.
It will avoid some race condition.
2003-07-21 06:17:32 +00:00
igy b449da1391 KNF 2003-07-13 09:25:50 +00:00
igy a90b1b8eca code clean up 2003-07-13 08:56:16 +00:00
igy 3e9598d4fa move window of pci i/o cycle to higher address 2003-07-13 08:26:31 +00:00
igy cdb56b83f6 mapping pci configuration space (not subregion) 2003-07-13 07:15:22 +00:00
igy 1087696257 using common bus_space_tag in ixpsip too 2003-07-13 02:48:41 +00:00
igy 365f7e1994 sharing bus_space_tag among ixpio, pci mem and i/o. 2003-07-13 02:11:58 +00:00
igy 2a9dfe7684 using devmap for static mapping 2003-07-13 01:01:50 +00:00
fvdl d5aece61d6 Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
2003-06-29 22:28:00 +00:00
ichiro 904951f445 struct proc * -> struct lwp * 2003-06-29 11:10:35 +00:00
thorpej 452a8fdae2 Rename IPL_IMP -> IPL_VM. 2003-06-16 20:00:56 +00:00
fvdl 7dd7f8baa2 Handle 64bit DMA addresses on PCI for platforms that can (currently only
enabled on amd64). Add a dmat64 field to various PCI attach structures,
and pass it down where needed. Implement a simple new function called
pci_dma64_available(pa) to test if 64bit DMA addresses may be used.
This returns 1 iff _PCI_HAVE_DMA64 is defined in <machine/pci_machdep.h>,
and there is more than 4G of memory.
2003-06-15 23:08:53 +00:00
igy 4691b478a0 Add __KERNEL_RCSID tags 2003-03-25 06:12:46 +00:00
igy 9ead47682a catch up to consdev update 2003-03-06 07:39:34 +00:00
igy 3c0a5d1f13 Remove #ifdef __HAVE_GENERIC_SOFT_INTERRUPTS switch and old interrupt
support.  Ixp12x0 port always uses generic soft interrupt.
2003-03-06 06:17:43 +00:00
igy edcaa77675 insert macro to protect itself against multiple includion. 2003-03-06 06:14:16 +00:00
igy d399d9df43 fix incorrect interrupt mask handling.
pci_imask[IPL_NET] is incorrectly ORed on imask[IPL_SOFTSERIAL].
imask[IPL_NET] should be ORed.
2003-02-22 11:13:10 +00:00
igy 4e8142fde2 correct physical/virtual address handling
- to identify device instance, using hardware address.
	- when console accesses device, using statically mapped address.
	- when tty accesses device, using handler given by bus_space_map().
2003-02-22 05:32:00 +00:00
igy a7a7697279 Don't use dv_unit to determine console. Back to comparing iobase again.
We always assume ixpcom is at statically mapped address (0xf0000000).
2003-02-21 01:53:35 +00:00
igy 6248ef9b7e implement ioctl 2003-02-21 00:31:08 +00:00
ichiro 4b8928ad4a files.ixp12x0
no need device ixpcom in evbarm/conf/files.evbarm move it to
arm/ixp12x0/files.ixp12x0

ixp12x0_com.c:
some fix around address handling
1. Do not call bus_space_map() in ixpcominit().  Calling bus_space_map()
   is not safe here, because bus_space_map() calls uvm_km_valloc() but
   uvm is not yet initialized.
2. Use dv_unit to determine console instead comparering iobase.
   Now you can attach ixpcom0 with physical address like this:
        ixpcom*         at ixpsip? addr 0x90000000 size 0x4000
Statically mapped address (0xf0000000) is still usable.

ixp12x0_clk:
1. access PLL_CFG register via bus_space
2. Make the delay() working correctly.  (bug fix)
3. Start the timer device without interrupt on attach time.
   Now delay() called before cpu_initclocks() works fine.

ixp12x0_pci:
1.Mapping PCI type0/1 configuration space to the upper address.
2."PCI I/O Cycle Access" mapping to same virtual address(VA==PA)
   but size of this mapping increase to 1MByte because fails
   cause couldnt set L2 table.
3.use bus_space address handling in ixp12x0_pci.c.
2003-02-17 20:51:52 +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
ichiro 7bda39e405 Use generic_bs_wr_4 for writing region 2002-12-22 11:28:37 +00:00
ichiro 2c9ff5a338 Use generic_bs_sr_4 2002-12-22 11:24:07 +00:00
ichiro 51b12685a4 change flags of pmap_enter() in ixp12x0_io.c, ixpsip_io.c
bug fix: ixp12x0_pci.c
2002-12-08 13:21:44 +00:00
ichiro ad74b473f7 initialize ixpcomconsaddr
use splserial()
fix IXPCOM registers
2002-12-03 09:28:27 +00:00
ichiro 1e213be17b use bus_space map 2002-12-02 14:10:13 +00:00
ichiro f2de71b067 changes&fix name of mapping registers 2002-12-02 14:08:57 +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
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
thorpej d27ffe27d1 Need ixp12x0var.h
CVS ----------------------------------------------------------------------
2002-10-09 00:12:05 +00:00
thorpej 6509226f7a Need <dev/pci/pciconf.h>. 2002-10-09 00:11:15 +00:00
thorpej 18962e82ba add ixp12x0_reset() prototype. 2002-10-09 00:09:37 +00:00
thorpej aa3c369db0 Make this compile with strict prototypes. 2002-10-09 00:06:57 +00:00
thorpej c5e91d447d Use CFATTACH_DECL(). 2002-10-02 04:55:47 +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
thorpej 6c88de3b53 Introduce a new routine, config_match(), which invokes the
cfattach->ca_match function in behalf of the caller.  Use it
rather than invoking cfattach->ca_match directly.
2002-09-27 03:17:40 +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 4706ae8670 Use cpsr_c rather then cpsr_all where appropriate. 2002-08-14 23:33:11 +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
ichiro 517449c38c some bug fix and cosmetic changes 2002-07-21 14:19:43 +00:00