Rev 3549 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3549 | Rev 3582 | ||
|---|---|---|---|
| Line 108... | Line 108... | ||
| 108 | */ |
108 | */ |
| 109 | 109 | ||
| 110 | /* |
110 | /* |
| 111 | * US3 processors have a write-invalidate cache, so explicitly |
111 | * US3 processors have a write-invalidate cache, so explicitly |
| 112 | * invalidating it is not required. Whether to invalidate I-cache |
112 | * invalidating it is not required. Whether to invalidate I-cache |
| 113 | * or not is decided according to the value of the ver.impl bits |
113 | * or not is decided according to the value of the global |
| 114 | * in the Version register. |
114 | * "subarchitecture" variable (set in the bootstrap). |
| 115 | */ |
115 | */ |
| 116 | ! the lowest/greatest value of ver.impl for US3 |
- | |
| 117 | #define FIRST_US3_CPU 0x14 |
116 | set subarchitecture, %g2 |
| 118 | #define LAST_US3_CPU 0x19 |
- | |
| 119 | rdpr %ver, %g2 ! autodetect CPU using the Version register |
- | |
| 120 | sllx %g2, 16, %g2 ! extract ver.impl bits |
- | |
| 121 | srlx %g2, 48, %g2 |
117 | ldub [%g2], %g2 |
| 122 | addcc %g2, -FIRST_US3_CPU, %g0 ! flush if ver.impl < FISRT_US3_CPU |
- | |
| 123 | bl 0f |
- | |
| 124 | nop |
- | |
| 125 | addcc %g2, -LAST_US3_CPU, %g0 ! flush if ver.impl > LAST_US3_CPU |
- | |
| 126 | bg 0f |
118 | cmp %g2, 3 |
| 127 | nop |
- | |
| 128 | ba 1f |
119 | be 1f |
| 129 | nop |
120 | nop |
| 130 | 0: |
121 | 0: |
| 131 | call icache_flush |
122 | call icache_flush |
| 132 | nop |
123 | nop |
| 133 | 1: |
124 | 1: |
| 134 | - | ||
| 135 | membar #StoreStore |
125 | membar #StoreStore |
| 136 | 126 | ||
| 137 | /* |
127 | /* |
| 138 | * Flush the instruction pipeline. |
128 | * Flush the instruction pipeline. |
| 139 | */ |
129 | */ |