84 строки
3.7 KiB
C
84 строки
3.7 KiB
C
|
/*
|
||
|
* sun4prom.h -- interface to sun4 PROM monitor. We don't use most of this,
|
||
|
* so most of these are just placeholders.
|
||
|
*/
|
||
|
|
||
|
#ifndef _SUN4PROM_H_
|
||
|
#define _SUN4PROM_H_
|
||
|
|
||
|
/*
|
||
|
* Although this looks similar to an romvec for a OpenProm machine, it is
|
||
|
* actually closer to what was used in the Sun2 and Sun3.
|
||
|
*
|
||
|
* V2 entries exist only in version 2 PROMs and later, V3 in version 3 and later.
|
||
|
*
|
||
|
* Many of the function prototypes are guesses. Some are certainly wrong.
|
||
|
* Use with care.
|
||
|
*/
|
||
|
|
||
|
typedef struct {
|
||
|
char *initSP; /* Initial system stack ptr */
|
||
|
void (*startmon)(void); /* Initial PC for hardware */
|
||
|
int *diagberr; /* Bus err handler for diags */
|
||
|
struct linux_arguments_v0 **bootParam; /* Info for bootstrapped pgm */
|
||
|
unsigned int *memorysize; /* Usable memory in bytes */
|
||
|
unsigned char (*getchar)(void); /* Get char from input device */
|
||
|
void (*putchar)(char); /* Put char to output device */
|
||
|
int (*mayget)(void); /* Maybe get char, or -1 */
|
||
|
int (*mayput)(int); /* Maybe put char, or -1 */
|
||
|
unsigned char *echo; /* Should getchar echo? */
|
||
|
unsigned char *insource; /* Input source selector */
|
||
|
unsigned char *outsink; /* Output sink selector */
|
||
|
int (*getkey)(void); /* Get next key if one exists */
|
||
|
void (*initgetkey)(void); /* Initialize get key */
|
||
|
unsigned int *translation; /* Kbd translation selector */
|
||
|
unsigned char *keybid; /* Keyboard ID byte */
|
||
|
int *screen_x; /* V2: Screen x pos (r/o) */
|
||
|
int *screen_y; /* V2: Screen y pos (r/o) */
|
||
|
struct keybuf *keybuf; /* Up/down keycode buffer */
|
||
|
char *monid; /* Monitor version ID */
|
||
|
void (*fbwritechar)(char); /* Write a character to FB */
|
||
|
int *fbAddr; /* Address of frame buffer */
|
||
|
char **font; /* Font table for FB */
|
||
|
void (*fbwritestr)(char *); /* Write string to FB */
|
||
|
void (*reboot)(char *); /* e.g. reboot("sd()vmlinux") */
|
||
|
unsigned char *linebuf; /* The line input buffer */
|
||
|
unsigned char **lineptr; /* Cur pointer into linebuf */
|
||
|
int *linesize; /* length of line in linebuf */
|
||
|
void (*getline)(char *); /* Get line from user */
|
||
|
unsigned char (*getnextchar)(void); /* Get next char from linebuf */
|
||
|
unsigned char (*peeknextchar)(void); /* Peek at next char */
|
||
|
int *fbthere; /* =1 if frame buffer there */
|
||
|
int (*getnum)(void); /* Grab hex num from line */
|
||
|
int (*printf)(char *, ...); /* See prom_printf() instead */
|
||
|
void (*printhex)(int); /* Format N digits in hex */
|
||
|
unsigned char *leds; /* RAM copy of LED register */
|
||
|
void (*setLEDs)(unsigned char *); /* Sets LED's and RAM copy */
|
||
|
void (*NMIaddr)(void *); /* Addr for level 7 vector */
|
||
|
void (*abortentry)(void); /* Entry for keyboard abort */
|
||
|
int *nmiclock; /* Counts up in msec */
|
||
|
int *FBtype; /* Frame buffer type */
|
||
|
unsigned int romvecversion; /* Version number for this romvec */
|
||
|
struct globram *globram; /* monitor global variables ??? */
|
||
|
void * kbdaddr; /* Addr of keyboard in use */
|
||
|
int *keyrinit; /* ms before kbd repeat */
|
||
|
unsigned char *keyrtick; /* ms between repetitions */
|
||
|
unsigned int *memoryavail; /* V1: Main mem usable size */
|
||
|
long *resetaddr; /* where to jump on a reset */
|
||
|
long *resetmap; /* pgmap entry for resetaddr */
|
||
|
void (*exittomon)(void); /* Exit from user program */
|
||
|
unsigned char **memorybitmap; /* V1: &{0 or &bits} */
|
||
|
void (*setcxsegmap)(int ctxt, char *va, int pmeg); /* Set seg in any context */
|
||
|
void (**vector_cmd)(void *); /* V2: Handler for 'v' cmd */
|
||
|
unsigned long *expectedtrapsig; /* V3: Location of the expected trap signal */
|
||
|
unsigned long *trapvectorbasetable; /* V3: Address of the trap vector table */
|
||
|
int unused1;
|
||
|
int unused2;
|
||
|
int unused3;
|
||
|
int unused4;
|
||
|
} linux_sun4_romvec;
|
||
|
|
||
|
extern linux_sun4_romvec *sun4_romvec;
|
||
|
|
||
|
#endif /* _SUN4PROM_H_ */
|