History log of /openbsd-current/sys/arch/hppa/dev/cpu.c
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.47 24-Oct-2023 claudio

Normally context switches happen in mi_switch() but there are 3 cases
where a switch happens outside. Cleanup these code paths and make the
machine independent.

- when a process forks (fork, tfork, kthread), the new proc needs to
somehow be scheduled for the first time. This is done by proc_trampoline.
Since proc_trampoline is machine dependent assembler code change
the MP specific proc_trampoline_mp() to proc_trampoline_mi() and make
sure it is now always called.
- cpu_hatch: when booting APs the code needs to jump to the first proc
running on that CPU. This should be the idle thread for that CPU.
- sched_exit: when a proc exits it needs to switch away from itself and
then instruct the reaper to clean up the rest. This is done by switching
to the idle loop.

Since the last two cases require a context switch to the idle proc factor
out the common code to sched_toidle() and use it in those places.

Tested by many on all archs.
OK miod@ mpi@ cheloha@


Revision tags: OPENBSD_7_4_BASE
# 1.46 29-Aug-2023 claudio

Remove p_rtime from struct proc and replace it by passing the timespec
as argument to the tuagg_locked function.

- Remove incorrect use of p_rtime in other parts of the tree. p_rtime was
almost always 0 so including it in any sum did not alter the result.
- In main() the update of time can be further simplified since at that time
only the primary cpu is running.
- Add missing nanouptime() call in cpu_hatch() for hppa
- Rename tuagg_unlocked to tuagg_locked like it is done in the rest of
the tree.

OK cheloha@ dlg@


# 1.45 15-Jun-2023 cheloha

all platforms, main(): call clockqueue_init() just before sched_init_cpu()

Move the clockqueue_init() call out of clockintr_cpu_init() and up
just before the sched_init_cpu() call for a given CPU.

This will allow sched_init_cpu() to allocate clockintr handles for a
given CPU's scheduler in a later patch.

Link: https://marc.info/?l=openbsd-tech&m=168661507607622&w=2

ok kettenis@, claudio@


Revision tags: OPENBSD_7_3_BASE
# 1.44 06-Dec-2022 cheloha

hppa: switch to clockintr

- Remove hppa-specific clock interrupt scheduling bits from cpu_info.
- Rename cpu_hardclock() to itmr_intr(); it doesn't exclusively run
hardclock(9) anymore.
- Wire up itmr_intrclock.

hppa now has a randomized statclock(), stathz = hz.

Patch help, testing, and review from kettenis@ (B2000) and miod@ (C3650).
MP testing from guenther@ (dual-core J6700).

ok mlarkin@ kettenis@, "Ship it?" guenther@


Revision tags: OPENBSD_7_1_BASE OPENBSD_7_2_BASE
# 1.43 13-Mar-2022 mpi

Constify struct cfattach.

ok miod@


Revision tags: OPENBSD_6_8_BASE OPENBSD_6_9_BASE OPENBSD_7_0_BASE
# 1.42 29-May-2020 deraadt

dev/rndvar.h no longer has statistical interfaces (removed during various
conversion steps). it only contains kernel prototypes for 4 interfaces,
all of which legitimately belong in sys/systm.h, which are already included
by all enqueue_randomness() users.


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE
# 1.41 19-Jan-2014 deraadt

Initialize ci_randseed better using arc4random() + a trick. Remove the
libkern srandom() API since it is not suitable for this use.
ok kettenis miod


# 1.40 26-Nov-2013 deraadt

1 << 31 cleanup. Eitan Adler pointed out that there has been a
resurrection of the bad idiom in the tree.
sufficient review by miod, kettenis, tedu


Revision tags: OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE OPENBSD_5_4_BASE
# 1.39 02-Jan-2011 kettenis

Make need_resched() call cpu_unidle() such that we wake up a process running on
another CPU.

ok miod@


# 1.38 30-Dec-2010 jsing

Implement cpu_unidle() for MP kernels.

ok kettenis@


Revision tags: OPENBSD_4_8_BASE
# 1.37 26-Jun-2010 jsing

Allow processes to be scheduled onto secondary CPUs.

ok kettenis@


# 1.36 03-Jun-2010 jsing

Rename ci_spinup_stack to ci_stack and use it as the stack for both CPU
spin up and FPU emulation. Since all CPUs need a stack for FPU emulation,
move the allocation code to cpuattach().

ok kettenis@


# 1.35 21-May-2010 jsing

Add support for IPIs on hppa.

ok kettenis@


# 1.34 19-May-2010 jsing

Spin up secondary CPUs on hppa multiprocessor kernels. At this stage we
enable clock interrupts, however do not allow processes to be scheduled
onto the secondary CPUs - hopefully we can change this shortly...

ok kettenis@


# 1.33 06-May-2010 jsing

Ansify functions and use "clock" rather than the CPU name for clock
interrupts.

ok kettenis@


# 1.32 01-Apr-2010 jsing

Allow for multiple CPUs by moving to an array of cpu_info.

ok kettenis@


# 1.31 28-Mar-2010 jsing

Allow a multiprocessor kernel to compile.

ok kettenis@


Revision tags: OPENBSD_4_7_BASE
# 1.30 29-Dec-2009 jsing

Move hppa to a "cpu0 at mainbus0" configuration, rather than knocking CPUs
out in the cpu match function. Whilst here also hardwire the clock to IRQ
31, thus preventing one from building a kernel without hardclock.

ok kettenis@ miod@


Revision tags: OPENBSD_4_5_BASE OPENBSD_4_6_BASE
# 1.29 08-Feb-2009 miod

Make sure than cpu_hardclock() never sets a ``next interrupt value'' which has
already been hit by the running timer; this happens very often on oosiop-based
machines, due to these machines being among the slowest hppa, and oosiop
being interrupt greedy. Unfortunately, when this happened, one had to wait
for the timer to wrap, which would take up to 128 seconds on the 33MHz
machines.

Also, invoke hardclock() as many times as necessary if it turns out that
we had to delay the interrupt 1/hz seconds to avoid the aforementioned
wrap problem.

With help from kettenis@; ok kettenis@


Revision tags: OPENBSD_3_7_BASE OPENBSD_3_8_BASE OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE OPENBSD_4_2_BASE OPENBSD_4_3_BASE OPENBSD_4_4_BASE
# 1.28 28-Dec-2004 mickey

fix new line in dmesg print on 8k cpus


# 1.27 26-Oct-2004 mickey

simplify cache print a bit


# 1.26 14-Sep-2004 mickey

store fpu version for later use. make sure to proper store/clear fpu state in fork/exec/exit/sendsig


# 1.25 14-Sep-2004 mickey

do not print anything about btlb if there is none


Revision tags: OPENBSD_3_6_BASE SMP_SYNC_A SMP_SYNC_B
# 1.24 07-Apr-2004 mickey

