[BACK]Return to pcb.h CVS log [TXT][DIR] Up to [local] / sys / arch / arm / include

Annotation of sys/arch/arm/include/pcb.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: pcb.h,v 1.3 2006/05/27 20:36:05 miod Exp $    */
                      2: /*     $NetBSD: pcb.h,v 1.10 2003/10/13 21:46:39 scw Exp $     */
                      3:
                      4: /*
                      5:  * Copyright (c) 2001 Matt Thomas <matt@3am-software.com>.
                      6:  * Copyright (c) 1994 Mark Brinicombe.
                      7:  * All rights reserved.
                      8:  *
                      9:  * Redistribution and use in source and binary forms, with or without
                     10:  * modification, are permitted provided that the following conditions
                     11:  * are met:
                     12:  * 1. Redistributions of source code must retain the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer.
                     14:  * 2. Redistributions in binary form must reproduce the above copyright
                     15:  *    notice, this list of conditions and the following disclaimer in the
                     16:  *    documentation and/or other materials provided with the distribution.
                     17:  * 3. All advertising materials mentioning features or use of this software
                     18:  *    must display the following acknowledgement:
                     19:  *     This product includes software developed by the RiscBSD team.
                     20:  * 4. The name "RiscBSD" nor the name of the author may be used to
                     21:  *    endorse or promote products derived from this software without specific
                     22:  *    prior written permission.
                     23:  *
                     24:  * THIS SOFTWARE IS PROVIDED BY RISCBSD ``AS IS'' AND ANY EXPRESS OR IMPLIED
                     25:  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
                     26:  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     27:  * IN NO EVENT SHALL RISCBSD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
                     28:  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
                     29:  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
                     30:  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     31:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     32:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     33:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     34:  * SUCH DAMAGE.
                     35:  */
                     36:
                     37: #ifndef        _ARM_PCB_H_
                     38: #define        _ARM_PCB_H_
                     39:
                     40: #include <machine/frame.h>
                     41: #include <machine/fp.h>
                     42:
                     43: #include <arm/pte.h>
                     44:
                     45: struct trapframe;
                     46:
                     47: struct pcb_arm32 {
                     48:        paddr_t pcb32_pagedir;                  /* PT hooks */
                     49:        pd_entry_t *pcb32_pl1vec;               /* PTR to vector_base L1 entry*/
                     50:        pd_entry_t pcb32_l1vec;                 /* Value to stuff on ctx sw */
                     51:        u_int   pcb32_dacr;                     /* Domain Access Control Reg */
                     52:        void    *pcb32_cstate;                  /* &pmap->pm_cstate */
                     53:        /*
                     54:         * WARNING!
                     55:         * cpuswitch.S relies on pcb32_r8 being quad-aligned in struct pcb
                     56:         * (due to the use of "strd" when compiled for XSCALE)
                     57:         */
                     58:        u_int   pcb32_r8;                       /* used */
                     59:        u_int   pcb32_r9;                       /* used */
                     60:        u_int   pcb32_r10;                      /* used */
                     61:        u_int   pcb32_r11;                      /* used */
                     62:        u_int   pcb32_r12;                      /* used */
                     63:        u_int   pcb32_sp;                       /* used */
                     64:        u_int   pcb32_lr;
                     65:        u_int   pcb32_pc;
                     66:        u_int   pcb32_und_sp;
                     67: };
                     68: #define        pcb_pagedir     pcb_un.un_32.pcb32_pagedir
                     69: #define        pcb_pl1vec      pcb_un.un_32.pcb32_pl1vec
                     70: #define        pcb_l1vec       pcb_un.un_32.pcb32_l1vec
                     71: #define        pcb_dacr        pcb_un.un_32.pcb32_dacr
                     72: #define        pcb_cstate      pcb_un.un_32.pcb32_cstate
                     73:
                     74: struct pcb_arm26 {
                     75:        struct  switchframe *pcb26_sf;
                     76: };
                     77: #define        pcb_sf  pcb_un.un_26.pcb26_sf
                     78:
                     79: /*
                     80:  * WARNING!
                     81:  * See warning for struct pcb_arm32, above, before changing struct pcb!
                     82:  */
                     83: struct pcb {
                     84:        u_int   pcb_flags;
                     85: #define        PCB_OWNFPU      0x00000001
                     86:        struct  trapframe *pcb_tf;
                     87:        caddr_t pcb_onfault;                    /* On fault handler */
                     88:        union   {
                     89:                struct  pcb_arm32 un_32;
                     90:                struct  pcb_arm26 un_26;
                     91:        } pcb_un;
                     92:        struct  fpe_sp_state pcb_fpstate;       /* Floating Point state */
                     93: };
                     94: #define        pcb_ff  pcb_fpstate                     /* for arm26 */
                     95:
                     96: /*
                     97:  * No additional data for core dumps.
                     98:  */
                     99: struct md_coredump {
                    100:        int     md_empty;
                    101: };
                    102:
                    103: #ifdef _KERNEL
                    104: #ifdef MULTIPROCESSOR
                    105: #define curpcb (curcpu()->ci_curpcb)
                    106: #else
                    107: extern struct pcb *curpcb;
                    108: #endif
                    109: #endif /* _KERNEL */
                    110:
                    111: #endif /* _ARM_PCB_H_ */

CVSweb