Commit Graph

514 Commits

Author SHA1 Message Date
bjh21 2d35661e6a Use write_munti_1() to implement bus_space_write_multi_1(). 2001-06-02 10:45:43 +00:00
bjh21 3df8e425e7 Correct permissions on vmapbuf'ed pages. A read from a device is a write to
memory, and vice versa.
2001-06-02 10:44:02 +00:00
bjh21 2d632efc89 Start using the blockio functions. This makes raw reads from hcsc 20% faster
(is that all?).
2001-05-30 00:19:43 +00:00
mrg 3783ca5d30 define _KERNEL_OPT as well as _KERNEL. we will use this in the future to
get kernel "opt_foo.h" headers, rather than _KERNEL && !_LKM.
2001-05-29 02:20:20 +00:00
bjh21 e4e4a4a982 Fix "Unknown or missing variable at line 3210". I'm sure this isn't the first
time I've fixed this bug.
2001-05-26 15:58:26 +00:00
bjh21 f44b12db52 Make microtime properly monotonic, with code derived from the /alpha
implementation.
2001-05-14 23:45:39 +00:00
bjh21 1d9afb6c6d Initialise boot_args and boot_file, for get_bootconf_option(). 2001-05-13 13:48:11 +00:00
bjh21 73bc600e40 Use _LOCORE to recognize assembler in the kernel, not ASSEMBLER (which doesn't
get set).
2001-05-13 13:47:23 +00:00
bjh21 2af5062ab7 Add <machine/bootconfig.h> on arm26, and add an <arm/bootconfig.h> for it to
include (since all the contents are MI).
2001-05-13 13:46:23 +00:00
thorpej e2a791df22 Use pool_init() rather than pool_create(). 2001-05-09 23:20:59 +00:00
bjh21 e08b3af21d Add stub <machine/cpufunc.h> for arm26. 2001-05-06 18:25:27 +00:00
bjh21 3fc08cf178 Implement pmap_resident_count() and pmap_wired_count() properly. 2001-05-05 14:20:05 +00:00
bjh21 8afb876f73 Make the common <arm/profile.h> work on arm26 and arm32, choosing whether
to munge R15 or not at runtime.  Also make it work with both ELF and a.out.
2001-05-04 00:11:15 +00:00
bjh21 4928854ae3 Arrange to inline hardsplx() into raisespl() and lowerspl(). This should
make them slightly faster, and makes it easier to see how much of the time
apparently spent in hardsplx() actually comes from deferred statclock
interrupts.
2001-05-01 22:19:09 +00:00
bjh21 c7d1f1542c Use the correct condition code when deciding whether to take an AST (oops!).
Also disable interrupts correctly in the APCS-32 case.
2001-05-01 11:01:12 +00:00
thorpej cf67ac7122 Per discussion w/ chuck and chuck, restructure the md page stuff
to use a structure called "vm_page_md", and use __HAVE_VM_PAGE_MD
and __HAVE_PMAP_PHYSSEG.
2001-05-01 02:19:13 +00:00
bjh21 a6b4c8d3da Strip the PSR bits off values of R15 before passing them to _mcount(). This
makes call-graph profiling actually work (hooray!).
2001-04-30 23:41:11 +00:00
bjh21 e5b19b546c Add two functions, int_off_save() and int_restore(), for mcount to use to
disable interrupts without getting into a loop or screwing up irq_handler().
Also use them.
2001-04-30 19:57:10 +00:00
thorpej 2b27ac7a99 Add a VM_MDPAGE_MEMBERS macro that defines pmap-specific data for
each vm_page structure.  Add a VM_MDPAGE_INIT() macro to init this
data when pages are initialized by UVM.  These macros are mandatory,
but ports may #define them to nothing if they are not needed/used.

This deprecates struct pmap_physseg.  As a transitional measure,
allow a port to #define PMAP_PHYSSEG so that it can continue to
use it until its pmap is converted to use VM_MDPAGE_MEMBERS.

