Commit Graph

293 Commits

Author SHA1 Message Date
thorpej
28fb7c1eb8 Define cpu_number() as discussed on tech-smp. 1999-08-10 21:08:05 +00:00
thorpej
2ff657adb8 Fix the raise/lower semantics of splsoftclock()/spllowersoftclock(). 1999-08-05 18:28:01 +00:00
thorpej
eb20bbc780 Change the semantics of splsoftclock() to be like other spl*() functions,
that is priority is rasied.  Add a new spllowersoftclock() to provide the
atomic drop-to-softclock semantics that the old splsoftclock() provided,
and update calls accordingly.

This fixes a problem with using the "rnd" pseudo-device from within
interrupt context to extract random data (e.g. from within the softnet
interrupt) where doing so would incorrectly unblock interrupts (causing
all sorts of lossage).

XXX 4 platforms do not have priority-raising capability: newsmips, sparc,
XXX sparc64, and VAX.  This platforms still have this bug until their
XXX spl*() functions are fixed.
1999-08-05 18:08:08 +00:00
thorpej
6ec1ededf1 Make a slight rearrangement in how <machine/lock.h> is included. 1999-07-27 23:45:13 +00:00
thorpej
cc668e410f Define apporpriate an value for SIMPLELOCK_LOCKED, based on the
semantics of ldstub.
1999-07-27 22:22:33 +00:00
thorpej
c1ee8f0a8c Prepend `cpu_' to the machine-dependent atomic locking primitivies. 1999-07-27 21:45:39 +00:00
eeh
c6a358d0a8 Lower spl for softints. 1999-07-18 23:54:20 +00:00
eeh
9cf2782159 Move the DVMA mapin/mapout functions from the SBus driver to the iommu driver. 1999-06-20 00:51:29 +00:00
mrg
30c351dc59 mmm, missing return types make gcc unhappy. 1999-06-08 10:35:36 +00:00
eeh
1884f05354 Another general cleanup:
Remove the entire idea of fasttrap interrupts since V9 traps are really cheap,
the CPUs are really fast, and the completely different trap frames would make
these handlers really difficult to implement.

pmap_changeprot() was only used by the clock and one other place; deprecate it.

probeget() and probeset() now take 64-bit addresses even in 32-bit mode so we
can probe IO locations by physical addresses.

Some pmap cleanup.

Some more copyright cleanup.
1999-06-07 05:28:03 +00:00
eeh
186c3eba2b Make pbrobeget() and probeset() work for 64-bit values as well. To do this
the arguments are changed so the address is first and the ASI second so we
can have the address in %o0:%o1 and not worry about unused registers.

Also a bit of copyright cleanup.
1999-06-05 21:58:16 +00:00
eeh
3f7968c736 Fix things up so they compile again. 1999-06-05 20:38:24 +00:00
mrg
03adf4aad1 PCI driver for the UltraSPARC. this only works on the Ultra5/10 machines
(`SUNW,sabre') for now, and it doesn't really quite work there yet anyway.
the bus space/dma code is cloned from the sbus driver.  the IOMMU code also
is cloned from the sbus code, but separated out into iommu.c so that we can
share it with the sbus driver.  hopefully, much of the bus space/dma code
can also be re-shared with the sbus driver and the ebus driver but for now
these copies will do.

