6.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*
  2. * 960 definition
  3. */
  4. #include <u.h>
  5. #include <bio.h>
  6. #include <mach.h>
  7. /*
  8. * until we decide how we'll take faults, we really
  9. * don't know what the saved regs will look like.
  10. * this is just a guess. -- presotto
  11. */
  12. #define UR(x) (4*(x))
  13. #define SP UR(29)
  14. #define PC UR(30)
  15. #define R4 UR(4)
  16. #define REGSIZE (32*44)
  17. #define FPREGSIZE 0
  18. Reglist i960reglist[] = {
  19. { "R0", UR(0), RINT, 'X'},
  20. { "R1", UR(1), RINT, 'X'},
  21. { "R2", UR(2), RINT, 'X'},
  22. { "R3", UR(3), RINT, 'X'},
  23. { "R4", UR(4), RINT, 'X'},
  24. { "R5", UR(5), RINT, 'X'},
  25. { "R6", UR(6), RINT, 'X'},
  26. { "R7", UR(7), RINT, 'X'},
  27. { "R8", UR(8), RINT, 'X'},
  28. { "R9", UR(9), RINT, 'X'},
  29. { "R10", UR(10), RINT, 'X'},
  30. { "R11", UR(11), RINT, 'X'},
  31. { "R12", UR(12), RINT, 'X'},
  32. { "R13", UR(13), RINT, 'X'},
  33. { "R14", UR(14), RINT, 'X'},
  34. { "R15", UR(15), RINT, 'X'},
  35. { "R16", UR(16), RINT, 'X'},
  36. { "R17", UR(17), RINT, 'X'},
  37. { "R18", UR(18), RINT, 'X'},
  38. { "R19", UR(19), RINT, 'X'},
  39. { "R20", UR(20), RINT, 'X'},
  40. { "R21", UR(21), RINT, 'X'},
  41. { "R22", UR(22), RINT, 'X'},
  42. { "R23", UR(23), RINT, 'X'},
  43. { "R24", UR(24), RINT, 'X'},
  44. { "R25", UR(25), RINT, 'X'},
  45. { "R26", UR(26), RINT, 'X'},
  46. { "TMP", UR(27), RINT, 'X'},
  47. { "SB", UR(28), RINT, 'X'},
  48. { "SP", SP, RINT, 'X'},
  49. { "PC", PC, RINT, 'X'},
  50. { "R31", UR(31), RINT, 'X' },
  51. { 0 }
  52. };
  53. Mach mi960 =
  54. {
  55. "960", /* machine name */
  56. MI960, /* machine type */
  57. i960reglist, /* registers */
  58. REGSIZE, /* size of register set in bytes */
  59. FPREGSIZE, /* size of fp register set in bytes */
  60. "PC", /* name of PC */
  61. "SP", /* name of SP */
  62. 0, /* link register */
  63. "setSB", /* static base register name */
  64. 0, /* value */
  65. 0x1000, /* page size */
  66. 0x80000000, /* kernel base */
  67. 0, /* kernel text mask */
  68. 1, /* quantization of pc */
  69. 4, /* szaddr */
  70. 4, /* szreg */
  71. 4, /* szfloat */
  72. 8, /* szdouble */
  73. };