Home | History | Annotate | Download | only in include
History log of /src/sys/arch/amigappc/include/cpu.h
RevisionDateAuthorComments
 1.21  16-Feb-2022  riastradh powerpc: Sprinkle "memory" clobbers on eieio and nearby asm blocks.

Otherwise the compiler may reorder these around loads and stores,
which mostly defeats the purpose. `asm volatile' just ensures the
instruction isn't _deleted_; it may still move around.
 1.20  20-Jun-2011  matt Don't expose port-specific if _MODULE is defined.
Don't _MACHINE_CPU_H_, _<PORT>_CPU_H_
 1.19  20-Jan-2011  phx branches: 1.19.2;
Add missing is_a600() definition, used by amiga devices.
We simply define it as 0, because an A600 will never have a PPC installed.
 1.18  09-Feb-2010  phx branches: 1.18.2; 1.18.4; 1.18.6;
Moved the macros amiga_cpu_sync() and amiga_membarrier() from amiga/device.h
to the MD include/cpu.h.
Also make sure that grf_cvreg.h includes cpu.h as it is needed by Xamiga
in xsrc/xfree/xc/programs/Xserver/hw/netbsd/amiga/s3/amigaCV.h.
 1.17  02-Feb-2010  phx branches: 1.17.2;
Make it compile with all devices from amiga/dev.
 1.16  21-Jul-2009  phx Some improvements based on the work of Adam Ciarcinski.
Adapted everything to integrate with current 5.99 source.
Added an Amiga PIC for interrupt handling.

Status:
A CSPPC machine probably boots into single user, but only few devices
will attach without problems (e.g. keyboard, serial, parallel, floppy disk,
the RTC, CC graphics, sometimes Ariande ethernet and A4000 IDE.
BPPC support is prepared, but unfinished and untested (I don't own a BPPC).

A problem which has to be solved is interrupt acknowledging, which may happen
twice. Once in the amiga drivers from sys/arch/amiga/dev and then in the PPC
specific pic_amiga.c.
 1.15  14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.14  04-Mar-2007  christos branches: 1.14.44; 1.14.52; 1.14.58;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.13  16-Feb-2007  ad branches: 1.13.2;
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.12  11-Dec-2005  christos merge ktrace-lwp.
 1.11  04-Jan-2004  jdolecek branches: 1.11.16;
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.10  02-Nov-2003  jdolecek add /* nothing */ comment to cpu_wait()/cpu_swapout()
 1.9  27-Sep-2003  is Bring some stuff up-to-date. To be continued.
 1.8  03-Dec-2001  aymeric branches: 1.8.16;
remove things that were copied verbatim from powerpc_cpu.h
and #include <powepc/powerpc_cpu.h>
 1.7  30-May-2001  mrg branches: 1.7.2;
use _KERNEL_OPT
 1.6  18-Feb-2001  is branches: 1.6.2;
Initial version of interupt handling, by Adam Ciarcinski.
 1.5  14-Dec-2000  mycroft Partial syscall cleanup, as per other ports.
 1.4  25-Aug-2000  thorpej branches: 1.4.2;
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.3  16-Jun-2000  is Define schedstate_percpu.
 1.2  26-May-2000  thorpej branches: 1.2.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.1  25-May-2000  is Initial AmigaPPC commit.

Lots of the work was done by Adam Ciarcinsky.

Currently, this only supports CyberPPC boards by Phase 5. Blizzard PPC
expected later.

The kernel is useless but for demonstrating that it starts... especially
interupts, and most of MMU support, is not in yet. Builtin console works,
however, and you can look at the kernel startup messages.
 1.2.2.1  22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.4.2.4  12-Mar-2001  bouyer Sync with HEAD.
 1.4.2.3  05-Jan-2001  bouyer Sync with HEAD
 1.4.2.2  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.4.2.1  25-Aug-2000  bouyer file cpu.h was added on branch thorpej_scsipi on 2000-11-20 19:59:39 +0000
 1.6.2.1  21-Jun-2001  nathanw Catch up to -current.
 1.7.2.1  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.8.16.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.8.16.2  18-Sep-2004  skrll Sync with HEAD.
 1.8.16.1  03-Aug-2004  skrll Sync with HEAD
 1.11.16.2  03-Sep-2007  yamt sync with head.
 1.11.16.1  26-Feb-2007  yamt sync with head.
 1.13.2.1  12-Mar-2007  rmind Sync with HEAD.
 1.14.58.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.14.52.1  28-Apr-2009  skrll Sync with HEAD.
 1.14.44.3  11-Mar-2010  yamt sync with head
 1.14.44.2  19-Aug-2009  yamt sync with head.
 1.14.44.1  04-May-2009  yamt sync with head.
 1.17.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.18.6.1  08-Feb-2011  bouyer Sync with HEAD
 1.18.4.1  06-Jun-2011  jruoho Sync with HEAD.
 1.18.2.1  05-Mar-2011  rmind sync with head
 1.19.2.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.

RSS XML Feed