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

Annotation of sys/arch/m68k/include/frame.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: frame.h,v 1.8 2003/11/16 20:30:06 avsm Exp $  */
        !             2: /*     $NetBSD: frame.h,v 1.15 1997/05/03 12:49:05 mycroft Exp $       */
        !             3:
        !             4: /*
        !             5:  * Copyright (c) 1988 University of Utah.
        !             6:  * Copyright (c) 1982, 1990, 1993
        !             7:  *     The Regents of the University of California.  All rights reserved.
        !             8:  *
        !             9:  * This code is derived from software contributed to Berkeley by
        !            10:  * the Systems Programming Group of the University of Utah Computer
        !            11:  * Science Department.
        !            12:  *
        !            13:  * Redistribution and use in source and binary forms, with or without
        !            14:  * modification, are permitted provided that the following conditions
        !            15:  * are met:
        !            16:  * 1. Redistributions of source code must retain the above copyright
        !            17:  *    notice, this list of conditions and the following disclaimer.
        !            18:  * 2. Redistributions in binary form must reproduce the above copyright
        !            19:  *    notice, this list of conditions and the following disclaimer in the
        !            20:  *    documentation and/or other materials provided with the distribution.
        !            21:  * 3. Neither the name of the University nor the names of its contributors
        !            22:  *    may be used to endorse or promote products derived from this software
        !            23:  *    without specific prior written permission.
        !            24:  *
        !            25:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
        !            26:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            27:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            28:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
        !            29:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            30:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            31:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            32:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            33:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            34:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            35:  * SUCH DAMAGE.
        !            36:  *
        !            37:  * from: Utah $Hdr: frame.h 1.8 92/12/20$
        !            38:  *
        !            39:  *     @(#)frame.h     8.1 (Berkeley) 6/10/93
        !            40:  */
        !            41:
        !            42: #ifndef        _M68K_FRAME_H_
        !            43: #define        _M68K_FRAME_H_
        !            44:
        !            45: struct frame {
        !            46:        struct trapframe {
        !            47:                int     tf_regs[16];
        !            48:                short   tf_pad;
        !            49:                short   tf_stackadj;
        !            50:                u_short tf_sr;
        !            51:                u_int   tf_pc;
        !            52:                u_short tf_format:4,
        !            53:                        tf_vector:12;
        !            54:        } __packed F_t;
        !            55:        union F_u {
        !            56:                struct fmt2 {
        !            57:                        u_int   f_iaddr;
        !            58:                } F_fmt2;
        !            59:
        !            60:                struct fmt3 {
        !            61:                        u_int   f_ea;
        !            62:                } F_fmt3;
        !            63:
        !            64:                struct fmt4 {
        !            65:                        u_int   f_fa;
        !            66:                        u_int   f_fslw;
        !            67:                        /* for 060FP type 4 FP disabled frames: */
        !            68: #define                f_fea   f_fa
        !            69: #define                f_pcfi  f_fslw
        !            70:                } F_fmt4;
        !            71:
        !            72:                struct fmt7 {
        !            73:                        u_int   f_ea;
        !            74:                        u_short f_ssw;
        !            75:                        u_short f_wb3s, f_wb2s, f_wb1s;
        !            76:                        u_int   f_fa;
        !            77:                        u_int   f_wb3a, f_wb3d;
        !            78:                        u_int   f_wb2a, f_wb2d;
        !            79:                        u_int   f_wb1a, f_wb1d;
        !            80: #define                                f_pd0 f_wb1d
        !            81:                        u_int   f_pd1, f_pd2, f_pd3;
        !            82:                } F_fmt7;
        !            83:
        !            84:                struct fmt9 {
        !            85:                        u_int   f_iaddr;
        !            86:                        u_short f_iregs[4];
        !            87:                } F_fmt9;
        !            88:
        !            89:                struct fmtA {
        !            90:                        u_short f_ir0;
        !            91:                        u_short f_ssw;
        !            92:                        u_short f_ipsc;
        !            93:                        u_short f_ipsb;
        !            94:                        u_int   f_dcfa;
        !            95:                        u_short f_ir1, f_ir2;
        !            96:                        u_int   f_dob;
        !            97:                        u_short f_ir3, f_ir4;
        !            98:                } F_fmtA;
        !            99:
        !           100:                struct fmtB {
        !           101:                        u_short f_ir0;
        !           102:                        u_short f_ssw;
        !           103:                        u_short f_ipsc;
        !           104:                        u_short f_ipsb;
        !           105:                        u_int   f_dcfa;
        !           106:                        u_short f_ir1, f_ir2;
        !           107:                        u_int   f_dob;
        !           108:                        u_short f_ir3, f_ir4;
        !           109:                        u_short f_ir5, f_ir6;
        !           110:                        u_int   f_sba;
        !           111:                        u_short f_ir7, f_ir8;
        !           112:                        u_int   f_dib;
        !           113:                        u_short f_iregs[22];
        !           114:                } F_fmtB;
        !           115:        } F_u;
        !           116: };
        !           117:
        !           118: #define        f_regs          F_t.tf_regs
        !           119: #define        f_pad           F_t.tf_pad
        !           120: #define        f_stackadj      F_t.tf_stackadj
        !           121: #define        f_sr            F_t.tf_sr
        !           122: #define        f_pc            F_t.tf_pc
        !           123: #define        f_format        F_t.tf_format
        !           124: #define        f_vector        F_t.tf_vector
        !           125: #define        f_fmt2          F_u.F_fmt2
        !           126: #define        f_fmt3          F_u.F_fmt3
        !           127: #define        f_fmt4          F_u.F_fmt4
        !           128: #define        f_fmt7          F_u.F_fmt7
        !           129: #define        f_fmt9          F_u.F_fmt9
        !           130: #define        f_fmtA          F_u.F_fmtA
        !           131: #define        f_fmtB          F_u.F_fmtB
        !           132:
        !           133: struct switchframe {
        !           134:        u_int   sf_pc;
        !           135: };
        !           136:
        !           137: /* common frame size */
        !           138: #define        CFSIZE          (sizeof(struct frame) - sizeof(union F_u))
        !           139: #define        NFMTSIZE        9
        !           140:
        !           141: #define        FMT0            0x0
        !           142: #define        FMT1            0x1
        !           143: #define        FMT2            0x2
        !           144: #define        FMT3            0x3
        !           145: #define        FMT4            0x4
        !           146: #define        FMT7            0x7
        !           147: #define        FMT9            0x9
        !           148: #define        FMTA            0xA
        !           149: #define        FMTB            0xB
        !           150:
        !           151: /* frame specific info sizes */
        !           152: #define        FMT0SIZE        0
        !           153: #define        FMT1SIZE        0
        !           154: #define        FMT2SIZE        sizeof(struct fmt2)
        !           155: #define        FMT3SIZE        sizeof(struct fmt3)
        !           156: #define        FMT4SIZE        sizeof(struct fmt4)
        !           157: #define        FMT7SIZE        sizeof(struct fmt7)
        !           158: #define        FMT9SIZE        sizeof(struct fmt9)
        !           159: #define        FMTASIZE        sizeof(struct fmtA)
        !           160: #define        FMTBSIZE        sizeof(struct fmtB)
        !           161:
        !           162: #define        V_BUSERR        0x008
        !           163: #define        V_ADDRERR       0x00C
        !           164: #define        V_TRAP1         0x084
        !           165:
        !           166: /* 68020/68030 SSW bits */
        !           167: #define        SSW_RC          0x2000
        !           168: #define        SSW_RB          0x1000
        !           169: #define        SSW_DF          0x0100
        !           170: #define        SSW_RM          0x0080
        !           171: #define        SSW_RW          0x0040
        !           172: #define        SSW_FCMASK      0x0007
        !           173:
        !           174: /* 68040 SSW bits */
        !           175: #define        SSW4_CP         0x8000
        !           176: #define        SSW4_CU         0x4000
        !           177: #define        SSW4_CT         0x2000
        !           178: #define        SSW4_CM         0x1000
        !           179: #define        SSW4_MA         0x0800
        !           180: #define        SSW4_ATC        0x0400
        !           181: #define        SSW4_LK         0x0200
        !           182: #define        SSW4_RW         0x0100
        !           183: #define SSW4_WBSV      0x0080  /* really in WB status, not SSW */
        !           184: #define        SSW4_SZMASK     0x0060
        !           185: #define        SSW4_SZLW       0x0000
        !           186: #define        SSW4_SZB        0x0020
        !           187: #define        SSW4_SZW        0x0040
        !           188: #define        SSW4_SZLN       0x0060
        !           189: #define        SSW4_TTMASK     0x0018
        !           190: #define        SSW4_TTNOR      0x0000
        !           191: #define        SSW4_TTM16      0x0008
        !           192: #define        SSW4_TMMASK     0x0007
        !           193: #define        SSW4_TMDCP      0x0000
        !           194: #define        SSW4_TMUD       0x0001
        !           195: #define        SSW4_TMUC       0x0002
        !           196: #define        SSW4_TMKD       0x0005
        !           197: #define        SSW4_TMKC       0x0006
        !           198:
        !           199: /* 060 Fault Status Long Word (FPSP) */
        !           200:
        !           201: #define FSLW_MA                0x08000000
        !           202: #define FSLW_LK                0x02000000
        !           203: #define FSLW_RW                0x01800000
        !           204:
        !           205: #define FSLW_RW_R      0x01000000
        !           206: #define FSLW_RW_W      0x00800000
        !           207:
        !           208: #define FSLW_SIZE      0x00600000
        !           209: /*
        !           210:  * We better define the FSLW_SIZE values here, as the table given in the
        !           211:  * MC68060UM/AD rev. 0/1 p. 8-23 is wrong, and was corrected in the errata
        !           212:  * document.
        !           213:  */
        !           214: #define FSLW_SIZE_LONG 0x00000000
        !           215: #define FSLW_SIZE_BYTE 0x00200000
        !           216: #define FSLW_SIZE_WORD 0x00400000
        !           217: #define FSLW_SIZE_MV16 0x00600000
        !           218:
        !           219: #define FLSW_TT                0x00180000
        !           220: #define FSLW_TM                0x00070000
        !           221: #define FSLW_TM_SV     0x00040000
        !           222:
        !           223:
        !           224:
        !           225: #define FSLW_IO                0x00008000
        !           226: #define FSLW_PBE       0x00004000
        !           227: #define FSLW_SBE       0x00002000
        !           228: #define FSLW_PTA       0x00001000
        !           229: #define FSLW_PTB       0x00000800
        !           230: #define FSLW_IL        0x00000400
        !           231: #define FSLW_PF        0x00000200
        !           232: #define FSLW_SP        0x00000100
        !           233: #define FSLW_WP        0x00000080
        !           234: #define FSLW_TWE       0x00000040
        !           235: #define FSLW_RE        0x00000020
        !           236: #define FSLW_WE        0x00000010
        !           237: #define FSLW_TTR       0x00000008
        !           238: #define FSLW_BPE       0x00000004
        !           239: #define FSLW_SEE       0x00000001
        !           240:
        !           241: struct fpframe {
        !           242:        union FPF_u1 {
        !           243:                u_int   FPF_null;
        !           244:                struct {
        !           245:                        u_char  FPF_version;
        !           246:                        u_char  FPF_fsize;
        !           247:                        u_short FPF_res1;
        !           248:                } FPF_nonnull;
        !           249:        } FPF_u1;
        !           250:        union FPF_u2 {
        !           251:                struct fpidle {
        !           252:                        u_short fpf_ccr;
        !           253:                        u_short fpf_res2;
        !           254:                        u_int   fpf_iregs1[8];
        !           255:                        u_int   fpf_xops[3];
        !           256:                        u_int   fpf_opreg;
        !           257:                        u_int   fpf_biu;
        !           258:                } FPF_idle;
        !           259:
        !           260:                struct fpbusy {
        !           261:                        u_int   fpf_iregs[53];
        !           262:                } FPF_busy;
        !           263:
        !           264:                struct fpunimp {
        !           265:                        u_int   fpf_state[10];
        !           266:                } FPF_unimp;
        !           267:        } FPF_u2;
        !           268:        u_int   fpf_regs[8*3];
        !           269:        u_int   fpf_fpcr;
        !           270:        u_int   fpf_fpsr;
        !           271:        u_int   fpf_fpiar;
        !           272: };
        !           273:
        !           274: #define fpf_null       FPF_u1.FPF_null
        !           275: #define fpf_version    FPF_u1.FPF_nonnull.FPF_version
        !           276: #define fpf_fsize      FPF_u1.FPF_nonnull.FPF_fsize
        !           277: #define fpf_res1       FPF_u1.FPF_nonnull.FPF_res1
        !           278: #define fpf_idle       FPF_u2.FPF_idle
        !           279: #define fpf_busy       FPF_u2.FPF_busy
        !           280: #define fpf_unimp      FPF_u2.FPF_unimp
        !           281:
        !           282: /*
        !           283:  * This is incompatible with the earlier one; expecially, an earlier frame
        !           284:  * must not be FRESTOREd on a 060 or vv, because a frame error exception is
        !           285:  * not guaranteed.
        !           286:  */
        !           287:
        !           288:
        !           289: struct fpframe060 {
        !           290:        u_short fpf6_excp_exp;
        !           291:        u_char  fpf6_frmfmt;
        !           292: #define FPF6_FMT_NULL  0x00
        !           293: #define FPF6_FMT_IDLE  0x60
        !           294: #define FPF6_FMT_EXCP  0xe0
        !           295:
        !           296:        u_char  fpf6_v;
        !           297: #define        FPF6_V_BSUN     0
        !           298: #define        FPF6_V_INEX12   1
        !           299: #define        FPF6_V_DZ       2
        !           300: #define        FPF6_V_UNFL     3
        !           301: #define        FPF6_V_OPERR    4
        !           302: #define        FPF6_V_OVFL     5
        !           303: #define        FPF6_V_SNAN     6
        !           304: #define        FPF6_V_UNSUP    7
        !           305:
        !           306:        u_long  fpf6_upper, fpf6_lower;
        !           307: };
        !           308:
        !           309: #endif /* _M68K_FRAME_H_ */

CVSweb