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

Annotation of sys/arch/vax/include/scb.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: scb.h,v 1.9 2007/04/10 18:31:44 miod Exp $    */
        !             2: /*     $NetBSD: scb.h,v 1.11 2000/07/10 09:14:34 ragge Exp $   */
        !             3:
        !             4: /*
        !             5:  * Copyright (c) 1994 Ludd, University of Lule}, Sweden.
        !             6:  * All rights reserved.
        !             7:  *
        !             8:  * Redistribution and use in source and binary forms, with or without
        !             9:  * modification, are permitted provided that the following conditions
        !            10:  * are met:
        !            11:  * 1. Redistributions of source code must retain the above copyright
        !            12:  *    notice, this list of conditions and the following disclaimer.
        !            13:  * 2. Redistributions in binary form must reproduce the above copyright
        !            14:  *    notice, this list of conditions and the following disclaimer in the
        !            15:  *    documentation and/or other materials provided with the distribution.
        !            16:  * 3. All advertising materials mentioning features or use of this software
        !            17:  *    must display the following acknowledgement:
        !            18:  *     This product includes software developed at Ludd, University of Lule}.
        !            19:  * 4. The name of the author may not be used to endorse or promote products
        !            20:  *    derived from this software without specific prior written permission
        !            21:  *
        !            22:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
        !            23:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        !            24:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
        !            25:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
        !            26:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
        !            27:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
        !            28:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
        !            29:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
        !            30:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
        !            31:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        !            32:  */
        !            33: #ifndef _VAX_SCB_H
        !            34: #define        _VAX_SCB_H
        !            35:
        !            36: /*
        !            37:  * Definition of the System Control Block. More about it can be
        !            38:  * found in the Vax Architecture Reference Manual, section 6.6.
        !            39:  */
        !            40: struct scb {
        !            41:        void    *scb_unused;    /* First unused vector */
        !            42:        void    *scb_mcheck;
        !            43:        void    *scb_kspinv;
        !            44:        void    *scb_powfail;
        !            45:        void    *scb_privinst;  /* 10 Privileged Instruction fault */
        !            46:        void    *scb_xfcinst;
        !            47:        void    *scb_resop;
        !            48:        void    *scb_resad;
        !            49:        void    *scb_accessv;   /* 20 Access Control violation fault */
        !            50:        void    *scb_transinv;
        !            51:        void    *scb_trace;
        !            52:        void    *scb_breakp;
        !            53:        void    *scb_compat;    /* 30 Compatibility instruction fault */
        !            54:        void    *scb_arith;
        !            55:        void    *scb_unused1;
        !            56:        void    *scb_unused2;
        !            57:        void    *scb_chmk;      /* 40 CHMK */
        !            58:        void    *scb_chme;
        !            59:        void    *scb_chms;
        !            60:        void    *scb_chmu;
        !            61:        void    *scb_sbisilo;   /* 50 SBI Silo compare */
        !            62:        void    *scb_cmrd;
        !            63:        void    *scb_sbialert;
        !            64:        void    *scb_sbifault;
        !            65:        void    *scb_memwtimo;  /* 60 Memory write timeout */
        !            66:        void    *scb_unused3;
        !            67:        void    *scb_unused4;
        !            68:        void    *scb_unused5;
        !            69:        void    *scb_unused6;   /* 70 unused */
        !            70:        void    *scb_unused7;
        !            71:        void    *scb_unused8;
        !            72:        void    *scb_unused9;
        !            73:        void    *scb_unused10;  /* 80 unused */
        !            74:        void    *scb_softint1;
        !            75:        void    *scb_softint2;
        !            76:        void    *scb_softint3;
        !            77:        void    *scb_softint4;  /* 90 Software interrupt level 4 */
        !            78:        void    *scb_softint5;
        !            79:        void    *scb_softint6;
        !            80:        void    *scb_softint7;
        !            81:        void    *scb_softint8;  /* A0 Software interrupt level 8 */
        !            82:        void    *scb_softint9;
        !            83:        void    *scb_softinta;
        !            84:        void    *scb_softintb;
        !            85:        void    *scb_softintc;  /* B0 Software interrupt level C */
        !            86:        void    *scb_softintd;
        !            87:        void    *scb_softinte;
        !            88:        void    *scb_softintf;
        !            89:        void    *scb_timer;     /* C0 Interval timer */
        !            90:        void    *scb_unused11;
        !            91:        void    *scb_unused12;
        !            92:        void    *scb_unused13;
        !            93:        void    *scb_unused14;  /* D0 Unused */
        !            94:        void    *scb_unused15;
        !            95:        void    *scb_unused16;
        !            96:        void    *scb_unused17;
        !            97:        void    *scb_unused18;  /* E0 Unused */
        !            98:        void    *scb_unused19;
        !            99:        void    *scb_unused20;
        !           100:        void    *scb_unused21;
        !           101:        void    *scb_csrint;
        !           102:        void    *scb_cstint;    /* F0 Console storage transmit interrupt */
        !           103:        void    *scb_ctrint;
        !           104:        void    *scb_cttint;
        !           105:        struct  ivec_dsp *scb_nexvec[4][16];    /* Nexus interrupt vectors */
        !           106: };
        !           107:
        !           108: #define        SCB_KSTACK      0
        !           109: #define        SCB_ISTACK      1
        !           110:
        !           111: #define vecnum(bus, ipl, tr) (256+(ipl-0x14)*64+tr*4+bus*256)
        !           112:
        !           113: /*
        !           114:  * This struct is used when setting up interrupt vectors dynamically.
        !           115:  * It puts a opaque 32 bit quantity on the stack and also has a placeholder
        !           116:  * for evcount structure.
        !           117:  */
        !           118: struct ivec_dsp {
        !           119:        char    pushr;          /* pushr */
        !           120:        char    pushrarg;       /* $0x3f */
        !           121:        char    jsb;
        !           122:        char    mode;
        !           123:        long    displacement;
        !           124:        void    (*hoppaddr)(void *);
        !           125:        void    *pushlarg;
        !           126:        struct  evcount *ev;
        !           127: };
        !           128:
        !           129: #ifdef _KERNEL
        !           130: extern const struct ivec_dsp idsptch;
        !           131: extern struct scb *scb;
        !           132: extern struct ivec_dsp *scb_vec;
        !           133:
        !           134: extern paddr_t scb_init (paddr_t);
        !           135: extern int scb_vecref (int *, int *);
        !           136: extern void scb_fake (int, int);
        !           137: extern void scb_vecalloc (int, void(*)(void *), void *, int, struct evcount *);
        !           138: #endif /* _KERNEL */
        !           139:
        !           140: #endif /* _VAX_SCB_H */

CVSweb