support for the real UltraSPARC PCI (`SUNW,psycho') is unwritten, though
most of this code is shared with it.

we can probe PCI config space and try to configue devices, but interrupts
don't work yet...
1999-06-04 13:42:14 +00:00
eeh
07d5dfdd7b Fix some bugs in some more of those asm macros. 1999-05-31 00:13:16 +00:00
eeh
64b891fc8d Add code to support using %tick as the system clock if no "counter-timer" node
is found.
1999-05-30 19:13:33 +00:00
eeh
cd53dbd506 Re-write ASI load/stores to use full 64-bit addresses so we can use device
register addresses with MMU bypass ASIs.
1999-05-30 19:11:33 +00:00
eeh
c2f2c064c0 Make pmap_enter() handle little-endian mappings properly. 1999-05-30 19:01:50 +00:00
eeh
de1ba9c829 Grab real locks from the sparc port. I suppose we could use casa and casx
instead of ldstub, but since we aren't doing n-way locking it makes little
difference.  N.B. Need to decide what to do with sparc64/sparc64/asm.h which
has name conflicts with sparc64/include/asm.h.  So far most of
sparc64/sparc64/asm.h has been moved to ctlreg.h.
1999-05-30 18:57:27 +00:00
mrg
1b384c6911 clone intr.h from the SPARC. 1999-05-30 02:37:10 +00:00
eeh
35d96171e7 Fix bus_type_t properly and enable ASI accesses for bus_space_{read,write}*() 1999-05-22 20:28:22 +00:00
eeh
56b080bed6 Fixup argument confusion to __asm() statements. long long is two registers
wide in 32-bit mode.  Doh!.
1999-05-22 20:25:49 +00:00
eeh
b4b570608d Add some more 32-bit emulation support. 1999-05-12 01:11:54 +00:00
eeh
564db48540 Don't clobber any input regs in __asm statements. 1999-05-11 05:06:17 +00:00
christos
361f7917c8 clean up old GCC.1 stuff; move common definitions to the top. 1999-05-04 13:36:44 +00:00
christos
b70c3eb0ca Define __extension__ if __GNUC__ < 2
Define __builtin_*() for lint
1999-05-03 16:21:28 +00:00
thorpej
b8073b401b Garbage-collect the VM_MBUF_SIZE constant. Instead, use the size
(nmbclusters * mclbytes), so that the right amount of KVA space is
allocated if those variables are patched.
1999-04-26 22:46:44 +00:00
ad
5140c302ce Bring sparc/sparc64 fb code and kernel configuration into line with
rcons changes.
1999-04-13 18:45:40 +00:00
eeh
6492e81ae6 Fix fault handling code to correctly report access_type and fault_type
and get rid of pmap_enter_phys().
1999-03-28 19:01:02 +00:00
eeh
69d1f9d0d3 COMPAT_SPARC32 -> COMPAT_NETBSD32 1999-03-26 04:29:20 +00:00
mrg
54ab2e1e54 clean and up make compile 1999-03-25 17:49:43 +00:00
mrg
dc011bcec0 move sparc32 MD bits here. 1999-03-25 16:26:19 +00:00
drochner
76fa1751fe Add a macro to check for sufficient pointer alignment in bus.h context,
"BUS_SPACE_ALIGNED_POINTER()".
Equal to the param.h "ALIGNED_POINTER()" normally, but obeys additional
requirements of the bus_space_xxx_n() macros. (BUS_SPACE_DEBUG)
1999-03-23 21:29:03 +00:00
eeh
f0503a65c8 Flush D$ on bypass accesses. 1999-03-22 05:35:39 +00:00
thorpej
a77ccfe460 Garbage-collect. 1999-03-20 01:40:25 +00:00
eeh
3c8b9d7307 Some devices don't have a `device-type' property we can use to allocate
an IPL.  Check for those by name.  Give the rest a default IPL of 2.
(Added `SUNW,CS4231' to the list.)
1999-03-18 03:23:53 +00:00
hubertf
56f2d188fc RCS ID police 1999-02-15 04:54:34 +00:00
drochner
0e91ebb904 make the last fix work as intended 1999-01-31 11:15:43 +00:00
mrg
7006310cbd retire _LP64; use compiler provided __arch64__, but still defined _LP64 where we used to anyway. 1999-01-31 09:21:18 +00:00
eeh
8ee118c70d Fix problems with bus_space*() macros (thanks M.Drochner). 1999-01-30 17:02:32 +00:00
mycroft
897a8a7f29 Mark [hn]to[nh][ls]() with __const__, so they are subject to CSE. 1999-01-24 12:55:01 +00:00
christos
6d70af37f7 move prototypes to mi locations and add the xrs gunk. 1999-01-21 23:06:25 +00:00
chuck
90ddaed9b5 MNN is no longer optional, remove dead code 1999-01-16 20:43:21 +00:00
bouyer
dc306354b0 Move the bswap functions from libutil to libc (this bups the
minor of libc and the major of libutil). For little-endian architectures
merge the bnswap() assembly versions with nto* and hton* using symbols
aliasing. Use symbol renaming for the bswap function in this case to avoid
namespace pollution.
Declare bswap* in machine/bswap.h, not machine/endian.h. For little-endian
machines, common code for inline macros go in machine/byte_swap.h
Sync libkern with libc.
Adjust #include in kernel sources for machine/bswap.h.
1999-01-15 13:31:15 +00:00
eeh
d5ca0ef2e6 Don't use long' instead of int64_t' since the latter may not be in scope. 1999-01-09 23:15:39 +00:00
thorpej
da572a137f Argh, fix the ANSI CPP version of the a.out WARN_REFERENCES(). 1998-12-02 21:16:46 +00:00
thorpej
a6f7e0c05a Implement WARN_REFERENCES(). 1998-12-02 00:58:42 +00:00
mrg
b066708a2e add protos for switchtoctx, fixalign and emulinstr. XXX should all these be here? 1998-11-24 12:49:14 +00:00
oster
c74d32c5fc Updating of bdev's and cdev's to support RAIDframe. 1998-11-13 04:47:03 +00:00
eeh
08af05f929 Fix 32-bit gcc scheduling problems. 1998-11-13 03:47:15 +00:00
thorpej
cabecee13c Changes to support fork_kthread():
- cpu_set_kpc() now takes void *arg third argument, passed to the
  entry point.
- cpu_fork() allows parent to be non-curproc iff parent is proc0.
  When forking non-curproc, assume its state has already been saved.
- Adjust various pieces of machine-dependent code to account of all of this.
1998-11-11 06:43:49 +00:00
thorpej
908cdfe4e3 Add scsibus entry points to the cdevsw[]. 1998-10-10 02:00:49 +00:00
eeh
b6fd7187e0 Fix more syscall32 and signal breakage. 1998-10-08 02:31:39 +00:00
thorpej
d681cf055a configure() prototype is in <sys/device.h> 1998-10-06 20:50:15 +00:00
eeh
cd0dd24713 It seems taht 64-bit kernels need bigger stacks. 1998-10-06 05:18:55 +00:00
eeh
d0d18d5a83 Fix PIC code initialization. 1998-10-06 05:16:34 +00:00
thorpej
5006dbf868 cpu_set_kpc() prototype is already in <sys/systm.h>. 1998-10-05 22:11:15 +00:00
eeh
1cc6223a9c More fixup in the signal area.
64-bit syscall cleanup.

Add emulation for some new FPU insns: conversion to 64-bit long int and
conditional moves.
1998-09-22 02:48:42 +00:00
thorpej
a7e5b3bcce For _LP64, sigcontext must contain longs! 1998-09-17 04:51:29 +00:00
thorpej
dcb541531a Minor cosmetic change. 1998-09-17 02:33:06 +00:00
eeh
49af63b22b Fixup signal changes (hopefully). However SUN_COMPAT is likely broken by
this and I don't know how to fix it.

We can now exec a 64-bit init through a really ugly hack (don't ask.)
1998-09-13 16:02:47 +00:00
mycroft
4e4f120db9 Update these for signal handling changes.
XXX Not tested yet.
1998-09-13 12:13:49 +00:00
eeh
6736de02e8 A (slightly modified) version of tv's fix for va_args for kern_printf. 1998-09-11 00:12:41 +00:00
eeh
f3ca996011 Add support for 64-bit types if _LP64 is defined. 1998-09-11 00:05:57 +00:00
thorpej
f7a4380174 If _LP64, set MID_MACHINE to MID_SPARC64, else MID_SPARC. This allows us
to uniquely identify ILP32 vs. LP64 core files, and prevents an LP64 kernel
from incorrectly choosing emul_netbsd when it should choose emul_sparc32.
1998-09-09 11:01:38 +00:00
eeh
2a6ae85fc3 Change to MACHINE_ARCH=sparc64 for LP64 machines. 1998-09-09 02:56:38 +00:00
thorpej
8abe0d6b1c Adjust for the new "reaper" kernel thread: do not free the vmspace and
u-area in machine-dependent code.  Instead, call exit2() to schedule
the reaper to free them for us, once it is safe to do so (i.e. we are
no longer running on the dead proc's vmspace and stack).
1998-09-09 00:07:48 +00:00
eeh
f162a39307 Make register32_t unsigned so we don't have sign extension problems. 1998-09-07 23:46:26 +00:00
eeh
8d72d0dc0a Fix problems copying in extended syscall arguments. 1998-09-07 18:23:54 +00:00
eeh
aecf435d40 Add new 64-bit specific traps and 64-bit Solaris syscall. 1998-09-07 01:39:52 +00:00
eeh
edc4ed9846 32-bit fixup. 1998-09-06 21:53:41 +00:00
eeh
a112a2a4cc It slices. It dices. It does everything except exec a sparc32_compat init. 1998-09-05 23:57:24 +00:00
pk
181a8253a0 Nuke temporary `getpropA()'. 1998-09-05 16:23:08 +00:00
christos
50909bd6d9 Assign copyright to TNF. 1998-09-05 15:28:08 +00:00
eeh
cf9a8a5a53 Periodic update: now starts probing devices. 1998-09-02 05:51:35 +00:00
eeh
26d2d906c7 Some more 64-bit cleanup. Now everything compiles. 1998-08-30 15:32:16 +00:00
eeh
a465fdedc6 Add 64-bit pmap support:
Moved from a two level 512/1024 entry setup mapping 32 (9/10/13) bits
respectively to a three level 1024/1024/1024 entry setup mapping 43
(10/10/10/13) bits.  In 32-bit mode we waste about 1/12 pages mapping the high
11 bits.  We also only manage 43 of the possible 44 bits of virtual address
space, wasting half of it.  Oh well, maybe we'll do better next revision.
1998-08-27 06:23:31 +00:00
eeh
edab5330c3 Fix typo in previous fix. 1998-08-22 22:45:19 +00:00
eeh
9f5435229a 64-bit-ify this. Depend on _lp64. 1998-08-22 22:16:01 +00:00
eeh
239bc62b37 Add a makefile. 1998-08-15 03:57:58 +00:00
eeh
a2dd74ed79 Merge paddr_t changes into the main branch. 1998-08-13 02:10:37 +00:00
kleink
546365a27e _POSIX_SOURCE -> _POSIX_C_SOURCE 1998-08-06 11:25:04 +00:00
ross
22554e01a9 Following discussions with eeh and mrg, change most of these types so
that they should make an ILP32 setup with an ILP32 compiler and an LP64
setup if run through an LP64 compiler. None of the data sizes actually
change right now, and any type errors that show up would have to be fixed
eventually anyway.
1998-07-31 15:30:40 +00:00
mycroft
a24dbc8065 (Always) (practice) (safe) (macro expansion). 1998-07-31 15:07:41 +00:00
eeh
1053f23abf That last change to reduce warnings wasn't quite right. 1998-07-28 04:44:52 +00:00
mycroft
da2e61d160 Delint. 1998-07-27 13:55:32 +00:00
mrg
f0065b1a61 don't provide a static splx prototype if SPLDEBUG. avoids warnings... 1998-07-27 06:05:55 +00:00
thorpej
d47ea67c1f Define one page free list, and put all pages on it. 1998-07-08 04:43:18 +00:00
eeh
d94474ccc9 General update:
Added genassym.cf
	Removed lderr which should never have gotten in
	Removed lots of dead code from locore.s
	Added some softint stuff to intr.c
	Added support for halt -p
	esp and le both use bus_dmamap_*() functions now
		instead of kdvma_mapin()
	groundwork for PCI (but we still have no drivers for
		any sun4u PCI devices)
1998-07-07 03:05:02 +00:00
kleink
4982314902 Merge in recent changes:
GC the unused `physadr' type, which was not able to hold a complete physical
address on 2 architectures anyhow.  Also, move the definition of the `label_t'
type inside _KERNEL protection, since it is specific to the in-kernel
setjmp()/longjmp() implementations.
1998-06-20 16:52:53 +00:00
mrg
873ca5c7b9 merge comment fix. 1998-06-20 12:35:08 +00:00
mrg
94022870c4 pull in opt_gateway.h for options GATEWAY 1998-06-20 12:27:21 +00:00
mrg
ca23582a6b moved <machine/sun_disklabel.h> to <dev/sun/disklabel.h> 1998-06-20 05:58:05 +00:00
eeh
01e2e698b6 Import of sparc64. 1998-06-20 04:58:50 +00:00