summaryrefslogtreecommitdiff
path: root/sys/arch/m88k/include
AgeCommit message (Collapse)Author
2011-03-23Normalize sentinel. Use _MACHINE_*_H_ and _<ARCH>_*_H_ properly and consitently.Paul Irofti
Discussed and okay drahn@. Okay deraadt@.
2011-03-11Use _MACHINE_ENDIAN_H_ for this is The Right Thing To Do.Paul Irofti
Okay guenther@, millert@.
2011-01-05Pass pmap_bootstrap() the memory range used by the PROM/BUG/firmware/whatever,Miod Vallat
instead of assuming it is ``everything below the kernel image''.
2011-01-05Make copypage() and zeropage() per-cpu function pointers, and use aMiod Vallat
different version on 88110, which does load allocate of to-be-completely-overwritten cache lines.
2011-01-05Now that pmap_copy_page() no longer needs to flush a couple contiguous tlbMiod Vallat
entries, drop the count parameter to cmmu_tlb_inv(), and introduce cmmu_tlb_inv_all() to drop all user tlb entries (to be used during context switches).
2011-01-02Kill pmap_table_t typedef.Miod Vallat
2010-12-31Massive overhauling of the m88k pmap, though I can't pretend it's a new pmapMiod Vallat
since a large part of the structures and logic remains. Since m88k has separate supervisor/user spaces, we can map physical memory 1:1 in supervisor space, and have the kernel virtual address space start from the end of physical memory. This allows us to switch to __HAVE_PMAP_DIRECT. And to get rid of the double mapped sdt, since now their virtual and physical addresses will always match. The upper bound of the kernel virtual memory space is now platform dependent, until the code which relies upon some hardware devices being mapped 1:1 in supervisor mode is updated to no longer require this (this is mainly a PITA on luna88k, where onboard devices start at 0x40000000, leaving only 1GB of KVA at the moment - still much better than the previous 512MB). Tested on mvme88k only (187, 188, 197LE, 197DP). Other platforms ought to work, aviion will be checked shortly and fixed if necessary. No known OpenBSD/luna88k system in working condition at the moment.
2010-12-31Introduce a new cmmu routine, for page writebacks without invalidate. Will beMiod Vallat
used two commits from now.
2010-12-31Standardize cache handling functions and defines to use wb/wbinv/inv insteadMiod Vallat
of flush/sync/inval. No functional change.
2010-12-31Provide a lint-friendly __va_copy(), as done on all other platforms.Miod Vallat
2010-12-26Kill pmap_phys_address(), and force every driver's mmap() routine to returnMiod Vallat
a physical address [more precisely, something suitable to pass to pmap_enter()'sphysical address argument]. This allows MI drivers to implement mmap() routines without having to know about the pmap_phys_address() implementation and #ifdef obfuscation.
2010-12-23The exception vector page on m88k systems has always been the same page asMiod Vallat
the one used by the firmware, which (at least on mvme88k) is at address zero. This is unfortunate, since this means that NULL pointer dereferences in the kernel are not caught, and writes cause havoc. This behaviour was necessary to be able to use the PROM system call interface during early bootstrap, without having to disassemble the VBR page and update branches - which use pc-relative displacement - if we were to use a different VBR address. On mvme88k, change this and actually set up two VBR pages: one, over the PROM page (except for the system call vectors), and another one in the kernel image (which will be mapped read-only). We'll run with the PROM page until the end of autoconf, and then switch to the kernel one, and unmap all the PROM below it. As a bonus, the final kernel page can use optimized data access fault handlers, which do not have to check for faults caused by badaddr(), since badaddr() is only used during device probe on buses which do not support hotplug. There are a few infrastructure collateral damage on aviion and luna88k, but these ports do not change their behaviour yet.
2010-12-21Convert netisr to a normal soft interrupt instead of hanving MD codeClaudio Jeker
for it. This makes the netisr a real C function which will help further development. No noticable performance change on i386 and amd64. With input from kettenis@ and miod@ additional OKs mikeb@ and henning@
2010-12-15oops, i forgot to check in the BRKSIZ define in uvm, but deraadt thinksTed Unangst
its better as a per arch MD define anyway. all default to MAXDSIZ as before.
2010-11-27Remove ddb single-step load and store counters. Most platforms do notMiod Vallat
implement them, and they are of questionable usefulness.
2010-11-18Declare pmap_proc_iflush() in <uvm/uvm_pmap.h> unless <machine/pmap.h>Miod Vallat
provides an inline version of it.
2010-09-28Implement a per-cpu held mutex counter if DIAGNOSTIC on all non-x86 platforms,Miod Vallat
to complete matthew@'s commit of a few days ago, and drop __HAVE_CPU_MUTEX_LEVEL define. With help from, and ok deraadt@.
2010-06-22Since our caches are snooping, we only need to broadcast cache invalidatesMiod Vallat
on 88110 designs. Brings a ~8% speedup on GENERIC.MP on 197DP.
2010-05-02Precompute the userland process apr cache bits into a global variable.Miod Vallat
On AViiON systems with the 6:1 CMMU:CPU configuration, force cached mappings to be writethrough - this probably hides a bug in the code, but that's the only way so far to get such a system running stably.
2010-04-21<sys/systm.h> required now.Miod Vallat
2010-04-18Work in progress support for AViiON models 4600 and 530.Miod Vallat
Also features support for {awkw,bast}ard 6:1 CMMU:CPU configurations (4I2D). Tested on model 4605, which runs up to cpu_initclocks(), which is not written for this system family yet. No regression on model 4300.
2009-11-27Move MB_LEN_MAX into the machine-independent sys/limits.h header,Philip Guenthe
rather than defining it separately for each architecture. Also set it to 4, to accommodate for future UTF-8 support (rfc3629). Diff by stsp, committing to catch the libc major bump ok kettenis@, guenther@
2009-11-04Get rid of __HAVE_GENERIC_SOFT_INTERRUPTS now that all our platforms support it.Mark Kettenis
ok jsing@, miod@
2009-05-02Drop the pm_cpus bitmask field from struct pmap, and instead remember theMiod Vallat
currently active userland pmap in each processors struct cpu_info. This thus skips the complete tlb flush if idle switches back to the proc previously running on this processor.
2009-04-19Rename max_cpus to ncpusfound and compute it regardless of optionMiod Vallat
MULTIPROCESSOR.
2009-03-26Remove cpu_wait(). It's original use was to be called from the reaper soOwain Ainsworth
MD code would free resources that couldn't be freed until we were no longer running in that processor. However, it's is unused on all architectures since mikeb@'s tss changes on x86 earlier in the year. ok miod@
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-15Introduce splsoftassert(), similar to splassert() but for soft interruptMiod Vallat
levels. This will allow for platforms where soft interrupt levels do not map to real hardware interrupt levels to have soft ipl values overlapping hard ipl values without breaking spl asserts.
2009-03-04Since 88110 processors can not flush individual TLB entries, instead ofMiod Vallat
flushing the whole TLB block every time a pte is modified, store a bitmask of pending flushes and do them at pmap_update() time. 88100 behaviour is unchanged.
2009-03-04Introduce atomic_clear_int() as an MD atomic operation to perform atomicMiod Vallat
exchange with zero; use it in the soft interrupt code to make it simpler and faster.
2009-03-01Files forgotten during last commit:Miod Vallat
Rework nmi handling to handle ``complex'' NMI faster, and return as fast as 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-21Get rid of 88110 nmi stacks. This was a good idea, but I outsmarted myselfMiod Vallat
since it was intended to service NMI occuring in user mode, and we could end up invoking preempt() and have another cpu start using this stack, with interesting results.
2009-02-20atomic_{set,clear}bits_int were not safe enough on 88110 systems, as theyMiod Vallat
can be interrupted by NMI; move the SMP version of these routines from inlines to a separate file (kernel text shrinks 20KB...). Since the implementation for 88110 becomes really hairy, the pre-main() code is responsible for copying the appropriate code over for kernels configured for both 88100 and 88110 cpus, to avoid having to choose the atomicity strategy at runtime. Hairy, I said. This gets GENERIC.MP run much further on 197DP. Not enough to reach multiuser mode, but boots up to starting sshd and then panics.
2009-02-18In __cpu_simple_lock(), do not hog the bus with exclusive accesses; ifMiod Vallat
xmem didn't return the expected value, spin doing regular loads until it appears we have a chance to grab the lock again.
2009-02-17Pass a cpu_info * to setsoftipi() so it does not need to curcpu(), whichMiod Vallat
synchronizes the pipeline on 88110.
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-08On 88110 processors, use a separate stack to handle NMI; these can occurMiod Vallat
while we are switching pcbs and all sort of bad things could happen.
2009-02-01Remove dma_cachectl() and rename dma_cachectl_pa() to dma_cachectl() now thatMiod Vallat
the old vs(4) code is gone.
2008-12-21Proper cpu_unidle() function for MP kernels. ok art@ long agoMiod Vallat
2008-10-23Move the va_copy define to <sys/stdrag.h> making sure it is uniformalyMark Kettenis
protected by __ISO_C_VISIBLE > 1999. With a little help from miod@. ok miod@
2008-10-15make random(9) return per-cpu values (by saving the seed in the cpuinfo),Theo de Raadt
which are uniform for the profclock on each cpu in a SMP system (but using a different seed for each cpu). on all cpus, avoid seeding with a value out of the [0, 2^31-1] range (since that is not stable) ok kettenis drahn
2008-10-10Add empty cpu_unidle() macros for architectures that currently don't doArtur Grabowski
anything special to prod a cpu to leave the idle loop in signotify. powerpc, i386, amd64 and sparc64 will follow soon so that everyone has the same interface to wake an idling cpu.
2008-10-10Define MAXCPUS on all architectures.Artur Grabowski
For now, sparc64 is arbitrarily set to 256 (only architecture that didn't have a practical limit in the code on the number of cpus).
2008-09-07- replace dtoa w/ David's gdtoa, version 2008-03-15Martynas Venckus
- provide proper dtoa locks - use the real strtof implementation - add strtold, __hdtoa, __hldtoa - add %a/%A support - don't lose precision in printf, don't round to double anymore - implement extended-precision versions of libc functions: fpclassify, isnan, isinf, signbit, isnormal, isfinite, now that the ieee.h is fixed - separate vax versions of strtof, and __hdtoa - add complex math support. added functions: cacos, casin, catan, ccos, csin, ctan, cacosh, casinh, catanh, ccosh, csinh, ctanh, cexp, clog, cabs, cpow, csqrt, carg, cimag, conj, cproj, creal, cacosf, casinf, catanf, ccosf, csinf, ctanf, cacoshf, casinhf, catanhf, ccoshf, csinhf, ctanhf, cexpf, clogf, cabsf, cpowf, csqrtf, cargf, cimagf, conjf, cprojf, crealf - add fdim, fmax, fmin - add log2. (adapted implementation e_log.c. could be more acruate & faster, but it's good enough for now) - remove wrappers & cruft in libm, supposed to work-around mistakes in SVID, etc.; use ieee versions. fixes issues in python 2.6 for djm@ - make _digittoint static - proper definitions for i386, and amd64 in ieee.h - sh, powerpc don't really have extended-precision - add missing definitions for mips64 (quad), m{6,8}k (96-bit) float.h for LDBL_* - merge lead to frac for m{6,8}k, for gdtoa to work properly - add FRAC*BITS & EXT_TO_ARRAY32 definitions in ieee.h, for hdtoa&ldtoa to use - add EXT_IMPLICIT_NBIT definition, which indicates implicit normalization bit - add regression tests for libc: fpclassify and printf - arith.h & gd_qnan.h definitions - update ieee.h: hppa doesn't have quad-precision, hppa64 does - add missing prototypes to gdtoaimp - on 64-bit platforms make sure gdtoa doesn't use a long when it really wants an int - etc., what i may have forgotten... - bump libm major, due to removed&changed symbols - no libc bump, since this is riding on djm's libc major crank from a day ago discussed with / requested by / testing theo, sthen@, djm@, jsg@, merdely@, jsing@, tedu@, brad@, jakemsr@, and others. looks good to millert@ parts of the diff ok kettenis@ this commit does not include: - man page changes
2008-07-28In process_write_regs() and sigreturn(), be more strict about the bitsMiod Vallat
userland is allowed to change in psr.
2008-07-21- add proper double_t and float_t definitions for each archMartynas Venckus
- math.h shouldn't define FLT_EVAL_METHOD, but float.h should (per C99). remove from math.h, and add proper definitions in float.h ok millert@
2008-07-18Add a macro that clears the want_resched flag that need_resched sets.Artur Grabowski
Right now when mi_switch picks up the same proc, we didn't clear the flag which would mean that every time we service an AST we would attempt a context switch. For some architectures, amd64 being probably the most extreme, that meant attempting to context switch for every trap and interrupt. Now we clear_resched explicitly after every context switch, even if it didn't do anything. Which also allows us to remove some more code in cpu_switchto (not done yet). miod@ ok