update copyright; miod@ is fine w/ files where he holds it too


Revision tags: OPENBSD_3_4_BASE OPENBSD_3_5_BASE
# 1.23 22-Aug-2003 mickey

rework cpu identification


# 1.22 07-Aug-2003 mickey

make all intr_establish take the same last arg for name


Revision tags: UBC_SYNC_A
# 1.21 29-Mar-2003 mickey

fix fpu printout and remove dead code piece


Revision tags: OPENBSD_3_3_BASE
# 1.20 08-Dec-2002 mickey

duh, provide a wrapper on the hardclock() since it's void


# 1.19 27-Nov-2002 mickey

no wrapper arounf hardclock(), use CPU_CLOCKUPDATE, real microtime; miod ok


Revision tags: OPENBSD_3_2_BASE UBC_SYNC_B
# 1.18 23-May-2002 mickey

fetch fpu id per the book (even it works otherwise), also, hppa_mod_info() always returns some string; idea by fredette@


# 1.17 08-May-2002 mickey

print parisc level w/ the the parisc version, not for each cpu


Revision tags: OPENBSD_3_1_BASE
# 1.16 26-Mar-2002 mickey

need to mask out the upper part for the fpu version on print


# 1.15 21-Mar-2002 mickey

better cache mode print


# 1.14 19-Mar-2002 mickey

no need for reg.h in the frame.h


# 1.13 14-Mar-2002 millert

First round of __P removal in sys


# 1.12 06-Mar-2002 mickey

no need to mask


# 1.11 06-Mar-2002 mickey

expand fpu name, makes line overflow a bit, maybe deal w/ it later


# 1.10 05-Mar-2002 mickey

rearrange stuff, chat about cache


# 1.9 11-Feb-2002 mickey

disable fpu on csw, print fpu version on cpu line, if present


Revision tags: OPENBSD_2_8_BASE OPENBSD_2_9_BASE OPENBSD_3_0_BASE UBC_BASE
# 1.8 15-Aug-2000 mickey

branches: 1.8.8;
print cpu revision and type


# 1.7 03-Jul-2000 mickey

add luseless comment


Revision tags: OPENBSD_2_7_BASE SMP_BASE kame_19991208
# 1.6 26-Nov-1999 mickey

branches: 1.6.2;
shorter text, so it fits in 80 columns


Revision tags: OPENBSD_2_6_BASE
# 1.5 16-Aug-1999 mickey

evcnt count the interrupts, also optimize diagnostic printing


# 1.4 14-Aug-1999 mickey

next try to print cpu model number.
attach clock interrupt.


# 1.3 20-Apr-1999 mickey

print cpu ID (type) if available


Revision tags: OPENBSD_2_5_BASE
# 1.2 17-Feb-1999 mickey

better cpu capabilities printing.
print cpu PA level
move cpu_gethpa() to mainbus.c


# 1.1 29-Dec-1998 mickey

some cpu


# 1.46 29-Aug-2023 claudio

Remove p_rtime from struct proc and replace it by passing the timespec
as argument to the tuagg_locked function.

- Remove incorrect use of p_rtime in other parts of the tree. p_rtime was
almost always 0 so including it in any sum did not alter the result.
- In main() the update of time can be further simplified since at that time
only the primary cpu is running.
- Add missing nanouptime() call in cpu_hatch() for hppa
- Rename tuagg_unlocked to tuagg_locked like it is done in the rest of
the tree.

OK cheloha@ dlg@


# 1.45 15-Jun-2023 cheloha

all platforms, main(): call clockqueue_init() just before sched_init_cpu()

Move the clockqueue_init() call out of clockintr_cpu_init() and up
just before the sched_init_cpu() call for a given CPU.

This will allow sched_init_cpu() to allocate clockintr handles for a
given CPU's scheduler in a later patch.

Link: https://marc.info/?l=openbsd-tech&m=168661507607622&w=2

ok kettenis@, claudio@


Revision tags: OPENBSD_7_3_BASE
# 1.44 06-Dec-2022 cheloha

hppa: switch to clockintr

- Remove hppa-specific clock interrupt scheduling bits from cpu_info.
- Rename cpu_hardclock() to itmr_intr(); it doesn't exclusively run
hardclock(9) anymore.
- Wire up itmr_intrclock.

hppa now has a randomized statclock(), stathz = hz.

Patch help, testing, and review from kettenis@ (B2000) and miod@ (C3650).
MP testing from guenther@ (dual-core J6700).

ok mlarkin@ kettenis@, "Ship it?" guenther@


Revision tags: OPENBSD_7_1_BASE OPENBSD_7_2_BASE
# 1.43 13-Mar-2022 mpi

Constify struct cfattach.

ok miod@


Revision tags: OPENBSD_6_8_BASE OPENBSD_6_9_BASE OPENBSD_7_0_BASE
# 1.42 29-May-2020 deraadt

dev/rndvar.h no longer has statistical interfaces (removed during various
conversion steps). it only contains kernel prototypes for 4 interfaces,
all of which legitimately belong in sys/systm.h, which are already included
by all enqueue_randomness() users.


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE
# 1.41 19-Jan-2014 deraadt

Initialize ci_randseed better using arc4random() + a trick. Remove the
libkern srandom() API since it is not suitable for this use.
ok kettenis miod


# 1.40 26-Nov-2013 deraadt

1 << 31 cleanup. Eitan Adler pointed out that there has been a
resurrection of the bad idiom in the tree.
sufficient review by miod, kettenis, tedu


Revision tags: OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE OPENBSD_5_4_BASE
# 1.39 02-Jan-2011 kettenis

Make need_resched() call cpu_unidle() such that we wake up a process running on
another CPU.

ok miod@


# 1.38 30-Dec-2010 jsing

Implement cpu_unidle() for MP kernels.

ok kettenis@


Revision tags: OPENBSD_4_8_BASE
# 1.37 26-Jun-2010 jsing

Allow processes to be scheduled onto secondary CPUs.

ok kettenis@


# 1.36 03-Jun-2010 jsing

Rename ci_spinup_stack to ci_stack and use it as the stack for both CPU
spin up and FPU emulation. Since all CPUs need a stack for FPU emulation,
move the allocation code to cpuattach().

ok kettenis@


# 1.35 21-May-2010 jsing

Add support for IPIs on hppa.

ok kettenis@


# 1.34 19-May-2010 jsing

Spin up secondary CPUs on hppa multiprocessor kernels. At this stage we
enable clock interrupts, however do not allow processes to be scheduled
onto the secondary CPUs - hopefully we can change this shortly...

ok kettenis@


# 1.33 06-May-2010 jsing

Ansify functions and use "clock" rather than the CPU name for clock
interrupts.

ok kettenis@


# 1.32 01-Apr-2010 jsing

Allow for multiple CPUs by moving to an array of cpu_info.

