Home | History | Annotate | Download | only in include
History log of /src/sys/arch/powerpc/include/frame.h
RevisionDateAuthorComments
 1.29  06-Jul-2020  rin Style and cosmetic changes. No binary changes intended.
 1.28  06-Jul-2020  rin LKM was gone. _KERNEL is always defined for module.
 1.27  24-Jan-2016  christos expose __register32_t for frame.h
 1.26  28-Feb-2014  matt branches: 1.26.6;
Add trapframe32 for COMPAT_NETBSD32
 1.25  01-Aug-2012  matt branches: 1.25.2; 1.25.4;
Fix a problem where the kernel could randomly reset due to a watchdog event.
When an exception happens, the srr0 (exception PC) was being saved in the
normal location of the current callframe. This was fine except when the
routine was in its prologue after it had saved LR but had not yet updated the
stack pointer or when the routine was in its epilogue after it has restored
the stack pointer but not yet loaded the LR. In either case this would cause
the LR to be corrupted (either running the routine forever or by branching
to itself forever). Now we save and restore the contents of that memory
location so the corruption can't happen.
 1.24  19-Feb-2012  rmind Remove COMPAT_SA / KERN_SA. Welcome to 6.99.3!
Approved by core@.
 1.23  20-Jun-2011  matt branches: 1.23.2; 1.23.6; 1.23.8;
Pad out trapframe for OEA so that trapframe has identical sizes for all
PPC variants.
 1.22  18-Jan-2011  matt branches: 1.22.4;
Add support for BookE Freescale MPC85xx (e500 core) processors.
Add fast softint support for PowerPC (though only booke uses it).
Redo FPU/VEC support and add e500 SPE support.
Rework trap/intrs to use a common trapframe format.
Support SOFTFLOAT (no hardfloat or fpu emulation) for BookE.
 1.21  27-Nov-2009  rmind branches: 1.21.4; 1.21.6;
- Use uvm_lwp_setuarea() instead of directly setting address to lwp_t::l_addr.
- Replace most remaining uses of l_addr with uvm_lwp_getuarea() or lwp_getpcb().
- Amend assembly in ports where it accesses PCB via struct user.
- Rename L_ADDR to L_PCB in few places. Reduce sys/user.h inclusions.
 1.20  16-Oct-2008  wrstuden branches: 1.20.16;
Bring back saframe. Noted by Robert Swindells.
 1.19  09-Feb-2007  ad branches: 1.19.44; 1.19.48; 1.19.54;
Merge newlock2 to head.
 1.18  11-Dec-2005  christos branches: 1.18.20;
merge ktrace-lwp.
 1.17  27-Aug-2003  matt branches: 1.17.16;
Move SFRAMELEN to frame.h and use it in vm_machdep.c. In setfunc, setup
callframe linkages correctly. Restore use of ldptr to locore_subr.S
[pthreads and gdb no longer crash/hang the system]
 1.16  12-Aug-2003  matt Cleanup/rework cpu_switch*, switch_exit, Idle routine. Remove pcb_psl
since it was write-only. When setting up a process, make sure the fake
callframes are properly linked together.

Only lower SPL when in Idle loop. Raise spl to previous level (which would
be IPL_SCHED) when exiting Idle loop. Never lower SPL anyplace else.
 1.15  31-Jul-2003  matt Change switchframe to use register_t (anything that uses stmX/lmX needs
to be defined as register_t).
 1.14  03-Feb-2003  matt branches: 1.14.2;
Don't use trapframe in sigcontext. Instead define a new structure
utrapframe that fixed in size (and the same size as the trapframe
in NetBSD 1.5). This preserves binary compatibility for those programs
that dealt looked at sigcontexts.
 1.13  02-Feb-2003  matt Perform a rototill of the powerpc code. Mandate use of SPRG0 to store
a pointer to current cpu's cpu_info structure. Use cpu_info for
intstk,intr_depth,still_stk,idle_pcb,curpcb,curlwp,etal even on
non-MULTIPROCESSOR machines. Add common macros GET_CPUINFO and
INIT_CPUINFO to get and initialize the cpu_info struct on startup. Make
ibm4xx use the standard <powerpc/frame.h>. Use IFRAME_xx in ibm4xx
trap_subr.S instead of explicit magic offsets. Move INTSTK and SPILLSTK
to std.<platform>. Change faultbuf to a struct instead of an array.

On MPC6XX cpus, stop using the vector page for temporary space and use
reserved space in cpu_info.
 1.12  22-Jan-2003  kleink MPC601 support bits:
* install 601-specific DSI and RUNMODETRC trap handlers
* save/restore MQ in trapframe, add MQ hooks to DDB
* extend battable to 512 entries to hold the 601's 8M translations
* instead of adding I/O to BAT starvation, set up segment registers
for Memory-Forced I/O Controller Interface Access
* sync after tlbie
 1.11  19-Jan-2003  matt Use CALLFRAMELEN instead of 16.
 1.10  19-Jan-2003  matt Add trapframe32 (for compat_netbsd32).
