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	isb sy
48	ssbb
49	pssbb
50
51	dsb oshld
52	dsb oshst
53	dsb osh
54	dsb nshld
55	dsb nshst
56	dsb nsh
57	dsb #0x08
58	dsb ishld
59	dsb ishst
60	dsb ish
61	dsb #0x0c
62	dsb ld
63	dsb st
64	dsb sy
65
66	//
67	// PREFETCHS
68	//
69
70	.macro	all_prefetchs op, from=0, to=31
71	\op	\from, LABEL1
72	\op	\from, [sp, x15, lsl #0]
73	\op	\from, [x7, w30, uxtw #3]
74	\op	\from, [x3, #24]
75	.if	\to-\from
76	all_prefetchs \op, "(\from+1)", \to
77	.endif
78	.endm
79
80	all_prefetchs	op=prfm, from=0, to=31
81
82	//
83	// PREFETCHS with named operation
84	//
85
86	.irp op, pld, pli, pst
87	.irp l, l1, l2, l3
88	.irp t, keep, strm
89	prfm	\op\l\t, [x3, #24]
90	.endr
91	.endr
92	.endr
93