ok kettenis@


# 1.31 28-Mar-2010 jsing

Allow a multiprocessor kernel to compile.

ok kettenis@


Revision tags: OPENBSD_4_7_BASE
# 1.30 29-Dec-2009 jsing

Move hppa to a "cpu0 at mainbus0" configuration, rather than knocking CPUs
out in the cpu match function. Whilst here also hardwire the clock to IRQ
31, thus preventing one from building a kernel without hardclock.

ok kettenis@ miod@


Revision tags: OPENBSD_4_5_BASE OPENBSD_4_6_BASE
# 1.29 08-Feb-2009 miod

Make sure than cpu_hardclock() never sets a ``next interrupt value'' which has
already been hit by the running timer; this happens very often on oosiop-based
machines, due to these machines being among the slowest hppa, and oosiop
being interrupt greedy. Unfortunately, when this happened, one had to wait
for the timer to wrap, which would take up to 128 seconds on the 33MHz
machines.

Also, invoke hardclock() as many times as necessary if it turns out that
we had to delay the interrupt 1/hz seconds to avoid the aforementioned
wrap problem.

With help from kettenis@; ok kettenis@


Revision tags: OPENBSD_3_7_BASE OPENBSD_3_8_BASE OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE OPENBSD_4_2_BASE OPENBSD_4_3_BASE OPENBSD_4_4_BASE
# 1.28 28-Dec-2004 mickey

fix new line in dmesg print on 8k cpus


# 1.27 26-Oct-2004 mickey

simplify cache print a bit


# 1.26 14-Sep-2004 mickey

store fpu version for later use. make sure to proper store/clear fpu state in fork/exec/exit/sendsig


# 1.25 14-Sep-2004 mickey

do not print anything about btlb if there is none


Revision tags: OPENBSD_3_6_BASE SMP_SYNC_A SMP_SYNC_B
# 1.24 07-Apr-2004 mickey

update copyright; miod@ is fine w/ files where he holds it too


Revision tags: OPENBSD_3_4_BASE OPENBSD_3_5_BASE
# 1.23 22-Aug-2003 mickey

rework cpu identification


# 1.22 07-Aug-2003 mickey

make all intr_establish take the same last arg for name


Revision tags: UBC_SYNC_A
# 1.21 29-Mar-2003 mickey

fix fpu printout and remove dead code piece


Revision tags: OPENBSD_3_3_BASE
# 1.20 08-Dec-2002 mickey

duh, provide a wrapper on the hardclock() since it's void


# 1.19 27-Nov-2002 mickey

no wrapper arounf hardclock(), use CPU_CLOCKUPDATE, real microtime; miod ok


Revision tags: OPENBSD_3_2_BASE UBC_SYNC_B
# 1.18 23-May-2002 mickey

fetch fpu id per the book (even it works otherwise), also, hppa_mod_info() always returns some string; idea by fredette@


# 1.17 08-May-2002 mickey

print parisc level w/ the the parisc version, not for each cpu


Revision tags: OPENBSD_3_1_BASE
# 1.16 26-Mar-2002 mickey

need to mask out the upper part for the fpu version on print


# 1.15 21-Mar-2002 mickey

better cache mode print


# 1.14 19-Mar-2002 mickey

no need for reg.h in the frame.h


# 1.13 14-Mar-2002 millert

First round of __P removal in sys


# 1.12 06-Mar-2002 mickey

no need to mask


# 1.11 06-Mar-2002 mickey

expand fpu name, makes line overflow a bit, maybe deal w/ it later


# 1.10 05-Mar-2002 mickey

rearrange stuff, chat about cache


# 1.9 11-Feb-2002 mickey

disable fpu on csw, print fpu version on cpu line, if present


Revision tags: OPENBSD_2_8_BASE OPENBSD_2_9_BASE OPENBSD_3_0_BASE UBC_BASE
# 1.8 15-Aug-2000 mickey

branches: 1.8.8;
print cpu revision and type


# 1.7 03-Jul-2000 mickey

add luseless comment


Revision tags: OPENBSD_2_7_BASE SMP_BASE kame_19991208
# 1.6 26-Nov-1999 mickey

branches: 1.6.2;
shorter text, so it fits in 80 columns


Revision tags: OPENBSD_2_6_BASE
# 1.5 16-Aug-1999 mickey

evcnt count the interrupts, also optimize diagnostic printing


# 1.4 14-Aug-1999 mickey

next try to print cpu model number.
attach clock interrupt.


# 1.3 20-Apr-1999 mickey

print cpu ID (type) if available


Revision tags: OPENBSD_2_5_BASE
# 1.2 17-Feb-1999 mickey

better cpu capabilities printing.
print cpu PA level
move cpu_gethpa() to mainbus.c


# 1.1 29-Dec-1998 mickey

some cpu


# 1.45 15-Jun-2023 cheloha

all platforms, main(): call clockqueue_init() just before sched_init_cpu()

Move the clockqueue_init() call out of clockintr_cpu_init() and up
just before the sched_init_cpu() call for a given CPU.

This will allow sched_init_cpu() to allocate clockintr handles for a
given CPU's scheduler in a later patch.

Link: https://marc.info/?l=openbsd-tech&m=168661507607622&w=2

ok kettenis@, claudio@


Revision tags: OPENBSD_7_3_BASE
# 1.44 06-Dec-2022 cheloha

hppa: switch to clockintr

- Remove hppa-specific clock interrupt scheduling bits from cpu_info.
- Rename cpu_hardclock() to itmr_intr(); it doesn't exclusively run
hardclock(9) anymore.
- Wire up itmr_intrclock.

hppa now has a randomized statclock(), stathz = hz.

Patch help, testing, and review from kettenis@ (B2000) and miod@ (C3650).
MP testing from guenther@ (dual-core J6700).

ok mlarkin@ kettenis@, "Ship it?" guenther@


Revision tags: OPENBSD_7_1_BASE OPENBSD_7_2_BASE
# 1.43 13-Mar-2022 mpi

Constify struct cfattach.

ok miod@


Revision tags: OPENBSD_6_8_BASE OPENBSD_6_9_BASE OPENBSD_7_0_BASE
# 1.42 29-May-2020 deraadt

dev/rndvar.h no longer has statistical interfaces (removed during various
conversion steps). it only contains kernel prototypes for 4 interfaces,
all of which legitimately belong in sys/systm.h, which are already included
by all enqueue_randomness() users.


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE
# 1.41 19-Jan-2014 deraadt

Initialize ci_randseed better using arc4random() + a trick. Remove the
libkern srandom() API since it is not suitable for this use.
ok kettenis miod


# 1.40 26-Nov-2013 deraadt

1 << 31 cleanup. Eitan Adler pointed out that there has been a
resurrection of the bad idiom in the tree.
sufficient review by miod, kettenis, tedu


