summaryrefslogtreecommitdiff
path: root/sys/arch/m88k
AgeCommit message (Collapse)Author
2015-09-13<sys/systm.h> must be before <sys/syscall_mi.h> now.Miod Vallat
2015-09-08Give the pool page allocator backends more sensible names. We now have:Mark Kettenis
* pool_allocator_single: single page allocator, always interrupt safe * pool_allocator_multi: multi-page allocator, interrupt safe * pool_allocator_multi_ni: multi-page allocator, not interrupt-safe ok deraadt@, dlg@
2015-08-29_NLIST_DO_ELF is no longer needed: it's the only optionPhilip Guenther
ok deraadt@
2015-07-29Acquire the kernel lock in pmap_remove(). The reasons for this can't beMiod Vallat
stated here as I have been asked to be polite in this commit message. ok deraadt@
2015-07-25Only store mod/ref flags in the vm_page_md struct, not in every pv_entry.Miod Vallat
2015-07-17remove obsolete INET kernel optionTed Unangst
2015-07-03Rename mtx_cpu to mtx_owner for consistency with the other platforms.Miod Vallat
2015-07-03Fix cast in atomic_swap_ptr()Miod Vallat
2015-07-02copy MUTEX_ASSERT_LOCKED and MUTEX_ASSERT_UNLOCKED from alpha.David Gwynne
the previous asserts checked if the mutex was locked by any cpu or not when they should have been checking if the current cpu has the lock or not. found by miod after i enabled pool_gc again. ok miod@
2015-07-02introduce srp, which according to the manpage i wrote is short forDavid Gwynne
"shared reference pointers". srp allows concurrent access to a data structure by multiple cpus while avoiding interlocking cpu opcodes. it manages its own reference counts and the garbage collection of those data structure to avoid use after frees. internally srp is a twisted version of hazard pointers, which are a relative of RCU. jmatthew wrote the bulk of a hazard pointer implementation and changed bpf to use it to allow mpsafe access to bpfilters. however, at s2k15 we were trying to apply it to other data structures but the memory overhead of every hazard pointer would have blown out significantly in several uses cases. a bulk of our time at s2k15 was spent reworking hazard pointers into srp. this diff adds the srp api and adds the necessary metadata to struct cpuinfo on our MP architectures. srp on uniprocessor platforms has alternate code that is optimised because it knows there'll be no concurrent access to data by multiple cpus. srp is made available to the system via param.h, so it should be available everywhere in the kernel. the docs likely need improvement cos im too close to the implementation. ok mpi@
2015-05-05emul_native is only used for kernel threads which can't dump core, soPhilip Guenther
delete coredump_trad(), uvm_coredump(), cpu_coredump(), struct md_coredump, and various #includes that are superfluous. This leaves compat_linux processes without a coredump callback. If that ability is desired, someone should update it to use coredump_elf32() and verify the results... ok kettenis@
2015-04-30Remove SIZE_MAX from limits.h. It was added years ago before weTodd C. Miller
had a proper stdint.h. No ports fallout. OK guenther@ miod@
2015-03-06Unbreak IPL_TTY == IPL_SOFTTTY case. ok deraadt@Miod Vallat
2015-03-03Add pcic(4) support on luna88k.Kenji Aoyama
This is basically glue codes attaching pcic(4) at cbus(4/luna88k), based on src/sys/dev/isa/i82365_isa{,subr}.c. Tested on some ne(4) network interface cards, wdc(4) with a CF memory card, and com(4) with an old XJACK modem card. Currently wi(4) does not work yet. suggestions and ok miod@
2015-02-15Change pmap_remove_holes() to take a vmspace instead of a map as its argument.Miod Vallat
Use this on vax to correctly pick the end of the stack area now that the stackgap adjustment code will no longer guarantee it is a fixed location.
2015-02-11no md code wants lockmgr locks, so no md code needs to include sys/lock.hDavid Gwynne
with and ok miod@
2015-02-11make the rwlock implementation MI.David Gwynne
each arch used to have to provide an rw_cas operation, but now we have the rwlock code build its own version. on smp machines it uses atomic_cas_ulong. on uniproc machines it avoids interlocked instructions by using straight loads and stores. this is safe because rwlocks are only used from process context and processes are currently not preemptible in our kernel. so alpha/ppc/etc might get a benefit. ok miod@ kettenis@ deraadt@
2015-02-10Convert to uiomove().Miod Vallat
ok guenther@
2015-02-10First step towards making uiomove() take a size_t size argument:Miod Vallat
- rename uiomove() to uiomovei() and update all its users. - introduce uiomove(), which is similar to uiomovei() but with a size_t. - rewrite uiomovei() as an uiomove() wrapper. ok kettenis@
2015-02-10Enable `va < VM_MIN_ADDRESS' check now that VM_MIN_ADDRESS is nonzero.Miod Vallat
2015-02-10increase min address to page size for all remaining min == 0 systems.Ted Unangst
not necessary, but consistent with other platforms. ok deraadt
2015-02-09Do not even try to call uvm_grow() from sendsig. It will be invokedMiod Vallat
automagically if copyout() of the signal frame faults.
2014-12-24Pass real sizes to free().Miod Vallat
2014-11-16Replace a plethora of historical protection options with justTheo de Raadt
PROT_NONE, PROT_READ, PROT_WRITE, and PROT_EXEC from mman.h. PROT_MASK is introduced as the one true way of extracting those bits. Remove UVM_ADV_* wrapper, using the standard names. ok doug guenther kettenis
2014-10-09revert unintentional commit unrelated to LKMTed Unangst
2014-10-09remove LKM devicesTed Unangst
2014-08-21Kill the remaining <netinet/in_systm.h> inclusion!Martin Pieuchot
2014-07-18pass atomic_{cas,swap}_uint a volatile void * instead of a volatileDavid Gwynne
void **. the latter is really hard to cast for, and not what what solaris does. ok kettenis@
2014-07-15Implement rw_cas() with atomic_cas_ulong() now, instead of a dedicatedMiod Vallat
routine.
2014-07-15Fix stupid bug in atomic_{add,sub}_int_nv_mp, and stupider bug inMiod Vallat
atomic_cas_uint_mp. Also, make the interprocessor interlock the only thing on its cache line.
2014-07-13use nitems() instead of handrolling something identicalJasper Lievisse Adriaanse
ok mpi@ sthen@
2014-07-13Add missing atomic primitives and __sync_synchronize to let the kernelMiod Vallat
compile again; tested by aoyama@
2014-07-12add a size argument to free. will be used soon, but for now default to 0.Ted Unangst
after discussions with beck deraadt kettenis.
2014-07-12Tackle the endian.h mess. Make it so that:Philip Guenther
* you can #include <sys/endian.h> instead of <machine/endian.h>, and ditto <endian.h> (fixes code that pulls in <sys/endian.h> first) * those will always export the symbols that POSIX specified for <endian.h>, including the new {be,le}{16,32,64}toh() set. c.f. http://austingroupbugs.net/view.php?id=162 if __BSD_VISIBLE then you also get the symbols that our <machine/endian.h> currently exports (ntohs, NTOHS, dlg's bemtoh*, etc) * when doing POSIX compiles (not __BSD_VISIBLE), then <netinet/in.h> and <arpa/inet.h> will *stop* exporting the extra symbols like BYTE_ORDER and betoh* ok deraadt@
2014-07-11CPU_BUSY_CYCLE(): A new MI statement for busy loop power reductionMasao Uebayashi
The new CPU_BUSY_CYCLE() may be put in a busy loop body so that CPU can reduce power consumption, as Linux's cpu_relax() and FreeBSD's cpu_spinwait(). To start minimally, use PAUSE on i386/amd64 and empty on others. The name is chosen following the existing cpu_idle_*() functions. Naming and API may be polished later. OK kettenis@
2014-07-08Repair compilability after the recent uvmexp changes, especially forMiod Vallat
not compile-time-known page size platforms.
2014-07-02Be more careful when recreating single-precision (float) argument to serviceMiod Vallat
precise exceptions, as the actual data the FPU gives us is a 35-bit number, with the exponent sign-extended to the double-precision exponent width. Make sure we shrink it and fetch the remaining three low bits of mantissa from the LS registers.
2014-07-02In fpu_compare(), set the `not equal' bit when the result of the comparisonMiod Vallat
is `not comparable'. gcc relies upon `not equal' being set when comparing numbers to infinities.
2014-07-02Make sure the kernel lock is held when invoking process_domem(); fixesMiod Vallat
ptrace operation on MP kernels.
2014-07-01Replace the assembly 88100 FPU imprecise exception code (mostly triggered byMiod Vallat
denormal results) with C code using softfloat to correctly round the inexact results in the best possible way according to the current rounding mode. No functional change intended, and this assembly code was surprisingly almost non-buggy, as opposed to the precise exception code replaced a few weeks ago; still an improvement as this replaces 900 lines of arcane assembly with 90 lines of understandable C code.
2014-06-09Replace the unmaintainable assembler code responsible for 88100 precise FPUMiod Vallat
fault handling with a C wrapper around the softfloat code, as already done for 88110 kernels. As a bonus, attempting to read or write FPU control registers but fcr62 and fcr63 in userland will now correctly signal an illegal instruction, instead of leaving the destination register unchanged and pretending nothing bad happened. Be sure to rm m88100_fp.d in your kernel compile directory after updating your tree.
2014-06-09Remove redundant regdump() output.Miod Vallat
2014-06-09Doh, traps 128 and 129 need to point to sigsys, not unknown_vector.Miod Vallat
2014-06-09More format string fixes (in 88110 code)Miod Vallat
2014-06-09Split the 88100 floating point support code in two files, one for the preciseMiod Vallat
exceptions, one for the imprecise exceptions. No functional change.
2014-06-08Stop accepting system calls on trap vectors 128 and 129. Userland has notMiod Vallat
been doing this since almost 1.5 years and there has been the 64-bit time_t bump in between, so no old binary should remain.
2014-06-05Remove conditional pipeline rewind on 88100, introduced in 1.19 - this seemsMiod Vallat
to create subtle problems, and removing it does not prevent existing signal delivery tests from having the correct behaviour. And this is likely redundant with DAE processing in sigreturn. We should probably rewind if XIP_V is not set, but does this ever happen in real life? To be investigated on a rainy day. This seems to fix spurious signals encountered building libstdc++ and perl.
2014-06-02Apply the ``make sure sigcontext does not overlap pending DAE addresses''Miod Vallat
logic in the dedicated signal stack case, too. Also, every time the sigcontext position is recomputed by the above logic, recheck the DAE addresses from the beginning, in case a formerly avoided address now risks being overwritten.
2014-06-01Take subsequent stack alignment into account in local_stack_frame() whenMiod Vallat
making sure the sigcontext will not overlap pending DAE accesses. Fixes sporadic sys/kern/signal/earlysig regress failure.
2014-05-31Reduce MAXSSIZ to 32MB to match all other platforms; noticed by tobiasu@Miod Vallat