Rev 534 | Rev 613 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 534 | Rev 569 | ||
|---|---|---|---|
| Line 105... | Line 105... | ||
| 105 | static inline void tba_write(__u64 v) |
105 | static inline void tba_write(__u64 v) |
| 106 | { |
106 | { |
| 107 | __asm__ volatile ("wrpr %0, %1, %%tba\n" : : "r" (v), "i" (0)); |
107 | __asm__ volatile ("wrpr %0, %1, %%tba\n" : : "r" (v), "i" (0)); |
| 108 | } |
108 | } |
| 109 | 109 | ||
| - | 110 | /** Load __u64 from alternate space. |
|
| - | 111 | * |
|
| - | 112 | * @param asi ASI determining the alternate space. |
|
| - | 113 | * @param va Virtual address within the ASI. |
|
| - | 114 | * |
|
| - | 115 | * @return Value read from the virtual address in the specified address space. |
|
| - | 116 | */ |
|
| - | 117 | static inline __u64 asi_u64_read(asi_t asi, __address va) |
|
| - | 118 | { |
|
| - | 119 | __u64 v; |
|
| - | 120 | ||
| - | 121 | __asm__ volatile ("ldxa [%1] %2, %0\n" : "=r" (v) : "r" (va), "i" (asi)); |
|
| - | 122 | ||
| - | 123 | return v; |
|
| - | 124 | } |
|
| - | 125 | ||
| - | 126 | /** Store __u64 to alternate space. |
|
| - | 127 | * |
|
| - | 128 | * @param asi ASI determining the alternate space. |
|
| - | 129 | * @param va Virtual address within the ASI. |
|
| - | 130 | * @param v Value to be written. |
|
| - | 131 | */ |
|
| - | 132 | static inline void asi_u64_write(asi_t asi, __address va, __u64 v) |
|
| - | 133 | { |
|
| - | 134 | __asm__ volatile ("stxa %0, [%1] %2\n" : : "r" (v), "r" (va), "i" (asi)); |
|
| - | 135 | } |
|
| - | 136 | ||
| 110 | 137 | ||
| 111 | void cpu_halt(void); |
138 | void cpu_halt(void); |
| 112 | void cpu_sleep(void); |
139 | void cpu_sleep(void); |
| 113 | void asm_delay_loop(__u32 t); |
140 | void asm_delay_loop(__u32 t); |
| 114 | 141 | ||