Revision tags: OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE OPENBSD_5_4_BASE
# 1.39 02-Jan-2011 kettenis

Make need_resched() call cpu_unidle() such that we wake up a process running on
another CPU.

ok miod@


# 1.38 30-Dec-2010 jsing

Implement cpu_unidle() for MP kernels.

ok kettenis@


Revision tags: OPENBSD_4_8_BASE
# 1.37 26-Jun-2010 jsing

Allow processes to be scheduled onto secondary CPUs.

ok kettenis@


# 1.36 03-Jun-2010 jsing

Rename ci_spinup_stack to ci_stack and use it as the stack for both CPU
spin up and FPU emulation. Since all CPUs need a stack for FPU emulation,
move the allocation code to cpuattach().

ok kettenis@


# 1.35 21-May-2010 jsing

Add support for IPIs on hppa.

ok kettenis@


# 1.34 19-May-2010 jsing

Spin up secondary CPUs on hppa multiprocessor kernels. At this stage we
enable clock interrupts, however do not allow processes to be scheduled
onto the secondary CPUs - hopefully we can change this shortly...

ok kettenis@


# 1.33 06-May-2010 jsing

Ansify functions and use "clock" rather than the CPU name for clock
interrupts.

ok kettenis@


# 1.32 01-Apr-2010 jsing

Allow for multiple CPUs by moving to an array of cpu_info.

ok kettenis@


# 1.31 28-Mar-2010 jsing

Allow a multiprocessor kernel to compile.

ok kettenis@


Revision tags: OPENBSD_4_7_BASE
# 1.30 29-Dec-2009 jsing

Move hppa to a "cpu0 at mainbus0" configuration, rather than knocking CPUs
out in the cpu match function. Whilst here also hardwire the clock to IRQ
31, thus preventing one from building a kernel without hardclock.

ok kettenis@ miod@


Revision tags: OPENBSD_4_5_BASE OPENBSD_4_6_BASE
# 1.29 08-Feb-2009 miod

Make sure than cpu_hardclock() never sets a ``next interrupt value'' which has
already been hit by the running timer; this happens very often on oosiop-based
machines, due to these machines being among the slowest hppa, and oosiop
being interrupt greedy. Unfortunately, when this happened, one had to wait
for the timer to wrap, which would take up to 128 seconds on the 33MHz
machines.

Also, invoke hardclock() as many times as necessary if it turns out that
we had to delay the interrupt 1/hz seconds to avoid the aforementioned
wrap problem.

With help from kettenis@; ok kettenis@


Revision tags: OPENBSD_3_7_BASE OPENBSD_3_8_BASE OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE OPENBSD_4_2_BASE OPENBSD_4_3_BASE OPENBSD_4_4_BASE
# 1.28 28-Dec-2004 mickey

fix new line in dmesg print on 8k cpus


# 1.27 26-Oct-2004 mickey

simplify cache print a bit


# 1.26 14-Sep-2004 mickey

store fpu version for later use. make sure to proper store/clear fpu state in fork/exec/exit/sendsig


# 1.25 14-Sep-2004 mickey

do not print anything about btlb if there is none


Revision tags: OPENBSD_3_6_BASE SMP_SYNC_A SMP_SYNC_B
# 1.24 07-Apr-2004 mickey

update copyright; miod@ is fine w/ files where he holds it too


Revision tags: OPENBSD_3_4_BASE OPENBSD_3_5_BASE
# 1.23 22-Aug-2003 mickey

rework cpu identification


# 1.22 07-Aug-2003 mickey

make all intr_establish take the same last arg for name


Revision tags: UBC_SYNC_A
# 1.21 29-Mar-2003 mickey

fix fpu printout and remove dead code piece


Revision tags: OPENBSD_3_3_BASE
# 1.20 08-Dec-2002 mickey

duh, provide a wrapper on the hardclock() since it's void


# 1.19 27-Nov-2002 mickey

no wrapper arounf hardclock(), use CPU_CLOCKUPDATE, real microtime; miod ok


Revision tags: OPENBSD_3_2_BASE UBC_SYNC_B
# 1.18 23-May-2002 mickey

fetch fpu id per the book (even it works otherwise), also, hppa_mod_info() always returns some string; idea by fredette@


# 1.17 08-May-2002 mickey

print parisc level w/ the the parisc version, not for each cpu


Revision tags: OPENBSD_3_1_BASE
# 1.16 26-Mar-2002 mickey

need to mask out the upper part for the fpu version on print


# 1.15 21-Mar-2002 mickey

better cache mode print


# 1.14 19-Mar-2002 mickey

no need for reg.h in the frame.h


# 1.13 14-Mar-2002 millert

First round of __P removal in sys


# 1.12 06-Mar-2002 mickey

no need to mask


# 1.11 06-Mar-2002 mickey

expand fpu name, makes line overflow a bit, maybe deal w/ it later


# 1.10 05-Mar-2002 mickey

rearrange stuff, chat about cache


# 1.9 11-Feb-2002 mickey

disable fpu on csw, print fpu version on cpu line, if present


Revision tags: OPENBSD_2_8_BASE OPENBSD_2_9_BASE OPENBSD_3_0_BASE UBC_BASE
# 1.8 15-Aug-2000 mickey

branches: 1.8.8;
print cpu revision and type


# 1.7 03-Jul-2000 mickey

add luseless comment


Revision tags: OPENBSD_2_7_BASE SMP_BASE kame_19991208
# 1.6 26-Nov-1999 mickey

branches: 1.6.2;
shorter text, so it fits in 80 columns


Revision tags: OPENBSD_2_6_BASE
# 1.5 16-Aug-1999 mickey

evcnt count the interrupts, also optimize diagnostic printing


# 1.4 14-Aug-1999 mickey

next try to print cpu model number.
attach clock interrupt.


# 1.3 20-Apr-1999 mickey

print cpu ID (type) if available


Revision tags: OPENBSD_2_5_BASE
# 1.2 17-Feb-1999 mickey

better cpu capabilities printing.
print cpu PA level
move cpu_gethpa() to mainbus.c


# 1.1 29-Dec-1998 mickey

some cpu


# 1.44 06-Dec-2022 cheloha

hppa: switch to clockintr

- Remove hppa-specific clock interrupt scheduling bits from cpu_info.
- Rename cpu_hardclock() to itmr_intr(); it doesn't exclusively run
hardclock(9) anymore.
- Wire up itmr_intrclock.

hppa now has a randomized statclock(), stathz = hz.

Patch help, testing, and review from kettenis@ (B2000) and miod@ (C3650).
MP testing from guenther@ (dual-core J6700).

ok mlarkin@ kettenis@, "Ship it?" guenther@


Revision tags: OPENBSD_7_1_BASE OPENBSD_7_2_BASE
# 1.43 13-Mar-2022 mpi

Constify struct cfattach.

