sun4prom.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:4k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

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