Add CALLFRAMELEN. (so we can remove many of the hard coded "16" or "15"
in the powerpc code).
 1.9  18-Jan-2003  thorpej Merge the nathanw_sa branch.
 1.8  03-Nov-2002  matt Change _MACHINE_foo_H_ to _POWERPC_foo_H_
 1.7  24-Jul-2002  chs rename the intr_depth field of struct intrframe to avoid a name conflict
in MULTIPROCESSOR builds.
 1.6  18-Jul-2002  matt Make sure that pmap_zero_page and pmap_copy_page don't make calls or
reference while relocation is disabled since the stack will be inaccessible.
Add support for using AltiVec in pmap_zero_page and pmap_copy_page on
AltiVec capable processors.
 1.5  05-Jul-2002  matt Peform a rototill over the powerpc-based ports.

Move the trap/vector initialization for MPC6xx ports to mpc6xx_machdep.c
Also move softnet, install_extintr, mapiodev, kvtop. Add common BAT
initialization code.

Add user Altivec support.

Fix calls to OF_call_method in macppc/macppc/machdep.c.

Use ci_fpuproc in cpu_info instead of separate fpuproc.

Add separate syscall.c and defined __HAVE_SYSCALL_INTERN.
 1.4  21-Apr-2002  kleink branches: 1.4.2;
Convert the spill stack frame to use symbolic offset names; inspired by
a conversation with Matt Thomas.
 1.3  18-Apr-2002  matt Use a common genassym.cf for all the PPC_MPC6XX ports. Add a makeoptions to
std.foo to indicate the directory to get genassym.cf from. Add an intrframe
to <powerpc/frame.h> and make trap_subr.S use symbolic offsets into it.
 1.2  10-Jan-1999  tsubai branches: 1.2.22; 1.2.26;
Fix void * arithmetic.
 1.1  30-Sep-1996  ws PowerPC port
 1.2.26.6  11-Nov-2002  nathanw Catch up to -current
 1.2.26.5  01-Aug-2002  nathanw Catch up to -current.
 1.2.26.4  03-Jul-2002  nathanw Whitespace.
 1.2.26.3  20-Jun-2002  nathanw Catch up to -current.
 1.2.26.2  13-Nov-2001  briggs Improve upcall to better work with libpthread.
 1.2.26.1  05-Nov-2001  briggs Initial SA support for ppc. Test-booted on sandpoint, macppc, & walnut.
mcontext and cpu_getmcontext()/cpu_setmcontext() from Klaus Klein
<kleink@netbsd.org>.
 1.2.22.2  06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.2.22.1  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.4.2.3  31-Aug-2002  gehenna catch up with -current.
 1.4.2.2  21-Jul-2002  gehenna catch up with -current.
 1.4.2.1  16-Jul-2002  gehenna catch up with -current.
 1.14.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.14.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.14.2.1  03-Aug-2004  skrll Sync with HEAD
 1.17.16.1  26-Feb-2007  yamt sync with head.
 1.18.20.1  01-Feb-2007  ad Header file cleanup.
 1.19.54.1  19-Oct-2008  haad Sync with HEAD.
 1.19.48.2  11-Mar-2010  yamt sync with head
 1.19.48.1  04-May-2009  yamt sync with head.
 1.19.44.1  17-Jan-2009  mjf Sync with HEAD.
 1.20.16.2  17-Jan-2011  matt Add SPE (signal processing engine) support for mpc85xx/booke. Think of it
as AltiVec-lite (really lite). Genercize AltiVec support so that it could
the same interface could support SPE as well. Rework the FPU support along
the same lines. Move the __asm() to their own XXX_subr.S (altivec, fpu, spe).
 1.20.16.1  07-Jan-2011  matt intrframe is dead. Just use a partially filled trapframe.
Add a ktrapframe which include the cf_sp/cf_lr of the callframe in addition
to the trapframe. This allows the FRAME_XX+8 to just be FRAME_XX.
Cleanup and simplify.
 1.21.6.1  06-Jun-2011  jruoho Sync with HEAD.
 1.21.4.1  05-Mar-2011  rmind sync with head
 1.22.4.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.23.8.1  09-Aug-2012  jdc Pull up revisions:
src/sys/arch/powerpc/booke/genassym.cf revision 1.9
src/sys/arch/powerpc/booke/trap_subr.S revision 1.8
src/sys/arch/powerpc/include/frame.h revision 1.25
(requested by matt in ticket #461).

Fix a problem where the kernel could randomly reset due to a watchdog event.
When an exception happens, the srr0 (exception PC) was being saved in the
normal location of the current callframe. This was fine except when the
routine was in its prologue after it had saved LR but had not yet updated the
stack pointer or when the routine was in its epilogue after it has restored
the stack pointer but not yet loaded the LR. In either case this would cause
the LR to be corrupted (either running the routine forever or by branching
to itself forever). Now we save and restore the contents of that memory
location so the corruption can't happen.
 1.23.6.1  24-Feb-2012  mrg sync to -current.
 1.23.2.3  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.23.2.2  30-Oct-2012  yamt sync with head
 1.23.2.1  17-Apr-2012  yamt sync with head
 1.25.4.1  18-May-2014  rmind sync with head
 1.25.2.2  03-Dec-2017  jdolecek update from HEAD
 1.25.2.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.26.6.1  19-Mar-2016  skrll Sync with HEAD

RSS XML Feed