summaryrefslogtreecommitdiff
path: root/sys/arch/m88k
AgeCommit message (Collapse)Author
2012-08-22sigpid should be of type pid_t (only visable with DEBUG).Okan Demirmen
ok miod@ (who found others to fix as well)
2012-08-07<sys/ktrace.h> is now pulled in via <sys/syscall_mi.h>, so drop it from herePhilip Guenthe
2012-08-07Move the common bits of syscall invocation and return handling intoPhilip Guenthe
an MI file, <sys/syscall_mi.h>, correcting inconsistencies and the handling when copyin() of arguments fails. Tested on i386, amd64, sparc64, and alpha (thanks naddy@) Any issues with other platforms will be fixed in tree. header name from millert@; ok miod@
2012-06-26create new machine/_float.h which is namespace clean. create a newTheo de Raadt
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.
2012-05-09Do not include <machine/reg.h> and pollute userland namespace with struct regMiod Vallat
in <machine/signal.h>.
2012-04-11The first ktrace record for a newly spawned thread is a returnMike Belopuhov
from a fork syscall done by the parent. Use __tfork, not rfork here to match the ktrace records for the parent (CALL __tfork, RET __tfork). ok guenther
2012-03-23Make rusage totals, itimers, and profile settings per-process insteadPhilip Guenthe
of per-rthread. Handling of per-thread tick and runtime counters inspired by how FreeBSD does it. ok kettenis@
2011-11-16Make userret() MI. On architectures which jammed stuff into it in theTheo de Raadt
past, pull that code out seperately. ok guenther miod
2011-11-15label_t is the kernel setjmp buffer. It should simply be an array ofTheo de Raadt
the right type, noone will ever fiddle with the internals. discussed with jsing
2011-10-27Specify the TLS variant for each platform.Philip Guenthe
2011-10-25Replace the naive 88110 tlb update code, which would always invalidate theMiod Vallat
whole tlb (32 of 'em), with smarter `tlb probe and update with new pte if tlb match found' code. This makes the 88110-specific pmap_update() unnecessary, as updates are no longer aggregated to avoid the number of flushes. This also makes tlb handling similar between 88100 and 88110, from the pmap's point of view, so there is no need to use different routines. No impact on 88100, no user-noticeable performance change on 88100 GENERIC, slight improvement on 88110 GENERIC.MP.
2011-10-09Let BUS_DMA_COHERENT allocations return cache-inhibited pages.Miod Vallat
2011-10-09Finally fix the kernel mode apr to remove the forced write-through cacheMiod Vallat
control, and enjoy the joys of write back (16% performance improvement for non-cpu bound workloads). While there, there is no need to map the page tables cache inhibited on 88100 systems; they only need to be write-through, and snooping will do the rest. Kernel WB is still disabled on 88110 SMP kernels, until the last MP bootstrap bug is understood and fixed.
2011-10-09Split the tlb invalidate routines into 88100 and 88110 specific routines, ↵Miod Vallat
and use function pointers to invoke them (if they can't be choosen at compile-time depending upon the kernel configuration). The routines now get the new pte value as an extra argument; they don't use it yet, but code I am working on will soon on 88110.
2011-10-09Correctly handle invalidate of partial cache lines, for the Nth time.Miod Vallat
2011-10-09Rework secondary processor initialization. cmmu initialization is nowMiod Vallat
performed much earlier in the processor startup. No visible change, paves the way for the much important diff three commits from here.
2011-09-08Provide namespace-safe alignment macros in <machine/_types.h>, withPhilip Guenthe
compat names kept in <machine/param.h>. In <sys/socket.h>, pull in <sys/_types.h> instead of the namespace polluting <machine/param.h> and completely eliminate __CMSG_ALIGN, replaced by _ALIGN ok deraadt@
2011-09-08Make the INT_FAST*_{MIN,MAX} macros match the types they're defined to.Philip Guenthe
Since the underlying types of the int_fast types are set by machine/_types.h, put internal macros in that same file and define the exposed INT_FAST*_{MIN,MAX} macros from those. ok millert@, kettenis@
2011-08-29Only provide FLT_EVAL_METHOD for C99. Add missing DECIMAL_DIG for C99.Mark Kettenis
ok guenther@
2011-07-11Revert art@'s moving around of the KERNEL_LOCK()/KERNEL_UNLOCK() calls,Philip Guenthe
as it causes hangs in some ports, including libsigsegv's configure script confirmed by krw@, landry@
2011-07-07There is a bunch of places in the kernel entry points where we don'tArtur Grabowski
hold the kernel lock, but still need call one function that needs it. Instead of grabbing the lock all over the place, move the locks into the affected functions: trapsignal, scdebug*, ktrsyscall, ktrsysret, systrace_redirect and ADDUPROF. In the cases we already hold the biglock we'll just recurse. kettenis@, beck@ ok
2011-07-06Clean up after P_BIGLOCK removal.Artur Grabowski
KERNEL_PROC_LOCK -> KERNEL_LOCK KERNEL_PROC_UNLOCK -> KERNEL_UNLOCK oga@ ok
2011-07-05Recommit the reverted sigacts change now that the NFS use-after-freePhilip Guenthe
problem has been tracked down. This fixes the sharing of the signal handling state: shared bits go in sigacts, per-rthread bits goes in struct proc. ok deraadt@
2011-05-30Remove the freelist member from vm_physsegOwain Ainsworth
The new world order of pmemrange makes this data completely redundant (being dealt with by the pmemrange constraints instead). Remove all code that messes with the freelist. While touching every caller of uvm_page_physload() anyway, add the flags argument to all callers (all but one is 0 and that one already used PHYSLOAD_DEVICE) and remove the macro magic to allow callers to continue without it. Should shrink the code a bit, as well. matthew@ pointed out some mistakes i'd made. ``freelist death, I like. Ok.' ariane@ `I agree with the general direction, go ahead and i'll fix any fallout shortly'' miod@ (68k 88k and vax i could not check would build)
2011-05-25Also enclose variable names with external linkage in __BEGIN_DECLS.Martynas Venckus
Doesn't matter much since C++ ABI used by GCC doesn't mangle variable names; however technically is required by Section 7.5 of the C++ spec. Discussed with/OK guenther@, matthew@.
2011-04-28fenv improvements and cleanupsMartynas Venckus
2011-04-21Revert the ``remove the `skip splraise/splx for IPL_NONE mutexes' optimization''Miod Vallat
change. It seems to have unexpected side effects, especially on MP systems, and drahn@ disagrees with the way this change has been done and think there is a better way to solve the original problem of msleep() fiddling with mutex internals.
2011-04-18Revert the sigacts diff: NFS can apparently retain pointers to processesPhilip Guenthe
until they're zombies and then send them signals (for intr mounts). Until that is untangled, the sigacts change is unsafe. sthen@ was the victim for this one
2011-04-15Correct the sharing of the signal handling state: stuff that shouldPhilip Guenthe
be shared (p_sigignore, p_sigcatch, P_NOCLDSTOP, P_NOCLDWAIT) moves to struct sigacts, wihle stuff that should be per rthread (ps_oldmask, SAS_OLDMASK, ps_sigstk) moves to struct proc. Treat the coredumping state bits (ps_sig, ps_code, ps_type, ps_sigval) as per-rthread until our locking around coredumping is better. Oh, and remove the old SunOS-compat ps_usertramp member. "I like the sound of this" tedu@
2011-04-07Make sure the ALIGN() macro uses u_long on all platforms for consistency, andMiod Vallat
update the comment block accordingly.
2011-04-06Fix a typo causing a sanity check in m88110_syscall() to never trigger.Miod Vallat
2011-04-03Remove the `skip splraise/splx for IPL_NONE mutexes' optimizations. It is notMiod Vallat
always gaining anything, and msleep() implementation depends upon mtx_leave() invoking splx().
2011-04-03Move PPWAIT flag from struct proc to process, so that rthreads inPhilip Guenthe
a vforked child behave correctly. Have the parent in a vfork() wait on a (different) flag in *its* process instead of the child to prevent a possible use-after-free. When ktracing the child return from a fork, call it rfork if an rthread was created. ok blambert@
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-05Minor optimizations:Miod Vallat
- move pte validity checks from pmap_remove_pte() to its callers. - when iterating over a segment, compute pte address once and increment it in the loop, instead of recomputing it on every iteration.
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-03Rework backtrace code, and try to cope with variadic functions betterMiod Vallat
(those play nasty games with the stack pointer).
2011-01-02Kill pmap_table_t typedef.Miod Vallat
2011-01-01Now that we __HAVE_PMAP_DIRECT, it gets easy to simply save partial cacheMiod Vallat
lines and restore them after invalidating rounded-to-cacheline-boundary ranges.
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-31Handle writethrough mappings (as opposed to writeback) better:Miod Vallat
- a writeback->writethrough downgrade only requires a cache writeback, not a writeback and invalidate. - apparently the 88200 does not behave correctly (i.e. according to its documentation) when a given page is accessed with both writethrough and writeback cacheability (even though the cache lines are physically indexed and physically tagged), so make sure to force writeback of writeback pages when they risk being reused as writethrough (hair_count -= MAXHAIR). Better coherency in page table backing store cacheability: these need to be cache invalidated on 88100+88200 (because of hardware update of modified and used pte bits), and writethrough on 88110.
2010-12-31Yet another rework of the cache flushing routines. Fixes some bugs, probablyMiod Vallat
introduces new ones as well. Main highlights are: - 88200 lines which got marked as unusable by the BUG selftests will not be reenabled at CMMU initialization time. - better granularity in the 88110/88410 routines, to operate on ranges closer to the actual requested area, errata permitting.
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-31In db_write_bytes(), cope with memory addresses mapped by the two hardwiredMiod Vallat
88200 BATC entries, and don't bother trying to flip pte bits in that case.
2010-12-31Provide a lint-friendly __va_copy(), as done on all other platforms.Miod Vallat
2010-12-27Do not issue a cache maintainance operation until the last one is notMiod Vallat
completed; this used to be the case, but revision 1.25 of this file, close to four years ago, changed this behaviour by mistake. The side effects of this mishandling of the cache did not show up until the kernel memory allocation strategy moved towards fast reuse of freed pages. Took me a while to track this down, maybe I'm getting too old to write code, I probably should write backdoors instead.