Age | Commit message (Collapse) | Author |
|
to pass both the virtual and physical addresses of the page to clean to
SyncDCachePage, which is the only routine using `Index' operations on the data
cache, which might be virtually indexed at some levels but physically indexed
at others. On the other hand, it does not make any sense to pass a physical
address to routines using `Hit' operations (and they were discarding them
anyway).
In addition to making things cleaner, this fixes sporadic userland misbehaviour
(read: SIGSGEV) on RM7000 O2 systems.
|
|
|
|
behalf of curproc.
|
|
initial setup to be complete before switching to our trap handlers.
However, change guarded_{read,write}_* to clear BEV in the coprocessor 0
status register, and restore it afterwards, to use our fault handlers within
these functions. This makes these functions usable from consinit().
|
|
layout in 64-bit mode. Found the hard way, of course.
|
|
|
|
from a fork syscall done by the parent. Use __tfork, not rfork
here to match the ktrace records for the parent (CALL __tfork,
RET __tfork). ok guenther
|
|
|
|
to a word boundary.
|
|
|
|
necessary cache coherency work wrt similar virtual indexes of different
physical pages, depending upon two distinct global variables, instead of
a shared one. R4000/R4400 VCE requires a 32KB mask for PMAP_PREFER, which
is otherwise not necessary for pmap coherency (especially since, on these
processors, only L1 uses virtual indexes, and the L1 size is not greater
than the page size, as we are using 16KB pages).
|
|
Indy PROM versions use different year bases - after all, using 1970 instead
of the previously used value of 1940 smelled like a bug, and probably was,
so this eventually got fixed in later PROM versions.
Instead of hardcoding a year base depending upon the system, we will now ask
ARCBios for its current year, and compare it to what can be read from the RTC
registers to figure out what year base is in use by the PROM.
|
|
(IP20, IP22, IP24) in 64-bit mode, adapated from NetBSD. Currently limited
to headless operation, input and video drivers will get ported soon.
Should work on all R4000, R4440 and R5000 based systems. L2 cache on R5000SC
Indy not supported yet (coming soon), R4600 not supported yet either (coming
soon as well).
Tested to boot multiuser on: Indigo2 R4000SC, Indy R4000PC, Indy R4000SC,
Indy R5000SC, Indigo2 R4400SC. There are still glitches in the Ethernet driver
which are being looked at.
Expansion support is limited to the GIO E++ board; GIO boards with PCI-GIO
bridges not ported yet due to the lack of hardware, and this kind of driver
does not port blindly.
Most of this work comes from NetBSD, polishing and integration work, as well
as putting as many ``R4x00 in 64-bit mode'' erratas as necessary, by yours
truly.
More work is coming, as well as trying to get some easy way to boot install
kernels (as older PROM can only boot ECOFF binaries, which won't do for the
kernel).
|
|
rather than abusing <machine/cpu.h>.
|
|
of previous computation fix.
|
|
|
|
|
|
|
|
for IP numbers under 30 (Octane), and add a few interesting ones.
No functional change, except making my life easier for upcoming work.
|
|
by anything yet, but has been lying in one of my trees for too long.
|
|
pages. This will allow R5000-based systems with physical memory fitting in
CKSEG0 to use 16KB pages and direct maps (since only XKPHYS accesses trigger
the XKPHYS coherency errata on these processors).
Tested on IP32, IP30 and IP27 (and loongson too as well).
|
|
my face then...) depends upon PMAP_PREFER_ALIGN to be a power of two, minus one.
On mips64 with 4KB pages, the runtime variable used to compute PMAP_PREFER_ALIGN
had the low PAGE_SHIFT bits zeroed (for no good reason I'd say). Don't bother
zeroing them anymore.
|
|
trampolines) to them; this makes sure there is no risk of pending writes
being lost when we clear the caches. Of course, this would be a bug in the
cache handling routines, but having our vectors correctly set will help
debugging the issue.
Tested on sgi and loongson.
|
|
subspaces in the CCA_NC uncached memory space. However, being coherent,
there was never a need for bus_dma to use uncached addresses.
This means that, on the only systems where uncached_base was not set to
PHYS_TO_XKPHYS(0, CCA_NC), it was never used.
Remove the variable, and replace PHYS_TO_UNCACHED() with
PHYS_TO_XKPHYS(, CCA_NC). No functional change.
|
|
a nop on R5k and RM52xx, but actually required on RM7k.
|
|
InvalidatePage_* cache operations on RM52xx and RM7k, as strongly recommended
by the manual.
|
|
fix various typos in comments, harmonize a few of them, and rename the internal
InvalidateSecondaryPage define to InvalidatePage_S for consistency.
No change in generated code.
|
|
past, pull that code out seperately.
ok guenther miod
|
|
the right type, noone will ever fiddle with the internals.
discussed with jsing
|
|
|
|
ok ariane@
|
|
compat names kept in <machine/param.h>. In <sys/socket.h>, pull
in <sys/_types.h> instead of the namespace polluting <machine/param.h>
and completely eliminate __CMSG_ALIGN, replaced by _ALIGN
ok deraadt@
|
|
Since the underlying types of the int_fast types are set by machine/_types.h,
put internal macros in that same file and define the exposed
INT_FAST*_{MIN,MAX} macros from those.
ok millert@, kettenis@
|
|
ok guenther@
|
|
Yeeloong, but with a 7" display with a 800x480 resolution, and no webcam.
There are still problems to get it booting from disk from PMON (colour me
unsurprised), which are being looked at. Loading the boot blocks from a FAT
USB stick, to then boot the kernel from the disk, is a reliable workaround
in the meantime.
Tested by Ban Keong Yee (bankeong dot yee on gmail) who is the ``lucky''
owner of such a machine, thanks for your time!
|
|
as it causes hangs in some ports, including libsigsegv's configure script
confirmed by krw@, landry@
|
|
kernels, as there is no way to sync the counters between all processors.
|
|
hold the kernel lock, but still need call one function that needs it.
Instead of grabbing the lock all over the place, move the locks into
the affected functions: trapsignal, scdebug*, ktrsyscall, ktrsysret,
systrace_redirect and ADDUPROF. In the cases we already hold the biglock
we'll just recurse.
kettenis@, beck@ ok
|
|
KERNEL_PROC_LOCK -> KERNEL_LOCK
KERNEL_PROC_UNLOCK -> KERNEL_UNLOCK
oga@ ok
|
|
problem has been tracked down. This fixes the sharing of the signal
handling state: shared bits go in sigacts, per-rthread bits goes in
struct proc.
ok deraadt@
|
|
i386. Stop abusing it on other archs for controling a shutdown by
pressing the soft power button:
* Add a MI sysctl hw.allowpowerdown; if set to 1 (the default) it
allows a power button shutdown.
* Make acpi(4)/acpibtn(4) honor hw.allowpowerdown.
* Switch the various power button intercepts on landisk, sgi, sparc64
and zaurus over to hw.allowpowerdown.
* Garbage collect the machdep.kbdreset sysctl on all archs other than
amd64 and i386.
ok miod@
|
|
|
|
The new world order of pmemrange makes this data completely redundant
(being dealt with by the pmemrange constraints instead). Remove all code
that messes with the freelist.
While touching every caller of uvm_page_physload() anyway, add the flags
argument to all callers (all but one is 0 and that one already used
PHYSLOAD_DEVICE) and remove the macro magic to allow callers to continue
without it.
Should shrink the code a bit, as well.
matthew@ pointed out some mistakes i'd made.
``freelist death, I like. Ok.' ariane@
`I agree with the general direction, go ahead and i'll fix any fallout
shortly'' miod@ (68k 88k and vax i could not check would build)
|
|
Doesn't matter much since C++ ABI used by GCC doesn't mangle variable
names; however technically is required by Section 7.5 of the C++ spec.
Discussed with/OK guenther@, matthew@.
|
|
|
|
|
|
|
|
This will enable future uvm_map code to make intelligent decisions during
allocation.
|
|
|
|
|