Age | Commit message (Collapse) | Author |
|
vaddr_t PMAP_PREFER(..., vaddr_t). This allows better compiler optimization
when the function is inlined, and avoids accessing memory on architectures
when we can pass function arguments in registers.
|
|
case.
|
|
run on R5000 family processors (e.g. sgi GENERIC-IP32), where direct XKPHYS
mappings hit a silicon bug.
|
|
strategy value (BSEARCH); use BIGFIRST on loongson since there are only up
to two memory segments.
|
|
implement them, and they are of questionable usefulness.
|
|
enabled by option FPUEMUL.
This is pretty straightforward, except for conditional branch on FPU condition
codes emulation (bc1f/bc1fl/bc1t/bc1tl instructions): unlike most
RISC-with-delay-slots designs (m88k, sparc), the branch pipeline is not exposed
to the kernel on Mips, therefore we can not resume a branch without losing the
delay slot instruction.
Some other operating systems work around this issue by emulating the delay
slot instruction, but this is error-prone (and requires the kernel code to
be aware of all supported instructions of the processor it is currently running
on), some use dedicated breakpoints to single-step through the delay slot and
then resume the branch as expected, but this causes a lot of copy-on-write
allocations.
This code chooses a third path, of copying the delay slot instructions to run toa special `magic' page, followed by a special trap instruction to give control
back to the kernel. This makes sure the instruction will actually be run by the
processor, and that no more than one page per process is wasted, regardless of
the number of branches to emulate.
Tested on octeon (big-endian) by syuu@ and on loongson (little-endian) by me.
Note that enabling option FPUEMUL in the kernel will completely disable the
hardware FPU, if there is one; there is currently no way to build a kernel
supporting both hardware and software FPU, and there is no reason to change
this until there is a strong need to support both.
|
|
ptrace guts with a logic similar to what the alpha port does.
|
|
copious cache flushes behind our back.
|
|
|
|
less than relation is correctly computed, and check for both operands being
signaling NaNs, instead of only the first NaN found, to decide whether to
raise an invalid exception or not.
|
|
|
|
performance counter code path (which is not enabled at the moment).
|
|
|
|
that didn't already have one, and then immediately use it in libc's
SYS.h
ok miod@
|
|
to complete matthew@'s commit of a few days ago, and drop __HAVE_CPU_MUTEX_LEVEL
define. With help from, and ok deraadt@.
|
|
OP_BCOND subfunction.
|
|
MI softfloat code, implementing all MIPS IV specified floating point
operations.
Tested on R5000, R10000, R14000 and Loongson2F.
|
|
make it visible so that md parts of the kernel can use it for debug messages.
|
|
|
|
hierarchy. Everything attached to a single root node anyway, so at
best we had a bush.
"i think it is good" deraadt@
|
|
some mips64r2 instructions. Various bugfixes all over as well (conditional
trap instructions do not have a delay slot, for instance).
|
|
|
|
to be visible if _STANDALONE. This will eventually be used by the upcoming
new-and-improved loongson bootblocks (in the works).
|
|
prototypes to allow control of the FPU c/sr FS field.
|
|
|
|
a second (invalid) opcode; confirmed by all mips core documentation.
|
|
|
|
|
|
No functional change.
|
|
it possible to compile sgi kernels with gcc4.
ok miod@ (who pointed out what volatile was used for in this case)
|
|
|
|
ok miod@
|
|
|
|
|
|
|
|
Bogus chunks pointed out by matthew@ and miod@. No cookies for
marco@ and jasper@.
ok deraadt@ miod@ matthew@ jasper@ macro@
|
|
|
|
it defines. In some cases, this means pulling in uvm.h or pcb.h
instead, but most of the inclusions were just noise. Tested on
alpha, amd64, armish, hppa, i386, macpcc, sgi, sparc64, and vax,
mostly by krw and naddy.
ok krw@
|
|
so make that __arc__ for now, to avoid collisions
ok miod
|
|
Makes gcc4 happy.
ok miod@
|
|
with a VIA 686 southbridge.
Features:
- 686 setup code (no thanks to PMON for not initializing the beast).
- work in progress ISA interrupt handling code.
- support for vga(4) compatible devices as console, in PC-compatible text mode.
- move legacy (ISA) support code out of bonito(4) to make things clearer.
- support more than 256MB on 2E-based systems.
Tested on a generic 2E-based evaluation board by someone who wishes to remain
anonymous; you know who you are, thank you very much for testing.
|
|
Instead of previous implementation, we won't use physical cpuid to fetch curcpu().
This requires to implement IP27/35 SMP.
Implemented getcurcpu() and setcurcpu() for it, smp_malloc() renamed alloc_contiguous_pages() because now it only allocate by page.
ok miod@
|
|
|
|
like it is everything.h
ok tedu
|
|
|
|
ok deraadt@
|
|
make console selection on a per machine basis. Whilst here store the
keyboard layout ('keybd') and graphics state ('gfx') variables for
future use.
ok miod@
|
|
the serial and IR ports, built into a mac-like case). At least PMON initializes
the frame buffer in a much friendlier video mode (1360x768x16), but there is
still no frame buffer acceleration yet.
Tested by wvdputte.
|
|
- properly spell 'usefulness'
|
|
processors can display correct data. Now cpu1 on octane is correctly
reported in dmesg.
|