Changeset 1433ecda in mainline for kernel/arch/ia64
- Timestamp:
- 2018-04-04T15:42:37Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 2c4e1cc
- Parents:
- 47b2d7e3
- Location:
- kernel/arch/ia64
- Files:
-
- 10 edited
-
include/arch/asm.h (modified) (27 diffs)
-
include/arch/atomic.h (modified) (8 diffs)
-
include/arch/cpu.h (modified) (1 diff)
-
include/arch/mm/page.h (modified) (12 diffs)
-
include/arch/mm/tlb.h (modified) (1 diff)
-
include/arch/register.h (modified) (7 diffs)
-
src/fpu_context.c (modified) (5 diffs)
-
src/mm/tlb.c (modified) (5 diffs)
-
src/mm/vhpt.c (modified) (1 diff)
-
src/proc/scheduler.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia64/include/arch/asm.h
r47b2d7e3 r1433ecda 60 60 61 61 asm volatile ( 62 "mf\n"63 "mf.a\n"64 ::: "memory"62 "mf\n" 63 "mf.a\n" 64 ::: "memory" 65 65 ); 66 66 } … … 74 74 75 75 asm volatile ( 76 "mf\n"77 "mf.a\n"78 ::: "memory"76 "mf\n" 77 "mf.a\n" 78 ::: "memory" 79 79 ); 80 80 } … … 88 88 89 89 asm volatile ( 90 "mf\n"91 "mf.a\n"92 ::: "memory"90 "mf\n" 91 "mf.a\n" 92 ::: "memory" 93 93 ); 94 94 } … … 99 99 100 100 asm volatile ( 101 "mf\n"102 ::: "memory"101 "mf\n" 102 ::: "memory" 103 103 ); 104 104 … … 109 109 110 110 asm volatile ( 111 "mf.a\n"112 ::: "memory"111 "mf.a\n" 112 ::: "memory" 113 113 ); 114 114 … … 121 121 122 122 asm volatile ( 123 "mf\n"124 ::: "memory"123 "mf\n" 124 ::: "memory" 125 125 ); 126 126 … … 131 131 132 132 asm volatile ( 133 "mf.a\n"134 ::: "memory"133 "mf.a\n" 134 ::: "memory" 135 135 ); 136 136 … … 143 143 144 144 asm volatile ( 145 "mf\n"146 ::: "memory"145 "mf\n" 146 ::: "memory" 147 147 ); 148 148 … … 153 153 154 154 asm volatile ( 155 "mf.a\n"156 ::: "memory"155 "mf.a\n" 156 ::: "memory" 157 157 ); 158 158 … … 171 171 172 172 asm volatile ( 173 "mov %[value] = r12"174 : [value] "=r" (value)173 "mov %[value] = r12" 174 : [value] "=r" (value) 175 175 ); 176 176 … … 188 188 189 189 asm volatile ( 190 "mov %[value] = psr\n"191 : [value] "=r" (v)190 "mov %[value] = psr\n" 191 : [value] "=r" (v) 192 192 ); 193 193 … … 205 205 206 206 asm volatile ( 207 "mov %[value] = cr.iva\n"208 : [value] "=r" (v)207 "mov %[value] = cr.iva\n" 208 : [value] "=r" (v) 209 209 ); 210 210 … … 220 220 { 221 221 asm volatile ( 222 "mov cr.iva = %[value]\n"223 :: [value] "r" (v)222 "mov cr.iva = %[value]\n" 223 :: [value] "r" (v) 224 224 ); 225 225 } … … 236 236 237 237 asm volatile ( 238 "mov %[value] = cr.ivr\n"239 : [value] "=r" (v)238 "mov %[value] = cr.ivr\n" 239 : [value] "=r" (v) 240 240 ); 241 241 … … 248 248 249 249 asm volatile ( 250 "mov %[value] = cr64\n"251 : [value] "=r" (v)250 "mov %[value] = cr64\n" 251 : [value] "=r" (v) 252 252 ); 253 253 … … 263 263 { 264 264 asm volatile ( 265 "mov ar.itc = %[value]\n"266 :: [value] "r" (v)265 "mov ar.itc = %[value]\n" 266 :: [value] "r" (v) 267 267 ); 268 268 } … … 278 278 279 279 asm volatile ( 280 "mov %[value] = ar.itc\n"281 : [value] "=r" (v)280 "mov %[value] = ar.itc\n" 281 : [value] "=r" (v) 282 282 ); 283 283 … … 293 293 { 294 294 asm volatile ( 295 "mov cr.itm = %[value]\n"296 :: [value] "r" (v)295 "mov cr.itm = %[value]\n" 296 :: [value] "r" (v) 297 297 ); 298 298 } … … 308 308 309 309 asm volatile ( 310 "mov %[value] = cr.itm\n"311 : [value] "=r" (v)310 "mov %[value] = cr.itm\n" 311 : [value] "=r" (v) 312 312 ); 313 313 … … 325 325 326 326 asm volatile ( 327 "mov %[value] = cr.itv\n"328 : [value] "=r" (v)327 "mov %[value] = cr.itv\n" 328 : [value] "=r" (v) 329 329 ); 330 330 … … 340 340 { 341 341 asm volatile ( 342 "mov cr.itv = %[value]\n"343 :: [value] "r" (v)342 "mov cr.itv = %[value]\n" 343 :: [value] "r" (v) 344 344 ); 345 345 } … … 353 353 { 354 354 asm volatile ( 355 "mov cr.eoi = %[value]\n"356 :: [value] "r" (v)355 "mov cr.eoi = %[value]\n" 356 :: [value] "r" (v) 357 357 ); 358 358 } … … 368 368 369 369 asm volatile ( 370 "mov %[value] = cr.tpr\n"371 : [value] "=r" (v)370 "mov %[value] = cr.tpr\n" 371 : [value] "=r" (v) 372 372 ); 373 373 … … 383 383 { 384 384 asm volatile ( 385 "mov cr.tpr = %[value]\n"386 :: [value] "r" (v)385 "mov cr.tpr = %[value]\n" 386 :: [value] "r" (v) 387 387 ); 388 388 } … … 401 401 402 402 asm volatile ( 403 "mov %[value] = psr\n"404 "rsm %[mask]\n"405 : [value] "=r" (v)406 : [mask] "i" (PSR_I_MASK)403 "mov %[value] = psr\n" 404 "rsm %[mask]\n" 405 : [value] "=r" (v) 406 : [mask] "i" (PSR_I_MASK) 407 407 ); 408 408 … … 423 423 424 424 asm volatile ( 425 "mov %[value] = psr\n"426 "ssm %[mask]\n"427 ";;\n"428 "srlz.d\n"429 : [value] "=r" (v)430 : [mask] "i" (PSR_I_MASK)425 "mov %[value] = psr\n" 426 "ssm %[mask]\n" 427 ";;\n" 428 "srlz.d\n" 429 : [value] "=r" (v) 430 : [mask] "i" (PSR_I_MASK) 431 431 ); 432 432 … … 473 473 { 474 474 asm volatile ( 475 "rsm %[mask]\n"476 ";;\n"477 "srlz.d\n"478 :: [mask] "i" (PSR_PK_MASK)475 "rsm %[mask]\n" 476 ";;\n" 477 "srlz.d\n" 478 :: [mask] "i" (PSR_PK_MASK) 479 479 ); 480 480 } -
kernel/arch/ia64/include/arch/atomic.h
r47b2d7e3 r1433ecda 43 43 44 44 asm volatile ( 45 "movl %[v] = 0x1;;\n"46 "xchg8 %[v] = %[count], %[v];;\n"47 : [v] "=r" (v),48 [count] "+m" (val->count)45 "movl %[v] = 0x1;;\n" 46 "xchg8 %[v] = %[count], %[v];;\n" 47 : [v] "=r" (v), 48 [count] "+m" (val->count) 49 49 ); 50 50 … … 55 55 { 56 56 do { 57 while (val->count); 57 while (val->count) 58 ; 58 59 } while (test_and_set(val)); 59 60 } … … 64 65 65 66 asm volatile ( 66 "fetchadd8.rel %[v] = %[count], 1\n"67 : [v] "=r" (v),68 [count] "+m" (val->count)67 "fetchadd8.rel %[v] = %[count], 1\n" 68 : [v] "=r" (v), 69 [count] "+m" (val->count) 69 70 ); 70 71 } … … 75 76 76 77 asm volatile ( 77 "fetchadd8.rel %[v] = %[count], -1\n"78 : [v] "=r" (v),79 [count] "+m" (val->count)78 "fetchadd8.rel %[v] = %[count], -1\n" 79 : [v] "=r" (v), 80 [count] "+m" (val->count) 80 81 ); 81 82 } … … 86 87 87 88 asm volatile ( 88 "fetchadd8.rel %[v] = %[count], 1\n"89 : [v] "=r" (v),90 [count] "+m" (val->count)89 "fetchadd8.rel %[v] = %[count], 1\n" 90 : [v] "=r" (v), 91 [count] "+m" (val->count) 91 92 ); 92 93 … … 99 100 100 101 asm volatile ( 101 "fetchadd8.rel %[v] = %[count], -1\n"102 : [v] "=r" (v),103 [count] "+m" (val->count)102 "fetchadd8.rel %[v] = %[count], -1\n" 103 : [v] "=r" (v), 104 [count] "+m" (val->count) 104 105 ); 105 106 … … 112 113 113 114 asm volatile ( 114 "fetchadd8.rel %[v] = %[count], 1\n"115 : [v] "=r" (v),116 [count] "+m" (val->count)115 "fetchadd8.rel %[v] = %[count], 1\n" 116 : [v] "=r" (v), 117 [count] "+m" (val->count) 117 118 ); 118 119 … … 125 126 126 127 asm volatile ( 127 "fetchadd8.rel %[v] = %[count], -1\n"128 : [v] "=r" (v),129 [count] "+m" (val->count)128 "fetchadd8.rel %[v] = %[count], -1\n" 129 : [v] "=r" (v), 130 [count] "+m" (val->count) 130 131 ); 131 132 -
kernel/arch/ia64/include/arch/cpu.h
r47b2d7e3 r1433ecda 68 68 69 69 asm volatile ( 70 "mov %[v] = cpuid[%[r]]\n"71 : [v] "=r" (v)72 : [r] "r" (n)70 "mov %[v] = cpuid[%[r]]\n" 71 : [v] "=r" (v) 72 : [r] "r" (n) 73 73 ); 74 74 -
kernel/arch/ia64/include/arch/mm/page.h
r47b2d7e3 r1433ecda 56 56 57 57 #ifdef __ASSEMBLER__ 58 #define VRN_KERNEL 758 #define VRN_KERNEL 7 59 59 #else 60 #define VRN_KERNEL 7ULL60 #define VRN_KERNEL 7ULL 61 61 #endif 62 62 … … 97 97 unsigned long long tag : 63; 98 98 unsigned int ti : 1; 99 } __attribute__ ((packed));99 } __attribute__((packed)); 100 100 101 101 union vhpt_tag { … … 129 129 /* Word 3 */ 130 130 uint64_t ig3 : 64; 131 } __attribute__ ((packed));131 } __attribute__((packed)); 132 132 133 133 struct vhpt_entry_not_present { … … 147 147 /* Word 3 */ 148 148 uint64_t ig3 : 64; 149 } __attribute__ ((packed));149 } __attribute__((packed)); 150 150 151 151 typedef union { … … 161 161 unsigned int rid : 24; 162 162 unsigned int : 32; 163 } __attribute__ ((packed));163 } __attribute__((packed)); 164 164 165 165 typedef union { … … 175 175 unsigned int : 6; 176 176 unsigned long long base : 49; 177 } __attribute__ ((packed));177 } __attribute__((packed)); 178 178 179 179 typedef union pta_register { … … 196 196 197 197 asm volatile ( 198 "thash %[ret] = %[va]\n"199 : [ret] "=r" (ret)200 : [va] "r" (va)198 "thash %[ret] = %[va]\n" 199 : [ret] "=r" (ret) 200 : [va] "r" (va) 201 201 ); 202 202 … … 218 218 219 219 asm volatile ( 220 "ttag %[ret] = %[va]\n"221 : [ret] "=r" (ret)222 : [va] "r" (va)220 "ttag %[ret] = %[va]\n" 221 : [ret] "=r" (ret) 222 : [va] "r" (va) 223 223 ); 224 224 … … 239 239 240 240 asm volatile ( 241 "mov %[ret] = rr[%[index]]\n"242 : [ret] "=r" (ret)243 : [index] "r" (i << VRN_SHIFT)241 "mov %[ret] = rr[%[index]]\n" 242 : [ret] "=r" (ret) 243 : [index] "r" (i << VRN_SHIFT) 244 244 ); 245 245 … … 257 257 258 258 asm volatile ( 259 "mov rr[%[index]] = %[value]\n"260 :: [index] "r" (i << VRN_SHIFT),261 [value] "r" (v)259 "mov rr[%[index]] = %[value]\n" 260 :: [index] "r" (i << VRN_SHIFT), 261 [value] "r" (v) 262 262 ); 263 263 } … … 272 272 273 273 asm volatile ( 274 "mov %[ret] = cr.pta\n"275 : [ret] "=r" (ret)274 "mov %[ret] = cr.pta\n" 275 : [ret] "=r" (ret) 276 276 ); 277 277 … … 286 286 { 287 287 asm volatile ( 288 "mov cr.pta = %[value]\n"289 :: [value] "r" (v)288 "mov cr.pta = %[value]\n" 289 :: [value] "r" (v) 290 290 ); 291 291 } -
kernel/arch/ia64/include/arch/mm/tlb.h
r47b2d7e3 r1433ecda 69 69 unsigned int key : 24; /**< Protection key, unused. */ 70 70 unsigned int : 32; 71 } __attribute__ ((packed));72 } __attribute__ ((packed)) tlb_entry_t;71 } __attribute__((packed)); 72 } __attribute__((packed)) tlb_entry_t; 73 73 74 74 extern void tc_mapping_insert(uintptr_t va, asid_t asid, tlb_entry_t entry, bool dtc); -
kernel/arch/ia64/include/arch/register.h
r47b2d7e3 r1433ecda 184 184 unsigned int bn : 1; /**< Register Bank. */ 185 185 unsigned int ia : 1; /**< Disable Instruction Access-bit faults. */ 186 } __attribute__ ((packed));186 } __attribute__((packed)); 187 187 } psr_t; 188 188 … … 196 196 unsigned int : 11; 197 197 unsigned int loadrs : 14; 198 } __attribute__ ((packed));198 } __attribute__((packed)); 199 199 } rsc_t; 200 200 … … 210 210 struct { 211 211 unsigned int : 4; 212 unsigned int mic : 4; /**< Mask Interrupt Class. */212 unsigned int mic : 4; /**< Mask Interrupt Class. */ 213 213 unsigned int : 8; 214 unsigned int mmi : 1; /**< Mask Maskable Interrupts. */215 } __attribute__ ((packed));214 unsigned int mmi : 1; /**< Mask Maskable Interrupts. */ 215 } __attribute__((packed)); 216 216 } cr_tpr_t; 217 217 … … 225 225 unsigned int : 3; 226 226 unsigned int m : 1; /**< Mask. */ 227 } __attribute__ ((packed));227 } __attribute__((packed)); 228 228 } cr_itv_t; 229 229 … … 238 238 unsigned int ge_na : 4; 239 239 unsigned int ge_code : 4; 240 } __attribute__ ((packed));240 } __attribute__((packed)); 241 241 }; 242 242 uint8_t vector; … … 254 254 unsigned int ed : 1; /**< Exception Deferral. */ 255 255 unsigned int : 20; 256 } __attribute__ ((packed));256 } __attribute__((packed)); 257 257 } cr_isr_t; 258 258 … … 266 266 uint8_t family; 267 267 uint8_t archrev; 268 } __attribute__ ((packed));268 } __attribute__((packed)); 269 269 } cpuid3_t; 270 270 -
kernel/arch/ia64/src/fpu_context.c
r47b2d7e3 r1433ecda 41 41 { 42 42 asm volatile ( 43 "stf.spill %[f32] = f32\n"44 "stf.spill %[f33] = f33\n"45 "stf.spill %[f34] = f34\n"46 "stf.spill %[f35] = f35\n"47 "stf.spill %[f36] = f36\n"48 "stf.spill %[f37] = f37\n"49 "stf.spill %[f38] = f38\n"50 "stf.spill %[f39] = f39\n"51 "stf.spill %[f40] = f40\n"52 "stf.spill %[f41] = f41\n"53 "stf.spill %[f42] = f42\n"54 "stf.spill %[f43] = f43\n"55 "stf.spill %[f44] = f44\n"56 "stf.spill %[f45] = f45\n"57 "stf.spill %[f46] = f46\n"58 "stf.spill %[f47] = f47\n"59 "stf.spill %[f48] = f48\n"60 "stf.spill %[f49] = f49\n"61 "stf.spill %[f50] = f50\n"62 "stf.spill %[f51] = f51\n"63 "stf.spill %[f52] = f52\n"64 "stf.spill %[f53] = f53\n"65 "stf.spill %[f54] = f54\n"66 "stf.spill %[f55] = f55\n"67 "stf.spill %[f56] = f56\n"68 "stf.spill %[f57] = f57\n"69 "stf.spill %[f58] = f58\n"70 "stf.spill %[f59] = f59\n"71 "stf.spill %[f60] = f60\n"72 "stf.spill %[f61] = f61\n"73 :74 [f32] "=m" (fctx->fr[0]),75 [f33] "=m" (fctx->fr[1]),76 [f34] "=m" (fctx->fr[2]),77 [f35] "=m" (fctx->fr[3]),78 [f36] "=m" (fctx->fr[4]),79 [f37] "=m" (fctx->fr[5]),80 [f38] "=m" (fctx->fr[6]),81 [f39] "=m" (fctx->fr[7]),82 [f40] "=m" (fctx->fr[8]),83 [f41] "=m" (fctx->fr[9]),84 [f42] "=m" (fctx->fr[10]),85 [f43] "=m" (fctx->fr[11]),86 [f44] "=m" (fctx->fr[12]),87 [f45] "=m" (fctx->fr[13]),88 [f46] "=m" (fctx->fr[14]),89 [f47] "=m" (fctx->fr[15]),90 [f48] "=m" (fctx->fr[16]),91 [f49] "=m" (fctx->fr[17]),92 [f50] "=m" (fctx->fr[18]),93 [f51] "=m" (fctx->fr[19]),94 [f52] "=m" (fctx->fr[20]),95 [f53] "=m" (fctx->fr[21]),96 [f54] "=m" (fctx->fr[22]),97 [f55] "=m" (fctx->fr[23]),98 [f56] "=m" (fctx->fr[24]),99 [f57] "=m" (fctx->fr[25]),100 [f58] "=m" (fctx->fr[26]),101 [f59] "=m" (fctx->fr[27]),102 [f60] "=m" (fctx->fr[28]),103 [f61] "=m" (fctx->fr[29])104 ); 105 106 asm volatile ( 107 "stf.spill %[f62] = f62\n"108 "stf.spill %[f63] = f63\n"109 "stf.spill %[f64] = f64\n"110 "stf.spill %[f65] = f65\n"111 "stf.spill %[f66] = f66\n"112 "stf.spill %[f67] = f67\n"113 "stf.spill %[f68] = f68\n"114 "stf.spill %[f69] = f69\n"115 "stf.spill %[f70] = f70\n"116 "stf.spill %[f71] = f71\n"117 "stf.spill %[f72] = f72\n"118 "stf.spill %[f73] = f73\n"119 "stf.spill %[f74] = f74\n"120 "stf.spill %[f75] = f75\n"121 "stf.spill %[f76] = f76\n"122 "stf.spill %[f77] = f77\n"123 "stf.spill %[f78] = f78\n"124 "stf.spill %[f79] = f79\n"125 "stf.spill %[f80] = f80\n"126 "stf.spill %[f81] = f81\n"127 "stf.spill %[f82] = f82\n"128 "stf.spill %[f83] = f83\n"129 "stf.spill %[f84] = f84\n"130 "stf.spill %[f85] = f85\n"131 "stf.spill %[f86] = f86\n"132 "stf.spill %[f87] = f87\n"133 "stf.spill %[f88] = f88\n"134 "stf.spill %[f89] = f89\n"135 "stf.spill %[f90] = f90\n"136 "stf.spill %[f91] = f91\n"137 :138 [f62] "=m" (fctx->fr[30]),139 [f63] "=m" (fctx->fr[31]),140 [f64] "=m" (fctx->fr[32]),141 [f65] "=m" (fctx->fr[33]),142 [f66] "=m" (fctx->fr[34]),143 [f67] "=m" (fctx->fr[35]),144 [f68] "=m" (fctx->fr[36]),145 [f69] "=m" (fctx->fr[37]),146 [f70] "=m" (fctx->fr[38]),147 [f71] "=m" (fctx->fr[39]),148 [f72] "=m" (fctx->fr[40]),149 [f73] "=m" (fctx->fr[41]),150 [f74] "=m" (fctx->fr[42]),151 [f75] "=m" (fctx->fr[43]),152 [f76] "=m" (fctx->fr[44]),153 [f77] "=m" (fctx->fr[45]),154 [f78] "=m" (fctx->fr[46]),155 [f79] "=m" (fctx->fr[47]),156 [f80] "=m" (fctx->fr[48]),157 [f81] "=m" (fctx->fr[49]),158 [f82] "=m" (fctx->fr[50]),159 [f83] "=m" (fctx->fr[51]),160 [f84] "=m" (fctx->fr[52]),161 [f85] "=m" (fctx->fr[53]),162 [f86] "=m" (fctx->fr[54]),163 [f87] "=m" (fctx->fr[55]),164 [f88] "=m" (fctx->fr[56]),165 [f89] "=m" (fctx->fr[57]),166 [f90] "=m" (fctx->fr[58]),167 [f91] "=m" (fctx->fr[59])168 ); 169 170 asm volatile ( 171 "stf.spill %[f92] = f92\n"172 "stf.spill %[f93] = f93\n"173 "stf.spill %[f94] = f94\n"174 "stf.spill %[f95] = f95\n"175 "stf.spill %[f96] = f96\n"176 "stf.spill %[f97] = f97\n"177 "stf.spill %[f98] = f98\n"178 "stf.spill %[f99] = f99\n"179 "stf.spill %[f100] = f100\n"180 "stf.spill %[f101] = f101\n"181 "stf.spill %[f102] = f102\n"182 "stf.spill %[f103] = f103\n"183 "stf.spill %[f104] = f104\n"184 "stf.spill %[f105] = f105\n"185 "stf.spill %[f106] = f106\n"186 "stf.spill %[f107] = f107\n"187 "stf.spill %[f108] = f108\n"188 "stf.spill %[f109] = f109\n"189 "stf.spill %[f110] = f110\n"190 "stf.spill %[f111] = f111\n"191 "stf.spill %[f112] = f112\n"192 "stf.spill %[f113] = f113\n"193 "stf.spill %[f114] = f114\n"194 "stf.spill %[f115] = f115\n"195 "stf.spill %[f116] = f116\n"196 "stf.spill %[f117] = f117\n"197 "stf.spill %[f118] = f118\n"198 "stf.spill %[f119] = f119\n"199 "stf.spill %[f120] = f120\n"200 "stf.spill %[f121] = f121\n"201 :202 [f92] "=m" (fctx->fr[60]),203 [f93] "=m" (fctx->fr[61]),204 [f94] "=m" (fctx->fr[62]),205 [f95] "=m" (fctx->fr[63]),206 [f96] "=m" (fctx->fr[64]),207 [f97] "=m" (fctx->fr[65]),208 [f98] "=m" (fctx->fr[66]),209 [f99] "=m" (fctx->fr[67]),210 [f100] "=m" (fctx->fr[68]),211 [f101] "=m" (fctx->fr[69]),212 [f102] "=m" (fctx->fr[70]),213 [f103] "=m" (fctx->fr[71]),214 [f104] "=m" (fctx->fr[72]),215 [f105] "=m" (fctx->fr[73]),216 [f106] "=m" (fctx->fr[74]),217 [f107] "=m" (fctx->fr[75]),218 [f108] "=m" (fctx->fr[76]),219 [f109] "=m" (fctx->fr[77]),220 [f110] "=m" (fctx->fr[78]),221 [f111] "=m" (fctx->fr[79]),222 [f112] "=m" (fctx->fr[80]),223 [f113] "=m" (fctx->fr[81]),224 [f114] "=m" (fctx->fr[82]),225 [f115] "=m" (fctx->fr[83]),226 [f116] "=m" (fctx->fr[84]),227 [f117] "=m" (fctx->fr[85]),228 [f118] "=m" (fctx->fr[86]),229 [f119] "=m" (fctx->fr[87]),230 [f120] "=m" (fctx->fr[88]),231 [f121] "=m" (fctx->fr[89])232 ); 233 234 asm volatile ( 235 "stf.spill %[f122] = f122\n"236 "stf.spill %[f123] = f123\n"237 "stf.spill %[f124] = f124\n"238 "stf.spill %[f125] = f125\n"239 "stf.spill %[f126] = f126\n"240 "stf.spill %[f127] = f127\n"241 :242 [f122] "=m" (fctx->fr[90]),243 [f123] "=m" (fctx->fr[91]),244 [f124] "=m" (fctx->fr[92]),245 [f125] "=m" (fctx->fr[93]),246 [f126] "=m" (fctx->fr[94]),247 [f127] "=m" (fctx->fr[95])43 "stf.spill %[f32] = f32\n" 44 "stf.spill %[f33] = f33\n" 45 "stf.spill %[f34] = f34\n" 46 "stf.spill %[f35] = f35\n" 47 "stf.spill %[f36] = f36\n" 48 "stf.spill %[f37] = f37\n" 49 "stf.spill %[f38] = f38\n" 50 "stf.spill %[f39] = f39\n" 51 "stf.spill %[f40] = f40\n" 52 "stf.spill %[f41] = f41\n" 53 "stf.spill %[f42] = f42\n" 54 "stf.spill %[f43] = f43\n" 55 "stf.spill %[f44] = f44\n" 56 "stf.spill %[f45] = f45\n" 57 "stf.spill %[f46] = f46\n" 58 "stf.spill %[f47] = f47\n" 59 "stf.spill %[f48] = f48\n" 60 "stf.spill %[f49] = f49\n" 61 "stf.spill %[f50] = f50\n" 62 "stf.spill %[f51] = f51\n" 63 "stf.spill %[f52] = f52\n" 64 "stf.spill %[f53] = f53\n" 65 "stf.spill %[f54] = f54\n" 66 "stf.spill %[f55] = f55\n" 67 "stf.spill %[f56] = f56\n" 68 "stf.spill %[f57] = f57\n" 69 "stf.spill %[f58] = f58\n" 70 "stf.spill %[f59] = f59\n" 71 "stf.spill %[f60] = f60\n" 72 "stf.spill %[f61] = f61\n" 73 : 74 [f32] "=m" (fctx->fr[0]), 75 [f33] "=m" (fctx->fr[1]), 76 [f34] "=m" (fctx->fr[2]), 77 [f35] "=m" (fctx->fr[3]), 78 [f36] "=m" (fctx->fr[4]), 79 [f37] "=m" (fctx->fr[5]), 80 [f38] "=m" (fctx->fr[6]), 81 [f39] "=m" (fctx->fr[7]), 82 [f40] "=m" (fctx->fr[8]), 83 [f41] "=m" (fctx->fr[9]), 84 [f42] "=m" (fctx->fr[10]), 85 [f43] "=m" (fctx->fr[11]), 86 [f44] "=m" (fctx->fr[12]), 87 [f45] "=m" (fctx->fr[13]), 88 [f46] "=m" (fctx->fr[14]), 89 [f47] "=m" (fctx->fr[15]), 90 [f48] "=m" (fctx->fr[16]), 91 [f49] "=m" (fctx->fr[17]), 92 [f50] "=m" (fctx->fr[18]), 93 [f51] "=m" (fctx->fr[19]), 94 [f52] "=m" (fctx->fr[20]), 95 [f53] "=m" (fctx->fr[21]), 96 [f54] "=m" (fctx->fr[22]), 97 [f55] "=m" (fctx->fr[23]), 98 [f56] "=m" (fctx->fr[24]), 99 [f57] "=m" (fctx->fr[25]), 100 [f58] "=m" (fctx->fr[26]), 101 [f59] "=m" (fctx->fr[27]), 102 [f60] "=m" (fctx->fr[28]), 103 [f61] "=m" (fctx->fr[29]) 104 ); 105 106 asm volatile ( 107 "stf.spill %[f62] = f62\n" 108 "stf.spill %[f63] = f63\n" 109 "stf.spill %[f64] = f64\n" 110 "stf.spill %[f65] = f65\n" 111 "stf.spill %[f66] = f66\n" 112 "stf.spill %[f67] = f67\n" 113 "stf.spill %[f68] = f68\n" 114 "stf.spill %[f69] = f69\n" 115 "stf.spill %[f70] = f70\n" 116 "stf.spill %[f71] = f71\n" 117 "stf.spill %[f72] = f72\n" 118 "stf.spill %[f73] = f73\n" 119 "stf.spill %[f74] = f74\n" 120 "stf.spill %[f75] = f75\n" 121 "stf.spill %[f76] = f76\n" 122 "stf.spill %[f77] = f77\n" 123 "stf.spill %[f78] = f78\n" 124 "stf.spill %[f79] = f79\n" 125 "stf.spill %[f80] = f80\n" 126 "stf.spill %[f81] = f81\n" 127 "stf.spill %[f82] = f82\n" 128 "stf.spill %[f83] = f83\n" 129 "stf.spill %[f84] = f84\n" 130 "stf.spill %[f85] = f85\n" 131 "stf.spill %[f86] = f86\n" 132 "stf.spill %[f87] = f87\n" 133 "stf.spill %[f88] = f88\n" 134 "stf.spill %[f89] = f89\n" 135 "stf.spill %[f90] = f90\n" 136 "stf.spill %[f91] = f91\n" 137 : 138 [f62] "=m" (fctx->fr[30]), 139 [f63] "=m" (fctx->fr[31]), 140 [f64] "=m" (fctx->fr[32]), 141 [f65] "=m" (fctx->fr[33]), 142 [f66] "=m" (fctx->fr[34]), 143 [f67] "=m" (fctx->fr[35]), 144 [f68] "=m" (fctx->fr[36]), 145 [f69] "=m" (fctx->fr[37]), 146 [f70] "=m" (fctx->fr[38]), 147 [f71] "=m" (fctx->fr[39]), 148 [f72] "=m" (fctx->fr[40]), 149 [f73] "=m" (fctx->fr[41]), 150 [f74] "=m" (fctx->fr[42]), 151 [f75] "=m" (fctx->fr[43]), 152 [f76] "=m" (fctx->fr[44]), 153 [f77] "=m" (fctx->fr[45]), 154 [f78] "=m" (fctx->fr[46]), 155 [f79] "=m" (fctx->fr[47]), 156 [f80] "=m" (fctx->fr[48]), 157 [f81] "=m" (fctx->fr[49]), 158 [f82] "=m" (fctx->fr[50]), 159 [f83] "=m" (fctx->fr[51]), 160 [f84] "=m" (fctx->fr[52]), 161 [f85] "=m" (fctx->fr[53]), 162 [f86] "=m" (fctx->fr[54]), 163 [f87] "=m" (fctx->fr[55]), 164 [f88] "=m" (fctx->fr[56]), 165 [f89] "=m" (fctx->fr[57]), 166 [f90] "=m" (fctx->fr[58]), 167 [f91] "=m" (fctx->fr[59]) 168 ); 169 170 asm volatile ( 171 "stf.spill %[f92] = f92\n" 172 "stf.spill %[f93] = f93\n" 173 "stf.spill %[f94] = f94\n" 174 "stf.spill %[f95] = f95\n" 175 "stf.spill %[f96] = f96\n" 176 "stf.spill %[f97] = f97\n" 177 "stf.spill %[f98] = f98\n" 178 "stf.spill %[f99] = f99\n" 179 "stf.spill %[f100] = f100\n" 180 "stf.spill %[f101] = f101\n" 181 "stf.spill %[f102] = f102\n" 182 "stf.spill %[f103] = f103\n" 183 "stf.spill %[f104] = f104\n" 184 "stf.spill %[f105] = f105\n" 185 "stf.spill %[f106] = f106\n" 186 "stf.spill %[f107] = f107\n" 187 "stf.spill %[f108] = f108\n" 188 "stf.spill %[f109] = f109\n" 189 "stf.spill %[f110] = f110\n" 190 "stf.spill %[f111] = f111\n" 191 "stf.spill %[f112] = f112\n" 192 "stf.spill %[f113] = f113\n" 193 "stf.spill %[f114] = f114\n" 194 "stf.spill %[f115] = f115\n" 195 "stf.spill %[f116] = f116\n" 196 "stf.spill %[f117] = f117\n" 197 "stf.spill %[f118] = f118\n" 198 "stf.spill %[f119] = f119\n" 199 "stf.spill %[f120] = f120\n" 200 "stf.spill %[f121] = f121\n" 201 : 202 [f92] "=m" (fctx->fr[60]), 203 [f93] "=m" (fctx->fr[61]), 204 [f94] "=m" (fctx->fr[62]), 205 [f95] "=m" (fctx->fr[63]), 206 [f96] "=m" (fctx->fr[64]), 207 [f97] "=m" (fctx->fr[65]), 208 [f98] "=m" (fctx->fr[66]), 209 [f99] "=m" (fctx->fr[67]), 210 [f100] "=m" (fctx->fr[68]), 211 [f101] "=m" (fctx->fr[69]), 212 [f102] "=m" (fctx->fr[70]), 213 [f103] "=m" (fctx->fr[71]), 214 [f104] "=m" (fctx->fr[72]), 215 [f105] "=m" (fctx->fr[73]), 216 [f106] "=m" (fctx->fr[74]), 217 [f107] "=m" (fctx->fr[75]), 218 [f108] "=m" (fctx->fr[76]), 219 [f109] "=m" (fctx->fr[77]), 220 [f110] "=m" (fctx->fr[78]), 221 [f111] "=m" (fctx->fr[79]), 222 [f112] "=m" (fctx->fr[80]), 223 [f113] "=m" (fctx->fr[81]), 224 [f114] "=m" (fctx->fr[82]), 225 [f115] "=m" (fctx->fr[83]), 226 [f116] "=m" (fctx->fr[84]), 227 [f117] "=m" (fctx->fr[85]), 228 [f118] "=m" (fctx->fr[86]), 229 [f119] "=m" (fctx->fr[87]), 230 [f120] "=m" (fctx->fr[88]), 231 [f121] "=m" (fctx->fr[89]) 232 ); 233 234 asm volatile ( 235 "stf.spill %[f122] = f122\n" 236 "stf.spill %[f123] = f123\n" 237 "stf.spill %[f124] = f124\n" 238 "stf.spill %[f125] = f125\n" 239 "stf.spill %[f126] = f126\n" 240 "stf.spill %[f127] = f127\n" 241 : 242 [f122] "=m" (fctx->fr[90]), 243 [f123] "=m" (fctx->fr[91]), 244 [f124] "=m" (fctx->fr[92]), 245 [f125] "=m" (fctx->fr[93]), 246 [f126] "=m" (fctx->fr[94]), 247 [f127] "=m" (fctx->fr[95]) 248 248 ); 249 249 } … … 252 252 { 253 253 asm volatile ( 254 "ldf.fill f32 = %[f32]\n"255 "ldf.fill f33 = %[f33]\n"256 "ldf.fill f34 = %[f34]\n"257 "ldf.fill f35 = %[f35]\n"258 "ldf.fill f36 = %[f36]\n"259 "ldf.fill f37 = %[f37]\n"260 "ldf.fill f38 = %[f38]\n"261 "ldf.fill f39 = %[f39]\n"262 "ldf.fill f40 = %[f40]\n"263 "ldf.fill f41 = %[f41]\n"264 "ldf.fill f42 = %[f42]\n"265 "ldf.fill f43 = %[f43]\n"266 "ldf.fill f44 = %[f44]\n"267 "ldf.fill f45 = %[f45]\n"268 "ldf.fill f46 = %[f46]\n"269 "ldf.fill f47 = %[f47]\n"270 "ldf.fill f48 = %[f48]\n"271 "ldf.fill f49 = %[f49]\n"272 "ldf.fill f50 = %[f50]\n"273 "ldf.fill f51 = %[f51]\n"274 "ldf.fill f52 = %[f52]\n"275 "ldf.fill f53 = %[f53]\n"276 "ldf.fill f54 = %[f54]\n"277 "ldf.fill f55 = %[f55]\n"278 "ldf.fill f56 = %[f56]\n"279 "ldf.fill f57 = %[f57]\n"280 "ldf.fill f58 = %[f58]\n"281 "ldf.fill f59 = %[f59]\n"282 "ldf.fill f60 = %[f60]\n"283 "ldf.fill f61 = %[f61]\n"284 ::285 [f32] "m" (fctx->fr[0]),286 [f33] "m" (fctx->fr[1]),287 [f34] "m" (fctx->fr[2]),288 [f35] "m" (fctx->fr[3]),289 [f36] "m" (fctx->fr[4]),290 [f37] "m" (fctx->fr[5]),291 [f38] "m" (fctx->fr[6]),292 [f39] "m" (fctx->fr[7]),293 [f40] "m" (fctx->fr[8]),294 [f41] "m" (fctx->fr[9]),295 [f42] "m" (fctx->fr[10]),296 [f43] "m" (fctx->fr[11]),297 [f44] "m" (fctx->fr[12]),298 [f45] "m" (fctx->fr[13]),299 [f46] "m" (fctx->fr[14]),300 [f47] "m" (fctx->fr[15]),301 [f48] "m" (fctx->fr[16]),302 [f49] "m" (fctx->fr[17]),303 [f50] "m" (fctx->fr[18]),304 [f51] "m" (fctx->fr[19]),305 [f52] "m" (fctx->fr[20]),306 [f53] "m" (fctx->fr[21]),307 [f54] "m" (fctx->fr[22]),308 [f55] "m" (fctx->fr[23]),309 [f56] "m" (fctx->fr[24]),310 [f57] "m" (fctx->fr[25]),311 [f58] "m" (fctx->fr[26]),312 [f59] "m" (fctx->fr[27]),313 [f60] "m" (fctx->fr[28]),314 [f61] "m" (fctx->fr[29])315 ); 316 317 asm volatile ( 318 "ldf.fill f62 = %[f62]\n"319 "ldf.fill f63 = %[f63]\n"320 "ldf.fill f64 = %[f64]\n"321 "ldf.fill f65 = %[f65]\n"322 "ldf.fill f66 = %[f66]\n"323 "ldf.fill f67 = %[f67]\n"324 "ldf.fill f68 = %[f68]\n"325 "ldf.fill f69 = %[f69]\n"326 "ldf.fill f70 = %[f70]\n"327 "ldf.fill f71 = %[f71]\n"328 "ldf.fill f72 = %[f72]\n"329 "ldf.fill f73 = %[f73]\n"330 "ldf.fill f74 = %[f74]\n"331 "ldf.fill f75 = %[f75]\n"332 "ldf.fill f76 = %[f76]\n"333 "ldf.fill f77 = %[f77]\n"334 "ldf.fill f78 = %[f78]\n"335 "ldf.fill f79 = %[f79]\n"336 "ldf.fill f80 = %[f80]\n"337 "ldf.fill f81 = %[f81]\n"338 "ldf.fill f82 = %[f82]\n"339 "ldf.fill f83 = %[f83]\n"340 "ldf.fill f84 = %[f84]\n"341 "ldf.fill f85 = %[f85]\n"342 "ldf.fill f86 = %[f86]\n"343 "ldf.fill f87 = %[f87]\n"344 "ldf.fill f88 = %[f88]\n"345 "ldf.fill f89 = %[f89]\n"346 "ldf.fill f90 = %[f90]\n"347 "ldf.fill f91 = %[f91]\n"348 ::349 [f62] "m" (fctx->fr[30]),350 [f63] "m" (fctx->fr[31]),351 [f64] "m" (fctx->fr[32]),352 [f65] "m" (fctx->fr[33]),353 [f66] "m" (fctx->fr[34]),354 [f67] "m" (fctx->fr[35]),355 [f68] "m" (fctx->fr[36]),356 [f69] "m" (fctx->fr[37]),357 [f70] "m" (fctx->fr[38]),358 [f71] "m" (fctx->fr[39]),359 [f72] "m" (fctx->fr[40]),360 [f73] "m" (fctx->fr[41]),361 [f74] "m" (fctx->fr[42]),362 [f75] "m" (fctx->fr[43]),363 [f76] "m" (fctx->fr[44]),364 [f77] "m" (fctx->fr[45]),365 [f78] "m" (fctx->fr[46]),366 [f79] "m" (fctx->fr[47]),367 [f80] "m" (fctx->fr[48]),368 [f81] "m" (fctx->fr[49]),369 [f82] "m" (fctx->fr[50]),370 [f83] "m" (fctx->fr[51]),371 [f84] "m" (fctx->fr[52]),372 [f85] "m" (fctx->fr[53]),373 [f86] "m" (fctx->fr[54]),374 [f87] "m" (fctx->fr[55]),375 [f88] "m" (fctx->fr[56]),376 [f89] "m" (fctx->fr[57]),377 [f90] "m" (fctx->fr[58]),378 [f91] "m" (fctx->fr[59])379 ); 380 381 asm volatile ( 382 "ldf.fill f92 = %[f92]\n"383 "ldf.fill f93 = %[f93]\n"384 "ldf.fill f94 = %[f94]\n"385 "ldf.fill f95 = %[f95]\n"386 "ldf.fill f96 = %[f96]\n"387 "ldf.fill f97 = %[f97]\n"388 "ldf.fill f98 = %[f98]\n"389 "ldf.fill f99 = %[f99]\n"390 "ldf.fill f100 = %[f100]\n"391 "ldf.fill f101 = %[f101]\n"392 "ldf.fill f102 = %[f102]\n"393 "ldf.fill f103 = %[f103]\n"394 "ldf.fill f104 = %[f104]\n"395 "ldf.fill f105 = %[f105]\n"396 "ldf.fill f106 = %[f106]\n"397 "ldf.fill f107 = %[f107]\n"398 "ldf.fill f108 = %[f108]\n"399 "ldf.fill f109 = %[f109]\n"400 "ldf.fill f110 = %[f110]\n"401 "ldf.fill f111 = %[f111]\n"402 "ldf.fill f112 = %[f112]\n"403 "ldf.fill f113 = %[f113]\n"404 "ldf.fill f114 = %[f114]\n"405 "ldf.fill f115 = %[f115]\n"406 "ldf.fill f116 = %[f116]\n"407 "ldf.fill f117 = %[f117]\n"408 "ldf.fill f118 = %[f118]\n"409 "ldf.fill f119 = %[f119]\n"410 "ldf.fill f120 = %[f120]\n"411 "ldf.fill f121 = %[f121]\n"412 ::413 [f92] "m" (fctx->fr[60]),414 [f93] "m" (fctx->fr[61]),415 [f94] "m" (fctx->fr[62]),416 [f95] "m" (fctx->fr[63]),417 [f96] "m" (fctx->fr[64]),418 [f97] "m" (fctx->fr[65]),419 [f98] "m" (fctx->fr[66]),420 [f99] "m" (fctx->fr[67]),421 [f100] "m" (fctx->fr[68]),422 [f101] "m" (fctx->fr[69]),423 [f102] "m" (fctx->fr[70]),424 [f103] "m" (fctx->fr[71]),425 [f104] "m" (fctx->fr[72]),426 [f105] "m" (fctx->fr[73]),427 [f106] "m" (fctx->fr[74]),428 [f107] "m" (fctx->fr[75]),429 [f108] "m" (fctx->fr[76]),430 [f109] "m" (fctx->fr[77]),431 [f110] "m" (fctx->fr[78]),432 [f111] "m" (fctx->fr[79]),433 [f112] "m" (fctx->fr[80]),434 [f113] "m" (fctx->fr[81]),435 [f114] "m" (fctx->fr[82]),436 [f115] "m" (fctx->fr[83]),437 [f116] "m" (fctx->fr[84]),438 [f117] "m" (fctx->fr[85]),439 [f118] "m" (fctx->fr[86]),440 [f119] "m" (fctx->fr[87]),441 [f120] "m" (fctx->fr[88]),442 [f121] "m" (fctx->fr[89])443 ); 444 445 asm volatile ( 446 "ldf.fill f122 = %[f122]\n"447 "ldf.fill f123 = %[f123]\n"448 "ldf.fill f124 = %[f124]\n"449 "ldf.fill f125 = %[f125]\n"450 "ldf.fill f126 = %[f126]\n"451 "ldf.fill f127 = %[f127]\n"452 ::453 [f122] "m" (fctx->fr[90]),454 [f123] "m" (fctx->fr[91]),455 [f124] "m" (fctx->fr[92]),456 [f125] "m" (fctx->fr[93]),457 [f126] "m" (fctx->fr[94]),458 [f127] "m" (fctx->fr[95])254 "ldf.fill f32 = %[f32]\n" 255 "ldf.fill f33 = %[f33]\n" 256 "ldf.fill f34 = %[f34]\n" 257 "ldf.fill f35 = %[f35]\n" 258 "ldf.fill f36 = %[f36]\n" 259 "ldf.fill f37 = %[f37]\n" 260 "ldf.fill f38 = %[f38]\n" 261 "ldf.fill f39 = %[f39]\n" 262 "ldf.fill f40 = %[f40]\n" 263 "ldf.fill f41 = %[f41]\n" 264 "ldf.fill f42 = %[f42]\n" 265 "ldf.fill f43 = %[f43]\n" 266 "ldf.fill f44 = %[f44]\n" 267 "ldf.fill f45 = %[f45]\n" 268 "ldf.fill f46 = %[f46]\n" 269 "ldf.fill f47 = %[f47]\n" 270 "ldf.fill f48 = %[f48]\n" 271 "ldf.fill f49 = %[f49]\n" 272 "ldf.fill f50 = %[f50]\n" 273 "ldf.fill f51 = %[f51]\n" 274 "ldf.fill f52 = %[f52]\n" 275 "ldf.fill f53 = %[f53]\n" 276 "ldf.fill f54 = %[f54]\n" 277 "ldf.fill f55 = %[f55]\n" 278 "ldf.fill f56 = %[f56]\n" 279 "ldf.fill f57 = %[f57]\n" 280 "ldf.fill f58 = %[f58]\n" 281 "ldf.fill f59 = %[f59]\n" 282 "ldf.fill f60 = %[f60]\n" 283 "ldf.fill f61 = %[f61]\n" 284 :: 285 [f32] "m" (fctx->fr[0]), 286 [f33] "m" (fctx->fr[1]), 287 [f34] "m" (fctx->fr[2]), 288 [f35] "m" (fctx->fr[3]), 289 [f36] "m" (fctx->fr[4]), 290 [f37] "m" (fctx->fr[5]), 291 [f38] "m" (fctx->fr[6]), 292 [f39] "m" (fctx->fr[7]), 293 [f40] "m" (fctx->fr[8]), 294 [f41] "m" (fctx->fr[9]), 295 [f42] "m" (fctx->fr[10]), 296 [f43] "m" (fctx->fr[11]), 297 [f44] "m" (fctx->fr[12]), 298 [f45] "m" (fctx->fr[13]), 299 [f46] "m" (fctx->fr[14]), 300 [f47] "m" (fctx->fr[15]), 301 [f48] "m" (fctx->fr[16]), 302 [f49] "m" (fctx->fr[17]), 303 [f50] "m" (fctx->fr[18]), 304 [f51] "m" (fctx->fr[19]), 305 [f52] "m" (fctx->fr[20]), 306 [f53] "m" (fctx->fr[21]), 307 [f54] "m" (fctx->fr[22]), 308 [f55] "m" (fctx->fr[23]), 309 [f56] "m" (fctx->fr[24]), 310 [f57] "m" (fctx->fr[25]), 311 [f58] "m" (fctx->fr[26]), 312 [f59] "m" (fctx->fr[27]), 313 [f60] "m" (fctx->fr[28]), 314 [f61] "m" (fctx->fr[29]) 315 ); 316 317 asm volatile ( 318 "ldf.fill f62 = %[f62]\n" 319 "ldf.fill f63 = %[f63]\n" 320 "ldf.fill f64 = %[f64]\n" 321 "ldf.fill f65 = %[f65]\n" 322 "ldf.fill f66 = %[f66]\n" 323 "ldf.fill f67 = %[f67]\n" 324 "ldf.fill f68 = %[f68]\n" 325 "ldf.fill f69 = %[f69]\n" 326 "ldf.fill f70 = %[f70]\n" 327 "ldf.fill f71 = %[f71]\n" 328 "ldf.fill f72 = %[f72]\n" 329 "ldf.fill f73 = %[f73]\n" 330 "ldf.fill f74 = %[f74]\n" 331 "ldf.fill f75 = %[f75]\n" 332 "ldf.fill f76 = %[f76]\n" 333 "ldf.fill f77 = %[f77]\n" 334 "ldf.fill f78 = %[f78]\n" 335 "ldf.fill f79 = %[f79]\n" 336 "ldf.fill f80 = %[f80]\n" 337 "ldf.fill f81 = %[f81]\n" 338 "ldf.fill f82 = %[f82]\n" 339 "ldf.fill f83 = %[f83]\n" 340 "ldf.fill f84 = %[f84]\n" 341 "ldf.fill f85 = %[f85]\n" 342 "ldf.fill f86 = %[f86]\n" 343 "ldf.fill f87 = %[f87]\n" 344 "ldf.fill f88 = %[f88]\n" 345 "ldf.fill f89 = %[f89]\n" 346 "ldf.fill f90 = %[f90]\n" 347 "ldf.fill f91 = %[f91]\n" 348 :: 349 [f62] "m" (fctx->fr[30]), 350 [f63] "m" (fctx->fr[31]), 351 [f64] "m" (fctx->fr[32]), 352 [f65] "m" (fctx->fr[33]), 353 [f66] "m" (fctx->fr[34]), 354 [f67] "m" (fctx->fr[35]), 355 [f68] "m" (fctx->fr[36]), 356 [f69] "m" (fctx->fr[37]), 357 [f70] "m" (fctx->fr[38]), 358 [f71] "m" (fctx->fr[39]), 359 [f72] "m" (fctx->fr[40]), 360 [f73] "m" (fctx->fr[41]), 361 [f74] "m" (fctx->fr[42]), 362 [f75] "m" (fctx->fr[43]), 363 [f76] "m" (fctx->fr[44]), 364 [f77] "m" (fctx->fr[45]), 365 [f78] "m" (fctx->fr[46]), 366 [f79] "m" (fctx->fr[47]), 367 [f80] "m" (fctx->fr[48]), 368 [f81] "m" (fctx->fr[49]), 369 [f82] "m" (fctx->fr[50]), 370 [f83] "m" (fctx->fr[51]), 371 [f84] "m" (fctx->fr[52]), 372 [f85] "m" (fctx->fr[53]), 373 [f86] "m" (fctx->fr[54]), 374 [f87] "m" (fctx->fr[55]), 375 [f88] "m" (fctx->fr[56]), 376 [f89] "m" (fctx->fr[57]), 377 [f90] "m" (fctx->fr[58]), 378 [f91] "m" (fctx->fr[59]) 379 ); 380 381 asm volatile ( 382 "ldf.fill f92 = %[f92]\n" 383 "ldf.fill f93 = %[f93]\n" 384 "ldf.fill f94 = %[f94]\n" 385 "ldf.fill f95 = %[f95]\n" 386 "ldf.fill f96 = %[f96]\n" 387 "ldf.fill f97 = %[f97]\n" 388 "ldf.fill f98 = %[f98]\n" 389 "ldf.fill f99 = %[f99]\n" 390 "ldf.fill f100 = %[f100]\n" 391 "ldf.fill f101 = %[f101]\n" 392 "ldf.fill f102 = %[f102]\n" 393 "ldf.fill f103 = %[f103]\n" 394 "ldf.fill f104 = %[f104]\n" 395 "ldf.fill f105 = %[f105]\n" 396 "ldf.fill f106 = %[f106]\n" 397 "ldf.fill f107 = %[f107]\n" 398 "ldf.fill f108 = %[f108]\n" 399 "ldf.fill f109 = %[f109]\n" 400 "ldf.fill f110 = %[f110]\n" 401 "ldf.fill f111 = %[f111]\n" 402 "ldf.fill f112 = %[f112]\n" 403 "ldf.fill f113 = %[f113]\n" 404 "ldf.fill f114 = %[f114]\n" 405 "ldf.fill f115 = %[f115]\n" 406 "ldf.fill f116 = %[f116]\n" 407 "ldf.fill f117 = %[f117]\n" 408 "ldf.fill f118 = %[f118]\n" 409 "ldf.fill f119 = %[f119]\n" 410 "ldf.fill f120 = %[f120]\n" 411 "ldf.fill f121 = %[f121]\n" 412 :: 413 [f92] "m" (fctx->fr[60]), 414 [f93] "m" (fctx->fr[61]), 415 [f94] "m" (fctx->fr[62]), 416 [f95] "m" (fctx->fr[63]), 417 [f96] "m" (fctx->fr[64]), 418 [f97] "m" (fctx->fr[65]), 419 [f98] "m" (fctx->fr[66]), 420 [f99] "m" (fctx->fr[67]), 421 [f100] "m" (fctx->fr[68]), 422 [f101] "m" (fctx->fr[69]), 423 [f102] "m" (fctx->fr[70]), 424 [f103] "m" (fctx->fr[71]), 425 [f104] "m" (fctx->fr[72]), 426 [f105] "m" (fctx->fr[73]), 427 [f106] "m" (fctx->fr[74]), 428 [f107] "m" (fctx->fr[75]), 429 [f108] "m" (fctx->fr[76]), 430 [f109] "m" (fctx->fr[77]), 431 [f110] "m" (fctx->fr[78]), 432 [f111] "m" (fctx->fr[79]), 433 [f112] "m" (fctx->fr[80]), 434 [f113] "m" (fctx->fr[81]), 435 [f114] "m" (fctx->fr[82]), 436 [f115] "m" (fctx->fr[83]), 437 [f116] "m" (fctx->fr[84]), 438 [f117] "m" (fctx->fr[85]), 439 [f118] "m" (fctx->fr[86]), 440 [f119] "m" (fctx->fr[87]), 441 [f120] "m" (fctx->fr[88]), 442 [f121] "m" (fctx->fr[89]) 443 ); 444 445 asm volatile ( 446 "ldf.fill f122 = %[f122]\n" 447 "ldf.fill f123 = %[f123]\n" 448 "ldf.fill f124 = %[f124]\n" 449 "ldf.fill f125 = %[f125]\n" 450 "ldf.fill f126 = %[f126]\n" 451 "ldf.fill f127 = %[f127]\n" 452 :: 453 [f122] "m" (fctx->fr[90]), 454 [f123] "m" (fctx->fr[91]), 455 [f124] "m" (fctx->fr[92]), 456 [f125] "m" (fctx->fr[93]), 457 [f126] "m" (fctx->fr[94]), 458 [f127] "m" (fctx->fr[95]) 459 459 ); 460 460 } … … 465 465 466 466 asm volatile ( 467 "rsm %0 ;;"468 "srlz.i\n"469 "srlz.d ;;\n"470 :471 : "i" (PSR_DFH_MASK)472 ); 473 474 asm volatile ( 475 "mov %0 = ar.fpsr ;;\n"476 "or %0 = %0,%1 ;;\n"477 "mov ar.fpsr = %0 ;;\n"478 : "+r" (a)479 : "r" (0x38)467 "rsm %0 ;;" 468 "srlz.i\n" 469 "srlz.d ;;\n" 470 : 471 : "i" (PSR_DFH_MASK) 472 ); 473 474 asm volatile ( 475 "mov %0 = ar.fpsr ;;\n" 476 "or %0 = %0,%1 ;;\n" 477 "mov ar.fpsr = %0 ;;\n" 478 : "+r" (a) 479 : "r" (0x38) 480 480 ); 481 481 } … … 483 483 void fpu_disable(void) 484 484 { 485 uint64_t a = 0 ;486 487 asm volatile ( 488 "ssm %0 ;;\n"489 "srlz.i\n"490 "srlz.d ;;\n"491 :492 : "i" (PSR_DFH_MASK)493 ); 494 495 asm volatile ( 496 "mov %0 = ar.fpsr ;;\n"497 "or %0 = %0,%1 ;;\n"498 "mov ar.fpsr = %0 ;;\n"499 : "+r" (a)500 : "r" (0x38)485 uint64_t a = 0; 486 487 asm volatile ( 488 "ssm %0 ;;\n" 489 "srlz.i\n" 490 "srlz.d ;;\n" 491 : 492 : "i" (PSR_DFH_MASK) 493 ); 494 495 asm volatile ( 496 "mov %0 = ar.fpsr ;;\n" 497 "or %0 = %0,%1 ;;\n" 498 "mov ar.fpsr = %0 ;;\n" 499 : "+r" (a) 500 : "r" (0x38) 501 501 ); 502 502 } … … 504 504 void fpu_init(void) 505 505 { 506 uint64_t a = 0 ;507 508 asm volatile ( 509 "mov %0 = ar.fpsr ;;\n"510 "or %0 = %0,%1 ;;\n"511 "mov ar.fpsr = %0 ;;\n"512 : "+r" (a)513 : "r" (0x38)514 ); 515 516 asm volatile ( 517 "mov f2 = f0\n"518 "mov f3 = f0\n"519 "mov f4 = f0\n"520 "mov f5 = f0\n"521 "mov f6 = f0\n"522 "mov f7 = f0\n"523 "mov f8 = f0\n"524 "mov f9 = f0\n"525 526 "mov f10 = f0\n"527 "mov f11 = f0\n"528 "mov f12 = f0\n"529 "mov f13 = f0\n"530 "mov f14 = f0\n"531 "mov f15 = f0\n"532 "mov f16 = f0\n"533 "mov f17 = f0\n"534 "mov f18 = f0\n"535 "mov f19 = f0\n"536 537 "mov f20 = f0\n"538 "mov f21 = f0\n"539 "mov f22 = f0\n"540 "mov f23 = f0\n"541 "mov f24 = f0\n"542 "mov f25 = f0\n"543 "mov f26 = f0\n"544 "mov f27 = f0\n"545 "mov f28 = f0\n"546 "mov f29 = f0\n"547 548 "mov f30 = f0\n"549 "mov f31 = f0\n"550 "mov f32 = f0\n"551 "mov f33 = f0\n"552 "mov f34 = f0\n"553 "mov f35 = f0\n"554 "mov f36 = f0\n"555 "mov f37 = f0\n"556 "mov f38 = f0\n"557 "mov f39 = f0\n"558 559 "mov f40 = f0\n"560 "mov f41 = f0\n"561 "mov f42 = f0\n"562 "mov f43 = f0\n"563 "mov f44 = f0\n"564 "mov f45 = f0\n"565 "mov f46 = f0\n"566 "mov f47 = f0\n"567 "mov f48 = f0\n"568 "mov f49 = f0\n"569 570 "mov f50 = f0\n"571 "mov f51 = f0\n"572 "mov f52 = f0\n"573 "mov f53 = f0\n"574 "mov f54 = f0\n"575 "mov f55 = f0\n"576 "mov f56 = f0\n"577 "mov f57 = f0\n"578 "mov f58 = f0\n"579 "mov f59 = f0\n"580 581 "mov f60 = f0\n"582 "mov f61 = f0\n"583 "mov f62 = f0\n"584 "mov f63 = f0\n"585 "mov f64 = f0\n"586 "mov f65 = f0\n"587 "mov f66 = f0\n"588 "mov f67 = f0\n"589 "mov f68 = f0\n"590 "mov f69 = f0\n"591 592 "mov f70 = f0\n"593 "mov f71 = f0\n"594 "mov f72 = f0\n"595 "mov f73 = f0\n"596 "mov f74 = f0\n"597 "mov f75 = f0\n"598 "mov f76 = f0\n"599 "mov f77 = f0\n"600 "mov f78 = f0\n"601 "mov f79 = f0\n"602 603 "mov f80 = f0\n"604 "mov f81 = f0\n"605 "mov f82 = f0\n"606 "mov f83 = f0\n"607 "mov f84 = f0\n"608 "mov f85 = f0\n"609 "mov f86 = f0\n"610 "mov f87 = f0\n"611 "mov f88 = f0\n"612 "mov f89 = f0\n"613 614 "mov f90 = f0\n"615 "mov f91 = f0\n"616 "mov f92 = f0\n"617 "mov f93 = f0\n"618 "mov f94 = f0\n"619 "mov f95 = f0\n"620 "mov f96 = f0\n"621 "mov f97 = f0\n"622 "mov f98 = f0\n"623 "mov f99 = f0\n"624 625 "mov f100 = f0\n"626 "mov f101 = f0\n"627 "mov f102 = f0\n"628 "mov f103 = f0\n"629 "mov f104 = f0\n"630 "mov f105 = f0\n"631 "mov f106 = f0\n"632 "mov f107 = f0\n"633 "mov f108 = f0\n"634 "mov f109 = f0\n"635 636 "mov f110 = f0\n"637 "mov f111 = f0\n"638 "mov f112 = f0\n"639 "mov f113 = f0\n"640 "mov f114 = f0\n"641 "mov f115 = f0\n"642 "mov f116 = f0\n"643 "mov f117 = f0\n"644 "mov f118 = f0\n"645 "mov f119 = f0\n"646 647 "mov f120 = f0\n"648 "mov f121 = f0\n"649 "mov f122 = f0\n"650 "mov f123 = f0\n"651 "mov f124 = f0\n"652 "mov f125 = f0\n"653 "mov f126 = f0\n"654 "mov f127 = f0\n"506 uint64_t a = 0; 507 508 asm volatile ( 509 "mov %0 = ar.fpsr ;;\n" 510 "or %0 = %0,%1 ;;\n" 511 "mov ar.fpsr = %0 ;;\n" 512 : "+r" (a) 513 : "r" (0x38) 514 ); 515 516 asm volatile ( 517 "mov f2 = f0\n" 518 "mov f3 = f0\n" 519 "mov f4 = f0\n" 520 "mov f5 = f0\n" 521 "mov f6 = f0\n" 522 "mov f7 = f0\n" 523 "mov f8 = f0\n" 524 "mov f9 = f0\n" 525 526 "mov f10 = f0\n" 527 "mov f11 = f0\n" 528 "mov f12 = f0\n" 529 "mov f13 = f0\n" 530 "mov f14 = f0\n" 531 "mov f15 = f0\n" 532 "mov f16 = f0\n" 533 "mov f17 = f0\n" 534 "mov f18 = f0\n" 535 "mov f19 = f0\n" 536 537 "mov f20 = f0\n" 538 "mov f21 = f0\n" 539 "mov f22 = f0\n" 540 "mov f23 = f0\n" 541 "mov f24 = f0\n" 542 "mov f25 = f0\n" 543 "mov f26 = f0\n" 544 "mov f27 = f0\n" 545 "mov f28 = f0\n" 546 "mov f29 = f0\n" 547 548 "mov f30 = f0\n" 549 "mov f31 = f0\n" 550 "mov f32 = f0\n" 551 "mov f33 = f0\n" 552 "mov f34 = f0\n" 553 "mov f35 = f0\n" 554 "mov f36 = f0\n" 555 "mov f37 = f0\n" 556 "mov f38 = f0\n" 557 "mov f39 = f0\n" 558 559 "mov f40 = f0\n" 560 "mov f41 = f0\n" 561 "mov f42 = f0\n" 562 "mov f43 = f0\n" 563 "mov f44 = f0\n" 564 "mov f45 = f0\n" 565 "mov f46 = f0\n" 566 "mov f47 = f0\n" 567 "mov f48 = f0\n" 568 "mov f49 = f0\n" 569 570 "mov f50 = f0\n" 571 "mov f51 = f0\n" 572 "mov f52 = f0\n" 573 "mov f53 = f0\n" 574 "mov f54 = f0\n" 575 "mov f55 = f0\n" 576 "mov f56 = f0\n" 577 "mov f57 = f0\n" 578 "mov f58 = f0\n" 579 "mov f59 = f0\n" 580 581 "mov f60 = f0\n" 582 "mov f61 = f0\n" 583 "mov f62 = f0\n" 584 "mov f63 = f0\n" 585 "mov f64 = f0\n" 586 "mov f65 = f0\n" 587 "mov f66 = f0\n" 588 "mov f67 = f0\n" 589 "mov f68 = f0\n" 590 "mov f69 = f0\n" 591 592 "mov f70 = f0\n" 593 "mov f71 = f0\n" 594 "mov f72 = f0\n" 595 "mov f73 = f0\n" 596 "mov f74 = f0\n" 597 "mov f75 = f0\n" 598 "mov f76 = f0\n" 599 "mov f77 = f0\n" 600 "mov f78 = f0\n" 601 "mov f79 = f0\n" 602 603 "mov f80 = f0\n" 604 "mov f81 = f0\n" 605 "mov f82 = f0\n" 606 "mov f83 = f0\n" 607 "mov f84 = f0\n" 608 "mov f85 = f0\n" 609 "mov f86 = f0\n" 610 "mov f87 = f0\n" 611 "mov f88 = f0\n" 612 "mov f89 = f0\n" 613 614 "mov f90 = f0\n" 615 "mov f91 = f0\n" 616 "mov f92 = f0\n" 617 "mov f93 = f0\n" 618 "mov f94 = f0\n" 619 "mov f95 = f0\n" 620 "mov f96 = f0\n" 621 "mov f97 = f0\n" 622 "mov f98 = f0\n" 623 "mov f99 = f0\n" 624 625 "mov f100 = f0\n" 626 "mov f101 = f0\n" 627 "mov f102 = f0\n" 628 "mov f103 = f0\n" 629 "mov f104 = f0\n" 630 "mov f105 = f0\n" 631 "mov f106 = f0\n" 632 "mov f107 = f0\n" 633 "mov f108 = f0\n" 634 "mov f109 = f0\n" 635 636 "mov f110 = f0\n" 637 "mov f111 = f0\n" 638 "mov f112 = f0\n" 639 "mov f113 = f0\n" 640 "mov f114 = f0\n" 641 "mov f115 = f0\n" 642 "mov f116 = f0\n" 643 "mov f117 = f0\n" 644 "mov f118 = f0\n" 645 "mov f119 = f0\n" 646 647 "mov f120 = f0\n" 648 "mov f121 = f0\n" 649 "mov f122 = f0\n" 650 "mov f123 = f0\n" 651 "mov f124 = f0\n" 652 "mov f125 = f0\n" 653 "mov f126 = f0\n" 654 "mov f127 = f0\n" 655 655 ); 656 656 -
kernel/arch/ia64/src/mm/tlb.c
r47b2d7e3 r1433ecda 75 75 for (j = 0; j < count2; j++) { 76 76 asm volatile ( 77 "ptc.e %[adr] ;;"78 :: [adr] "r" (adr)77 "ptc.e %[adr] ;;" 78 :: [adr] "r" (adr) 79 79 ); 80 80 adr += stride2; … … 175 175 for (; va < (page + cnt * PAGE_SIZE); va += (1UL << ps)) 176 176 asm volatile ( 177 "ptc.l %[va], %[ps] ;;"178 :: [va]"r" (va),179 [ps] "r" (ps << 2)177 "ptc.l %[va], %[ps] ;;" 178 :: [va] "r" (va), 179 [ps] "r" (ps << 2) 180 180 ); 181 181 … … 246 246 247 247 asm volatile ( 248 "mov r8 = psr ;;\n"249 "rsm %[mask] ;;\n" /* PSR_IC_MASK */250 "srlz.d ;;\n"251 "srlz.i ;;\n"252 "mov cr.ifa = %[va]\n" /* va */253 "mov cr.itir = %[word1] ;;\n" /* entry.word[1] */254 "cmp.eq p6, p7 = %[dtc], r0 ;;\n" /* decide between itc and dtc */255 "(p6) itc.i %[word0] ;;\n"256 "(p7) itc.d %[word0] ;;\n"257 "mov psr.l = r8 ;;\n"258 "srlz.d ;;\n"259 :: [mask] "i" (PSR_IC_MASK),260 [va] "r" (va),261 [word0] "r" (entry.word[0]),262 [word1] "r" (entry.word[1]),263 [dtc] "r" (dtc)264 : "p6", "p7", "r8"248 "mov r8 = psr ;;\n" 249 "rsm %[mask] ;;\n" /* PSR_IC_MASK */ 250 "srlz.d ;;\n" 251 "srlz.i ;;\n" 252 "mov cr.ifa = %[va]\n" /* va */ 253 "mov cr.itir = %[word1] ;;\n" /* entry.word[1] */ 254 "cmp.eq p6, p7 = %[dtc], r0 ;;\n" /* decide between itc and dtc */ 255 "(p6) itc.i %[word0] ;;\n" 256 "(p7) itc.d %[word0] ;;\n" 257 "mov psr.l = r8 ;;\n" 258 "srlz.d ;;\n" 259 :: [mask] "i" (PSR_IC_MASK), 260 [va] "r" (va), 261 [word0] "r" (entry.word[0]), 262 [word1] "r" (entry.word[1]), 263 [dtc] "r" (dtc) 264 : "p6", "p7", "r8" 265 265 ); 266 266 … … 333 333 334 334 asm volatile ( 335 "mov r8 = psr ;;\n"336 "rsm %[mask] ;;\n" /* PSR_IC_MASK */337 "srlz.d ;;\n"338 "srlz.i ;;\n"339 "mov cr.ifa = %[va]\n" /* va */340 "mov cr.itir = %[word1] ;;\n" /* entry.word[1] */341 "cmp.eq p6, p7 = %[dtr], r0 ;;\n" /* decide between itr and dtr */342 "(p6) itr.i itr[%[tr]] = %[word0] ;;\n"343 "(p7) itr.d dtr[%[tr]] = %[word0] ;;\n"344 "mov psr.l = r8 ;;\n"345 "srlz.d ;;\n"346 :: [mask] "i" (PSR_IC_MASK),347 [va] "r" (va),348 [word1] "r" (entry.word[1]),349 [word0] "r" (entry.word[0]),350 [tr] "r" (tr),351 [dtr] "r" (dtr)352 : "p6", "p7", "r8"335 "mov r8 = psr ;;\n" 336 "rsm %[mask] ;;\n" /* PSR_IC_MASK */ 337 "srlz.d ;;\n" 338 "srlz.i ;;\n" 339 "mov cr.ifa = %[va]\n" /* va */ 340 "mov cr.itir = %[word1] ;;\n" /* entry.word[1] */ 341 "cmp.eq p6, p7 = %[dtr], r0 ;;\n" /* decide between itr and dtr */ 342 "(p6) itr.i itr[%[tr]] = %[word0] ;;\n" 343 "(p7) itr.d dtr[%[tr]] = %[word0] ;;\n" 344 "mov psr.l = r8 ;;\n" 345 "srlz.d ;;\n" 346 :: [mask] "i" (PSR_IC_MASK), 347 [va] "r" (va), 348 [word1] "r" (entry.word[1]), 349 [word0] "r" (entry.word[0]), 350 [tr] "r" (tr), 351 [dtr] "r" (dtr) 352 : "p6", "p7", "r8" 353 353 ); 354 354 … … 403 403 { 404 404 asm volatile ( 405 "ptr.d %[page], %[width]\n"406 :: [page] "r" (page),407 [width] "r" (width << 2)405 "ptr.d %[page], %[width]\n" 406 :: [page] "r" (page), 407 [width] "r" (width << 2) 408 408 ); 409 409 } -
kernel/arch/ia64/src/mm/vhpt.c
r47b2d7e3 r1433ecda 38 38 #include <print.h> 39 39 40 static vhpt_entry_t *vhpt_base;40 static vhpt_entry_t *vhpt_base; 41 41 42 42 uintptr_t vhpt_set_up(void) -
kernel/arch/ia64/src/proc/scheduler.c
r47b2d7e3 r1433ecda 65 65 66 66 /* purge DTR[TR_STACK1] and DTR[TR_STACK2] */ 67 dtr_purge((uintptr_t) THREAD->kstack, PAGE_WIDTH +1);67 dtr_purge((uintptr_t) THREAD->kstack, PAGE_WIDTH + 1); 68 68 69 69 /* insert DTR[TR_STACK1] and DTR[TR_STACK2] */ … … 84 84 */ 85 85 asm volatile ( 86 "bsw.0\n"87 "mov r22 = %0\n"88 "mov r23 = %1\n"89 "bsw.1\n"90 :91 : "r" (&THREAD->kstack[STACK_SIZE / 2]),92 "r" (&THREAD->kstack[STACK_SIZE / 2])93 );86 "bsw.0\n" 87 "mov r22 = %0\n" 88 "mov r23 = %1\n" 89 "bsw.1\n" 90 : 91 : "r" (&THREAD->kstack[STACK_SIZE / 2]), 92 "r" (&THREAD->kstack[STACK_SIZE / 2]) 93 ); 94 94 } 95 95
Note:
See TracChangeset
for help on using the changeset viewer.