ok miod@


Revision tags: OPENBSD_6_8_BASE OPENBSD_6_9_BASE OPENBSD_7_0_BASE
# 1.42 29-May-2020 deraadt

dev/rndvar.h no longer has statistical interfaces (removed during various
conversion steps). it only contains kernel prototypes for 4 interfaces,
all of which legitimately belong in sys/systm.h, which are already included
by all enqueue_randomness() users.


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE
# 1.41 19-Jan-2014 deraadt

Initialize ci_randseed better using arc4random() + a trick. Remove the
libkern srandom() API since it is not suitable for this use.
ok kettenis miod


# 1.40 26-Nov-2013 deraadt

1 << 31 cleanup. Eitan Adler pointed out that there has been a
resurrection of the bad idiom in the tree.
sufficient review by miod, kettenis, tedu


Revision tags: OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE OPENBSD_5_4_BASE
# 1.39 02-Jan-2011 kettenis

Make need_resched() call cpu_unidle() such that we wake up a process running on
another CPU.

ok miod@


# 1.38 30-Dec-2010 jsing

Implement cpu_unidle() for MP kernels.

ok kettenis@


Revision tags: OPENBSD_4_8_BASE
# 1.37 26-Jun-2010 jsing

Allow processes to be scheduled onto secondary CPUs.

ok kettenis@


# 1.36 03-Jun-2010 jsing

Rename ci_spinup_stack to ci_stack and use it as the stack for both CPU
spin up and FPU emulation. Since all CPUs need a stack for FPU emulation,
move the allocation code to cpuattach().

ok kettenis@


# 1.35 21-May-2010 jsing

Add support for IPIs on hppa.

ok kettenis@


# 1.34 19-May-2010 jsing

Spin up secondary CPUs on hppa multiprocessor kernels. At this stage we
enable clock interrupts, however do not allow processes to be scheduled
onto the secondary CPUs - hopefully we can change this shortly...

ok kettenis@


# 1.33 06-May-2010 jsing

Ansify functions and use "clock" rather than the CPU name for clock
interrupts.

ok kettenis@


# 1.32 01-Apr-2010 jsing

Allow for multiple CPUs by moving to an array of cpu_info.

ok kettenis@


# 1.31 28-Mar-2010 jsing

Allow a multiprocessor kernel to compile.

ok kettenis@


Revision tags: OPENBSD_4_7_BASE
# 1.30 29-Dec-2009 jsing

Move hppa to a "cpu0 at mainbus0" configuration, rather than knocking CPUs
out in the cpu match function. Whilst here also hardwire the clock to IRQ
31, thus preventing one from building a kernel without hardclock.

ok kettenis@ miod@


Revision tags: OPENBSD_4_5_BASE OPENBSD_4_6_BASE
# 1.29 08-Feb-2009 miod

Make sure than cpu_hardclock() never sets a ``next interrupt value'' which has
already been hit by the running timer; this happens very often on oosiop-based
machines, due to these machines being among the slowest hppa, and oosiop
being interrupt greedy. Unfortunately, when this happened, one had to wait
for the timer to wrap, which would take up to 128 seconds on the 33MHz
machines.

Also, invoke hardclock() as many times as necessary if it turns out that
we had to delay the interrupt 1/hz seconds to avoid the aforementioned
wrap problem.

With help from kettenis@; ok kettenis@


Revision tags: OPENBSD_3_7_BASE OPENBSD_3_8_BASE OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE OPENBSD_4_2_BASE OPENBSD_4_3_BASE OPENBSD_4_4_BASE
# 1.28 28-Dec-2004 mickey

fix new line in dmesg print on 8k cpus


# 1.27 26-Oct-2004 mickey

simplify cache print a bit


# 1.26 14-Sep-2004 mickey

store fpu version for later use. make sure to proper store/clear fpu state in fork/exec/exit/sendsig


# 1.25 14-Sep-2004 mickey

do not print anything about btlb if there is none


Revision tags: OPENBSD_3_6_BASE SMP_SYNC_A SMP_SYNC_B
# 1.24 07-Apr-2004 mickey

update copyright; miod@ is fine w/ files where he holds it too


Revision tags: OPENBSD_3_4_BASE OPENBSD_3_5_BASE
# 1.23 22-Aug-2003 mickey

rework cpu identification


# 1.22 07-Aug-2003 mickey

make all intr_establish take the same last arg for name


Revision tags: UBC_SYNC_A
# 1.21 29-Mar-2003 mickey

fix fpu printout and remove dead code piece


Revision tags: OPENBSD_3_3_BASE
# 1.20 08-Dec-2002 mickey

duh, provide a wrapper on the hardclock() since it's void


# 1.19 27-Nov-2002 mickey

no wrapper arounf hardclock(), use CPU_CLOCKUPDATE, real microtime; miod ok


Revision tags: OPENBSD_3_2_BASE UBC_SYNC_B
# 1.18 23-May-2002 mickey

fetch fpu id per the book (even it works otherwise), also, hppa_mod_info() always returns some string; idea by fredette@


# 1.17 08-May-2002 mickey

print parisc level w/ the the parisc version, not for each cpu


Revision tags: OPENBSD_3_1_BASE
# 1.16 26-Mar-2002 mickey

need to mask out the upper part for the fpu version on print


# 1.15 21-Mar-2002 mickey

better cache mode print


# 1.14 19-Mar-2002 mickey

no need for reg.h in the frame.h


# 1.13 14-Mar-2002 millert

First round of __P removal in sys


# 1.12 06-Mar-2002 mickey

no need to mask


# 1.11 06-Mar-2002 mickey

expand fpu name, makes line overflow a bit, maybe deal w/ it later


# 1.10 05-Mar-2002 mickey

rearrange stuff, chat about cache


# 1.9 11-Feb-2002 mickey

disable fpu on csw, print fpu version on cpu line, if present


Revision tags: OPENBSD_2_8_BASE OPENBSD_2_9_BASE OPENBSD_3_0_BASE UBC_BASE
# 1.8 15-Aug-2000 mickey

branches: 1.8.8;
print cpu revision and type


# 1.7 03-Jul-2000 mickey

add luseless comment


Revision tags: OPENBSD_2_7_BASE SMP_BASE kame_19991208
# 1.6 26-Nov-1999 mickey

branches: 1.6.2;
shorter text, so it fits in 80 columns


Revision tags: OPENBSD_2_6_BASE
# 1.5 16-Aug-1999 mickey

evcnt count the interrupts, also optimize diagnostic printing


# 1.4 14-Aug-1999 mickey

next try to print cpu model number.
attach clock interrupt.


# 1.3 20-Apr-1999 mickey

print cpu ID (type) if available


Revision tags: OPENBSD_2_5_BASE
# 1.2 17-Feb-1999 mickey

better cpu capabilities printing.
print cpu PA level
move cpu_gethpa() to mainbus.c


