home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / KERNEL-S / V1.2 / LINUX-1.2 / LINUX-1 / linux / include / asm-sparc / head.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-02-26  |  2.3 KB  |  76 lines

  1. #ifndef __SPARC_HEAD_H
  2. #define __SPARC_HEAD_H
  3.  
  4. #define KERNSIZE    134217728   /* this is how much of a mapping the prom promises */
  5. #define PAGESIZE    4096        /* luckily this is the same on sun4c's and sun4m's */
  6. #define PAGESHIFT       12
  7. #define PROM_BASE    -1568768    /* casa 'de PROM */
  8. #define LOAD_ADDR       0x4000      /* prom jumps to us here */
  9. #define C_STACK         96
  10. #define SUN4C_SEGSZ     (1 << 18)
  11. #define USRSTACK        0x0         /* no joke, this is temporary, trust me */
  12. #define INT_ENABLE_REG_PHYSADR      0xf5000000
  13. #define INTS_ENAB   0x01
  14.  
  15. #define BOOT_MSG_LEN    61
  16. #define BOOT_MSG2_LEN   50
  17.  
  18.  
  19. #define WRITE_PAUSE     nop; nop; nop;
  20.  
  21. #define PAGE_SIZE       4096
  22.  
  23. /* Here are some trap goodies */
  24.  
  25.  
  26. /* Generic trap entry. */
  27.  
  28. #define TRAP_ENTRY(type, label) \
  29.     mov (type), %l3; b label; rd %psr, %l0; nop;
  30.  
  31. /* This is for hard interrupts from level 1-14, 15 is non-maskable (nmi) and
  32.  * gets handled with another macro.
  33.  */
  34.  
  35. #define TRAP_ENTRY_INTERRUPT(int_level) \
  36.         mov int_level, %l3; b stray_irq_entry; rd %psr, %l0; nop;
  37.  
  38. /* Here is the macro for soft interrupts (ie. not as urgent as hard ones)
  39.  * which need to jump to a different handler.
  40.  */
  41.  
  42. #define TRAP_ENTRY_INTERRUPT_SOFT(int_level, ident) \
  43.         mov int_level, %l3; rd %psr, %l0; b stray_irq_entry; mov ident, %l4;
  44.  
  45. /* The above two macros are for generic traps. The following is made
  46.  * especially for timer interrupts at IRQ level 14.
  47.  */
  48.  
  49. #define TRAP_ENTRY_TIMER \
  50.         mov 10, %l3; rd %psr, %l0; b sparc_timer; nop;
  51.  
  52. /* Non-maskable interrupt entry macro. You have to turn off all interrupts
  53.  * to not receive this. This is usually due to a asynchronous memory error.
  54.  * All we can really do is stop the show. :-(
  55.  */
  56.  
  57. #define TRAP_ENTRY_INTERRUPT_NMI(t_type, jmp_to) \
  58.         mov t_type, %l3; b jmp_to; rd %psr, %l0; nop;
  59.  
  60. /* Trap entry code in entry.S needs the offsets into task_struct
  61.  * to get at the thread_struct goodies during window craziness.
  62.  *
  63.  * NOTE: We need to keep these values under 0x3ff in order to do
  64.  *       efficient load/stores in the window fill/spill handlers.
  65.  *       See TRAP_WIN_CLEAN in entry.S for details.
  66.  */
  67.  
  68. #define THREAD_UWINDOWS 0x3bc
  69. #define THREAD_WIM 0x3c0
  70. #define THREAD_W_SAVED 0x3c4
  71. #define THREAD_KSP 0x3c8
  72. #define THREAD_USP 0x3cc
  73. #define THREAD_REG_WINDOW 0x3d4
  74.  
  75. #endif __SPARC_HEAD_H
  76.