Age | Commit message (Collapse) | Author |
|
Make sure that what seems to be a 8-bit ID register of value zero does not
match as an expansion board, which it can't be, and continue with the specific
frame buffer test logic.
|
|
in libkern from getting a ".abicalls" pseudo-op from including <machine/asm.h>;
this will in turn flag the .o file as PIC even though it doesn't contain PIC
code, really.
This gets rid of the annoying "linking PIC files with non-PIC files" warnings
spewed by ld at link time.
|
|
unresolved symbols, then as a relocatable image as initially intended. This
will prevent the arcbios.c 1.18 breakage from occuring again.
|
|
boot blocks to fail on IP27 and IP35 (IP26, IP30 and 32-bit ARCBios systems
unaffected).
While there, provide a simpler ARC_Call() macro for 32-bit boot blocks, and
put a few more variables and statements within explicit __LP64__ guards.
Crank boot blocks version as well.
|
|
wdog_shutdown() for external usage.
|
|
paths are reflexive. It is now possible to fail part-way through a
suspend sequence, and recover along the resume code path.
Split DVACT_SUSPEND by adding a new DVACT_POWERDOWN method is used
after hibernate (and suspend too) to finish the job. Some drivers
must be converted at the same time to use this instead of shutdown hooks
(the others will follow at a later time)
ok kettenis mlarkin
|
|
|
|
which will remain in <machine/cpu.h>, and a new mips_cpu.h containing only the
goriest md details, which are only of interest to a handful set of files; this
is similar in spirit to what alpha does, but here <machine/cpu.h> does not
include the new file.
|
|
basically an IP22 system (R4000 Indigo2) with the ECC memory board of IP28,
and a so-called ``streaming'' L2 cache.
IP26 kernels currently boot single-user, but don't live long; I am suspecting
a bug in the tcc cache routines, but am currently not able to find it (come
to think of it, my understanding of how this cache works could be wrong, and
of course there is no documentation for it but what can be gathered from
IRIX' <sys/IP26.h> comments and defines).
Hopefully this situation will improve in the near future; in the meantime I
am commiting this as `work in progress' to make sure this code doesn't get
lost.
|
|
which allows them to run on IP26 (POWER Indigo2 R8000).
Crank boot blocks version.
|
|
into a global. This allows R12000 O2 systems to set the DSD bit in once for
all, instead of having to set it every time in setregs().
|
|
as some odd mips designs need moro than 32 bits in there. This causes a lot
of mechanical changes everywhere getsr() is used.
|
|
knowledge to <machine/pte.h>. Add specific routines for tlb handling setup
(at cpu initialization time) and tlb ASID wrap.
|
|
register update, status register update causing a change to the interrupt
enable flag, and a few other arcane ones. <mips64/asm.h> will provide
(supposedly sane) defaults, and <machine/asm.h> may override these with
better tuned versions.
Use these macros instead of random strings of nop in the various .S files
requiring hazard workarounds.
|
|
|
|
such statements with it.
|
|
|
|
tested by and ok deraadt@
|
|
|
|
updated gcc and ld to understand the new -nopie flag.
ok deraadt@
|
|
|
|
cleaned up later.
ok deraadt@
|
|
built with -fno-pie. This gets the hairiest part of PIE out of the way ...
ok deraadt@
|
|
* call only for set translation on (once in /sys/dev/pckbd.c)
therefore we can delete unused code.
* change behavior (more standard) - return zero on success
ok miod@
|
|
gio_id(), not the whole 32 bit first word. Some boards with a 8-bit only ID
register use the other 24 bits, sadly.
|
|
are not frame buffers. Thanks to Martin Boehme for donating such boards!
|
|
|
|
|
|
interrupt on Indy; do not use it on such systems. Then, bring back a clock0 at
mainbus attachment to IP22 kernels, and attach it late in the autoconf process
if no other device has claimed the clock yet.
This means R4000 and R4400 based Indy may experience the lost clock interrupt
processor errata again, until a better way to skirt it is found.
|
|
|
|
counter register close to a trigger of the counter interrupt, may cause the
interrupt not to be generated. This makes it a bad idea to use the internal
counter both for the scheduling clock and for delay().
Therefore, on IP22 systems (and IP28 because it makes my life easier), use
one of the two 8254 timers connected to the onboard interrupt controller as
the scheduling clock source.
Adapted from NetBSD.
|
|
reported memory but end beyond it, such as > 1GB DIMMs in bank 0.
Also, currently restrict physical memory usage to 1.5GB - there seems to be a
bogus 32 bit truncation happening in the IP30 specific codepath, which in turns
ends up causing the low memory alias region (and thus, the exception vectors
and the NMI handler) to be overwritten, which I can't find from code inspection
(does anyone has 2GB of Octane memory to spare?)
Both issues reported and fix/workaround tested by Florentijn van Kampen,
thanks!
|
|
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.
|
|
R5000SC processor modules; these sport an up to 512KB, physically indexed,
write-through L2 cache which is not connected to the canonical external cache
interface of these processors (hence requiring specific code to drive it).
The cache is enabled early and disabled before returning to ARCBios (for very
nasty things happen otherwise).
Tested on R5000SC, will be tested on R4600SC soon.
|
|
cache lines and sizes are already there, after all.
The ConfigCache cache routine is responsible for filling these function
pointers; cache routine invocation macros are updated to use the cpu_info
fields, but may still be overriden in <machine/cpu.h> on platforms where
only one set of cache routines is used.
|
|
was a nice trick, but this register is only 32-bit wide and will be
sign-extended, which requires all cpu_info structs to be allocated within 2GB
physical - something which may not be possible on some configurations.
This diff changes IP30.MP kernels to no longer use LLAddr to store curcpu,
but use unused fields of the MPConf structure in low memory, indexed with the
physical processor id, which can be obtained from the Heart PRID register.
|
|
|
|
ARCBios environment variable OSLoadOptions to "nosog". Now everyone
can enjoy running O2 without an SGI monitor and don't turn vegetarian
afterwards. All the essential bits come from NetBSD's crmfb driver
except they've chosen to use a "SyncOnGreen" variable not saved by
the ARCS. Pointers and corrections from and ok miod, jsing
|
|
sector rather than just the bytes for the volume header itself.
Silences the "sloppy I/O" warnings triggered by sgi's distrib scripts.
tested and ok deraadt
|
|
and will report the link being down too aggressively. Better to always report
the link as up - these systems and boards are single media only so it won't
harm much.
Unbreaks dhcp in the installer on these interfaces; found the hard way by
sebastia@
|
|
stop abusing another field, and will be used by more routines RSN.
No functional change.
|
|
controller. In this mode, access to physical memory are not allowed to
bypass the cache, and this allows the memory subsystem to run faster.
Of course, some device drivers will require uncached memory access (e.g.
for proper HPC DMA descriptor operation).
New ip22-specific functions to switch between `fast mode' and `slow mode'
are introduced.
hpc(4) now provides read and write routines to fetch a dma descriptor from
uncached memory into a local copy, and update it from said modified copy.
On systems without the ECC MC, these will do nothing and operation will
continue to access the uncached memory directly. On systems with the ECC MC,
they will perform a copy, and the writeback will be done in slow mode.
bus_dmamem_map() requests for DMA memory with BUS_DMA_COHERENT set in flags,
which would return uncached memory, will now always fail on systems with
the ECC memory controller. Drivers which really need uncached memory, and
are aware of this particular setup, will now pass
BUS_DMA_COHERENT | BUS_DMA_BUS1, which will let the request succeed.
sq(4) will use all of the above to work mostly unmodified on ECC MC systems
in fast mode.
Finally, fast mode is enabled after autoconf.
Tested on IP22 and IP28.
|
|
controller or not, and store this in a global variable. This is better than
checking for the IP number everytime, especially since, according to IRIX
header files, not all IP26 use the ECC memory controller (not that it matters
much for us since we do not run on them yet)
|
|
onboard devices need only attach to hpc0 instead of hpc?.
While there, remove hpc1 and hpc2 attachment from IP28 configurations, as these
can not exist on Indigo2 systems.
|
|
speculative execution, while in kernel mode, attempting to access bogus
physical address through CKSEG[01] or XKPHYS. Surprisingly enough, an IP28
system can boot multiuser without triggering any such error; they will only
show up if there is a lot of I/O (and thus, context switching).
|
|
ECC checking disabled, which allows the existing Indigo2 drivers to run
unmodified.
|
|
from a (non-compiling) diff from Brad.
|
|
struct to know if there are multicast entries, instead of counting the
number of entries in the list. No functional change. From brad.
|
|
the dma_constraint range. This allows the xbridge(4) bus_dma_tag_t to use the
generic routines instead of rolling its own, now that the ATE code has been
removed.
|
|
IP22 family. This is just the bridge so far, as the underlying pci drivers
will need some changes to work (dc(4) does not work correctly yet, and tl(4)
needs to be bus_dma'ified).
|