Age | Commit message (Collapse) | Author |
|
pointed out by & ok miod@
|
|
ok guenther@
|
|
to keep definitions our of user space. The MD files now follow a consistant
order -- all namespace intrusion is at the tail can be cleaned up
independently. locore, bootblocks, and libkvm still see enough visibility to
build. Checked on 90% of platforms...
|
|
|
|
therefore I don't mind you rotting in the Attic for eternity (scheduled
to start on the 21st anyway, according to MayaBSD developers).
reminded by deraadt@
|
|
|
|
|
|
MI float.h which pulls in and defines the values that are needed from
there, and repair sys/limits.h so that it defines the values it needs
as well (depending on POSIX version, XPG version, etc). guenther has
a more exact selection of that coming for limits.h.
this also fixes a few mistakes for the vax.
reviewed by kettenis and guenther.
|
|
|
|
uint64_t, depending upon the platform; this makes the declaration of these
types consistent accross all our supported platform, and we do not intend
to support a platform where bus_addr_t could be larger than the size of the
cpu register. Requested by deraadt@ during s2k11
|
|
- add nearbyint, nearbyintf and nearbyintl implemented using fenv
|
|
Discussed and okay drahn@. Okay deraadt@.
|
|
|
|
since a large part of the structures and logic remains.
Since m88k has separate supervisor/user spaces, we can map physical memory 1:1
in supervisor space, and have the kernel virtual address space start from the
end of physical memory.
This allows us to switch to __HAVE_PMAP_DIRECT. And to get rid of the double
mapped sdt, since now their virtual and physical addresses will always match.
The upper bound of the kernel virtual memory space is now platform dependent,
until the code which relies upon some hardware devices being mapped 1:1 in
supervisor mode is updated to no longer require this (this is mainly a PITA on
luna88k, where onboard devices start at 0x40000000, leaving only 1GB of KVA at
the moment - still much better than the previous 512MB).
Tested on mvme88k only (187, 188, 197LE, 197DP). Other platforms ought to
work, aviion will be checked shortly and fixed if necessary. No known
OpenBSD/luna88k system in working condition at the moment.
|
|
the one used by the firmware, which (at least on mvme88k) is at address zero.
This is unfortunate, since this means that NULL pointer dereferences in the
kernel are not caught, and writes cause havoc.
This behaviour was necessary to be able to use the PROM system call interface
during early bootstrap, without having to disassemble the VBR page and
update branches - which use pc-relative displacement - if we were to use
a different VBR address.
On mvme88k, change this and actually set up two VBR pages: one, over the PROM
page (except for the system call vectors), and another one in the kernel
image (which will be mapped read-only). We'll run with the PROM page until
the end of autoconf, and then switch to the kernel one, and unmap all the
PROM below it.
As a bonus, the final kernel page can use optimized data access fault
handlers, which do not have to check for faults caused by badaddr(), since
badaddr() is only used during device probe on buses which do not support
hotplug.
There are a few infrastructure collateral damage on aviion and luna88k, but
these ports do not change their behaviour yet.
|
|
|
|
4000 and 4300 will need more work, because they don't have as many distinct
software interrupt sources as required by this implementation, so a
different IPI scheme will be necessary.
Tested on dual-processor 4625 (AV530 family) and single processor 4300
(AV400 family).
|
|
trust the cpuid value returned by the prom itself (verified against
/usr/opt/sdk/include/sys/dg_sys_info.h on a DG-UX filesystem).
|
|
board-specific defines to prevent any risk of collision. This also adds
clock support for AV530 family, and timecounter support (cio code sync'ed
with mvme88k). And various bugs fixed in the process.
This is enough to get models 4600 and 530 to run multiuser with a Hawk
Ethernet VME card (the onboard Ethernet is not supported yet, coming soon).
There is no way to share a disk with DG/UX yet, the kernel (and fdisk(8))
needs to become aware of its ways.
|
|
|
|
Also features support for {awkw,bast}ard 6:1 CMMU:CPU configurations (4I2D).
Tested on model 4605, which runs up to cpu_initclocks(), which is not written
for this system family yet. No regression on model 4300.
|
|
or'ed together, even on platforms where bus_space_barrier() ignores the
barrier argument yet.
|
|
with different locking mechanism. 88110 soft ipi are replaced with an
ipi callback which is checked upon return from exception (it can not be kept
as a softintr, as the generic softinterrupt code doesn't have per-cpu
pending softintr queues).
|
|
from interrupt() and related function pointers.
|
|
more board design-independent.
The main changes are:
- define logical interrupt sources, which match the on-board devices as
well as the seven VME interrupt sources. Use these whenever possible
when registering interrupts in the drivers, so that the actual interrupt
mask layouts are hidden.
- make the on-board and VME interrupt handlers separate. On-board interrupt
handlers are not really associated to an interrupt vector, only to a
given interrupt source, and only one handler can be registered for a
logical interrupt source. On the other hand, VME interrupts come with a
vector number, and can be shared. This allows VME devices to really use
the whole 256 vectors space, starting at vector zero.
- update the real interrupt masks upon interrupt handler registration and
removal, so that only interrupt sources for which a handler exists may
be enabled.
- update the VME interrupt allocation logic to allow exclusive vector
allocation.
- move the Z8536 clock routines to their own file, since they are not
AV400-specific; while there, calibrate the delay constant upon startup
for more accurate delay().
The vme driver is the only one left with AV400 tentacles left, to be fixed
very soon.
|
|
so stash it in a board-independent header.
|
|
stealing pages in pmap_bootstrap. While there, use up to four times more
memory for these buffers if the machine has enough physical memory.
|
|
more work in progress to handle these exceptions correctly, and document
a new undocumented and evil chip bug while there.
|
|
x86 __mp_lock changes, but keeping the internal __cpu_simplelock_t to
guarantee atomic access to the __mp_lock fields.
|
|
cpu_disklabel can go away, since nothing anymore needs to use it; ok miod
|
|
to support hotplug media on most architectures. disklabel setup and
verification done using new helper functions. Disklabels must *always*
have a correct checksum now. Same code paths are used to learn on-disk
location disklabels, to avoid new errors sneaking in. Tested on almost all
cases, testing help from todd, kettenis, krw, otto, dlg, robert, gwk, drahn
|
|
device_register() function -- even if it does nothing. reduces the
cpp-based blather different between architectures
idea ok'd by miod; tested on all architectures (except a few miod will
need to cleanup because he has them)
|
|
rt and such; tested and ok miod drahn
|
|
right now that are supposed to be atomic with respect to interrupts and
SMP: atomic_setbits_int and atomic_clearbits_int.
All architectures other than i386 and amd64 get dummy implementations
since at first we'll be replacing operations that are done with
"a |= bit" and "a &= ~bit" today. More proper implementations will follow
kettenis@, miod@ ok
|
|
in its exception-related contents and pcb-related contents.
|
|
|
|
"The dosparts member of cpu_disklabel was not used for any persistant
data. Eliminate it, and just use the data being read in while
processing MBR and EBR records.
Should be no functional change.
ok weingart@ deraadt@"
|
|
some architectures (kaboom); that will be fixed in the next iteration
hopefully!
|
|
data. Eliminate it, and just use the data being read in while
processing MBR and EBR records.
Should be no functional change.
ok weingart@ deraadt@
|
|
don't have wd* in GENERIC, since wd* is the only place such info is
being used. First step of eliminating bad144 bad sector info from all
disklabels.
'go go go' deraadt@
|
|
calls in alpha, hppa, hppa64 and mips63 when accessing the two DOS MBR
u_int32_t fields dp_size and dp_start.
No functional change.
|
|
functional change.
ok deraadt@
|
|
|
|
own header file, and slowly make most of the code board-independent. No
functional change.
|
|
more AViiON designs in the future.
Heuristics to tell designs apart in aviion_identify() are likely too weak,
but this is a start and AV400 still gets identified as AV400 (-:
|
|
recent PROM might have it implemented, and for 6:1 processor boards on 530
models, this is the only way we'll get to know the split scheme in use, for
now.
|
|
VBR) will always reside at the same address.
Also, when querying the PROM for the memory size, ask it for the ``user''
size - i.e. with the PROM data area taken out.
|
|
|
|
|
|
|