Changeset 1433ecda in mainline for kernel/arch/sparc64/include
- 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/sparc64/include/arch
- Files:
-
- 20 edited
-
atomic.h (modified) (3 diffs)
-
barrier.h (modified) (2 diffs)
-
cpu_family.h (modified) (2 diffs)
-
drivers/niagara_buf.h (modified) (2 diffs)
-
mm/page.h (modified) (1 diff)
-
mm/sun4u/as.h (modified) (2 diffs)
-
mm/sun4u/frame.h (modified) (1 diff)
-
mm/sun4u/mmu.h (modified) (1 diff)
-
mm/sun4u/tlb.h (modified) (10 diffs)
-
mm/sun4u/tsb.h (modified) (1 diff)
-
mm/sun4u/tte.h (modified) (2 diffs)
-
mm/sun4v/as.h (modified) (2 diffs)
-
mm/sun4v/page.h (modified) (1 diff)
-
mm/sun4v/tlb.h (modified) (3 diffs)
-
mm/sun4v/tsb.h (modified) (1 diff)
-
mm/sun4v/tte.h (modified) (1 diff)
-
register.h (modified) (6 diffs)
-
sun4u/asm.h (modified) (1 diff)
-
sun4v/hypercall.h (modified) (6 diffs)
-
sun4v/register.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/include/arch/atomic.h
r47b2d7e3 r1433ecda 64 64 65 65 asm volatile ( 66 "casx %0, %2, %1\n"67 : "+m" (*((atomic_count_t *) ptr)),66 "casx %0, %2, %1\n" 67 : "+m" (*((atomic_count_t *) ptr)), 68 68 "+r" (b) 69 69 : "r" (a) … … 110 110 111 111 asm volatile ( 112 "casx %0, %2, %1\n"113 : "+m" (*((atomic_count_t *) ptr)),112 "casx %0, %2, %1\n" 113 : "+m" (*((atomic_count_t *) ptr)), 114 114 "+r" (v) 115 115 : "r" (0) … … 129 129 130 130 asm volatile ( 131 "0:\n"132 "casx %0, %3, %1\n"133 "brz %1, 2f\n"134 "nop\n"135 "1:\n"136 "ldx %0, %2\n"137 "brz %2, 0b\n"138 "nop\n"139 "ba,a %%xcc, 1b\n"140 "2:\n"141 : "+m" (*((atomic_count_t *) ptr)),142 "+r" (tmp1),143 "+r" (tmp2)144 : "r" (0)131 "0:\n" 132 "casx %0, %3, %1\n" 133 "brz %1, 2f\n" 134 "nop\n" 135 "1:\n" 136 "ldx %0, %2\n" 137 "brz %2, 0b\n" 138 "nop\n" 139 "ba,a %%xcc, 1b\n" 140 "2:\n" 141 : "+m" (*((atomic_count_t *) ptr)), 142 "+r" (tmp1), 143 "+r" (tmp2) 144 : "r" (0) 145 145 ); 146 146 -
kernel/arch/sparc64/include/arch/barrier.h
r47b2d7e3 r1433ecda 96 96 97 97 asm volatile ( 98 "rd %%pc, %[pc]\n"99 "flush %[pc]\n"100 : [pc] "=&r" (pc)98 "rd %%pc, %[pc]\n" 99 "flush %[pc]\n" 100 : [pc] "=&r" (pc) 101 101 ); 102 102 } … … 106 106 { 107 107 asm volatile ( 108 "membar #Sync\n"108 "membar #Sync\n" 109 109 ); 110 110 } -
kernel/arch/sparc64/include/arch/cpu_family.h
r47b2d7e3 r1433ecda 50 50 int impl = ((ver_reg_t) ver_read()).impl; 51 51 return (impl == IMPL_ULTRASPARCI) || (impl == IMPL_ULTRASPARCII) || 52 (impl == IMPL_ULTRASPARCII_I) || (impl == IMPL_ULTRASPARCII_E);52 (impl == IMPL_ULTRASPARCII_I) || (impl == IMPL_ULTRASPARCII_E); 53 53 } 54 54 … … 62 62 int impl = ((ver_reg_t) ver_read()).impl; 63 63 return (impl == IMPL_ULTRASPARCIII) || 64 (impl == IMPL_ULTRASPARCIII_PLUS) ||65 (impl == IMPL_ULTRASPARCIII_I);64 (impl == IMPL_ULTRASPARCIII_PLUS) || 65 (impl == IMPL_ULTRASPARCIII_I); 66 66 } 67 67 -
kernel/arch/sparc64/include/arch/drivers/niagara_buf.h
r47b2d7e3 r1433ecda 50 50 uint64_t write_ptr; 51 51 char data[OUTPUT_BUFFER_SIZE]; 52 } __attribute__ ((packed)) niagara_output_buffer_t;52 } __attribute__((packed)) niagara_output_buffer_t; 53 53 54 54 #define INPUT_BUFFER_SIZE ((PAGE_SIZE) - 2 * 8) … … 58 58 uint64_t read_ptr; 59 59 char data[INPUT_BUFFER_SIZE]; 60 } __attribute__ ((packed)) niagara_input_buffer_t;60 } __attribute__((packed)) niagara_input_buffer_t; 61 61 62 62 /** @} -
kernel/arch/sparc64/include/arch/mm/page.h
r47b2d7e3 r1433ecda 68 68 uint64_t vpn : 51; /**< Virtual Page Number. */ 69 69 unsigned offset : 13; /**< Offset. */ 70 } __attribute__ ((packed));70 } __attribute__((packed)); 71 71 } page_address_t; 72 72 -
kernel/arch/sparc64/include/arch/mm/sun4u/as.h
r47b2d7e3 r1433ecda 56 56 unsigned : 6; 57 57 uint64_t va_tag : 42; /**< Virtual address bits <63:22>. */ 58 } __attribute__ ((packed));58 } __attribute__((packed)); 59 59 } tsb_tag_target_t; 60 60 … … 63 63 tsb_tag_target_t tag; 64 64 tte_data_t data; 65 } __attribute__ ((packed)) tsb_entry_t;65 } __attribute__((packed)) tsb_entry_t; 66 66 67 67 typedef struct { -
kernel/arch/sparc64/include/arch/mm/sun4u/frame.h
r47b2d7e3 r1433ecda 69 69 #endif 70 70 unsigned offset : 13; /**< Offset. */ 71 } __attribute__ ((packed));71 } __attribute__((packed)); 72 72 }; 73 73 -
kernel/arch/sparc64/include/arch/mm/sun4u/mmu.h
r47b2d7e3 r1433ecda 112 112 unsigned ic : 1; /**< I-Cache enable. */ 113 113 114 } __attribute__ ((packed));114 } __attribute__((packed)); 115 115 } lsu_cr_reg_t; 116 116 #endif /* US */ -
kernel/arch/sparc64/include/arch/mm/sun4u/tlb.h
r47b2d7e3 r1433ecda 109 109 unsigned long : 51; 110 110 unsigned context : 13; /**< Context/ASID. */ 111 } __attribute__ ((packed));111 } __attribute__((packed)); 112 112 }; 113 113 typedef union tlb_context_reg tlb_context_reg_t; … … 126 126 unsigned tlb_entry : 6; 127 127 unsigned : 3; 128 } __attribute__ ((packed));128 } __attribute__((packed)); 129 129 }; 130 130 typedef union tlb_data_access_addr dtlb_data_access_addr_t; … … 155 155 unsigned local_tlb_entry : 9; 156 156 unsigned : 3; 157 } __attribute__ ((packed));157 } __attribute__((packed)); 158 158 }; 159 159 typedef union dtlb_data_access_addr dtlb_data_access_addr_t; … … 169 169 unsigned local_tlb_entry : 7; 170 170 unsigned : 3; 171 } __attribute__ ((packed));171 } __attribute__((packed)); 172 172 }; 173 173 typedef union itlb_data_access_addr itlb_data_access_addr_t; … … 182 182 uint64_t vpn : 51; /**< Virtual Address bits 63:13. */ 183 183 unsigned context : 13; /**< Context identifier. */ 184 } __attribute__ ((packed));184 } __attribute__((packed)); 185 185 }; 186 186 typedef union tlb_tag_read_reg tlb_tag_read_reg_t; … … 192 192 uint64_t value; 193 193 struct { 194 uint64_t vpn : 51; /**< Virtual Address bits 63:13. */194 uint64_t vpn : 51; /**< Virtual Address bits 63:13. */ 195 195 #if defined (US) 196 196 unsigned : 6; /**< Ignored. */ … … 198 198 #elif defined (US3) 199 199 unsigned : 5; /**< Ignored. */ 200 unsigned type : 2; /**< The type of demap operation. */200 unsigned type : 2; /**< The type of demap operation. */ 201 201 #endif 202 202 unsigned context : 2; /**< Context register selection. */ 203 203 unsigned : 4; /**< Zero. */ 204 } __attribute__ ((packed));204 } __attribute__((packed)); 205 205 }; 206 206 typedef union tlb_demap_addr tlb_demap_addr_t; … … 229 229 unsigned ow : 1; /**< Overwrite bit. */ 230 230 unsigned fv : 1; /**< Fault Valid bit. */ 231 } __attribute__ ((packed));231 } __attribute__((packed)); 232 232 }; 233 233 typedef union tlb_sfsr_reg tlb_sfsr_reg_t; … … 436 436 */ 437 437 NO_TRACE static inline void itlb_data_access_write(int tlb, size_t entry, 438 uint64_t value)438 uint64_t value) 439 439 { 440 440 itlb_data_access_addr_t reg; … … 472 472 */ 473 473 NO_TRACE static inline void dtlb_data_access_write(int tlb, size_t entry, 474 uint64_t value)474 uint64_t value) 475 475 { 476 476 dtlb_data_access_addr_t reg; -
kernel/arch/sparc64/include/arch/mm/sun4u/tsb.h
r47b2d7e3 r1433ecda 75 75 unsigned size : 3; /**< TSB size. Number of entries is 76 76 * 512 * 2^size. */ 77 } __attribute__ ((packed));77 } __attribute__((packed)); 78 78 } tsb_base_reg_t; 79 79 -
kernel/arch/sparc64/include/arch/mm/sun4u/tte.h
r47b2d7e3 r1433ecda 63 63 unsigned : 6; /**< Reserved. */ 64 64 uint64_t va_tag : 42; /**< Virtual Address Tag, bits 63:22. */ 65 } __attribute__ ((packed));65 } __attribute__((packed)); 66 66 }; 67 67 … … 92 92 unsigned w : 1; /**< Writable. */ 93 93 unsigned g : 1; /**< Global. */ 94 } __attribute__ ((packed));94 } __attribute__((packed)); 95 95 }; 96 96 -
kernel/arch/sparc64/include/arch/mm/sun4v/as.h
r47b2d7e3 r1433ecda 63 63 unsigned : 6; 64 64 uint64_t va_tag : 42; /**< Virtual address bits <63:22>. */ 65 } __attribute__ ((packed));65 } __attribute__((packed)); 66 66 } tte_tag_t; 67 67 … … 70 70 tte_tag_t tag; 71 71 tte_data_t data; 72 } __attribute__ ((packed)) tsb_entry_t;72 } __attribute__((packed)) tsb_entry_t; 73 73 74 74 typedef struct { -
kernel/arch/sparc64/include/arch/mm/sun4v/page.h
r47b2d7e3 r1433ecda 60 60 uint64_t vpn : 51; /**< Virtual Page Number. */ 61 61 unsigned offset : 13; /**< Offset. */ 62 } __attribute__ ((packed));62 } __attribute__((packed)); 63 63 } page_address_t; 64 64 -
kernel/arch/sparc64/include/arch/mm/sun4v/tlb.h
r47b2d7e3 r1433ecda 68 68 uint64_t dfc; /**< Data fault context (DFC) */ 69 69 uint8_t reserved2[0x28]; 70 } __attribute__ ((packed)) mmu_fault_status_area_t;70 } __attribute__((packed)) mmu_fault_status_area_t; 71 71 72 72 #define DTLB_MAX_LOCKED_ENTRIES 8 … … 126 126 * @param mmu_flag MMU_FLAG_DTLB, MMU_FLAG_ITLB or a combination of both 127 127 */ 128 NO_TRACE static inline void mmu_demap_ctx(int context, int mmu_flag) { 128 NO_TRACE static inline void mmu_demap_ctx(int context, int mmu_flag) 129 { 129 130 __hypercall_fast4(MMU_DEMAP_CTX, 0, 0, context, mmu_flag); 130 131 } … … 137 138 * @param mmu_flag MMU_FLAG_DTLB, MMU_FLAG_ITLB or a combination of both 138 139 */ 139 NO_TRACE static inline void mmu_demap_page(uintptr_t vaddr, int context, int mmu_flag) { 140 NO_TRACE static inline void mmu_demap_page(uintptr_t vaddr, int context, int mmu_flag) 141 { 140 142 __hypercall_fast5(MMU_DEMAP_PAGE, 0, 0, vaddr, context, mmu_flag); 141 143 } -
kernel/arch/sparc64/include/arch/mm/sun4v/tsb.h
r47b2d7e3 r1433ecda 65 65 uint64_t tsb_base; /**< Real address of TSB base. */ 66 66 uint64_t reserved; 67 } __attribute__ ((packed)) tsb_descr_t;67 } __attribute__((packed)) tsb_descr_t; 68 68 69 69 -
kernel/arch/sparc64/include/arch/mm/sun4v/tte.h
r47b2d7e3 r1433ecda 69 69 unsigned soft2 : 2; /**< Software defined field. */ 70 70 unsigned size : 4; /**< Page size. */ 71 } __attribute__ ((packed));71 } __attribute__((packed)); 72 72 }; 73 73 -
kernel/arch/sparc64/include/arch/register.h
r47b2d7e3 r1433ecda 50 50 unsigned : 3; 51 51 unsigned maxwin : 5; 52 } __attribute__ ((packed));52 } __attribute__((packed)); 53 53 }; 54 54 typedef union ver_reg ver_reg_t; … … 70 70 unsigned ie : 1; /**< Interrupt Enable. */ 71 71 unsigned ag : 1; /**< Alternate Globals*/ 72 } __attribute__ ((packed));72 } __attribute__((packed)); 73 73 }; 74 74 typedef union pstate_reg pstate_reg_t; … … 80 80 unsigned npt : 1; /**< Non-privileged Trap enable. */ 81 81 uint64_t counter : 63; /**< Elapsed CPU clck cycle counter. */ 82 } __attribute__ ((packed));82 } __attribute__((packed)); 83 83 }; 84 84 typedef union tick_reg tick_reg_t; … … 90 90 unsigned int_dis : 1; /**< TICK_INT interrupt disabled flag. */ 91 91 uint64_t tick_cmpr : 63; /**< Compare value for TICK interrupts. */ 92 } __attribute__ ((packed));92 } __attribute__((packed)); 93 93 }; 94 94 typedef union tick_compare_reg tick_compare_reg_t; … … 102 102 unsigned int_level : 15; 103 103 unsigned tick_int : 1; 104 } __attribute__ ((packed));104 } __attribute__((packed)); 105 105 }; 106 106 typedef union softint_reg softint_reg_t; … … 114 114 unsigned du : 1; 115 115 unsigned dl : 1; 116 } __attribute__ ((packed));116 } __attribute__((packed)); 117 117 }; 118 118 typedef union fprs_reg fprs_reg_t; -
kernel/arch/sparc64/include/arch/sun4u/asm.h
r47b2d7e3 r1433ecda 48 48 49 49 asm volatile ( 50 "rdpr %%ver, %[v]\n"51 : [v] "=r" (v)50 "rdpr %%ver, %[v]\n" 51 : [v] "=r" (v) 52 52 ); 53 53 -
kernel/arch/sparc64/include/arch/sun4v/hypercall.h
r47b2d7e3 r1433ecda 152 152 */ 153 153 static inline uint64_t 154 __hypercall_fast(const uint64_t p1, const uint64_t p2, const uint64_t p3,154 __hypercall_fast(const uint64_t p1, const uint64_t p2, const uint64_t p3, 155 155 const uint64_t p4, const uint64_t p5, const uint64_t function_number) 156 156 { … … 163 163 164 164 asm volatile ( 165 "ta %7\n"166 : "=r" (a1)167 : "r" (a1), "r" (a2), "r" (a3), "r" (a4), "r" (a5), "r" (a6),168 "i" (FAST_TRAP)169 : "memory"165 "ta %7\n" 166 : "=r" (a1) 167 : "r" (a1), "r" (a2), "r" (a3), "r" (a4), "r" (a5), "r" (a6), 168 "i" (FAST_TRAP) 169 : "memory" 170 170 ); 171 171 … … 187 187 */ 188 188 static inline uint64_t 189 __hypercall_fast_ret1(const uint64_t p1, const uint64_t p2, const uint64_t p3,189 __hypercall_fast_ret1(const uint64_t p1, const uint64_t p2, const uint64_t p3, 190 190 const uint64_t p4, const uint64_t p5, const uint64_t function_number, 191 191 uint64_t *ret1) … … 199 199 200 200 asm volatile ( 201 "ta %8\n"202 : "=r" (a1), "=r" (a2)203 : "r" (a1), "r" (a2), "r" (a3), "r" (a4), "r" (a5), "r" (a6),204 "i" (FAST_TRAP)205 : "memory"201 "ta %8\n" 202 : "=r" (a1), "=r" (a2) 203 : "r" (a1), "r" (a2), "r" (a3), "r" (a4), "r" (a5), "r" (a6), 204 "i" (FAST_TRAP) 205 : "memory" 206 206 ); 207 207 … … 223 223 */ 224 224 static inline uint64_t 225 __hypercall_hyperfast(const uint64_t p1, const uint64_t p2, const uint64_t p3,225 __hypercall_hyperfast(const uint64_t p1, const uint64_t p2, const uint64_t p3, 226 226 const uint64_t p4, const uint64_t p5, const uint64_t sw_trap_number) 227 227 { … … 233 233 234 234 asm volatile ( 235 "ta %6\n"236 : "=r" (a1)237 : "r" (a1), "r" (a2), "r" (a3), "r" (a4), "r" (a5),238 "i" (sw_trap_number)239 : "memory"235 "ta %6\n" 236 : "=r" (a1) 237 : "r" (a1), "r" (a2), "r" (a3), "r" (a4), "r" (a5), 238 "i" (sw_trap_number) 239 : "memory" 240 240 ); 241 241 -
kernel/arch/sparc64/include/arch/sun4v/register.h
r47b2d7e3 r1433ecda 53 53 unsigned ie : 1; /**< Interrupt Enable. */ 54 54 unsigned : 1; 55 } __attribute__ ((packed));55 } __attribute__((packed)); 56 56 }; 57 57 typedef union pstate_reg pstate_reg_t;
Note:
See TracChangeset
for help on using the changeset viewer.
