Changeset a7961271 in mainline for kernel/arch/sparc64/include
- Timestamp:
- 2006-08-26T18:42:11Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c8ea4a8b
- Parents:
- f47fd19
- Location:
- kernel/arch/sparc64/include
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/include/arch.h
rf47fd19 ra7961271 36 36 #define __sparc64_ARCH_H__ 37 37 38 #define ASI_AIUP 0x10 /** Access to primary context with user privileges. */ 39 #define ASI_AIUS 0x11 /** Access to secondary context with user privileges. */ 40 38 41 #endif 39 42 -
kernel/arch/sparc64/include/interrupt.h
rf47fd19 ra7961271 45 45 #define IVT_FIRST 1 46 46 47 /* Dummy macros. */48 #define IRQ_KBD 249 #define VECTOR_KBD IRQ_KBD50 51 #define trap_virtual_enable_irqs(x)52 #define trap_virtual_eoi()53 54 47 struct istate { 55 48 uint64_t pstate; -
kernel/arch/sparc64/include/regdef.h
rf47fd19 ra7961271 36 36 #define KERN_sparc64_REGDEF_H_ 37 37 38 #define PSTATE_IE_BIT 239 #define PSTATE_AM_BIT 838 #define PSTATE_IE_BIT (1<<1) 39 #define PSTATE_AM_BIT (1<<3) 40 40 41 41 #define PSTATE_AG_BIT (1<<0) … … 43 43 #define PSTATE_MG_BIT (1<<10) 44 44 45 #define PSTATE_PRIV_BIT (1<<2) 46 47 #define TSTATE_PSTATE_SHIFT 8 48 #define TSTATE_PRIV_BIT (PSTATE_PRIV_BIT<<TSTATE_PSTATE_SHIFT) 49 50 #define TSTATE_CWP_MASK 0x1f 51 45 52 #endif 46 53 -
kernel/arch/sparc64/include/trap/interrupt.h
rf47fd19 ra7961271 80 80 #ifdef __ASM__ 81 81 .macro INTERRUPT_LEVEL_N_HANDLER n 82 save %sp, -PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE, %sp 83 mov \n - 1, %o0 82 mov \n - 1, %g2 84 83 PREEMPTIBLE_HANDLER exc_dispatch 85 84 .endm -
kernel/arch/sparc64/include/trap/mmu.h
rf47fd19 ra7961271 39 39 40 40 #include <arch/stack.h> 41 #include <arch/regdef.h> 41 42 #include <arch/mm/tlb.h> 42 43 #include <arch/mm/mmu.h> … … 60 61 .macro FAST_DATA_ACCESS_MMU_MISS_HANDLER 61 62 /* 62 * First, test if it is the portion of the kernel address space 63 * First, try to refill TLB from TSB. 64 */ 65 ! TODO 66 67 /* 68 * Second, test if it is the portion of the kernel address space 63 69 * which is faulting. If that is the case, immediately create 64 70 * identity mapping for that page in DTLB. VPN 0 is excluded from … … 67 73 * Note that branch-delay slots are used in order to save space. 68 74 */ 75 0: 69 76 mov VA_DMMU_TAG_ACCESS, %g1 70 77 ldxa [%g1] ASI_DMMU, %g1 ! read the faulting Context and VPN … … 75 82 bz 0f ! page address is zero 76 83 77 /*78 * Create and insert the identity-mapped entry for79 * the faulting kernel page.80 */81 82 84 or %g3, (TTE_CP|TTE_P|TTE_W), %g2 ! 8K pages are the default (encoded as 0) 83 85 set 1, %g3 … … 87 89 retry 88 90 91 /* 92 * Third, catch and handle special cases when the trap is caused by 93 * some register window trap handler. 94 */ 89 95 0: 90 save %sp, -PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE, %sp 96 ! TODO 97 98 0: 99 wrpr %g0, PSTATE_PRIV_BIT | PSTATE_AG_BIT, %pstate 91 100 PREEMPTIBLE_HANDLER fast_data_access_mmu_miss 92 101 .endm -
kernel/arch/sparc64/include/trap/regwin.h
rf47fd19 ra7961271 39 39 40 40 #include <arch/stack.h> 41 #include <arch/arch.h> 41 42 42 43 #define TT_CLEAN_WINDOW 0x24 … … 50 51 #define FILL_HANDLER_SIZE REGWIN_HANDLER_SIZE 51 52 52 /** Window Save Area offsets. */ 53 #define NWINDOW 8 54 55 /* Window Save Area offsets. */ 53 56 #define L0_OFFSET 0 54 57 #define L1_OFFSET 8 … … 69 72 70 73 #ifdef __ASM__ 71 .macro SPILL_NORMAL_HANDLER 74 75 /* 76 * Macro used by the nucleus and the primary context 0 during normal and other spills. 77 */ 78 .macro SPILL_NORMAL_HANDLER_KERNEL 72 79 stx %l0, [%sp + STACK_BIAS + L0_OFFSET] 73 80 stx %l1, [%sp + STACK_BIAS + L1_OFFSET] … … 90 97 .endm 91 98 92 .macro FILL_NORMAL_HANDLER 99 /* 100 * Macro used by the userspace during normal spills. 101 */ 102 .macro SPILL_NORMAL_HANDLER_USERSPACE 103 wr ASI_AIUP, %asi 104 stxa %l0, [%sp + STACK_BIAS + L0_OFFSET] %asi 105 stxa %l1, [%sp + STACK_BIAS + L1_OFFSET] %asi 106 stxa %l2, [%sp + STACK_BIAS + L2_OFFSET] %asi 107 stxa %l3, [%sp + STACK_BIAS + L3_OFFSET] %asi 108 stxa %l4, [%sp + STACK_BIAS + L4_OFFSET] %asi 109 stxa %l5, [%sp + STACK_BIAS + L5_OFFSET] %asi 110 stxa %l6, [%sp + STACK_BIAS + L6_OFFSET] %asi 111 stxa %l7, [%sp + STACK_BIAS + L7_OFFSET] %asi 112 stxa %i0, [%sp + STACK_BIAS + I0_OFFSET] %asi 113 stxa %i1, [%sp + STACK_BIAS + I1_OFFSET] %asi 114 stxa %i2, [%sp + STACK_BIAS + I2_OFFSET] %asi 115 stxa %i3, [%sp + STACK_BIAS + I3_OFFSET] %asi 116 stxa %i4, [%sp + STACK_BIAS + I4_OFFSET] %asi 117 stxa %i5, [%sp + STACK_BIAS + I5_OFFSET] %asi 118 stxa %i6, [%sp + STACK_BIAS + I6_OFFSET] %asi 119 stxa %i7, [%sp + STACK_BIAS + I7_OFFSET] %asi 120 saved 121 retry 122 .endm 123 124 /* 125 * Macro used by the userspace during other spills. 126 */ 127 .macro SPILL_OTHER_HANDLER_USERSPACE 128 wr ASI_AIUS, %asi 129 stxa %l0, [%sp + STACK_BIAS + L0_OFFSET] %asi 130 stxa %l1, [%sp + STACK_BIAS + L1_OFFSET] %asi 131 stxa %l2, [%sp + STACK_BIAS + L2_OFFSET] %asi 132 stxa %l3, [%sp + STACK_BIAS + L3_OFFSET] %asi 133 stxa %l4, [%sp + STACK_BIAS + L4_OFFSET] %asi 134 stxa %l5, [%sp + STACK_BIAS + L5_OFFSET] %asi 135 stxa %l6, [%sp + STACK_BIAS + L6_OFFSET] %asi 136 stxa %l7, [%sp + STACK_BIAS + L7_OFFSET] %asi 137 stxa %i0, [%sp + STACK_BIAS + I0_OFFSET] %asi 138 stxa %i1, [%sp + STACK_BIAS + I1_OFFSET] %asi 139 stxa %i2, [%sp + STACK_BIAS + I2_OFFSET] %asi 140 stxa %i3, [%sp + STACK_BIAS + I3_OFFSET] %asi 141 stxa %i4, [%sp + STACK_BIAS + I4_OFFSET] %asi 142 stxa %i5, [%sp + STACK_BIAS + I5_OFFSET] %asi 143 stxa %i6, [%sp + STACK_BIAS + I6_OFFSET] %asi 144 stxa %i7, [%sp + STACK_BIAS + I7_OFFSET] %asi 145 saved 146 retry 147 .endm 148 149 150 /* 151 * Macro used by the nucleus and the primary context 0 during normal fills. 152 */ 153 .macro FILL_NORMAL_HANDLER_KERNEL 93 154 ldx [%sp + STACK_BIAS + L0_OFFSET], %l0 94 155 ldx [%sp + STACK_BIAS + L1_OFFSET], %l1 … … 107 168 ldx [%sp + STACK_BIAS + I6_OFFSET], %i6 108 169 ldx [%sp + STACK_BIAS + I7_OFFSET], %i7 170 restored 171 retry 172 .endm 173 174 /* 175 * Macro used by the userspace during normal fills. 176 */ 177 .macro FILL_NORMAL_HANDLER_USERSPACE 178 wr ASI_AIUP, %asi 179 ldxa [%sp + STACK_BIAS + L0_OFFSET] %asi, %l0 180 ldxa [%sp + STACK_BIAS + L1_OFFSET] %asi, %l1 181 ldxa [%sp + STACK_BIAS + L2_OFFSET] %asi, %l2 182 ldxa [%sp + STACK_BIAS + L3_OFFSET] %asi, %l3 183 ldxa [%sp + STACK_BIAS + L4_OFFSET] %asi, %l4 184 ldxa [%sp + STACK_BIAS + L5_OFFSET] %asi, %l5 185 ldxa [%sp + STACK_BIAS + L6_OFFSET] %asi, %l6 186 ldxa [%sp + STACK_BIAS + L7_OFFSET] %asi, %l7 187 ldxa [%sp + STACK_BIAS + I0_OFFSET] %asi, %i0 188 ldxa [%sp + STACK_BIAS + I1_OFFSET] %asi, %i1 189 ldxa [%sp + STACK_BIAS + I2_OFFSET] %asi, %i2 190 ldxa [%sp + STACK_BIAS + I3_OFFSET] %asi, %i3 191 ldxa [%sp + STACK_BIAS + I4_OFFSET] %asi, %i4 192 ldxa [%sp + STACK_BIAS + I5_OFFSET] %asi, %i5 193 ldxa [%sp + STACK_BIAS + I6_OFFSET] %asi, %i6 194 ldxa [%sp + STACK_BIAS + I7_OFFSET] %asi, %i7 195 restored 196 retry 197 .endm 198 199 /* 200 * Macro used by the userspace during other fills. 201 */ 202 .macro FILL_OTHER_HANDLER_USERSPACE 203 wr ASI_AIUS, %asi 204 ldxa [%sp + STACK_BIAS + L0_OFFSET] %asi, %l0 205 ldxa [%sp + STACK_BIAS + L1_OFFSET] %asi, %l1 206 ldxa [%sp + STACK_BIAS + L2_OFFSET] %asi, %l2 207 ldxa [%sp + STACK_BIAS + L3_OFFSET] %asi, %l3 208 ldxa [%sp + STACK_BIAS + L4_OFFSET] %asi, %l4 209 ldxa [%sp + STACK_BIAS + L5_OFFSET] %asi, %l5 210 ldxa [%sp + STACK_BIAS + L6_OFFSET] %asi, %l6 211 ldxa [%sp + STACK_BIAS + L7_OFFSET] %asi, %l7 212 ldxa [%sp + STACK_BIAS + I0_OFFSET] %asi, %i0 213 ldxa [%sp + STACK_BIAS + I1_OFFSET] %asi, %i1 214 ldxa [%sp + STACK_BIAS + I2_OFFSET] %asi, %i2 215 ldxa [%sp + STACK_BIAS + I3_OFFSET] %asi, %i3 216 ldxa [%sp + STACK_BIAS + I4_OFFSET] %asi, %i4 217 ldxa [%sp + STACK_BIAS + I5_OFFSET] %asi, %i5 218 ldxa [%sp + STACK_BIAS + I6_OFFSET] %asi, %i6 219 ldxa [%sp + STACK_BIAS + I7_OFFSET] %asi, %i7 109 220 restored 110 221 retry -
kernel/arch/sparc64/include/trap/trap_table.h
rf47fd19 ra7961271 86 86 #define SAVED_TPC -(2*8) 87 87 #define SAVED_TNPC -(3*8) 88 #define SAVED_PSTATE -(4*8)89 88 90 89 .macro PREEMPTIBLE_HANDLER f 91 set \f, %l090 sethi %hi(\f), %g1 92 91 b preemptible_handler 93 nop92 or %g1, %lo(\f), %g1 94 93 .endm 95 94
Note:
See TracChangeset
for help on using the changeset viewer.