Use all this stuff to eliminate a lot of extra work in the Alpha
pmap module (it's smaller and faster now).  Changes to other pmap
modules will follow.
2001-04-29 22:44:31 +00:00
bjh21 45eb40e8d3 Minimal implementation of cpu_sysctl(). 2001-04-29 15:13:45 +00:00
bjh21 e9c8a1fbb5 Add ipfilter, rnd, vcoda and raid. 2001-04-28 17:41:01 +00:00
bjh21 271fb855ce Arrange to restore R14 on return from __mcount, so that profiled assembler
routines will work.  We could put this in _PROF_PROLOGUE, but this seems
lighter-weight and possibly cleaner.
2001-04-26 22:09:57 +00:00
thorpej a60e816e7a Provide a pmap_resident_count() that simply expands to 0. 2001-04-25 18:03:19 +00:00
bjh21 90dfa8d8ff Undo my accidental revival of pmap_kenter_pgs(). 2001-04-25 16:30:03 +00:00
bjh21 7cf0a5e592 Arrange the "unamanaged" pages (entered through pmap_kenter_pa()) are tracked
and ignored as necessary.
2001-04-25 14:42:31 +00:00
bjh21 05d087e7c7 Remove definitions of CLKF_*. They're defined in <arm/cpu.h> now. 2001-04-24 18:15:44 +00:00
thorpej 1c3a62e066 Sprinkle pmap_update() calls after calls to:
- pmap_enter()
- pmap_remove()
- pmap_protect()
- pmap_kenter_pa()
- pmap_kremove()
as described in pmap(9).

These calls are relatively conservative.  It may be possible to
optimize these a little more.
2001-04-24 04:30:50 +00:00
thorpej 55044638aa Remove pmap_kenter_pgs(). It was never really adopted by
anything, and the interface itself wasn't as flexible as
callers would have probably liked.
2001-04-22 23:42:11 +00:00
thorpej ec66f67f3a Use pmap_kenter_pa() rather than pmap_kenter_pgs(). 2001-04-22 23:28:52 +00:00
thorpej 69abdbf60c Undo a misguided previous change to the pmap_update() API. 2001-04-22 23:19:26 +00:00
thorpej 5871b80f00 Use uvm_pageboot_alloc() for early memory allocation, rather than
calling pmap_steal_memory() directly.  On these platforms, since
uvm_pageboot_alloc() is a wrapper around pmap_steal_memory(), there
is no functional change.  This is merely for API consistency.
2001-04-22 18:21:48 +00:00
thorpej cfb5c7ed9f Make pmap_virtual_space() a required pmap function, even on platforms
which have pmap_steal_memory().  This is to reduce the API differences
between pmaps that implement pmap_steal_memory() and pmaps which do
not.

Note that pmap_steal_memory() needs to adjust *vstartp and/or
*vendp only if it used addresses within the range provided to UVM
via the pmap_virtual_space() call.  I.e. it is not necessary to do
so in any current pmap_steal_memory() implementation.
2001-04-22 17:22:57 +00:00
bjh21 8eed59a146 Move arcpp so it attaches before podulebus. 2001-04-22 15:26:07 +00:00
bjh21 11b40e716c Add arcpp. Not in GENERIC because I don't know it works. 2001-04-22 15:02:51 +00:00
bjh21 856547f067 Driver for Archimedes parallel ports. I haven't got a parallel printer, so
this is currently untested.
2001-04-22 15:01:25 +00:00
bjh21 2a1570b5d9 Add functions to twiddle the latch bits, patterned after the ones in Linux. 2001-04-22 15:00:13 +00:00
thorpej 4738622712 Give pmap_update() an argument (a pmap_t) so that it knows which
pmap it should be updating.
2001-04-22 00:33:59 +00:00
bjh21 660a20cd22 Add a skeleton driver for the random latches on the Archimedes, which are
shared between the printer port and floppy drive.  Useful facilities will be
added when I know what I need.
2001-04-22 00:26:35 +00:00
bjh21 85e1abfb39 Keep track of interrupt depth. With forthcoming changes to cpu.h, this gets
us accounting for interrupt time.
2001-04-21 18:51:17 +00:00
bjh21 e66c66730e Remove <arch/arm26/podulebus/podulebus.h>. Podulebus driverd now include
<dev/podulebus/podulebus.h>.
2001-04-19 13:47:07 +00:00
bjh21 074987f4a3 Ensure that we have some idea what a label_t is, even in userland. 2001-04-16 17:30:32 +00:00
bjh21 020a050984 Randomize the statclock period properly. We use the same algorithm as the
sparc port.
2001-04-16 14:12:38 +00:00
kleink f06533a1ee Add definitions of C99 integer format conversion macros.
XXX Fastest minimum-width integer types haven't been decided upon yet.
2001-04-15 17:13:04 +00:00
kleink 739cb75837 Add definitions of C99 specified-width integer type limits.
XXX Fastest minimum-width integer types haven't been decided upon yet.
2001-04-15 15:29:02 +00:00
bjh21 5a15be6a18 Don't panic on a stray IRQ, just log it and hope it goes away. This works for
my acemidi card at least.
2001-04-15 11:59:43 +00:00
kleink cdcf9f46c5 Add definitions of C99 integer constant macros.
Tidy Makefiles up a little.
2001-04-14 22:46:19 +00:00
kleink a7c20e5788 Add definitions of C99 integer constant macros. 2001-04-14 22:38:33 +00:00
bjh21 cee3528adc When checking if an IRQ is active, check for _all_ the right bits' being set,
not just some of them.
2001-04-14 19:58:58 +00:00
bjh21 e0e3b230c1 Remember to initialise the interrupt handle.
Bugs like this are my penalty for having my only supported podule in slot 0.
2001-04-14 18:39:20 +00:00
kleink 7affdab52e Add definitions of C99 minimum-width and greatest-width integer types.
XXX Fastest minimum-width integer types haven't been decided upon yet.
2001-04-14 12:19:49 +00:00
thorpej bf2dcec4f5 Remove the use of splimp() from the NetBSD kernel. splnet()
and only splnet() is allowed for the protection of data structures
used by network devices.
2001-04-13 23:29:55 +00:00
bjh21 d3c7885319 Make sure that every time we touch the referenced/modified bits, we do a
pmap_update_page() to get all the mappings of that page up-to-date.
2001-04-13 16:37:28 +00:00
bjh21 991d163aa2 Remove code from pmap_fault() that ws trying to do referenced/modified
emulation on kernel pages (and getting it wrong).
2001-04-13 15:09:35 +00:00
bjh21 7b00aef2da Rev 1.3 accidentally undid rev 1.2. Re-do it. 2001-04-13 14:50:47 +00:00
bjh21 ac01781de7 Make UBC_WINSHIFT a constant. 2001-04-13 12:40:16 +00:00
bjh21 d039e70428 Remove the "asc" driver. It's never worked, and we should have an MI version
sometime.
2001-04-10 21:33:00 +00:00
bjh21 5677634e50 Small comment correction. 2001-03-28 13:04:57 +00:00
bjh21 8bd452c648 Create an MI Ether3 driver. It's derived from the arm26 driver, which uses
my MI SEEQ 8005 driver, which is based on the arm32 ea driver.
2001-03-24 00:14:52 +00:00
bjh21 2714607c72 Add podulebus_shift_tag, which generates a bus_space_tag_t with a specified
address shift (stride).  This is necessary because many podules have standard
chips with odd address-bus wiring to allow for using LDM for
bus_space_*_multi_*().
2001-03-24 00:10:42 +00:00
lukem 723cd818d8 move duplicate definitions for:
pc, lpt, joy, ocis, apm, satlink, i4bctl, i4brbch, i4btel, i4btrc, i4b
from the port-specific arch/*/*/conf.c files into sys/conf.h
2001-03-21 22:25:52 +00:00
bjh21 de59def2f2 Remove spurious #define mod_base. 2001-03-20 23:29:07 +00:00
bjh21 86d6442c28 Move machine-dependent podulebus headers to <machine/podulebus_machdep.h>.
<dev/podulebus/podulebus.h> is the canonical file to include, and includes
<machine/podulebus_machdep.h>.
<arch/${MACHINE}/poudulebus/podulebus.h> remains for backward compatibility.
2001-03-20 22:59:39 +00:00
bjh21 61e80eef9b As Richard Earnshaw pointed out, bus_space_copy_1() and bus_space_copy_2()
had the wrong names and did the wrong things.  Both are now fixed.
2001-03-20 22:56:16 +00:00
bjh21 0fe2c0aedc These have moved to sys/dev/podulebus. 2001-03-20 00:13:16 +00:00
bjh21 2c4e09f4c9 Revert last change, which shouldn't have applied to this file. 2001-03-20 00:04:28 +00:00
bjh21 23836945a3 Redefine bus_space_addr_t to be a raw address, for compatibility with arm32
podulebus drivers.
2001-03-20 00:03:10 +00:00
bjh21 34cca2e23e Pull in shared podulebus drivers. 2001-03-20 00:01:37 +00:00
bjh21 1c300d3ee8 Make pa_*_base bus_addr_ts. 2001-03-19 21:03:47 +00:00
chs c40daf0aed change uvm_winsize to uvm_winshift so that we can avoid division
by a non-constant value.
2001-03-19 00:29:03 +00:00
bjh21 5c98fe3fec Gratuitous change of signature for podulebus_irq_establish(). It now takes
an opaque podulebus_intr_handle_t, which can be found in podulebus_attach_args.
It's actually the slot number, but don't tell anyone.
2001-03-18 15:56:04 +00:00
bjh21 949f93d279 If uvm_fault() returns an error, pass it on to the pcb_onfault handler
if there is one.  They already arrange to return it to their callers.
2001-03-18 14:04:04 +00:00
bjh21 16198f2b92 Podulebus convergence:
pa_memc_[th] -> pa_mod_[th]
Add pa_easi_*
Add pa_*_base
Add pa_slot_flags to indicate whether EASI is supported.
2001-03-17 21:56:06 +00:00
bjh21 697e84ed46 Update for new location of podules.h and podule_data.h 2001-03-17 20:34:43 +00:00
bjh21 bfc2063e69 Create an ARM2-specific undefined-instruction handler which deals with the
undef/SWI bug and handles emulating SWP.

Untested bacuse my ARM2 machine isn't currently set up.
2001-03-17 18:12:09 +00:00
bjh21 9dfd56f6dc Make this compile with "options DEBUG" again. 2001-03-16 18:11:57 +00:00
chs ac3bc537bd eliminate the KERN_* error codes in favor of the traditional E* codes.
the mapping is:

KERN_SUCCESS			0
KERN_INVALID_ADDRESS		EFAULT
KERN_PROTECTION_FAILURE		EACCES
KERN_NO_SPACE			ENOMEM
KERN_INVALID_ARGUMENT		EINVAL
KERN_FAILURE			various, mostly turn into KASSERTs
KERN_RESOURCE_SHORTAGE		ENOMEM
KERN_NOT_RECEIVER		<unused>
KERN_NO_ACCESS			<unused>
KERN_PAGES_LOCKED		<unused>
2001-03-15 06:10:32 +00:00
toshii 300d398485 Move references to arm/arm/disksubr*.c from files.arm to
files.{arm26,arm32,dnard}.
2001-03-14 14:39:45 +00:00
bjh21 c3c5158d00 Change the value of tf_pc in undefined-instruction handlers on arm32. It now
always points to the undefined instruction in question.  It's up to the
handler to advance it to the next instruction if it wants execution to
continue there.  This is how things have always worked on arm26.
2001-03-13 23:56:48 +00:00
bjh21 a7ba6bb441 Update for new linked-list undefined-instruction handler. 2001-03-13 21:00:13 +00:00
bjh21 db1f089718 Initialise the undefined-instruction handler at startup. 2001-03-13 20:20:43 +00:00
bjh21 b1475781a2 Make arm26 implementation of DDB slightly less gratuitously different from the
ARM one.  Also update for recent undefined-instruction handler changes.
2001-03-11 16:31:05 +00:00
bjh21 ce5529eabf Change undefined instruction handler to use a linked list for each
co-processor.  This is necessary so we can have several handlers for
CP0 (used as a catch-all for non-CP instructions).

Handlers are now removed using remove_coproc_handler(), rather than by calling
install_coproc_handler() with a NULL handler.

Because install_coproc_handler() can now allocate memory, there's a version
for use at boot time that doesn't.
2001-03-11 16:18:39 +00:00
bjh21 c6c5fda4be Use <arm/undefined.h> 2001-03-11 16:14:36 +00:00
bjh21 c7bfcc0130 These are no longer used. 2001-03-10 23:31:32 +00:00
bjh21 29e609e3c5 Update for recent changes to the i82586 driver. 2001-03-10 22:32:17 +00:00
bjh21 f6c36838ae Use the same undefined-instuction handler on both arm26 and arm32. The handler
is derived mostly from the arm32 version, but with a check for an obscure ARM2
bug thrown in.

arm26 fpu and cpu drivers use the new interface for catching undefined
instructions.
2001-03-08 21:30:35 +00:00
bjh21 c0aee693f5 Add a missing part of FPU support. 2001-03-08 21:12:48 +00:00
bjh21 25ec015449 Merge setregs() from sys/arch/arm32/arm32/machdep.c,
sys/arch/hpcarm/hpcarm/machdep.c and sys/arch/arm26/arm26/vm_machdep.c
into sys/arch/arm/arm/arm_machdep.c.
2001-03-04 23:25:00 +00:00
matt 2bfaa741b1 remove disksubr since they are common. 2001-03-04 20:47:03 +00:00
bjh21 8054b2ad5f dev/cons.c is supplied by files.arm.
XXX should it really be?
2001-03-04 14:38:29 +00:00
bjh21 fddf453e7a Allow for size=0 case in copyin(), copyout() and kcopy(). 2001-02-28 11:55:39 +00:00
bjh21 163eba47d8 Use <arm/cpu.h>. 2001-02-28 00:17:40 +00:00
bjh21 fa45b68520 Actually remember to look up the system call we're trying to invoke.
Oops.
2001-02-27 23:57:30 +00:00
bjh21 9a1c596b0b cpu_wait() is now in vm_machdep_arm.c 2001-02-27 13:58:13 +00:00
bjh21 09f63bd785 Now that arm26 does __HAVE_MINIMAL_EMUL, switch it over to using
<arm/types.h>.
2001-02-26 00:19:57 +00:00
bjh21 e56f5ba174 __HAVE_MINIMAL_EMUL 2001-02-25 23:08:33 +00:00
bjh21 9d22bf6fdf Adapt for __HAVE_MINIMAL_EMUL world. 2001-02-25 23:07:51 +00:00
bjh21 846fe69958 Remove CPU_* options (they're in files.arm now -- for some reason I missed
this lot in the last commit).
2001-02-25 18:28:27 +00:00
bjh21 96b16f75a6 Hack to allow arm26 to have its own "cpu" device. This device should really
be shared between all ARM ports, but the arm32 one is too ugly for me to
touch it till I've got a test system running.
2001-02-25 15:33:33 +00:00
bjh21 090dc051cf Reduce the amount of memory allocated for assembler fragments.
Excise unnecessary instructions from kernel launch code.
Increase HIMEM on >8Mb machines, since the last two changes didn't free
enough memory to boot with 16Mb.
2001-02-23 00:27:40 +00:00
bjh21 ab20625e49 Lint doesn't like zero-sized structs. 2001-02-17 20:07:01 +00:00
bjh21 3dbffcc29f Move the RAM base address of the kernel into a variable.
Set CPPFLAGSm CWARNFLAGS and STRIPFLAGS to the same as arm32 uses.
2001-02-17 19:38:36 +00:00
bjh21 503e69a88a Don't define pmaphistbuf unless UVMHIST is defined. 2001-02-17 19:09:51 +00:00
bjh21 33c7eb2382 Add necessary DDB includes. 2001-02-17 19:08:21 +00:00
bjh21 4acea3a8cc Don't do arithmetic on void *s. 2001-02-17 19:04:36 +00:00
bjh21 2e041e883b Correct return type of arcvideo_show_screen(). 2001-02-17 18:45:19 +00:00
bjh21 b211962232 Include <machine/machdep.h> for update_memc(). 2001-02-17 18:43:13 +00:00
bjh21 575fa5e5af #ifdef out arckbd_pick_layout until we get round to using it again. 2001-02-17 18:39:11 +00:00
bjh21 a72248beab Reduce unnecessary differences between this and Makefile.arm32.
Also (more significantly), use the compiler's default -mcpu setting.  This
means I can now build APCS-32 kernels.  They work, too.
2001-02-17 17:23:48 +00:00
bjh21 8b601afaf3 Re-introduce <arm/endian_machdep.h>, this time using GCC's idea of the target
endianness.
2001-02-17 14:55:44 +00:00
bjh21 9b6de1da90 Move cpu_coredump() from arm32/arm32/vm_machdep.c to arm/arm/vm_machdep_arm.c.
Also ANSIfy it and use it on arm26.
2001-02-13 22:54:25 +00:00
bjh21 f942342607 Fix a typo in the last change (eh_init_media -> eh_media_init). 2001-02-13 18:20:57 +00:00
bjh21 284047a2b2 Move sendsig() and sys___sigreturn14() from arm26/arm26/vm_machdep.c and
arm32/arm32/machdep.c into arm/arm/sig_machdep.c, merging and ANSIfying in
the process.

The code is based on the arm32 version, so I don't think anything should break
there.
2001-02-13 13:19:52 +00:00
bjh21 4e460028dc Since idle() turns up in so many stack backtraces, put it in the global
symbol table.
2001-02-13 13:16:37 +00:00
bjh21 82bf8a9d0a Avoid uninitialised variable reading /dev/mem. 2001-02-12 23:29:08 +00:00
thorpej 043e519d55 Adjust the way that media is initialized on DP8390-compatible
chips.  The dp8390_softc now has media_init and media_fini
function pointers that do the work.
2001-02-12 18:49:03 +00:00
bjh21 a4e55e0f13 Shared ARM ptrace(2) implementation. Mostly the same as the arm32
version, but with some #ifdefs for arm26.

Also, don't define PT_STEP, since we don't implement it.  This should
reduce code size a little.
2001-02-11 17:03:04 +00:00
bjh21 9826a76781 Common <arm/reg.h> (and hence common struct reg) for ARM.
This is theoretically backward-incompatible on arm26, but GDB doesn't work there
yet anyway.
2001-02-11 14:51:55 +00:00
bjh21 60af6ce7ca Don't trust function return to restore IRQ disable flag, since it won't
in APCS-32.
2001-02-11 14:46:11 +00:00
bjh21 6d285953f5 When an array is declared as int r[13], don't go trying to use r[13]. 2001-02-10 19:09:48 +00:00
bjh21 21e1b73962 Update ioeb_irq_clear to match its caller. 2001-02-08 22:21:24 +00:00
bjh21 74591d814f Add a definition of MID_MACHINE -- kernel cores still need it. 2001-02-03 17:18:30 +00:00
bjh21 917e1e8fd2 Set the palette in 4bpp modes. They still don't work right, though. 2001-01-24 00:56:29 +00:00
bjh21 050769744d cf_unit usage is now fixed. 2001-01-24 00:03:21 +00:00
bjh21 3c3ed6cecd Flush out cf_unit abuses.
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.
2001-01-23 23:58:31 +00:00
bjh21 d21e15aefe This is no longer used. 2001-01-23 23:19:45 +00:00
bjh21 c59e8d1831 ANSIfy. 2001-01-23 22:59:24 +00:00
bjh21 34bf08cd05 Use a permanent breakpoint to invoke DDB rather than constructing a trapframe
manually.  Prevents the problem introduced in the trapframe unification
whereby continuing from DDB would cause a panic.
2001-01-23 22:41:16 +00:00
bjh21 f32fc0fc90 Use evcnts properly for interrupt counting.
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.
2001-01-23 22:07:59 +00:00
bjh21 8c87715ce0 We abuse cf_unit. The shame! 2001-01-23 22:07:58 +00:00
bjh21 616dad1a1b Use evcnts properly for interrupt counting.
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.
2001-01-23 22:07:57 +00:00
bjh21 668b6cbaba We now have a rasops4 attribute to play with. It doesn't work, but then
neither do rasops1 and rasops2...
2001-01-23 00:27:44 +00:00
bjh21 55648b014b Use our own evcnt structure to count VSYNC interrupts.
Also disable interrupts while we're not using them.
2001-01-22 23:29:34 +00:00
bjh21 d0b6f0f1cd Changes to interrupt accounting:
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.
2001-01-22 23:08:26 +00:00
bjh21 fe3273fbb4 Patch from PR kern/8001, submitted by Rafal Boni.
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.
2001-01-22 22:28:43 +00:00
bjh21 1178bf4219 Initial potentially sharable <arm/armreg.h>. Used by all arm26 code. 2001-01-22 22:10:39 +00:00
jdolecek 8b24036797 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.
2001-01-22 13:56:55 +00:00
bjh21 8805bd8b56 Unify arm26 and arm32 trapframe structures. The unified trapframe is the same
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.
2001-01-20 17:14:19 +00:00
bjh21 2c89ce7e74 Add <arm/frame.h>, for shared stack frame structures. Currently, only sigframes
are common.
2001-01-18 21:48:25 +00:00
tv e58532a4bf No-op commit to force update to a non-"-kk" revision. 2001-01-18 17:47:58 +00:00
bjh21 46b21bb8a8 Fix a couple of brackets in a comment. 2001-01-18 17:05:06 +00:00
jdolecek c1fc5392f5 adjust ddb variable access functions to have first arch 'const', make db_[e]regs[] const 2001-01-18 10:55:29 +00:00
fvdl c7f1462f3e Add machdep file for procfs. Currently only used for linux-style
/proc/cpuinfo (only active when procfs is mounted with -o linux).
For ports other than the i386 this currently produces an empty
string.
2001-01-17 00:07:18 +00:00
bjh21 f575270d81 Switch over to using the arm32 sigcontext structure.
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.
2001-01-16 00:29:45 +00:00
thorpej d74e432ed3 Make softclock a generic soft interrupt of the API is available,
adding the requisite void * argument to softclock().
2001-01-15 20:19:50 +00:00
thorpej 45de366b2e Rename __GENERIC_SOFT_INTERRUPTS to __HAVE_GENERIC_SOFT_INTERRUPTS,
and place the definition in <machine/types.h>.  This can now be used
as a flag to indicate whether or not <machine/intr.h> can be included
to get the generic soft interrupt API.
2001-01-14 23:50:28 +00:00
thorpej 6f0dfa5049 splimp() -> splvm() 2001-01-14 03:32:20 +00:00
thorpej d85a75f583 Make sure everybody has an splvm() and equate it with splimp() (splimp()
is the historical name for this interrupt level, and the historical name
is going to go away in the near future).
2001-01-14 02:00:37 +00:00
bjh21 78c0ba909e Separate out sigcode into its own file, since it's shared by arm26 and arm32. 2001-01-13 00:06:50 +00:00
bjh21 a5ef6e1f81 Move db_disasm.c into sys/arch/arm/arm. Use arm26 version, since it should
generate smaller compiled code.
2001-01-12 21:31:51 +00:00
bjh21 a4047bf10c Move the generic ARM disassembler from arm32/arm32 to arm/arm. 2001-01-12 13:43:11 +00:00
bjh21 6189064e69 More FPU-state-saving infrastructure. Not useful yet. 2001-01-12 13:23:49 +00:00
bjh21 d74ad44e33 Document format of various chunk types. 2001-01-12 00:13:26 +00:00
bjh21 0bb3b087a6 Document the VIDC audio format. 2001-01-12 00:12:38 +00:00
bjh21 531e3e2075 Fix up irq_string for a world without intrnames. 2001-01-12 00:11:42 +00:00
bjh21 6fa98146d5 Start merging actual code in arm32 and arm26:
arm32/arm32/in_cksum_arm32.c -> arm/arm/in_cksum_arm.c

Also move specification of other checksum stuff to files.arm, even though we
use the MI code for that.
2001-01-11 23:27:26 +00:00
bjh21 5159a10d97 Share <machine/elf_machdep.h> between arm26 and arm32. 2001-01-11 22:28:06 +00:00
bjh21 a2dacbe06d Switch over to using the generic arm header files for everything that arm26
and arm32 agree on.
2001-01-11 22:07:53 +00:00
bjh21 68ac1c6fc3 Add some infrstructure to support saving FPU state. 2001-01-11 22:03:52 +00:00
bjh21 7424b1f3c1 Grotty hack to attach names to interrupts.
Should be fixed when I next overhaul this code.
2001-01-11 14:56:07 +00:00
bjh21 5a91dd00b9 Add "arm" to the "machine" line, so we get files.arm pulled in, and more
importantly, the arm->arch/arm/include symlink.
2001-01-10 18:38:37 +00:00
bjh21 84a9223126 Add APCS-32 return instructions, though not used yet. 2001-01-09 12:11:57 +00:00
bjh21 2aa1fb4020 Remove old-style interrupt-counting infrastructure (intrnames/intrcnt). 2001-01-07 19:39:08 +00:00
bjh21 d6bd1012e3 Add facilities for counting interrupts, and a "machine irqstat" command to
DDB to tell us what's going on.
2001-01-07 17:01:53 +00:00
bjh21 2b076072d3 Add a "name" argument to irq_establish and friends, in imitation of arm32. 2001-01-07 15:56:01 +00:00
bjh21 6b513dfe29 Remove ioc_irq_establish -- It wasn't serving any useful purpose. 2001-01-07 15:36:34 +00:00
bjh21 fb3dd6b589 ANSIfy. 2001-01-07 15:27:37 +00:00
bjh21 32ad12527c ANSIfy. 2001-01-07 15:00:02 +00:00
bjh21 32ff4eef91 ANSIfy. 2001-01-07 14:28:02 +00:00
bjh21 c730bd06be Un-__P, remove arg names. 2001-01-07 13:48:24 +00:00
bjh21 5c09bd5fc5 Un-__P and remove function arg names. 2001-01-07 13:38:42 +00:00
bjh21 610a127a3d Fix a stupid = vs == bug that prevented the code working usefully at all.
While I'm here, fix all the other GCC warnings too.
2001-01-07 00:30:29 +00:00
bjh21 fa64805abd Specify (void) arguments, hence avoiding GCC warning. 2001-01-07 00:07:58 +00:00
bjh21 32c62f1fdb ANSIfy 2001-01-06 13:09:05 +00:00
takemura c5fd828440 replace 'long long' with int64_t to compile stand alone program with
compiler other than GCC.
2001-01-03 10:08:55 +00:00
bjh21 7866e2f2c9 Arrange that the return value of copyin() and friends be provided by
do_fault(), in preparation for do_fault() being able to get it from
uvm_fault().
2001-01-01 16:00:42 +00:00
bjh21 bc86e85531 Correct various initial comments, and provide a useful overview of how the
MEMC works, at the suggestion of chs.
2000-12-31 16:09:34 +00:00
bjh21 c1ad66d687 Whitespace cleanup. 2000-12-30 13:53:26 +00:00
bjh21 66c70101f3 Add a cache flush to pmap_fault() when it adds a r/w mapping, since there's
probably an old mapping around that we don't want to get stale.
2000-12-30 13:42:12 +00:00
bjh21 e9d5e8f1e5 Overhaul v(un)mapbuf: Don't worry about unmapping things (the pmap can handle
multiple wired mappings now).  Do worry about seeding referenced/modified
information correctly.
2000-12-30 13:33:15 +00:00
bjh21 e4c6b6f4e5 pmap_kenter_pa(): Seed referenced/modified information correctly. 2000-12-30 13:31:50 +00:00
bjh21 b3eae7d1c8 Since we need to have an aout_machdep.h, we may as well borrow the arm32 one. 2000-12-29 23:08:31 +00:00
bjh21 36f8a8d0f8 Purge vestiges of a.out support. 2000-12-29 23:07:29 +00:00
bjh21 00a01e20d8 Sync with arm32. No functional changes. 2000-12-29 22:42:23 +00:00
bjh21 df10cbcda9 Sync with arm32 (fixes warnings compiling /bin/sh and probably others). 2000-12-29 19:30:34 +00:00
matt a589927cbc Make identical to arm32 version. (add same parens, use __P, etc.) 2000-12-28 03:55:14 +00:00
matt f1f4acfb4d Remove reference to CLBYTES 2000-12-28 03:54:15 +00:00
matt 61b05af542 Except for the RCSID, this file is now identical with arm32/include/ansi.h 2000-12-28 03:52:50 +00:00
bjh21 c00a8ab5fd Calculate the required amount of screen memory, rather than just trusting the
number that RISC OS gives us (which may be far too large).
2000-12-27 22:13:42 +00:00
bjh21 9822871467 Add a special call to uvm_page_physload to register RISC OS's zero page as
free at startup.
2000-12-27 20:43:44 +00:00
bjh21 1b364c5082 pmap_confess() is unused and doesn't work any more. G/C it. 2000-12-27 18:38:50 +00:00
bjh21 c481cdca92 Overhaul of data-abort handling:
- Make data_abort_address() return the whole affected range, rather than
   just one end.
 - Don't rely on pmap_confess().  Instead, for LDM/STM, behave as if two faults
   had occurred, one at each end of the range.
 - Separate out fault handling into do_fault(), and call it from
   data_abort_handler() (twice) and prefetch_abort_handler().