# 1.1 29-Dec-1998 mickey

some cpu


# 1.43 13-Mar-2022 mpi

Constify struct cfattach.

ok miod@


Revision tags: OPENBSD_6_8_BASE OPENBSD_6_9_BASE OPENBSD_7_0_BASE
# 1.42 29-May-2020 deraadt

dev/rndvar.h no longer has statistical interfaces (removed during various
conversion steps). it only contains kernel prototypes for 4 interfaces,
all of which legitimately belong in sys/systm.h, which are already included
by all enqueue_randomness() users.


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE
# 1.41 19-Jan-2014 deraadt

Initialize ci_randseed better using arc4random() + a trick. Remove the
libkern srandom() API since it is not suitable for this use.
ok kettenis miod


# 1.40 26-Nov-2013 deraadt

1 << 31 cleanup. Eitan Adler pointed out that there has been a
resurrection of the bad idiom in the tree.
sufficient review by miod, kettenis, tedu


Revision tags: OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE OPENBSD_5_4_BASE
# 1.39 02-Jan-2011 kettenis

Make need_resched() call cpu_unidle() such that we wake up a process running on
another CPU.

ok miod@


# 1.38 30-Dec-2010 jsing

Implement cpu_unidle() for MP kernels.

ok kettenis@


Revision tags: OPENBSD_4_8_BASE
# 1.37 26-Jun-2010 jsing

Allow processes to be scheduled onto secondary CPUs.

ok kettenis@


# 1.36 03-Jun-2010 jsing

Rename ci_spinup_stack to ci_stack and use it as the stack for both CPU
spin up and FPU emulation. Since all CPUs need a stack for FPU emulation,
move the allocation code to cpuattach().

ok kettenis@


# 1.35 21-May-2010 jsing

Add support for IPIs on hppa.

ok kettenis@


# 1.34 19-May-2010 jsing

Spin up secondary CPUs on hppa multiprocessor kernels. At this stage we
enable clock interrupts, however do not allow processes to be scheduled
onto the secondary CPUs - hopefully we can change this shortly...

ok kettenis@


# 1.33 06-May-2010 jsing

Ansify functions and use "clock" rather than the CPU name for clock
interrupts.

ok kettenis@


# 1.32 01-Apr-2010 jsing

Allow for multiple CPUs by moving to an array of cpu_info.

ok kettenis@


# 1.31 28-Mar-2010 jsing

Allow a multiprocessor kernel to compile.

ok kettenis@


Revision tags: OPENBSD_4_7_BASE
# 1.30 29-Dec-2009 jsing

Move hppa to a "cpu0 at mainbus0" configuration, rather than knocking CPUs
out in the cpu match function. Whilst here also hardwire the clock to IRQ
31, thus preventing one from building a kernel without hardclock.

ok kettenis@ miod@


Revision tags: OPENBSD_4_5_BASE OPENBSD_4_6_BASE
# 1.29 08-Feb-2009 miod

Make sure than cpu_hardclock() never sets a ``next interrupt value'' which has
already been hit by the running timer; this happens very often on oosiop-based
machines, due to these machines being among the slowest hppa, and oosiop
being interrupt greedy. Unfortunately, when this happened, one had to wait
for the timer to wrap, which would take up to 128 seconds on the 33MHz
machines.

Also, invoke hardclock() as many times as necessary if it turns out that
we had to delay the interrupt 1/hz seconds to avoid the aforementioned
wrap problem.

With help from kettenis@; ok kettenis@


Revision tags: OPENBSD_3_7_BASE OPENBSD_3_8_BASE OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE OPENBSD_4_2_BASE OPENBSD_4_3_BASE OPENBSD_4_4_BASE
# 1.28 28-Dec-2004 mickey

fix new line in dmesg print on 8k cpus


# 1.27 26-Oct-2004 mickey

simplify cache print a bit


# 1.26 14-Sep-2004 mickey

store fpu version for later use. make sure to proper store/clear fpu state in fork/exec/exit/sendsig


# 1.25 14-Sep-2004 mickey

do not print anything about btlb if there is none


Revision tags: OPENBSD_3_6_BASE SMP_SYNC_A SMP_SYNC_B
# 1.24 07-Apr-2004 mickey

update copyright; miod@ is fine w/ files where he holds it too


Revision tags: OPENBSD_3_4_BASE OPENBSD_3_5_BASE
# 1.23 22-Aug-2003 mickey

rework cpu identification


# 1.22 07-Aug-2003 mickey

make all intr_establish take the same last arg for name


Revision tags: UBC_SYNC_A
# 1.21 29-Mar-2003 mickey

fix fpu printout and remove dead code piece


Revision tags: OPENBSD_3_3_BASE
# 1.20 08-Dec-2002 mickey

duh, provide a wrapper on the hardclock() since it's void


# 1.19 27-Nov-2002 mickey

no wrapper arounf hardclock(), use CPU_CLOCKUPDATE, real microtime; miod ok


Revision tags: OPENBSD_3_2_BASE UBC_SYNC_B
# 1.18 23-May-2002 mickey

fetch fpu id per the book (even it works otherwise), also, hppa_mod_info() always returns some string; idea by fredette@


# 1.17 08-May-2002 mickey

print parisc level w/ the the parisc version, not for each cpu


Revision tags: OPENBSD_3_1_BASE
# 1.16 26-Mar-2002 mickey

need to mask out the upper part for the fpu version on print


# 1.15 21-Mar-2002 mickey

better cache mode print


# 1.14 19-Mar-2002 mickey

no need for reg.h in the frame.h


# 1.13 14-Mar-2002 millert

First round of __P removal in sys


# 1.12 06-Mar-2002 mickey

no need to mask


# 1.11 06-Mar-2002 mickey

expand fpu name, makes line overflow a bit, maybe deal w/ it later


# 1.10 05-Mar-2002 mickey

rearrange stuff, chat about cache


# 1.9 11-Feb-2002 mickey

disable fpu on csw, print fpu version on cpu line, if present


Revision tags: OPENBSD_2_8_BASE OPENBSD_2_9_BASE OPENBSD_3_0_BASE UBC_BASE
# 1.8 15-Aug-2000 mickey

branches: 1.8.8;
print cpu revision and type


# 1.7 03-Jul-2000 mickey

add luseless comment


Revision tags: OPENBSD_2_7_BASE SMP_BASE kame_19991208
# 1.6 26-Nov-1999 mickey

branches: 1.6.2;
shorter text, so it fits in 80 columns


Revision tags: OPENBSD_2_6_BASE
# 1.5 16-Aug-1999 mickey

evcnt count the interrupts, also optimize diagnostic printing


# 1.4 14-Aug-1999 mickey

next try to print cpu model number.
attach clock interrupt.


# 1.3 20-Apr-1999 mickey

