Home | History | Annotate | Download | only in include
History log of /src/sys/arch/alpha/include/cpu.h
RevisionDateAuthorComments
 1.106  31-Mar-2024  thorpej Add machdep.rpb_type and machdep.rpb_variation sysctl nodes.
 1.105  22-Nov-2023  thorpej If not _KERNEL, include <stddef.h> to make sure we have offsetof().
 1.104  14-Aug-2021  ryo Improved the performance of kernel profiling on MULTIPROCESSOR, and possible to get profiling data for each CPU.

In the current implementation, locks are acquired at the entrance of the mcount
internal function, so the higher the number of cores, the more lock conflict
occurs, making profiling performance in a MULTIPROCESSOR environment unusable
and slow. Profiling buffers has been changed to be reserved for each CPU,
improving profiling performance in MP by several to several dozen times.

- Eliminated cpu_simple_lock in mcount internal function, using per-CPU buffers.
- Add ci_gmon member to struct cpu_info of each MP arch.
- Add kern.profiling.percpu node in sysctl tree.
- Add new -c <cpuid> option to kgmon(8) to specify the cpuid, like openbsd.
For compatibility, if the -c option is not specified, the entire system can be
operated as before, and the -p option will get the total profiling data for
all CPUs.
 1.103  22-Jul-2021  thorpej Various minor cleanups and bug fixes to the FP software completion code:
- Use __CTASSERT() instead of rolling our own compile-time assertion
using cpp.
- Use __BIT() &c instead of rolling our own.
- Improve some comments.
- Define a default FP_C and FPCR value that is self-consistent, and
initialize it properly at process creation time.
- Fix signal information when the trap shadow cannot be resolved.
- Use defined constants rather than magic numbers for the exception
summary bits.
- Add a machdep sysctl to enable FP software-completion debugging.
 1.102  26-Jun-2021  skrll Fix typo in comment
 1.101  20-Apr-2021  thorpej branches: 1.101.2;
Slight tweak to previous changes:

Rather than simply increment the interrupt depth for the clock interrupt,
we add 0x10. Why? Because while we only use a single Alpha IPL (4) for
IPL_{BIO,NET,TTY,VM}, technically the architecture specification suports
two in the OSF/1 PALcode (3 [low-pri] and 4 [high-pri]), meaning we could
conceiveably have intrdepth > 1 just for device interrupts.

Adding 0x10 here means that cpu_intr_p() can check for "intrdepth != 0" for
"in interrupt context" and CLKF_INTR() can check "(intrdepth & 0xf) != 0" for
"was processing interrupts when the clock interrupt happened".
 1.100  15-Apr-2021  rin Fix fallout from alpha/interrupt.c rev 1.93:

http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/arch/alpha/alpha/interrupt.c#rev1.93

by which interrupts *seem* to occupy 100% CPU time.

Now, we bump ci_intrdepth for clock interrupt. Therefore, if ci_intrdepth > 1
is observed in statclock(), CPU is actually occupied by interrupts.

Thanks jklos and thorpej for notice!
 1.99  15-Oct-2020  thorpej branches: 1.99.4;
Expose a bunch of CPU details, including implementation version and
architecture extensions, via sysctl:

hw.cpu0.model = 21264A-0 (EV67)
hw.cpu0.major = 11
hw.cpu0.minor = 0
hw.cpu0.implver = 2
hw.cpu0.amask = 0x1307
hw.cpu0.bwx = 1
hw.cpu0.fix = 1
hw.cpu0.cix = 1
hw.cpu0.mvi = 1
hw.cpu0.pat = 1
hw.cpu0.pmi = 1
hw.cpu0.vax_fp = 1
hw.cpu0.ieee_fp = 1
hw.cpu0.primary_eligible = 1
hw.cpu0.primary = 1
hw.cpu0.cpu_id = 0
hw.cpu0.pcc_freq = 239990688

as well as some potentially interesting system-level variables:

machdep.cctr = 0
machdep.is_qemu = 1

