1*41474Smckusick /* 2*41474Smckusick * Copyright (c) 1988 University of Utah. 3*41474Smckusick * Copyright (c) 1982, 1990 The Regents of the University of California. 4*41474Smckusick * All rights reserved. 5*41474Smckusick * 6*41474Smckusick * This code is derived from software contributed to Berkeley by 7*41474Smckusick * the Systems Programming Group of the University of Utah Computer 8*41474Smckusick * Science Department. 9*41474Smckusick * 10*41474Smckusick * %sccs.include.redist.c% 11*41474Smckusick * 12*41474Smckusick * from: Utah $Hdr: frame.h 1.6 89/02/24$ 13*41474Smckusick * 14*41474Smckusick * @(#)frame.h 7.1 (Berkeley) 05/08/90 15*41474Smckusick */ 16*41474Smckusick 17*41474Smckusick struct frame { 18*41474Smckusick int f_regs[16]; 19*41474Smckusick short f_stackadj; 20*41474Smckusick u_short f_sr; 21*41474Smckusick u_int f_pc; 22*41474Smckusick u_short f_format:4, 23*41474Smckusick f_vector:12; 24*41474Smckusick union F_u { 25*41474Smckusick struct fmt2 { 26*41474Smckusick u_int f_iaddr; 27*41474Smckusick } F_fmt2; 28*41474Smckusick 29*41474Smckusick struct fmt9 { 30*41474Smckusick u_int f_iaddr; 31*41474Smckusick u_short f_iregs[4]; 32*41474Smckusick } F_fmt9; 33*41474Smckusick 34*41474Smckusick struct fmtA { 35*41474Smckusick u_short f_ir0; 36*41474Smckusick u_short f_ssw; 37*41474Smckusick u_short f_ipsc; 38*41474Smckusick u_short f_ipsb; 39*41474Smckusick u_int f_dcfa; 40*41474Smckusick u_short f_ir1, f_ir2; 41*41474Smckusick u_int f_dob; 42*41474Smckusick u_short f_ir3, f_ir4; 43*41474Smckusick } F_fmtA; 44*41474Smckusick 45*41474Smckusick struct fmtB { 46*41474Smckusick u_short f_ir0; 47*41474Smckusick u_short f_ssw; 48*41474Smckusick u_short f_ipsc; 49*41474Smckusick u_short f_ipsb; 50*41474Smckusick u_int f_dcfa; 51*41474Smckusick u_short f_ir1, f_ir2; 52*41474Smckusick u_int f_dob; 53*41474Smckusick u_short f_ir3, f_ir4; 54*41474Smckusick u_short f_ir5, f_ir6; 55*41474Smckusick u_int f_sba; 56*41474Smckusick u_short f_ir7, f_ir8; 57*41474Smckusick u_int f_dib; 58*41474Smckusick u_short f_iregs[22]; 59*41474Smckusick } F_fmtB; 60*41474Smckusick } F_u; 61*41474Smckusick }; 62*41474Smckusick 63*41474Smckusick #define f_fmt2 F_u.F_fmt2 64*41474Smckusick #define f_fmtA F_u.F_fmtA 65*41474Smckusick #define f_fmtB F_u.F_fmtB 66*41474Smckusick 67*41474Smckusick /* common frame size */ 68*41474Smckusick #define CFSIZE (sizeof(struct frame) - sizeof(union F_u)) 69*41474Smckusick #define NFMTSIZE 8 70*41474Smckusick 71*41474Smckusick #define FMT0 0x0 72*41474Smckusick #define FMT1 0x1 73*41474Smckusick #define FMT2 0x2 74*41474Smckusick #define FMT9 0x9 75*41474Smckusick #define FMTA 0xA 76*41474Smckusick #define FMTB 0xB 77*41474Smckusick 78*41474Smckusick /* frame specific info sizes */ 79*41474Smckusick #define FMT0SIZE 0 80*41474Smckusick #define FMT1SIZE 0 81*41474Smckusick #define FMT2SIZE sizeof(struct fmt2) 82*41474Smckusick #define FMT9SIZE sizeof(struct fmt9) 83*41474Smckusick #define FMTASIZE sizeof(struct fmtA) 84*41474Smckusick #define FMTBSIZE sizeof(struct fmtB) 85*41474Smckusick 86*41474Smckusick #define V_BUSERR 0x008 87*41474Smckusick #define V_ADDRERR 0x00C 88*41474Smckusick #define V_TRAP1 0x084 89*41474Smckusick 90*41474Smckusick #define SSW_RC 0x2000 91*41474Smckusick #define SSW_RB 0x1000 92*41474Smckusick #define SSW_DF 0x0100 93*41474Smckusick #define SSW_RM 0x0080 94*41474Smckusick #define SSW_RW 0x0040 95*41474Smckusick #define SSW_FCMASK 0x0007 96*41474Smckusick 97*41474Smckusick struct fpframe { 98*41474Smckusick union FPF_u1 { 99*41474Smckusick u_int FPF_null; 100*41474Smckusick struct { 101*41474Smckusick u_char FPF_version; 102*41474Smckusick u_char FPF_fsize; 103*41474Smckusick u_short FPF_res1; 104*41474Smckusick } FPF_nonnull; 105*41474Smckusick } FPF_u1; 106*41474Smckusick union FPF_u2 { 107*41474Smckusick struct fpidle { 108*41474Smckusick u_short fpf_ccr; 109*41474Smckusick u_short fpf_res2; 110*41474Smckusick u_int fpf_iregs1[8]; 111*41474Smckusick u_int fpf_xops[3]; 112*41474Smckusick u_int fpf_opreg; 113*41474Smckusick u_int fpf_biu; 114*41474Smckusick } FPF_idle; 115*41474Smckusick 116*41474Smckusick struct fpbusy { 117*41474Smckusick u_int fpf_iregs[53]; 118*41474Smckusick } FPF_busy; 119*41474Smckusick } FPF_u2; 120*41474Smckusick u_int fpf_regs[8*3]; 121*41474Smckusick u_int fpf_fpcr; 122*41474Smckusick u_int fpf_fpsr; 123*41474Smckusick u_int fpf_fpiar; 124*41474Smckusick }; 125*41474Smckusick 126*41474Smckusick #define fpf_null FPF_u1.FPF_null 127*41474Smckusick #define fpf_version FPF_u1.FPF_nonnull.FPF_version 128*41474Smckusick #define fpf_fsize FPF_u1.FPF_nonnull.FPF_fsize 129*41474Smckusick #define fpf_res1 FPF_u1.FPF_nonnull.FPF_res1 130*41474Smckusick #define fpf_idle FPF_u2.FPF_idle 131*41474Smckusick #define fpf_busy FPF_u2.FPF_busy 132