Age | Commit message (Collapse) | Author |
|
|
|
Use this on luna88k to map the bitmap planes of the frame buffer used by
the driver. 10% speedup under X.
|
|
dbatc. Add batc mapping support for 88110 systems as well.
|
|
data area and the kernel image, whenever possible.
On 88100/88200 systems, use BATC mappings to map the kernel text (and the
kernel data for non-MULTIPROCESSOR kernels). 88110 to follow soon.
|
|
ok miod
|
|
mvme88k, to be able to unmap the page at address zero in the kernel, and have
the vbr page read-only after being initialized.
|
|
unconditional actions. Introduce _if_addr() and _if_mode() variants of these
to act on a given cmmu type only, or on a matching address line only.
This makes the code slightly larger but easier to read and a tad faster.
- report each cmmu on its own line in dmesg, sorted by type (I$ first, then D$).
make sure disabled line information ends up in dmesg, rather than in the
early bootstrap messages.
- fix the multiprocessor writeback logic in m8820x_dma_cachectl() again to be
more reliable; also only rendezvous the cmmus after all cmmu operation have
been issued, instead of doing a rendezvous per cpu.
|
|
existing assembly code for now. Make sure the trapframe images of %fpsr and
%fpcr are updated by the assembly handlers (in addition to the real registers
which were already updated). When returning into trap(), check these updated
value to decide whether a signal ought to be sent to the userland process.
With these changes, computations which ought to cause a signal to be delivered
will indeed trigger the signal, even when they are handled by the completion
code in the floating point exception handlers.
This fixes the libc/ieeefp/except and lib/fenv regress tests on 88100 systems,
finally!
|
|
in libpthread to be optimized away.
While there, follow DG/UX's example of using more than one register for thread
purposes (after all, the ABI reserves four of them), and also use %r26 to store
a pointer to the current thread's errno.
Since it is not possible to initialize %r26 at thread creation without
intrusive and potentially race-prone changes, have __tfork() reset %r26 to
zero, and libpthread's __cerror lazy initialize it. As soon as %r26 is nonzero,
it will be used instead of calling __errno().
This means that binaries linked against HEAD libpthread need to run on HEAD
kernels, and we are belatedly jumping on the 64-bit time_t bump (since there
are no 64-bit time_t m88k snapshots yet).
Joint work with guenther@; "Your love of asm is sick and wrong, and yet
beautiful." and ok guenther@
|
|
happens on all D$ in MULTIPROCESSOR kernels, for the dirty lines may not all
be on the current cpu. Fixes spurious segmentation faults or ill behaviours
in MULTIPROCESSOR kernels, but there are still some left.
|
|
in programs linked against libpthread on 88100 processors, where the parent
thread issueing fork() would spin.
Interestingly enough, this bug is not found in Mach, but has been introduced
by Nivas when porting to mvme88k, 18 years ago. DAE involving xmem are rare
enough for the issue to have survived so long (and once again, it was a
nightmare to track down).
|
|
invoking it.
While there, rework the return-to-pcb_onfault logic to avoid falling through
the DAE code. This allows us to get rid of the bogus DMT_SKIP flag as well:
DAE is only necessary if DMT_VALID is set in DMT0, and DMT0 is reset to zero
afterwards.
|
|
instruction, and print the target address rather than the rounded address
and the byte enables.
|
|
invoking it.
While there, rework the return-to-pcb_onfault logic to avoid falling through
the DAE code. This allows us to get rid of the bogus DMT_SKIP flag as well:
DAE is only necessary if DMT_VALID is set in DMT0, and DMT0 is reset to zero
afterwards.
|
|
clear proper SSBR bits' code path.
|
|
sign-extended 32-bit value. The previous prototypes used too narrow return
types since the mvme88k/luna88k code unification 9 years ago.
Amazingly this did not cause much harm and took quite a while to understand.
The most visible occurence of this bug would be awk aborting early with a
syntax error message, on valid output; this is no surprise as awk is probably
the largest consumer of `short' types in the tree. Of course, the bug would
not be reliably reproduceable, because it would only trigger if the DAE code
path was taken, usually during page fault processing; and since uvm_fault()
will attempt to fault neighbouring pages, depending upon the particular
randomness (stackgap, shared library location) at the time one ran awk, it may
(but quite often may not) trigger. [forcing all uvm_fault() narrow helped
reproduce the issue reliably and eventually fix it]
|
|
the bus_dmamap_sync() bowels would sometimes use incorrectly rounded
addresses, which has been apparently harmless so far, but better be safe
than sorry.
|
|
are orderable, but not equal.
|
|
|
|
|
|
sure that SIZE_MAX and SSIZE_MAX are defined as constants with a matching
type on all are architectures.
ok millert@, matthew@
|
|
(or to) register_t, but need to be usable without register_t in scope, so that
the compiler won't warn about these assignments after the recent _types.h
changes; aoyama@
|
|
hard way by aoyama@
|
|
ok miod kettenis
|
|
type definitions that are the same across all archs from
<machine/_types.h> to <sys/_types.h>
ok deraadt@ kettenis@ otto@
|
|
breakage lurking; ok kettenis@
|
|
the same across all archs from <machine/_types.h> to <sys/_types.h>
ok deraadt@
|
|
SAPR register.
On luna88k, secondary processors are not disabled while the kernel is
initializing. They are running an infinite loop in
locore.S:secondary_init on non-MULTIPROCESSOR kernel. Then, after
initializing the CMMUs tied to the currently-running processor, we
turn on the instruction cache of other processors to make them
happier.
As a bonus, on non-MULTIPROCESSOR kernel, the power switch LED of
luna88k is blinking green and orange again. According to the hardware
manual, it indicates processors' cache hit status.
suggested and ok miod@
|
|
|
|
|
|
it's now atomic_lock to better reflect its usage, and librthread now
features a new spinlock that's really a ticket lock.
thrlseep can handle both types of lock via a flag in the clock arg.
(temp back compat hack)
remove some old stuff that's accumulated along the way and no longer used.
some feedback from dlg, who is concerned with all things ticket lock.
(you need to boot a new kernel before installing librthread)
|
|
|
|
|
|
instead of I$ cmmu only.
This longstanding bug has been introduced in r1.44, which commit message was
right mentioning that it `fixes some bugs, probably introduces new ones as
well'.
|
|
detection code, and forgotten in previous commit.
|
|
|
|
Alter the 88200-specific code to enforce cache-inhibited page tables for
extremely old 88200 versions, and to disable write-back caching on systems
where xmem instructions do not behave correctly when applied to write-back
cached addresses.
No change introduced on 88110 systems, as well as most 88100 systems; the
affected systems are 88100 systems with 88100 revision < 10 and/or 88200
revision < 7; that is, only early MVME181 and MVME188 (not 188A) systems.
|
|
it also exists on 88100. While there, do not allow userland to set it.
|
|
to work as soon as cn_tab is initialized. Allows us to correctly printf or
panic early on unrecognized systems. This used to be the case but got lost a
long time ago.
|
|
before pmap_bootstrap(), as located in .rodata. This will get them
write-protected after pmap has initialized, for free.
|
|
of the .plt whenever possible, and fallback to the old behaviour of searching
for special symbols pointing to its boundaries. No functional change.
|
|
the low part trigger an `illegal instruction' trap on the 88110 (and I can't
see this documented anywhere in the manual). Of course there is code "in the
wild" which uses such constructs (libgmp is one such example).
Extend double_reg_fixup() to take the trap type as an extra argument, and
explicitely allow ld.d or st.d instructions with odd-numbered registers at
aligned addresses if we are invoked from the `illegal instruction' trap
handler, to give this code a chance to run on 88110.
|
|
|
|
libm. While at it, remove now unused workarounds for lint.
Agreed by kettenis@, guenther@, matthew@.
|
|
another symbol without weak attribute. To be used in libc and libm
soon. Agreed by kettenis@, guenther@, matthew@.
|
|
|
|
|
|
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...
|
|
kgmon(8) to deal with them, this time without public header changes.
Previously various CPUs were iterating over the same global buffer at
the same time to modify it and never ended.
This diff includes some ideas submited by Thor Simon to NetBSD via miod@.
ok deraadt@, mikeb@, haesbaert@
|
|
limit. This allows c++ memory hogs, such as pcre's pcrecpp_unittest.cc,
to compile on m88k.
|