Changeset f9a56c0 in mainline for kernel/arch/sparc64
- Timestamp:
- 2006-08-17T11:39:38Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ee289cf0
- Parents:
- ec2c55a
- Location:
- kernel/arch/sparc64
- Files:
-
- 2 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/Makefile.inc
rec2c55a rf9a56c0 67 67 68 68 CONFIG_Z8530 = y 69 DEFS += -DCONFIG_Z8530 69 DEFS += -DCONFIG_Z8530 70 70 endif 71 71 ifeq ($(MACHINE),ultra) … … 102 102 arch/$(ARCH)/src/drivers/tick.c \ 103 103 arch/$(ARCH)/src/drivers/kbd.c 104 105 ifdef CONFIG_Z8530 106 ARCH_SOURCES += \ 107 arch/$(ARCH)/src/drivers/fhc.c 108 endif -
kernel/arch/sparc64/include/asm.h
rec2c55a rf9a56c0 140 140 } 141 141 142 /** Write SET_SOFTINT Register. 143 * 144 * Bits set in SET_SOFTINT register will be set in SOFTINT register. 145 * 146 * @param v New value of SET_SOFTINT register. 147 */ 148 static inline void set_softint_write(uint64_t v) 149 { 150 __asm__ volatile ("wr %0, %1, %%set_softint\n" : : "r" (v), "i" (0)); 151 } 152 142 153 /** Enable interrupts. 143 154 * -
kernel/arch/sparc64/include/drivers/ns16550.h
rec2c55a rf9a56c0 40 40 41 41 #define RBR_REG 0 /** Receiver Buffer Register. */ 42 #define IER_REG 1 /** Interrupt Enable Register. */ 42 43 #define LSR_REG 5 /** Line Status Register. */ 43 44 … … 45 46 { 46 47 return kbd_virt_address[RBR_REG]; 48 } 49 50 static inline uint8_t ns16550_ier_read(void) 51 { 52 return kbd_virt_address[IER_REG]; 53 } 54 55 static inline void ns16550_ier_write(uint8_t v) 56 { 57 kbd_virt_address[IER_REG] = v; 47 58 } 48 59 -
kernel/arch/sparc64/include/drivers/z8530.h
rec2c55a rf9a56c0 71 71 #define RR15 15 72 72 73 /* Write Register 0 */ 74 #define WR0_ERR_RST (0x6<<3) 75 73 76 /* Write Register 1 */ 74 77 #define WR1_RID (0x0<<3) /** Receive Interrupts Disabled. */ -
kernel/arch/sparc64/include/mm/mmu.h
rec2c55a rf9a56c0 36 36 #define __sparc64_MMU_H__ 37 37 38 /* *LSU Control Register ASI. */38 /* LSU Control Register ASI. */ 39 39 #define ASI_LSU_CONTROL_REG 0x45 /**< Load/Store Unit Control Register. */ 40 40 41 /* *I-MMU ASIs. */41 /* I-MMU ASIs. */ 42 42 #define ASI_IMMU 0x50 43 43 #define ASI_IMMU_TSB_8KB_PTR_REG 0x51 … … 48 48 #define ASI_IMMU_DEMAP 0x57 49 49 50 /* *Virtual Addresses within ASI_IMMU. */50 /* Virtual Addresses within ASI_IMMU. */ 51 51 #define VA_IMMU_TAG_TARGET 0x0 /**< IMMU tag target register. */ 52 52 #define VA_IMMU_SFSR 0x18 /**< IMMU sync fault status register. */ … … 54 54 #define VA_IMMU_TAG_ACCESS 0x30 /**< IMMU TLB tag access register. */ 55 55 56 /* *D-MMU ASIs. */56 /* D-MMU ASIs. */ 57 57 #define ASI_DMMU 0x58 58 58 #define ASI_DMMU_TSB_8KB_PTR_REG 0x59 … … 64 64 #define ASI_DMMU_DEMAP 0x5f 65 65 66 /* *Virtual Addresses within ASI_DMMU. */66 /* Virtual Addresses within ASI_DMMU. */ 67 67 #define VA_DMMU_TAG_TARGET 0x0 /**< DMMU tag target register. */ 68 68 #define VA_PRIMARY_CONTEXT_REG 0x8 /**< DMMU primary context register. */ -
kernel/arch/sparc64/include/trap/interrupt.h
rec2c55a rf9a56c0 41 41 #include <arch/stack.h> 42 42 43 /* Interrupt ASI registers. */ 44 #define ASI_UDB_INTR_W 0x77 45 #define ASI_INTR_DISPATCH_STATUS 0x48 46 #define ASI_UDB_INTR_R 0x7f 47 #define ASI_INTR_RECEIVE 0x49 48 49 /* VA's used with ASI_UDB_INTR_W register. */ 50 #define ASI_UDB_INTR_W_DATA_0 0x40 51 #define ASI_UDB_INTR_W_DATA_1 0x50 52 #define ASI_UDB_INTR_W_DATA_2 0x60 53 54 /* VA's used with ASI_UDB_INTR_R register. */ 55 #define ASI_UDB_INTR_R_DATA_0 0x40 56 #define ASI_UDB_INTR_R_DATA_1 0x50 57 #define ASI_UDB_INTR_R_DATA_2 0x60 58 43 59 #define TT_INTERRUPT_LEVEL_1 0x41 44 60 #define TT_INTERRUPT_LEVEL_2 0x42 … … 71 87 72 88 .macro INTERRUPT_VECTOR_TRAP_HANDLER 89 save %sp, -STACK_WINDOW_SAVE_AREA_SIZE, %sp 90 SIMPLE_HANDLER interrupt 91 restore 73 92 retry 74 93 .endm 75 94 #endif /* __ASM__ */ 95 96 #ifndef __ASM__ 97 extern void interrupt(void); 98 #endif /* !def __ASM__ */ 76 99 77 100 #endif -
kernel/arch/sparc64/src/console.c
rec2c55a rf9a56c0 85 85 while (1) { 86 86 #ifdef CONFIG_Z8530 87 z8530_poll();87 return; 88 88 #endif 89 89 #ifdef CONFIG_NS16550 -
kernel/arch/sparc64/src/drivers/kbd.c
rec2c55a rf9a56c0 61 61 * However, the physical keyboard address can 62 62 * be pretty much unaligned on some systems 63 * (e.g. Ultra 5, Ultra s60).63 * (e.g. Ultra 5, Ultra 60). 64 64 */ 65 65 aligned_addr = ALIGN_DOWN(bootinfo.keyboard.addr, PAGE_SIZE); -
kernel/arch/sparc64/src/drivers/tick.c
rec2c55a rf9a56c0 27 27 */ 28 28 29 29 /** @addtogroup sparc64 30 30 * @{ 31 31 */ … … 89 89 } 90 90 91 91 /** @} 92 92 */ 93 -
kernel/arch/sparc64/src/trap/interrupt.c
rec2c55a rf9a56c0 34 34 35 35 #include <arch/interrupt.h> 36 #include <arch/trap/interrupt.h> 36 37 #include <interrupt.h> 38 #include <arch/drivers/fhc.h> 37 39 #include <arch/types.h> 38 40 #include <debug.h> 39 41 #include <ipc/sysipc.h> 42 #include <arch/asm.h> 43 #include <arch/barrier.h> 44 45 #include <genarch/kbd/z8530.h> 40 46 41 47 /** Register Interrupt Level Handler. … … 59 65 } 60 66 67 void interrupt(void) 68 { 69 uint64_t intrcv; 70 uint64_t data0; 71 72 intrcv = asi_u64_read(ASI_INTR_RECEIVE, 0); 73 data0 = asi_u64_read(ASI_UDB_INTR_R, ASI_UDB_INTR_R_DATA_0); 74 75 switch (data0) { 76 #ifdef CONFIG_Z8530 77 case Z8530_INTRCV_DATA0: 78 /* 79 * So far, we know we got this interrupt through the FHC. 80 * Since we don't have enough information about the FHC and 81 * because the interrupt looks like level sensitive, 82 * we cannot handle it by scheduling one of the level 83 * interrupt traps. Call the interrupt handler directly. 84 */ 85 fhc_uart_reset(); 86 z8530_interrupt(); 87 break; 88 #endif 89 } 90 91 membar(); 92 asi_u64_write(ASI_INTR_RECEIVE, 0, 0); 93 } 94 61 95 /** @} 62 96 */ 63
Note:
See TracChangeset
for help on using the changeset viewer.