| 1 | .text |
| 2 | drps |
| 3 | |
| 4 | // |
| 5 | // HINTS |
| 6 | // |
| 7 | |
| 8 | nop |
| 9 | yield |
| 10 | wfe |
| 11 | wfi |
| 12 | sev |
| 13 | sevl |
| 14 | |
| 15 | .macro all_hints from=0, to=127 |
| 16 | hint \from |
| 17 | .if \to-\from |
| 18 | all_hints "(\from+1)", \to |
| 19 | .endif |
| 20 | .endm |
| 21 | |
| 22 | all_hints from=0, to=63 |
| 23 | all_hints from=64, to=127 |
| 24 | |
| 25 | // |
| 26 | // SYSL |
| 27 | // |
| 28 | |
| 29 | sysl x7, #3, C15, C7, #7 |
| 30 | |
| 31 | // |
| 32 | // BARRIERS |
| 33 | // |
| 34 | |
| 35 | .macro all_barriers op, from=0, to=15 |
| 36 | \op \from |
| 37 | .if \to-\from |
| 38 | all_barriers \op, "(\from+1)", \to |
| 39 | .endif |
| 40 | .endm |
| 41 | |
| 42 | all_barriers op=dsb, from=0, to=15 |
| 43 | all_barriers op=dmb, from=0, to=15 |
| 44 | all_barriers op=isb, from=0, to=15 |
| 45 | |
| 46 | isb |
| 47 | |
| 48 | // |
| 49 | // PREFETCHS |
| 50 | // |
| 51 | |
| 52 | .macro all_prefetchs op, from=0, to=31 |
| 53 | \op \from, LABEL1 |
| 54 | \op \from, [sp, x15, lsl #0] |
| 55 | \op \from, [x7, w30, uxtw #3] |
| 56 | \op \from, [x3, #24] |
| 57 | .if \to-\from |
| 58 | all_prefetchs \op, "(\from+1)", \to |
| 59 | .endif |
| 60 | .endm |
| 61 | |
| 62 | all_prefetchs op=prfm, from=0, to=31 |
| 63 | |
| 64 | // |
| 65 | // PREFETCHS with named operation |
| 66 | // |
| 67 | |
| 68 | .irp op, pld, pli, pst |
| 69 | .irp l, l1, l2, l3 |
| 70 | .irp t, keep, strm |
| 71 | prfm \op\l\t, [x3, #24] |
| 72 | .endr |
| 73 | .endr |
| 74 | .endr |