summaryrefslogtreecommitdiff
path: root/sys/arch/mvme88k/include
AgeCommit message (Collapse)Author
2009-07-30Make sure the BUS_SPACE_BARRIER_xxx constants are all non-zero and can beMiod Vallat
or'ed together, even on platforms where bus_space_barrier() ignores the barrier argument yet.
2009-07-26Make sure all platforms understand the flags argument of bus_space_map() andMiod Vallat
bus_space_alloc() as a bitmask of flags, and not a boolean controlling cacheability; and make sure the three MI BUS_SPACE_MAP_xxx values documented in the manual page are defined on all platforms as well.
2009-05-31Remove BUS_DMAMEM_NOSYNC definition. Its name is not consistent withMiod Vallat
other BUS_DMA_xxx flag names, and nothing uses it. ok many@
2009-04-20Add a BUS_DMA_ZERO flag for bus_dmamem_alloc() to return zeroed memory.Owain Ainsworth
Saves every damned driver calling bzero(), and continues the M_ZERO, PR_ZERO symmetry.
2009-03-15Generic softinterrupt support for m88k based platforms, adapted from armMiod Vallat
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).
2009-03-09Switch mvme88k to timecounters.Miod Vallat
2009-03-08Move more z8536 defines from MVME188 specific code to the MI header and use it.Miod Vallat
2009-02-27Rework nmi handling to handle ``complex'' NMI faster, and return as fast asMiod Vallat
possible from the exception, without doing the AST and softintr dance. This should avoid too much stack usage under load. ok deraadt@
2009-02-21Move part of the mp lock logic into per-cpu callbacks; on MVME197DP we needMiod Vallat
to disable NMI sources in addition to interrupt sources, and we can not use a quick sequence with shadowing frozen as done for atomic ops. This lets GENERIC.MP boot multiuser on MVME197DP boards, and is so far stable enough to be able to recompile a kernel from scratch (with make -j2).
2009-02-16More 88110 SMP work. Contains, horribly entangled:Miod Vallat
- dma_cachectl() split into a ``local cpu only'' and ``all cpus'', and an ipi to broadcast ``local dma_cachectl'' is added. - cpu_info fields are rearranged, to have the 88100-specific information and the 88110-specific information overlap, and has many more 88110 ugly things. - more ipi handling in the 197-specific area. Since it is not possible to have the second processor receive any hardware interrupt (selection is done on a level basis via ISEL, and we definitely do not want the main cpu to lose interrupts), the best we can do is to inflict ourselves a soft interrupt for late ipi processing. It gets used for softclock and hardclock on the secondary processor, but since the soft interrupt dispatcher doesn't have an exception frame, we have to remember parts of it to build a fake clockframe from the soft ipi handler (ugly but works). This now lets GENERIC.MP run a few userland binaries before bugs trigger.
2009-02-16Since NMI are now handled separately, remove the ``interrupt type'' argumentMiod Vallat
from interrupt() and related function pointers.
2009-02-13Use a different dispatcher for the NMI traps on 88110, these are tooMiod Vallat
different from regular hardware interrupts to be worth handling the same way. Disable IPI reception while we are handling pending IPIs. And do not reenable them by mistake if we need to send an IPI in return. This lets GENERIC.MP boot single user on a MVME197DP. There are still many bugs to fix.
2009-02-13Make delay() a per-board function pointer.Miod Vallat
2008-09-19Perform the mvme197 latency timer reprogramming in the boot blocks, inMiod Vallat
addition to the kernel, and unconditionnaly handle all busswitch revision 1 based boards as horribly broken, even with 50MHz clocks. Based on an report of an early 50MHz 197LE board being unable to boot, due to memory corruption.
2008-06-26First pass at removing clauses 3 and 4 from NetBSD licenses.Ray Lai
Not sure what's more surprising: how long it took for NetBSD to catch up to the rest of the BSDs (including UCB), or the amount of code that NetBSD has claimed for itself without attributing to the actual authors. OK deraadt@
2008-03-31Switch bootloaders to mi loadfile().Miod Vallat
2008-01-13Remove unused cpumod variable.Miod Vallat
2007-12-27Make the mvme188 interrupt handling closer to the aviion interrupt handling:Miod Vallat
non-VME syscon interrupt sources will now use their own intrhand array, and interrupt sources will be enabled in the arbiter as interrupt handlers are registered. This allows VME devices to use the whole 256 interrupts range.
2007-12-15All MVME BUG manuals concur on SR3 being the only register needing to beMiod Vallat
preserved across BUG calls, but on the other hand the last 16 traps need to be restored to BUG values, not only trap #496.
2007-12-15Since the 88110 can not invalidate a particular tlb entry, do not stackMiod Vallat
invalidate tlb ipis, and turn them into simple ``handle once'' ipis.
2007-12-08Better siginfo fault codes for floating point exceptions on 88110, withMiod Vallat
more work in progress to handle these exceptions correctly, and document a new undocumented and evil chip bug while there.
2007-12-04Work in progress SMP code for 88110 processor using the BusSwitch chip asMiod Vallat
an IPI facility, for MVME197DP. It's still missing a few remote cache IPIs and IPI do not seem to be reliably triggered on remote processors at the moment (but this could be a problem on the board I am currently testing on), at least it will boot multiuser using only cpu0 to schedule processes.
2007-12-02Remove 88110 control registers accessors which are never used anywhere.Miod Vallat
2007-12-02Rework the __mp_lock code to not spin at spllock(), kinda similar to theMiod Vallat
x86 __mp_lock changes, but keeping the internal __cpu_simplelock_t to guarantee atomic access to the __mp_lock fields.
2007-11-26Move the implementation of __mp_lock (biglock) into machine dependentArtur Grabowski
code. At this moment all architectures get the copy of the old code except i386 which gets a new shiny implementation that doesn't spin at splhigh (doh!) and doesn't try to grab the biglock when releasing the biglock (double doh!). Shaves 10% of system time during kernel compile and might solve a few bugs as a bonus. Other architectures coming shortly. miod@ deraadt@ ok
2007-11-22Split the cmmu code routines into single 88110 (MVME197LE) and 88110+88410Miod Vallat
combos (MVME197SP/DP), and implement supposedly smarter cache routines. There is still room for improvement, however, cache flush operation errata permissing. Tested on 197LE and 197DP.
2007-11-22Introduce an inline function to skip an instruction on 88110 and use itMiod Vallat
whenever necessary, instead of duplicating the same code 10+ times.
2007-11-22Quote a few errata to explain why odd things are done in oddly ways on 88110.Miod Vallat
2007-11-17Replace many ``unsigned'' variables with ``unsigned int'', ``u_int'' or otherMiod Vallat
appropriate types. No functional change.
2007-11-11Use two software interrupt sources per processor for IPIs, instead of onlyMiod Vallat
one, so that we can have maskable and unmaskable IPIs. Make the clock ipis maskable, and masked at IPL_CLOCK and above. This allows us to get rid of the retrig hack in setipl().
2007-06-20b_cylinder does not need to be set on the callpath down into drivers.Theo de Raadt
cpu_disklabel can go away, since nothing anymore needs to use it; ok miod
2007-06-18move comment to right placeTheo de Raadt
2007-06-17significantly simplified disklabel infrastructure. MBR handling becomes MITheo de Raadt
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
2007-05-19Try reducing the number of IPIs, by only reinflicting them to us if we areMiod Vallat
lowering the spl. Also, warn and halt in tracks if the interrupt pin of a secondary cpu never clears (found the hard way in one of the 2P256 modules here), since there is nothing better we can do. Last, do not attempt to handle VME interrupts on secondary processors yes (this confuses the bus, since both processors will perform a VME interrupt acknowledge sequence, but only one will succeed). This lets processes correctly run on all the available processors in single-user mode, but there are still issues to sort out.
2007-05-15kill __HAVE_DEVICE_REGISTER by requiring all architectures to have aTheo de Raadt
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)
2007-05-14Work in progress IPI mechanism, currently only implemented on MVME188, toMiod Vallat
send clock ticks to secondary processors.
2007-05-08remove more junk in the setroot() code pathTheo de Raadt
2007-03-22When registering VME interrupts, maintain a direct ipl->vector table, as longMiod Vallat
as no more than one interrupt is registered for a given level. Then, if the VME interrupt vector reading cycle fails on the 188 interrupt arbiter, we can use this table as a hint if it has a valid entry, since we know on which ipl line the interrupt occured. This basically silences the m188_ext_int: timeout getting VME interrupt vector, level 3, mask 0x400<IRQ3> occasional messages appearing when the MVME376 is overloaded.
2007-02-19only make this interface available to the kernel for now, discussed withaTheo de Raadt
rt and such; tested and ok miod drahn
2007-02-06Add machine/atomic.h to all architectures and define two operationsArtur Grabowski
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
2007-01-13Bring back a <machine/frame.h> for m88k platforms, by splitting <machine/pcb.h>Miod Vallat
in its exception-related contents and pcb-related contents.
2006-11-18Rework the PFSR register analysis code on mvme88k: split it into fourMiod Vallat
independent subfunctions, turn PFSR_SAVE into a couple of NOP, and replace them early at runtime with a branch to the selected routine, which will return to pfsr_save. This is really better for 188 systems.
2006-11-16Ratibibugle struct frame and <machine/frame.h>Miod Vallat
2006-07-07Get rid of the fixed iomap for device mappings, and allocated va rangesMiod Vallat
off kernel_map whenever necessary.
2006-06-11TypoMiod Vallat
2006-05-18Move otherwise unused <machine/vid.h> to stand/Miod Vallat
2006-05-16Cleanup of mvme88k standalone code, with rewritten startup code withMiod Vallat
fewer assembly statements and much less magic, a few display artefacts removed, and private definitions moved out of the main prom.h.
2006-05-13Oops, intr_findvec() proto is still necessary.Miod Vallat
2006-05-08Replace gazillions of badvaddr() or badwordaddr() calls with badaddr() calls.Miod Vallat
With a few prototype declarations shuffling, this finally allows <machine/locore.h> to die.
2006-05-08Clean the internal m88k trap type codes; while there, simplify andMiod Vallat
factorize the build of the VBR page betweem luna88k and mvme88k. Tested by aoyama@ and I.