print cpu ID (type) if available


Revision tags: OPENBSD_2_5_BASE
# 1.2 17-Feb-1999 mickey

better cpu capabilities printing.
print cpu PA level
move cpu_gethpa() to mainbus.c


# 1.1 29-Dec-1998 mickey

some cpu


# 1.42 29-May-2020 deraadt

dev/rndvar.h no longer has statistical interfaces (removed during various
conversion steps). it only contains kernel prototypes for 4 interfaces,
all of which legitimately belong in sys/systm.h, which are already included
by all enqueue_randomness() users.


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE
# 1.41 19-Jan-2014 deraadt

Initialize ci_randseed better using arc4random() + a trick. Remove the
libkern srandom() API since it is not suitable for this use.
ok kettenis miod


# 1.40 26-Nov-2013 deraadt

1 << 31 cleanup. Eitan Adler pointed out that there has been a
resurrection of the bad idiom in the tree.
sufficient review by miod, kettenis, tedu


Revision tags: OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE OPENBSD_5_4_BASE
# 1.39 02-Jan-2011 kettenis

Make need_resched() call cpu_unidle() such that we wake up a process running on
another CPU.

ok miod@


# 1.38 30-Dec-2010 jsing

Implement cpu_unidle() for MP kernels.

ok kettenis@


Revision tags: OPENBSD_4_8_BASE
# 1.37 26-Jun-2010 jsing

Allow processes to be scheduled onto secondary CPUs.

ok kettenis@


# 1.36 03-Jun-2010 jsing

Rename ci_spinup_stack to ci_stack and use it as the stack for both CPU
spin up and FPU emulation. Since all CPUs need a stack for FPU emulation,
move the allocation code to cpuattach().

ok kettenis@


# 1.35 21-May-2010 jsing

Add support for IPIs on hppa.

ok kettenis@


# 1.34 19-May-2010 jsing

Spin up secondary CPUs on hppa multiprocessor kernels. At this stage we
enable clock interrupts, however do not allow processes to be scheduled
onto the secondary CPUs - hopefully we can change this shortly...

ok kettenis@


# 1.33 06-May-2010 jsing

Ansify functions and use "clock" rather than the CPU name for clock
interrupts.

ok kettenis@


# 1.32 01-Apr-2010 jsing

Allow for multiple CPUs by moving to an array of cpu_info.

ok kettenis@


# 1.31 28-Mar-2010 jsing

Allow a multiprocessor kernel to compile.

ok kettenis@


Revision tags: OPENBSD_4_7_BASE
# 1.30 29-Dec-2009 jsing

Move hppa to a "cpu0 at mainbus0" configuration, rather than knocking CPUs
out in the cpu match function. Whilst here also hardwire the clock to IRQ
31, thus preventing one from building a kernel without hardclock.

ok kettenis@ miod@


Revision tags: OPENBSD_4_5_BASE OPENBSD_4_6_BASE
# 1.29 08-Feb-2009 miod

Make sure than cpu_hardclock() never sets a ``next interrupt value'' which has
already been hit by the running timer; this happens very often on oosiop-based
machines, due to these machines being among the slowest hppa, and oosiop
being interrupt greedy. Unfortunately, when this happened, one had to wait
for the timer to wrap, which would take up to 128 seconds on the 33MHz
machines.

Also, invoke hardclock() as many times as necessary if it turns out that
we had to delay the interrupt 1/hz seconds to avoid the aforementioned
wrap problem.

With help from kettenis@; ok kettenis@


Revision tags: OPENBSD_3_7_BASE OPENBSD_3_8_BASE OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE OPENBSD_4_2_BASE OPENBSD_4_3_BASE OPENBSD_4_4_BASE
# 1.28 28-Dec-2004 mickey

fix new line in dmesg print on 8k cpus


# 1.27 26-Oct-2004 mickey

simplify cache print a bit


# 1.26 14-Sep-2004 mickey

store fpu version for later use. make sure to proper store/clear fpu state in fork/exec/exit/sendsig


# 1.25 14-Sep-2004 mickey

do not print anything about btlb if there is none


Revision tags: OPENBSD_3_6_BASE SMP_SYNC_A SMP_SYNC_B
# 1.24 07-Apr-2004 mickey

update copyright; miod@ is fine w/ files where he holds it too


Revision tags: OPENBSD_3_4_BASE OPENBSD_3_5_BASE
# 1.23 22-Aug-2003 mickey

rework cpu identification


# 1.22 07-Aug-2003 mickey

make all intr_establish take the same last arg for name


Revision tags: UBC_SYNC_A
# 1.21 29-Mar-2003 mickey

fix fpu printout and remove dead code piece


Revision tags: OPENBSD_3_3_BASE
# 1.20 08-Dec-2002 mickey

duh, provide a wrapper on the hardclock() since it's void


# 1.19 27-Nov-2002 mickey

no wrapper arounf hardclock(), use CPU_CLOCKUPDATE, real microtime; miod ok


Revision tags: OPENBSD_3_2_BASE UBC_SYNC_B
# 1.18 23-May-2002 mickey

fetch fpu id per the book (even it works otherwise), also, hppa_mod_info() always returns some string; idea by fredette@


# 1.17 08-May-2002 mickey

print parisc level w/ the the parisc version, not for each cpu


Revision tags: OPENBSD_3_1_BASE
# 1.16 26-Mar-2002 mickey

need to mask out the upper part for the fpu version on print


# 1.15 21-Mar-2002 mickey

better cache mode print


# 1.14 19-Mar-2002 mickey

no need for reg.h in the frame.h


# 1.13 14-Mar-2002 millert

First round of __P removal in sys


# 1.12 06-Mar-2002 mickey

no need to mask


# 1.11 06-Mar-2002 mickey

expand fpu name, makes line overflow a bit, maybe deal w/ it later


# 1.10 05-Mar-2002 mickey

rearrange stuff, chat about cache


# 1.9 11-Feb-2002 mickey

disable fpu on csw, print fpu version on cpu line, if present


Revision tags: OPENBSD_2_8_BASE OPENBSD_2_9_BASE OPENBSD_3_0_BASE UBC_BASE
# 1.8 15-Aug-2000 mickey

branches: 1.8.8;
print cpu revision and type


# 1.7 03-Jul-2000 mickey

add luseless comment


Revision tags: OPENBSD_2_7_BASE SMP_BASE kame_19991208
# 1.6 26-Nov-1999 mickey

branches: 1.6.2;
shorter text, so it fits in 80 columns


Revision tags: OPENBSD_2_6_BASE
# 1.5 16-Aug-1999 mickey

evcnt count the interrupts, also optimize diagnostic printing


# 1.4 14-Aug-1999 mickey

next try to print cpu model number.
attach clock interrupt.


# 1.3 20-Apr-1999 mickey

print cpu ID (type) if available


