date and time created 92/07/13 00:43:00 by torek
authorChris Torek <torek@ucbvax.Berkeley.EDU>
Mon, 13 Jul 1992 15:43:00 +0000 (07:43 -0800)
committerChris Torek <torek@ucbvax.Berkeley.EDU>
Mon, 13 Jul 1992 15:43:00 +0000 (07:43 -0800)
SCCS-vsn: sys/sparc/include/exec.h 7.1
SCCS-vsn: sys/sparc/include/fbvar.h 7.1

usr/src/sys/sparc/include/exec.h [new file with mode: 0644]
usr/src/sys/sparc/include/fbvar.h [new file with mode: 0644]

diff --git a/usr/src/sys/sparc/include/exec.h b/usr/src/sys/sparc/include/exec.h
new file mode 100644 (file)
index 0000000..36b6ca6
--- /dev/null
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 1992 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This software was developed by the Computer Systems Engineering group
+ * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
+ * contributed to Berkeley.
+ *
+ * %sccs.include.redist.c%
+ *
+ *     @(#)exec.h      7.1 (Berkeley) %G%
+ *
+ * from: $Header: exec.h,v 1.7 92/07/01 23:51:32 torek Exp $
+ */
+
+/*
+ * __LDPGSZ is the page size used by the linker and by exec().
+ * It may be some multiple of the ``normal'' page size, so that, e.g.,
+ * the same binaries can be run on hardware with different page sizes
+ * that otherwise use the same instruction set.  It must be no larger
+ * than CLBYTES (in param.h).
+ */
+#define        __LDPGSZ        8192
+
+/* Valid magic number check. */
+#define        N_BADMAG(ex) \
+       ((ex).a_magic != ZMAGIC && (ex).a_magic != NMAGIC && \
+           (ex).a_magic != OMAGIC)
+
+/*
+ * N_TXTADDR is the address of the first executable instruction: that is,
+ * the place the pc could begin after an a.out is loaded, in order to run
+ * the instructions in that a.out.  The pc will actually be set to ex.a_entry
+ * but this is the first place it could possibly reference.
+ *
+ * On the SPARC, binaries begin at __LDPGSZ, i.e., page 1.
+ */
+#define N_TXTADDR(ex)  8192
+
+/* Address of the bottom of the data segment. */
+#define N_DATADDR(ex) \
+       (N_TXTADDR(ex) + ((ex).a_magic == OMAGIC ? (ex).a_text \
+       : __LDPGSZ + ((ex).a_text - 1 & ~(__LDPGSZ - 1))))
+
+/*
+ * N_TXTOFF is the offset within an a.out file of the first executable
+ * instruction: that is, the offset in the a.out of the byte that winds
+ * up at N_TXTADDR.
+ *
+ * On the SPARC, the a.out header is included in the executable when running
+ * a ZMAGIC file (but not for OMAGIC and NMAGIC).
+ */
+#define        N_TXTOFF(ex)    ((ex).a_magic == ZMAGIC ? 0 : sizeof(struct exec))
+
+/* Data segment offset. */
+#define        N_DATOFF(ex) \
+       (N_TXTOFF(ex) + ((ex).a_magic != ZMAGIC ? (ex).a_text : \
+       __LDPGSZ + ((ex).a_text - 1 & ~(__LDPGSZ - 1))))
+
+/* Symbol table offset. */
+#define N_SYMOFF(ex) \
+       (N_TXTOFF(ex) + (ex).a_text + (ex).a_data + (ex).a_trsize + \
+           (ex).a_drsize)
+
+/* String table offset. */
+#define        N_STROFF(ex)    (N_SYMOFF(ex) + (ex).a_syms)
+
+/* Description of the object file header (a.out format). */
+struct exec {
+       u_char  a_dynamic:1;    /* dynamically linked */
+       u_char  a_toolversion:7;/* Sun toolset version  XXX */
+
+#define        MID_ZERO        0       /* unknown - implementation dependent */
+#define        MID_SUN010      1       /* sun 68010/68020 binary */
+#define        MID_SUN020      2       /* sun 68020-only binary */
+#define        MID_SUN_SPARC   3       /* sparc binary */
+#define        MID_HP200       200     /* hp200 (68010) BSD binary */
+#define        MID_HP300       300     /* hp300 (68020+68881) BSD binary */
+#define        MID_HPUX        0x20C   /* hp200/300 HP-UX binary */
+#define        MID_HPUX800     0x20B   /* hp800 HP-UX binary */
+       u_char  a_mid;          /* machine ID */
+
+#define        OMAGIC  0407            /* old impure format */
+#define        NMAGIC  0410            /* read-only text */
+#define        ZMAGIC  0413            /* demand load format */
+       u_short a_magic;        /* magic number */
+
+       u_long  a_text;         /* text segment size */
+       u_long  a_data;         /* initialized data size */
+       u_long  a_bss;          /* uninitialized data size */
+       u_long  a_syms;         /* symbol table size */
+       u_long  a_entry;        /* entry point */
+       u_long  a_trsize;       /* text relocation size */
+       u_long  a_drsize;       /* data relocation size */
+};
+#define        a_machtype      a_mid   /* SUN compatibility */
diff --git a/usr/src/sys/sparc/include/fbvar.h b/usr/src/sys/sparc/include/fbvar.h
new file mode 100644 (file)
index 0000000..2a62d13
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 1992 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This software was developed by the Computer Systems Engineering group
+ * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
+ * contributed to Berkeley.
+ *
+ * %sccs.include.redist.c%
+ *
+ *     @(#)fbvar.h     7.1 (Berkeley) %G%
+ *
+ * from: $Header: fbvar.h,v 1.14 92/06/17 06:10:16 torek Exp $
+ */
+
+/*
+ * Frame buffer variables.  All frame buffer drivers must provide the
+ * following in order to participate.
+ */
+struct fbdriver {
+       /* device unblank function (force kernel output to display) */
+       void    (*fbd_unblank)(struct device *);
+#ifdef notyet
+       void    (*fbd_wrrop)();         /* `write region' rasterop */
+       void    (*fbd_cprop)();         /* `copy region' rasterop */
+       void    (*fbd_clrop)();         /* `clear region' rasterop */
+#endif
+};
+
+struct fbdevice {
+       int     fb_major;               /* XXX */
+       struct  fbtype fb_type;         /* what it says */
+       caddr_t fb_pixels;              /* display RAM */
+       int     fb_linebytes;           /* bytes per display line */
+
+       struct  fbdriver *fb_driver;    /* pointer to driver */
+       struct  device *fb_device;      /* parameter for fbd_unblank */
+
+       /* Raster console emulator state */
+       u_int   fb_bits;                /* see defines below */
+       int     fb_ringing;             /* bell currently ringing */
+       int     fb_belldepth;           /* audible bell depth */
+       int     fb_scroll;              /* stupid sun scroll mode */
+
+       int     fb_p0;                  /* escape sequence parameter 0 */
+       int     fb_p1;                  /* escape sequence parameter 1 */
+
+       int     *fb_row;                /* emulator row */
+       int     *fb_col;                /* emulator column */
+
+       int     fb_maxrow;              /* emulator height of screen */
+       int     fb_maxcol;              /* emulator width of screen */
+
+       int     fb_emuwidth;            /* emulator screen width  */
+       int     fb_emuheight;           /* emulator screen height */
+
+       int     fb_xorigin;             /* x origin for first column */
+       int     fb_yorigin;             /* y origin for first row */
+
+       struct  raster *fb_sp;          /* frame buffer raster */
+       struct  raster *fb_cursor;      /* optional cursor */
+       int     fb_ras_blank;           /* current screen blank raster op */
+
+       struct  raster_font *fb_font;   /* font and related info */
+       int     fb_font_ascent;         /* distance from font to char origin */
+};
+
+#define FB_INESC       0x001           /* processing an escape sequence */
+#define FB_STANDOUT    0x002           /* standout mode */
+/* #define FB_BOLD     0x?             /* boldface mode */
+#define FB_INVERT      0x008           /* white on black mode */
+#define FB_VISBELL     0x010           /* visual bell */
+#define FB_CURSOR      0x020           /* cursor is visible */
+#define FB_P0_DEFAULT  0x100           /* param 0 is defaulted */
+#define FB_P1_DEFAULT  0x200           /* param 1 is defaulted */
+#define FB_P0          0x400           /* working on param 0 */
+#define FB_P1          0x800           /* working on param 1 */
+
+void   fbattach __P((struct fbdevice *));