| /* | |
| * 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_ */ |