summaryrefslogtreecommitdiff
path: root/sys/arch/powerpc/include
AgeCommit message (Collapse)Author
2015-01-20Various cleanups. Explicitly include <sys/atomic.h>, Use pmap_remove_pg()Martin Pieuchot
for the kernel pmap and kill pmap_kremove_pg(). Finally guard the hash lock code under "MULTIPROCESSOR" to explicit which part of the code received some MP love. ok kettenis@
2015-01-04Implement splassert(9) for powerpc.Martin Pieuchot
This changes the logic to prevent a recursion when processing soft interrupts. Previously a per-CPU flag was set before re-enabling interrupts. Now the IPL level is raised to SOFTTTY which makes splsoftassert() happy, greatly inspired by mips64. As a side effect, the ppc_intr_{disable,enable}() dance is now done only once instead of twice per splx(9). While here, make use of dosoftint() instead of having 3 different functions for dispatching soft interrupts. Tested by deraadt@ on G4 smp and by myself G5 smp, G3, G4 and socppc. No objection from the usual (and over busy) suspects.
2014-10-27Remove the spilling code for IBAT register and set up the first IBAT registerMark Kettenis
to cover the first 8 MB of memory such that it covers kernel .text and not much else. This is a first step towards W^X in the kernel for machines with G4 and older processors. ok mpi@
2014-10-22make [bl]emtoh{16,32,64} take volatile const foo *, not volatile foo *David Gwynne
while in the manpage add volatile where the code has it too. ok miod@ guenther@
2014-10-10Make CPU_INFO_FOREACH useable before secondary CPUs are started.Martin Pieuchot
ok deraadt@, mlarkin@
2014-10-08Introduce ppc_mttb() and use it instead of rerolling the move to timeMartin Pieuchot
base dance in inline assembly in various places. tweak and ok miod@
2014-09-08Delete procfs; it's always had races and is now unused: no one noticed forPhilip Guenther
months that I broke it before the 5.5 release. confirmed as not being required by ports by sthen@, ajacoutot@, dcoppa@
2014-09-06Rename ci_iactive into ci_flags, this field now holds the going-to-Martin Pieuchot
sleep bit.
2014-09-06Rewrite cpu_idle & friends to not check and update the hid0 registerMartin Pieuchot
in the idle loop, in preparation for G5 support. Only do a disable/enable interrupt dance if the running CPU supports a sleep mode. Fix entering ddb(8) from interrupt context by not modifying the return address of the 'forced' trap frame. While here, modify the existing logic to terminate prefetching of all data streams if AltiVec is supported before setting the POW bit. With inputs/explanations from drahn, looks ok to miod@
2014-09-06Add functions to manipulate IBM PowerPC 970 specific registers thatMartin Pieuchot
will be used in upcoming MP and idle support. ok miod@
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-06-19Implement the membar(9) API for powerpc.Mark Kettenis
ok miod@, dlg@
2014-04-01Remove the almost unused abstraction around "struct firmware" and useMartin Pieuchot
instead a single function ppc_mem_regions() required by the ppc pmap. ok kettenis@
2014-03-29It's been a quarter century: we can assume volatile is present with that name.Philip Guenther
ok dlg@ mpi@ deraadt@
2014-03-25the memory constraints are correct, so we dont need volatile to provideDavid Gwynne
extra restrictions on ordering.
2014-03-19It's safe to assumed 'signed' existsPhilip Guenther
2014-03-16DDB supports ELF symbols are all archs, and it's always the same as thePhilip Guenther
native size, so eliminate the #defines. ok miod@
2014-03-14provide an MI api for doing byteswapping loads and stores. someDavid Gwynne
archs have instrutions that can do this, and the rest that dont get to use wrappers around the byteswap(3) api. this provides MI backends for sparc64 and powerpc which get a big benefit from this because byteswapping in registers is really hard for them. the intended use case is for reading and writing bits of dma memory handed to and from hardware. discussed with miod@ guenther@ deraadt@ ok miod@ kettenis@
2014-01-30Move declaration of struct vm_page_md from <machine/vmparam.h> toMiod Vallat
<machine/pmap.h> where it belongs, and compensate in <uvm/uvm_extern.h> by including <uvm/uvm_pmap.h> before <uvm/uvm_page.h>. Tested on all MACHINE_ARCH but amd64 and i386 (and hppa64).
2014-01-22To prevent lock ordering problems with the kernel lock, we need to make sureMark Kettenis
we block all interrupts that can grab the kernel lock. The simplest way to achieve this is to make sure mutexes always raise the ipl to the highest level that has interrupts that grab the kernel lock. This will allow us to have "mpsafe" interrupt handlers at lower priority levels. No change for non-MULTIPROCESSOR kernels. tested by mpi@, landry@ ok mpi@, dlg@
2013-12-18Provide MI symbol _STACKALIGNBYTESTheo de Raadt
2013-10-31Add a header for various hardware implementation dependent registerMartin Pieuchot
(HID) definitions, from FreeBSD with tweaks, instead of defining them in different places. ok kettenis@
2013-10-17remove capability to do a.outTheo de Raadt
2013-08-19Mark all the C functions called in real mode as non instrumented andMartin Pieuchot
remove the check for address relocation from MCOUNT_ENTER. This fix kernel profiling on powerpc architectures, broken since the buffers are per cpu. ok miod@
2013-08-07We uniformly define size_t to be unsigned long and ssize_t to be long. MakeMark Kettenis
sure that SIZE_MAX and SSIZE_MAX are defined as constants with a matching type on all are architectures. ok millert@, matthew@
2013-08-06The atomic_setbits_int() and atomic_clearbits_int() functions touch theMark Kettenis
condition code register so mark it s clobbered. Fixes uvm_page_physload() and who knows what else. ok jsg@, mpi@
2013-07-13unify register_t to long on all platformsTheo de Raadt
ok miod kettenis
2013-07-05Take II, this time without flubbing off_t: : move several internalPhilip Guenther
type definitions that are the same across all archs from <machine/_types.h> to <sys/_types.h> ok deraadt@ kettenis@ otto@
2013-07-04backout previous; off_t must be signed and there might be other C++ APIOtto Moerbeek
breakage lurking; ok kettenis@
2013-07-04To ease future changes, move several internal type definitions that arePhilip Guenther
the same across all archs from <machine/_types.h> to <sys/_types.h> ok deraadt@
2013-06-13ovbcopy begoneTheo de Raadt
2013-06-01cleanup and consolidate the spinlock_lock (what a name!) code.Ted Unangst
it's now atomic_lock to better reflect its usage, and librthread now features a new spinlock that's really a ticket lock. thrlseep can handle both types of lock via a flag in the clock arg. (temp back compat hack) remove some old stuff that's accumulated along the way and no longer used. some feedback from dlg, who is concerned with all things ticket lock. (you need to boot a new kernel before installing librthread)
2013-05-21remove unused cpu_lock code (where it is truly unused). it is notTed Unangst
part of the future we have planned. middling ok from a few
2013-05-17Add a dummy IPL_MPSAFE definition.Mark Kettenis
ok miod@, mikeb@
2013-03-28Add STRONG_ALIAS macros to be used from assembly code in libc andMartynas Venckus
libm. While at it, remove now unused workarounds for lint. Agreed by kettenis@, guenther@, matthew@.
2013-03-28Add __strong_alias macros for all architectures to be able to aliasMartynas Venckus
another symbol without weak attribute. To be used in libc and libm soon. Agreed by kettenis@, guenther@, matthew@.
2013-03-26PGSHIFT and PGOFSET are now contained inside the kernel namespace.Theo de Raadt
2013-03-25ALIGNBYTES/ALIGN/ALIGNED_POINTER can move to the MI file.Theo de Raadt
2013-03-23refactor sys/param.h and machine/param.h. A lot of #ifdef _KERNEL is addedTheo de Raadt
to keep definitions our of user space. The MD files now follow a consistant order -- all namespace intrusion is at the tail can be cleaned up independently. locore, bootblocks, and libkvm still see enough visibility to build. Checked on 90% of platforms...
2013-03-12Fix kernel profiling on MP systems by using per-CPU buffers and teachMartin Pieuchot
kgmon(8) to deal with them, this time without public header changes. Previously various CPUs were iterating over the same global buffer at the same time to modify it and never ended. This diff includes some ideas submited by Thor Simon to NetBSD via miod@. ok deraadt@, mikeb@, haesbaert@
2013-02-12Back out per-CPU kernel profiling, it shouldn't modify a public headerMartin Pieuchot
at this moment.
2013-02-11Fix kernel profiling on MP systems by using per-CPU buffer. PreviouslyMartin Pieuchot
various CPUs were iterating over the same global buffer at the same time to modify it and never ended. This diff includes some ideas submited by Thor Simon to NetBSD via miod@. ok mikeb@, haesbaert@
2013-02-09No longer define EXEC_SCRIPT (probably coming from old PefoBSD). Also,Miod Vallat
DB_ELFSIZE ought to be defined in <machine/db_machdep.h>, not <machine/exec.h>
2012-12-08Recognize PowerPC 970 CPUs present in early PowerMac G5 from 2003 (7,2 andMartin Pieuchot
7,3) and let OpenBSD boot on these machines, yay! The 970 are similar to the 970FX except that they are manufactured in 130nm. Fix an issue reported by Andrew Fresh and kirby@ on misc@
2012-12-02Determine whether we're currently on the alternative signal stackPhilip Guenthe
dynamically, by comparing the stack pointer against the altstack base and size, so that you get the correct answer if you longjmp out of the signal handler, as tested by regress/sys/kern/stackjmp/. Also, fix alt stack handling on vax, where it was completely broken. Testing and corrections by miod@, krw@, tobiasu@, pirofti@
2012-11-05unifdef -D __HAVE_TIMECOUNTERMiod Vallat
2012-09-11Remove the 'OLF method' used for the transition from a.out to ELF andTheo de Raadt
for all the compat layers which are now gone. Linux compat still works because it always used another method in any case, and nothing looks at p_os anymore. ok jsing
2012-08-30Add the possibility to map DMA memory non-cached, based on the i386/amd64Martin Pieuchot
implementation. For the moment only the BUS_DMA_NOCACHE macro is required to build drm on macppc but it will be used soon. ok kettenis@
2012-08-22Convert cpp | as rules in bsd.lib.mk and lib/libc/sys/Makefile.inc to pure ccPascal Stumpf
invocations. This allows us to use the compiler builtin define __PIC__ to check for PIC/PIEness rather than passing -DPIC. Simplifies PIE work a lot. ok matthew@, conceptually ok kurt@