2 * sun4prom.h -- interface to sun4 PROM monitor. We don't use most of this,
3 * so most of these are just placeholders.
10 * Although this looks similar to an romvec for a OpenProm machine, it is
11 * actually closer to what was used in the Sun2 and Sun3.
13 * V2 entries exist only in version 2 PROMs and later, V3 in version 3 and later.
15 * Many of the function prototypes are guesses. Some are certainly wrong.
20 char *initSP
; /* Initial system stack ptr */
21 void (*startmon
)(void); /* Initial PC for hardware */
22 int *diagberr
; /* Bus err handler for diags */
23 struct linux_arguments_v0
**bootParam
; /* Info for bootstrapped pgm */
24 unsigned int *memorysize
; /* Usable memory in bytes */
25 unsigned char (*getchar
)(void); /* Get char from input device */
26 void (*putchar
)(char); /* Put char to output device */
27 int (*mayget
)(void); /* Maybe get char, or -1 */
28 int (*mayput
)(int); /* Maybe put char, or -1 */
29 unsigned char *echo
; /* Should getchar echo? */
30 unsigned char *insource
; /* Input source selector */
31 unsigned char *outsink
; /* Output sink selector */
32 int (*getkey
)(void); /* Get next key if one exists */
33 void (*initgetkey
)(void); /* Initialize get key */
34 unsigned int *translation
; /* Kbd translation selector */
35 unsigned char *keybid
; /* Keyboard ID byte */
36 int *screen_x
; /* V2: Screen x pos (r/o) */
37 int *screen_y
; /* V2: Screen y pos (r/o) */
38 struct keybuf
*keybuf
; /* Up/down keycode buffer */
39 char *monid
; /* Monitor version ID */
40 void (*fbwritechar
)(char); /* Write a character to FB */
41 int *fbAddr
; /* Address of frame buffer */
42 char **font
; /* Font table for FB */
43 void (*fbwritestr
)(char *); /* Write string to FB */
44 void (*reboot
)(char *); /* e.g. reboot("sd()vmlinux") */
45 unsigned char *linebuf
; /* The line input buffer */
46 unsigned char **lineptr
; /* Cur pointer into linebuf */
47 int *linesize
; /* length of line in linebuf */
48 void (*getline
)(char *); /* Get line from user */
49 unsigned char (*getnextchar
)(void); /* Get next char from linebuf */
50 unsigned char (*peeknextchar
)(void); /* Peek at next char */
51 int *fbthere
; /* =1 if frame buffer there */
52 int (*getnum
)(void); /* Grab hex num from line */
53 int (*printf
)(char *, ...); /* See prom_printf() instead */
54 void (*printhex
)(int); /* Format N digits in hex */
55 unsigned char *leds
; /* RAM copy of LED register */
56 void (*setLEDs
)(unsigned char *); /* Sets LED's and RAM copy */
57 void (*NMIaddr
)(void *); /* Addr for level 7 vector */
58 void (*abortentry
)(void); /* Entry for keyboard abort */
59 int *nmiclock
; /* Counts up in msec */
60 int *FBtype
; /* Frame buffer type */
61 unsigned int romvecversion
; /* Version number for this romvec */
62 struct globram
*globram
; /* monitor global variables ??? */
63 void * kbdaddr
; /* Addr of keyboard in use */
64 int *keyrinit
; /* ms before kbd repeat */
65 unsigned char *keyrtick
; /* ms between repetitions */
66 unsigned int *memoryavail
; /* V1: Main mem usable size */
67 long *resetaddr
; /* where to jump on a reset */
68 long *resetmap
; /* pgmap entry for resetaddr */
69 void (*exittomon
)(void); /* Exit from user program */
70 unsigned char **memorybitmap
; /* V1: &{0 or &bits} */
71 void (*setcxsegmap
)(int ctxt
, char *va
, int pmeg
); /* Set seg in any context */
72 void (**vector_cmd
)(void *); /* V2: Handler for 'v' cmd */
73 unsigned long *expectedtrapsig
; /* V3: Location of the expected trap signal */
74 unsigned long *trapvectorbasetable
; /* V3: Address of the trap vector table */
81 extern linux_sun4_romvec
*sun4_romvec
;
83 #endif /* _SUN4PROM_H_ */