2000-12-27 18:35:18 +00:00
bjh21 58e80f030f Two batches of changes:
1: Cleanup of syscall() -- treat the arguments as an array of register_t
   throughout.  This saves a few casts, and generally makes seeing what's
   going on easier.
2: Be a little more careful in the handling of data aborts on kernel
   addresses: don't use the kernel's map unless the access was actually from
   a kernel mode.  This is how the arm32 data abort handler behaves.
2000-12-27 16:57:09 +00:00
bjh21 186792c5b7 Use KASSERT for simple assertions. 2000-12-27 16:50:12 +00:00
bjh21 2433e71e6e Medium-sized pmap overhaul:
- Use UVMHIST for debugging messages, rather than printf
 - Rely on the caller of pmap_enter to tell us how to manipulate referenced/
   modified bits in the kernel pmap.
   [ Suggested by chs -- may need work on the rest of the kernel. ]
 - Split third-stage initialisation out of pmap_create() into pmap_init2().
 - Bug fix: when relocating pv_table, fix up all references to it as well.
 - Bug fix: in pv_release(), if pulling up a pv_entry to the head of the
   list, correct the reference from its pmap.
2000-12-27 15:16:04 +00:00
bjh21 ce3cd11d08 Unreasonably simple fix for PR#11817: Don't worry about duplicate mappings,
just get pmap_fault to shove them back in.  Crude, but effective.  Fix inspired
by Chuck Silvers.

This breaks pmap_confess, but it probably deserves to die.
2000-12-26 23:18:50 +00:00
bjh21 939baa9f0d Follow the herd: Use the MI md_root.c. 2000-12-26 19:55:52 +00:00
itojun efa2b7073c make mbstate_t bigger (32 -> 128 bytes).
XXX if you have libc after citrus locale import, please recompile libc,
and your applications that use mbstate_t (rather rare).  really sorry
for the mess.
2000-12-26 10:35:28 +00:00
bjh21 f1fc4edf08 In pmap_enter(), seed referenced and modified bits from access type passed in. 2000-12-23 23:06:51 +00:00
bjh21 5568314c66 Since the Arc's interrupt layout is fixed, only print IRQ numbers in
verbose mode.  This helps to ensure the kernel version number doesn't disappear
too quickly.
2000-12-23 21:49:13 +00:00