Should address the basic concern in PR port-alpha/15835.
 1.98  29-Sep-2020  thorpej Improve time keeping and host CPU usage when running in Qemu:
- clockattach(): Allow multiple calls when running in Qemu. Anything
after this first one is ignored, but this gives us a change to use
a clock source provided by the VM directly, rather than relying on
a more expensive hardware emulation.
- Add cpu_initclocks_secondary(), to handle clock setup on secondary
CPUs, if needed.
- Allow us to use the WTINT PALcode call in cpu_idle() to idle in a lower
power state (Qemu's PALcode supports this).
- Use the Qemu per-cpu set-alarm-rel call as the hardclock interrupt
source. In Qemu environments, reduce hz to 50 (rather than the
default 1024) to give the clock a snowball's chance when running on
a host system with hz=100. XXX We have to manually re-calculate
tick and tickadj. There should be MI code to do this for us. Also
in Qemu environments, let hardclock() drive the sched clock by setting
schedhz=0.
 1.97  25-Sep-2020  thorpej Changes to make interrupt {,dis}establish MP-safe on Alpha:
- Protect all of the system interrupt linkage with the cpu_lock mutex.
- Re-order some of the stores to the SCB vector table to make it safe
in the face of lockless interrupt dispatch.
- Add a framework for routing interrupts to specific CPUs. Interrupts
are still funneled only to the primary CPU, but that will change for
some systems soon. Ensure that interrupt handler lists are manipulated
only on the CPUs that handle that specific interrupt source. This required
a re-factor of the alpha_shared_intr_*() family of functions.
- Enable __HAVE_INTR_CONTROL, although interrupt redistribution is still
a no-op.
- Reduce code duplication in the Jenson direct-SCB interrupt handlers.
 1.96  16-Sep-2020  thorpej Implement fast soft interrupts for Alpha. It's not yet enabled, because
there is a bug lurking that causes problems when user space starts up,
so we'll stick with the slow path for now.
 1.95  05-Sep-2020  thorpej Track the SSIR per-cpu, rather than globally.
 1.94  04-Sep-2020  thorpej Put the MI cpu_data at the beginning of cpu_info so that it is
cache line aligned.
 1.93  04-Sep-2020  thorpej Use SysValue to store curlwp rather than curcpu. curlwp is acceessed
much more frequently, and this makes curlwp preemption-safe.
 1.92  04-Sep-2020  thorpej Shuffle fields in cpu_info for better cache behavior.
XXX More changes to come after curlwp is overhauled.
 1.91  03-Sep-2020  thorpej Garbage-collect fpcurlwp -- it has been obsolete since FPU tracking
was converted over to PCU.
 1.90  03-Sep-2020  thorpej Garabage-collect curpcb / cpu_info::ci_curpcb.
 1.89  29-Aug-2020  thorpej - Centralize per-CPU pmap initialization into a new pmap_init_cpu()
function. Call in from pmap_bootstrap() for the boot CPU, and
from cpu_hatch() for secondaary CPUs.
- Eliminiate the dedicated I-stream memory barrier IPI; handle it all from
the TLB shootdown IPI. Const poison, and add some additional memory
barriers and a TBIA to the PAUSE IPI.
- Completly rewrite TLB management in the alpha pmap module, borrowing
somoe ideas from the x86 pmap and adapting them to the alpha environment.
See the comments for theory of operation. Add a bunch of stats that
can be reported (disabled by default).
- Add some additional symbol decorations to improve cache behavior on
MP systems. Ensure coherency unit alignment for several structures
in the pmap module. Use hashed locks for pmap structures.
- Start out all new processes on the kernel page tables until their
first trip though pmap_activate() to avoid the potential of polluting
the current ASN in TLB with cross-process mappings.
 1.88  29-Aug-2020  thorpej - cpu_need_resched(): Explicitly cover each RESCHED_* case, and add a
comment explaining why we don't need to act on IDLE+REMOTE.
- cpu_signotify(): Move to machdep.c, and if we're asked to notify
an LWP running on another CPU, send an AST IPI to that CPU. Add some
assertions.
- cpu_need_proftick(): Move to machdep.c, add some assertions.
 1.87  17-Aug-2020  thorpej - Track the currently-activated pmap in struct cpu_info.
- Reserve some space in struct cpu_info for future pmap changes.
 1.86  01-Dec-2019  ad Fix false sharing problems with cpu_info. Identified with tprof(8).
This was a very nice win in my tests on a 48 CPU box.

- Reorganise cpu_data slightly according to usage.
- Put cpu_onproc into struct cpu_info alongside ci_curlwp (now is ci_onproc).
- On x86, put some items in their own cache lines according to usage, like
the IPI bitmask and ci_want_resched.
 1.85  24-Nov-2019  ad Make ci_want_resched a u_int.
 1.84  22-Aug-2018  msaitoh - Cleanup for dynamic sysctl:
- Remove unused *_NAMES macros for sysctl.
- Remove unused *_MAXID for sysctls.
- Move CTL_MACHDEP sysctl definitions for m68k into m68k/include/cpu.h and
use them on all m68k machines.
 1.83  17-Dec-2016  flxd branches: 1.83.14; 1.83.16;
Fix typo "one the" and architecture where appropriate.
 1.82  22-Jan-2014  christos branches: 1.82.6; 1.82.10;
undo rump workaround
 1.81  21-Jan-2014  christos rumpkernel needs ci_pcc_freq
 1.80  10-Nov-2013  christos use __unused instead of __USE and void cast to mark iterator variable unused
where needed (from phone)
 1.79  03-Nov-2013  christos use __USE() in the iterator variable
 1.78  21-Jan-2012  matt branches: 1.78.6; 1.78.10;
cpu_uarea_free returns bool, not void
 1.77  14-Jun-2011  matt branches: 1.77.2; 1.77.6;
Add latent support for __HAVE_CPU_UAREA_ROUTINES
 1.76  08-Feb-2011  rmind branches: 1.76.2;
Remove clause 3 (UCB advertising clause) from the University of Utah
copyright. Confirmed by Mike Hibler, mike at cs.utah.edu - thanks!
Also, merge UCB and Utah copyright texts back into one, as they
originally were.

Extra verification by snj@.
 1.75  26-Dec-2010  he branches: 1.75.2; 1.75.4;
Since struct cpu_data isn't the first member in struct cpu_info, instead
expose the initial portion of struct cpu_info if _KMEMUSER is defined.
 1.74  28-Apr-2008  martin branches: 1.74.22;
Remove clause 3 and 4 from TNF licenses
 1.73  27-Feb-2008  xtraeme branches: 1.73.2; 1.73.4;
Remove CTL_MACHDEP_NAMES, it's not used anywhere.

Ok by martin@.
 1.72  17-Oct-2007  garbled branches: 1.72.12; 1.72.16;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.71  21-Jul-2007  tsutsui branches: 1.71.6;
Add MI todr(9) support and timercounter(9) support with kern_cctr.c to alpha:
- use todr(9) API with MI mc146818(4) driver and remove homegrown
todr stuff from MD alpha/clock.c and alpha/mcclock.c
- also remove obsolete cc_microtime stuff from MD code
- add ci_pcc_freq member in struct cpu_info for cpu_frequency(), and
calibrate it with mc146818 interval clock in mcclock attachment
- call cc_init() in cpu_initclocks(9) because all alpha cpus have
a pcc counter

Tested on DEC 3000/300 and AlphaPC 164, but not on any SMP machines yet.
 1.70  19-May-2007  mhitch branches: 1.70.2; 1.70.4;
Fix multiprocessor operation: move a couple of fields in struct cpu_info
to the beginning so they can still be accessed in assymbly code using 8 bit
offsets. The addition of a big structure in cpu_data moved these outside
the range of the addq instruction. Gas should have complained that the
immediate value was too large, but just silently truncated it. I can now
run multiprocessor again.
 1.69  18-May-2007  mhitch Fix alpha MP for idlelwp: ci_idle_lwp was added to cpu_info
structure, but never initialized. There's already a cpu_idlelwp
in ci_data, which appears to be the same thing, so use that instead.
 1.68  17-May-2007  yamt merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.
 1.67  16-Feb-2007  ad branches: 1.67.2; 1.67.6; 1.67.8; 1.67.12; 1.67.14;
Remove spllowersoftclock() and CLKF_BASEPRI(), and always dispatch callouts
via a soft interrupt. In the near future, softclock will be run from process
context.
 1.66  09-Feb-2007  ad Merge newlock2 to head.
 1.65  24-Dec-2005  perry branches: 1.65.20;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.64  11-Dec-2005  christos merge ktrace-lwp.
 1.63  22-Sep-2004  yamt branches: 1.63.12;
move some per-cpu data definitions to MI place so that they can be modified
without touching all ports. discussed on tech-kern@.
 1.62  04-Jan-2004  jdolecek Rearrange process exit path to avoid need to free resources from different
process context ('reaper').

From within the exiting process context:
* deactivate pmap and free vmspace while we can still block
* introduce MD cpu_lwp_free() - this cleans all MD-specific context (such
as FPU state), and is the last potentially blocking operation;
all of cpu_wait(), and most of cpu_exit(), is now folded into cpu_lwp_free()
* process is now immediatelly marked as zombie and made available for pickup
by parent; the remaining last lwp continues the exit as fully detached
* MI (rather than MD) code bumps uvmexp.swtch, cpu_exit() is now same
for both 'process' and 'lwp' exit

uvm_lwp_exit() is modified to never block; the u-area memory is now
always just linked to the list of available u-areas. Introduce (blocking)
uvm_uarea_drain(), which is called to release the excessive u-area memory;
this is called by parent within wait4(), or by pagedaemon on memory shortage.
uvm_uarea_free() is now private function within uvm_glue.c.

MD process/lwp exit code now always calls lwp_exit2() immediatelly after
switching away from the exiting lwp.

g/c now unneeded routines and variables, including the reaper kernel thread
 1.61  07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.60  05-Feb-2003  nakayama branches: 1.60.2;
Share alpha/microtime.c with i386 and sparc64 as kern_microtime.c.
(approved by martin)
 1.59  17-Jan-2003  thorpej Merge the nathanw_sa branch.
 1.58  30-May-2001  mrg branches: 1.58.4;
use _KERNEL_OPT
 1.57  27-May-2001  sommerfeld Assorted microtime fixes (similar to fixes I made yesterday when
porting this code to i386mp branch):

- call microset() early on each cpu so that calls to microtime()
before the first clock interrupt don't return trash. this manifested
itself as garbage runtimes in "ps" for kernel threads.
- avoid races between hardclock updating "time" and microset on a
different cpu reading it by adding a "microset_time" global which is
initialized from "time" on the primary cpu.
- call microset every hz ticks, not every hz+1 (cosmetic)
 1.56  28-Apr-2001  thorpej Add a microtime() implementation that interpolates between ticks
using the cycle counter. MP-safeness is achieved by giving each
CPU its own PCC frequency variables, and kicking the non-primary
processors via an IPI once per second.

Based on the sample code from David Mills' "A Kernel Model for
Precision Timekeeping".
 1.55  26-Apr-2001  ross o IEEE 754 floating-point completion code.
o Implement the architected FP_C "Floating Point Control Quadword"
 1.54  21-Apr-2001  thorpej Adjust the way the cpu_info[] array works (array of pointers
rather than array of structures). Keep a list of active
CPUs and define a CPU_INFO_FOREACH to traverse them.

This fixes cpustates statistics tracking.
 1.53  20-Apr-2001  thorpej Eliminate race conditions in the FP-switch code. MP kernels get
much further on the way to multi-user now.
 1.52  27-Feb-2001  mjacob branches: 1.52.2;
revert previous commit while the longbeards ponder
 1.51  27-Feb-2001  mjacob Remove cpu_wait #define because it's now prototyped in <sys/proc.h> which
means it has to really exist.
 1.50  19-Jan-2001  thorpej Make ASTs per-process.
 1.49  13-Dec-2000  mycroft Oops; add PROC_PC().
 1.48  22-Nov-2000  thorpej Several changes, which get us generally further along with
multiprocessor support:
- Implement MP-safe halt.
- Make the FPU saving code more like Bill's on the i386 MP branch.
XXX This code will no doubt be revisited again.
- Pass the cpu_info and trapframe to IPI handlers, saving some work
in the handlers themselves, and also making it possible for the
"pause" handler to reference register state for DDB.
- Add "machine cpu" to DDB, making it possible to reference other
CPUs registers (and thus get e.g. a traceback) from whichever
CPU is actually running the debugger.
- Garbage-collect "machine halt" and "machine reboot" DDB commands.
They don't have a prayer of working properly in multiprocessor
kernels, and didn't really work all that well in uniprocessor kernels.
 1.47  20-Nov-2000  thorpej Make ci_ipis volatile.
 1.46  25-Aug-2000  thorpej Make need_resched() take a "struct cpu_info *" argument. This
causes gives a primitive form of processor affinity. Its use in
roundrobin() still needs some work.
 1.45  21-Aug-2000  thorpej Add experimental code for pausing other CPUs upon a CPU's
entry into the debugger. While I'm here, add splsched()
as per spl(9).
 1.44  08-Jun-2000  thorpej And more ANSI'ification!
 1.43  05-Jun-2000  thorpej Switch to the new `evcnt' mechanism for counting interrupts. Maintain
a per-CPU interrupt counter for clock, device, and interprocessor
interrupts.
 1.42  04-Jun-2000  thorpej Increment an interrupt depth counter in non-clock interrupt cases
so that we can get time spent in interrupt statistics.
 1.41  03-Jun-2000  thorpej - Clean up clock interrupt code a bit, and provide a CPU_IS_PRIMARY()
macro in the MULTIPROCESSOR case (hardclock() wants it).
- Implement __GENERIC_SOFT_INTERRUPTS, and redefine the legacy
software interrupts in terms of it. Garbage-collect setsoftserial().
 1.40  31-May-2000  thorpej - In the MULTIPROCESSOR case, initialize p_cpu before a process is
marked SONPROC.
- Always make curproc, fpcurproc, astpending, and want_resched per-CPU
variables in struct cpu_info. Restructure code accordingly, and trim
a few instructions from a few spots in various places in locore.
 1.39  26-May-2000  thorpej branches: 1.39.2;
First sweep at scheduler state cleanup. Collect MI scheduler
state into global and per-CPU scheduler state:

- Global state: sched_qs (run queues), sched_whichqs (bitmap
of non-empty run queues), sched_slpque (sleep queues).
NOTE: These may collectively move into a struct schedstate
at some point in the future.

- Per-CPU state, struct schedstate_percpu: spc_runtime
(time process on this CPU started running), spc_flags
(replaces struct proc's p_schedflags), and
spc_curpriority (usrpri of processes on this CPU).

- Every platform must now supply a struct cpu_info and
a curcpu() macro. Simplify existing cpu_info declarations
where appropriate.

- All references to per-CPU scheduler state now made through
curcpu(). NOTE: this will likely be adjusted in the future
after further changes to struct proc are made.

Tested on i386 and Alpha. Changes are mostly mechanical, but apologies
in advance if it doesn't compile on a particular platform.
 1.38  03-Apr-2000  thorpej Print any architecture extensions present on the primary CPU.
 1.37  29-Feb-2000  thorpej Put machine check info in cpu_info in the multiprocessor case, and
just have one statically allocate machine check info structure in the
single processor config case.
 1.36  16-Dec-1999  thorpej - Remove a misguided attempt to use procs as idle contexts for secondary
processors. Instead, allocate separate idle PCBs for them (including
the primary -- don't use proc0's for its idle context).
- Use SysValue to store the cpu_info for each processor.
 1.35  17-Sep-1999  thorpej branches: 1.35.2; 1.35.8;
Centralize the declaration and clearing of `cold'.
 1.34  16-Aug-1999  thorpej Pull in <machine/alpha_cpu.h>.
 1.33  15-Aug-1999  thorpej Protect userland from the vast majority of this file.
 1.32  10-Aug-1999  thorpej Move cpu_info and related info into <machine/cpu.h>, and implement the
other MP API components discussed on tech-smp.
 1.31  10-Aug-1999  thorpej Define cpu_number() as discussed on tech-smp.
 1.30  19-Nov-1998  ross Rip out 70 lines of (all of) the port-alpha-specific decls and prototypes.
They should not be visible to the MI kernel and the MI kernel shouldn't
depend on this junk. Most of it moves to new module <machine/alpha.h>.

Leave badaddr() here, though, because it's used so widely.
 1.29  11-Nov-1998  thorpej Changes to support fork_kthread():
- cpu_set_kpc() now takes void *arg third argument, passed to the
entry point.
- cpu_fork() allows parent to be non-curproc iff parent is proc0.
When forking non-curproc, assume its state has already been saved.
- Adjust various pieces of machine-dependent code to account of all of this.
 1.28  07-Oct-1998  thorpej Oops, back out a buglet I didn't intend to commit in the last change.
 1.27  06-Oct-1998  thorpej configure() prototype is in <sys/device.h>
 1.26  29-Sep-1998  thorpej Prototype cpu_halt_secondary().
 1.25  24-Sep-1998  thorpej First-cut at code to spin up secondary processors on a multiprocessor
Alpha system, conditional on MULTIPROCESSOR.

NOTE: This does not yet work completely. The secondary CPU begins the
boot process, but never makes it into the cpu spinup trampoline. This
is merely a snapshot of a work-in-progress.
 1.24  13-Jul-1998  ross Kill the old extern mchkinfo pointer and prototype cpu_mchkinfo().
This file has been collecting prototypes and other things used in the MD
code...that's bad...because this is exported to the MI kernel.
 1.23  08-Jul-1998  mjacob stale beer- place structure in right file
 1.22  08-Jul-1998  mjacob Add machine check type definitions. Structure the expected/received
machine check items.
 1.21  16-Feb-1998  thorpej Add support for non-contiguous physical memory, using MACHINE_NEW_NONCONTIG.
These changes also recover memory that is located before the kernel in
the first system software segment on systems which do not use the PROM
for console I/O. Written by Chris Demetriou and myself.
 1.20  13-Feb-1998  cgd Clean up kernel initialization. Use the bootinfo structure (or innate
knowledge) earlier, and gather all information needed earlier. Mark the
init code carefully re: when it can print stuff out, when it can expect
the firmware to stop working, etc. Be more careful about using the PROM
console and other PROM facilities, and hint that in the future all use
of firmware/boot program callbacks by the kernel should go away (since
the world may not be mapped the way the firmware/boot program wants!).
 1.19  12-Feb-1998  cgd clean up the way bootinfo information is passed and used: move the version
number passed by the boot block into a register, change the kernel's
bootinfo handing so that it always uses bootinfo to get bootinfo-ish values
(filling them in if the boot blocks didn't pass them), and make versioning
a small bit more sane.
 1.18  23-Sep-1997  mjacob Redo the platform specific identification and initialization, making
it more explicit where platform specific functions (like machine check
handling) should go.
 1.17  25-Jul-1997  thorpej branches: 1.17.2;
Update alpha_init() prototype; takes two more args.
 1.16  06-Apr-1997  cgd clean up NetBSD RCS ID strings
 1.15  24-Jan-1997  cgd astpending and want_resched are kernel-only
 1.14  07-Dec-1996  cgd add a "machdep.booted_kernel" sysctl, which is the name of the booted
kernel as supplied by the SRM console's BOOTED_FILE variable.
 1.13  13-Nov-1996  cgd branches: 1.13.2;
compile cleanly with:
-Werror -Wall -Wstrict-prototypes -Wmissing-prototypes -Wcast-qual
 1.12  14-Jul-1996  cgd (1) Add unaligned access fixup code to fix unaligned quad, long,
and IEEE S and T floating datum loads and stores. VAX floating data
types not yet supported, and in the future will only be supported if
FIX_UNALIGNED_VAX_FP is defined. (No point in wasting the space when
most of the time there will never be VAX FP loads and stores.) Right
now, these features can be controlled only by sysctl. The (boolean)
integer sysctls machdep.unaligned_print, machdep.unaligned_fix, and
machdep.unaligned_sigbus control printing about unaligned accesses
(defaults on), fixing up of unaligned accesses (defaults on), and
forcing a SIGBUS on unaligned accesses (defaults off). If an access
is not fixed up (for lack of method or explicit decision), a SIGBUS is
always generated to keep programs from using bogus data. At some point,
these three choices should be controlled by per-process flags, as well.
 1.11  11-Jul-1996  cgd Instead of treating the trap/syscall/exception frame like a struct
containing a substruct (the hardware frame) and an array of registers,
treat it like one big array of registers, for easier and prettier
access. Update everything to deal with that.
 1.10  11-Jul-1996  cgd update to use new definitions in alpha_cpu.h
 1.9  09-Jul-1996  cgd various cleanup, move setsoft* and spl* into intr.h.
 1.8  14-Jun-1996  cgd add a new machine-dependent sysctl, machdep.root_device, which is the
(string) name of the root device. It's a string so that it can
be used before dev_mkdb has been run.
 1.7  21-Dec-1995  mycroft branches: 1.7.4;
Remove deprecated cpu_setstack().
 1.6  28-Jun-1995  cgd remove unused cpu_exec() definitions. moved "broken swap" markers, for
ports that still need it, to types.h.
 1.5  28-Jun-1995  cgd update for various (old) NetBSD changes
 1.4  05-May-1995  cgd define BROKEN_SWAP and/or cpu_swapout as appropriate.
 1.3  22-Apr-1995  christos - added sunos_machdep.c for sun3, atari, amiga and mac68k.
- changed machdep.c and trap.c to use struct emul.
- remove ep_setup references.
- added struct emul to all emulations.
 1.2  24-Mar-1995  cgd remove support for double-mapping the user area/kernel stack
 1.1  13-Feb-1995  cgd preliminary Alpha support. note that NOT ALL OF THE MODIFICATIONS TO
THE REST OF THE KERNEL ARE IN THE TREE YET. Also, some of this is
_incredibly_ hack-ish, etc., but it works.
 1.7.4.1  14-Jun-1996  cgd pull up from trunk:
>add a new machine-dependent sysctl, machdep.root_device, which is the
>(string) name of the root device. It's a string so that it can
>be used before dev_mkdb has been run.
 1.13.2.4  12-Aug-1997  cgd sync with -current as of August 11, 1997
 1.13.2.3  01-Jun-1997  cgd sync the nwscons branch up with yesterday's version of the trunk.
Lots of conflicts/changes because of the RCS Id format changes.
Also, a few cleanups and corrections.
 1.13.2.2  24-Jan-1997  cgd sync with trunk
 1.13.2.1  07-Dec-1996  cgd mostly sync with changes on the trunk
 1.17.2.1  29-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.35.8.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.35.2.7  23-Apr-2001  bouyer Sync with HEAD.
 1.35.2.6  11-Feb-2001  bouyer Sync with HEAD.
 1.35.2.5  13-Dec-2000  bouyer Sync with HEAD (for UBC fixes).
 1.35.2.4  13-Dec-2000  bouyer Sync with HEAD (for UBC fixes)
 1.35.2.3  08-Dec-2000  bouyer Sync with HEAD.
 1.35.2.2  22-Nov-2000  bouyer Sync with HEAD.
 1.35.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.39.2.1  22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.52.2.1  21-Jun-2001  nathanw Catch up to -current.
 1.58.4.4  24-Jun-2002  nathanw Curproc->curlwp renaming.

Change uses of "curproc->l_proc" back to "curproc", which is more like the
original use. Bare uses of "curproc" are now "curlwp".

"curproc" is now #defined in proc.h as ((curlwp) ? (curlwp)->l_proc) : NULL)
so that it is always safe to reference curproc (*de*referencing curproc
is another story, but that's always been true).
 1.58.4.3  08-Dec-2001  thorpej Add a cpu_proc_fork(), called from uvm_proc_fork(), which takes care
of machine-dependent handling a fork() time (this is different from
forking the actual context in an LWP world). #define it away on
platforms which do not need it.

Problem noted by Gregory McGarry.
 1.58.4.2  30-Aug-2001  nathanw First cut at LWP and SA support on the alpha.
Doesn't break in ordinary multiuser mode; LWPs and SAs not yet tested.
 1.58.4.1  30-May-2001  nathanw file cpu.h was added on branch nathanw_sa on 2001-08-30 23:43:43 +0000
 1.60.2.4  24-Sep-2004  skrll Sync with HEAD.
 1.60.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.60.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.60.2.1  03-Aug-2004  skrll Sync with HEAD
 1.63.12.4  17-Mar-2008  yamt sync with head.
 1.63.12.3  03-Sep-2007  yamt sync with head.
 1.63.12.2  26-Feb-2007  yamt sync with head.
 1.63.12.1  21-Jun-2006  yamt sync with head.
 1.65.20.1  11-Jan-2007  ad Checkpoint work in progress.
 1.67.14.2  03-Oct-2007  garbled Sync with HEAD
 1.67.14.1  22-May-2007  matt Update to HEAD.
 1.67.12.1  18-Apr-2007  thorpej Convert to the new atomic op API.
 1.67.8.1  11-Jul-2007  mjf Sync with head.
 1.67.6.2  20-Aug-2007  ad Sync with HEAD.
 1.67.6.1  27-May-2007  ad Sync with head.
 1.67.2.1  20-Mar-2007  yamt adapt alpha.
 1.70.4.1  15-Aug-2007  skrll Sync with HEAD.
 1.70.2.1  07-Aug-2007  matt Sync with HEAD.
 1.71.6.2  23-Mar-2008  matt sync with HEAD
 1.71.6.1  06-Nov-2007  matt sync with HEAD
 1.72.16.2  02-Jun-2008  mjf Sync with HEAD.
 1.72.16.1  03-Apr-2008  mjf Sync with HEAD.
 1.72.12.1  24-Mar-2008  keiichi sync with head.
 1.73.4.1  16-May-2008  yamt sync with head.
 1.73.2.1  18-May-2008  yamt sync with head.
 1.74.22.1  05-Mar-2011  rmind sync with head
 1.75.4.1  17-Feb-2011  bouyer Sync with HEAD
 1.75.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.76.2.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.77.6.1  18-Feb-2012  mrg merge to -current.
 1.77.2.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.77.2.1  17-Apr-2012  yamt sync with head
 1.78.10.1  18-May-2014  rmind sync with head
 1.78.6.2  03-Dec-2017  jdolecek update from HEAD
 1.78.6.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.82.10.1  07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.82.6.1  05-Feb-2017  skrll Sync with HEAD
 1.83.16.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.83.16.1  10-Jun-2019  christos Sync with HEAD
 1.83.14.1  06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.99.4.1  17-Apr-2021  thorpej Sync with HEAD.
 1.101.2.1  01-Aug-2021  thorpej Sync with HEAD.

RSS XML Feed