Revision tags: OPENBSD_2_5_BASE
# 1.2 17-Feb-1999 mickey

better cpu capabilities printing.
print cpu PA level
move cpu_gethpa() to mainbus.c


# 1.1 29-Dec-1998 mickey

some cpu


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE
# 1.41 19-Jan-2014 deraadt

Initialize ci_randseed better using arc4random() + a trick. Remove the
libkern srandom() API since it is not suitable for this use.
ok kettenis miod


# 1.40 26-Nov-2013 deraadt

1 << 31 cleanup. Eitan Adler pointed out that there has been a
resurrection of the bad idiom in the tree.
sufficient review by miod, kettenis, tedu


Revision tags: OPENBSD_4_9_BASE OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE OPENBSD_5_3_BASE OPENBSD_5_4_BASE
# 1.39 02-Jan-2011 kettenis

Make need_resched() call cpu_unidle() such that we wake up a process running on
another CPU.

ok miod@


# 1.38 30-Dec-2010 jsing

Implement cpu_unidle() for MP kernels.

ok kettenis@


Revision tags: OPENBSD_4_8_BASE
# 1.37 26-Jun-2010 jsing

Allow processes to be scheduled onto secondary CPUs.

ok kettenis@


# 1.36 03-Jun-2010 jsing

Rename ci_spinup_stack to ci_stack and use it as the stack for both CPU
spin up and FPU emulation. Since all CPUs need a stack for FPU emulation,
move the allocation code to cpuattach().

ok kettenis@


# 1.35 21-May-2010 jsing

Add support for IPIs on hppa.

ok kettenis@


# 1.34 19-May-2010 jsing

Spin up secondary CPUs on hppa multiprocessor kernels. At this stage we
enable clock interrupts, however do not allow processes to be scheduled
onto the secondary CPUs - hopefully we can change this shortly...

ok kettenis@


# 1.33 06-May-2010 jsing

Ansify functions and use "clock" rather than the CPU name for clock
interrupts.

ok kettenis@


# 1.32 01-Apr-2010 jsing

Allow for multiple CPUs by moving to an array of cpu_info.

ok kettenis@


# 1.31 28-Mar-2010 jsing

Allow a multiprocessor kernel to compile.

ok kettenis@


Revision tags: OPENBSD_4_7_BASE
# 1.30 29-Dec-2009 jsing

Move hppa to a "cpu0 at mainbus0" configuration, rather than knocking CPUs
out in the cpu match function. Whilst here also hardwire the clock to IRQ
31, thus preventing one from building a kernel without hardclock.

ok kettenis@ miod@


Revision tags: OPENBSD_4_5_BASE OPENBSD_4_6_BASE
# 1.29 08-Feb-2009 miod

Make sure than cpu_hardclock() never sets a ``next interrupt value'' which has
already been hit by the running timer; this happens very often on oosiop-based
machines, due to these machines being among the slowest hppa, and oosiop
being interrupt greedy. Unfortunately, when this happened, one had to wait
for the timer to wrap, which would take up to 128 seconds on the 33MHz
machines.

Also, invoke hardclock() as many times as necessary if it turns out that
we had to delay the interrupt 1/hz seconds to avoid the aforementioned
wrap problem.

With help from kettenis@; ok kettenis@


Revision tags: OPENBSD_3_7_BASE OPENBSD_3_8_BASE OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE OPENBSD_4_2_BASE OPENBSD_4_3_BASE OPENBSD_4_4_BASE
# 1.28 28-Dec-2004 mickey

fix new line in dmesg print on 8k cpus


# 1.27 26-Oct-2004 mickey

simplify cache print a bit


# 1.26 14-Sep-2004 mickey

store fpu version for later use. make sure to proper store/clear fpu state in fork/exec/exit/sendsig


# 1.25 14-Sep-2004 mickey

do not print anything about btlb if there is none


Revision tags: OPENBSD_3_6_BASE SMP_SYNC_A SMP_SYNC_B
# 1.24 07-Apr-2004 mickey

update copyright; miod@ is fine w/ files where he holds it too


Revision tags: OPENBSD_3_4_BASE OPENBSD_3_5_BASE
# 1.23 22-Aug-2003 mickey

rework cpu identification


# 1.22 07-Aug-2003 mickey

make all intr_establish take the same last arg for name


Revision tags: UBC_SYNC_A
# 1.21 29-Mar-2003 mickey

fix fpu printout and remove dead code piece


Revision tags: OPENBSD_3_3_BASE
# 1.20 08-Dec-2002 mickey

duh, provide a wrapper on the hardclock() since it's void


# 1.19 27-Nov-2002 mickey

no wrapper arounf hardclock(), use CPU_CLOCKUPDATE, real microtime; miod ok


Revision tags: OPENBSD_3_2_BASE UBC_SYNC_B
# 1.18 23-May-2002 mickey

fetch fpu id per the book (even it works otherwise), also, hppa_mod_info() always returns some string; idea by fredette@


# 1.17 08-May-2002 mickey

print parisc level w/ the the parisc version, not for each cpu


Revision tags: OPENBSD_3_1_BASE
# 1.16 26-Mar-2002 mickey

need to mask out the upper part for the fpu version on print


# 1.15 21-Mar-2002 mickey

better cache mode print


# 1.14 19-Mar-2002 mickey

no need for reg.h in the frame.h


# 1.13 14-Mar-2002 millert

First round of __P removal in sys


# 1.12 06-Mar-2002 mickey

no need to mask


# 1.11 06-Mar-2002 mickey

expand fpu name, makes line overflow a bit, maybe deal w/ it later


# 1.10 05-Mar-2002 mickey

rearrange stuff, chat about cache


# 1.9 11-Feb-2002 mickey

disable fpu on csw, print fpu version on cpu line, if present


Revision tags: OPENBSD_2_8_BASE OPENBSD_2_9_BASE OPENBSD_3_0_BASE UBC_BASE
# 1.8 15-Aug-2000 mickey

branches: 1.8.8;
print cpu revision and type


# 1.7 03-Jul-2000 mickey

add luseless comment


Revision tags: OPENBSD_2_7_BASE SMP_BASE kame_19991208
# 1.6 26-Nov-1999 mickey

branches: 1.6.2;
shorter text, so it fits in 80 columns


Revision tags: OPENBSD_2_6_BASE
# 1.5 16-Aug-1999 mickey

evcnt count the interrupts, also optimize diagnostic printing


# 1.4 14-Aug-1999 mickey

next try to print cpu model number.
attach clock interrupt.


# 1.3 20-Apr-1999 mickey

print cpu ID (type) if available


Revision tags: OPENBSD_2_5_BASE
# 1.2 17-Feb-1999 mickey

better cpu capabilities printing.
print cpu PA level
move cpu_gethpa() to mainbus.c


# 1.1 29-Dec-1998 mickey

some cpu