1 ! SPDX-License-Identifier: GPL-2.0
2 ! entry.S macro define
3
4 .macro cli
5 stc sr, r0
6 or #0xf0, r0
7 ldc r0, sr
8 .endm
9
10 .macro sti
11 mov #0xfffffff0, r11
12 extu.b r11, r11
13 not r11, r11
14 stc sr, r10
15 and r11, r10
16 #ifdef CONFIG_CPU_HAS_SR_RB
17 stc k_g_imask, r11
18 or r11, r10
19 #endif
20 ldc r10, sr
21 .endm
22
23 .macro get_current_thread_info, ti, tmp
24 #ifdef CONFIG_CPU_HAS_SR_RB
25 stc r7_bank, \ti
26 #else
27 mov #((THREAD_SIZE - 1) >> 10) ^ 0xff, \tmp
28 shll8 \tmp
29 shll2 \tmp
30 mov r15, \ti
31 and \tmp, \ti
32 #endif
33 .endm
34
35 #ifdef CONFIG_TRACE_IRQFLAGS
36
37 .macro TRACE_IRQS_ON
38 mov.l r0, @-r15
39 mov.l r1, @-r15
40 mov.l r2, @-r15
41 mov.l r3, @-r15
42 mov.l r4, @-r15
43 mov.l r5, @-r15
44 mov.l r6, @-r15
45 mov.l r7, @-r15
46
47 mov.l 7834f, r0
48 jsr @r0
49 nop
50
51 mov.l @r15+, r7
52 mov.l @r15+, r6
53 mov.l @r15+, r5
54 mov.l @r15+, r4
55 mov.l @r15+, r3
56 mov.l @r15+, r2
57 mov.l @r15+, r1
58 mov.l @r15+, r0
59 mov.l 7834f, r0
60
61 bra 7835f
62 nop
63 .balign 4
64 7834: .long trace_hardirqs_on
65 7835:
66 .endm
67 .macro TRACE_IRQS_OFF
68
69 mov.l r0, @-r15
70 mov.l r1, @-r15
71 mov.l r2, @-r15
72 mov.l r3, @-r15
73 mov.l r4, @-r15
74 mov.l r5, @-r15
75 mov.l r6, @-r15
76 mov.l r7, @-r15
77
78 mov.l 7834f, r0
79 jsr @r0
80 nop
81
82 mov.l @r15+, r7
83 mov.l @r15+, r6
84 mov.l @r15+, r5
85 mov.l @r15+, r4
86 mov.l @r15+, r3
87 mov.l @r15+, r2
88 mov.l @r15+, r1
89 mov.l @r15+, r0
90 mov.l 7834f, r0
91
92 bra 7835f
93 nop
94 .balign 4
95 7834: .long trace_hardirqs_off
96 7835:
97 .endm
98
99 #else
100 .macro TRACE_IRQS_ON
101 .endm
102
103 .macro TRACE_IRQS_OFF
104 .endm
105 #endif
106
107 #if defined(CONFIG_CPU_SH2A) || defined(CONFIG_CPU_SH4)
108 # define PREF(x) pref @x
109 #else
110 # define PREF(x) nop
111 #endif
112
113
114
115
116
117
118
119 .macro setup_frame_reg
120 #ifdef CONFIG_DWARF_UNWINDER
121 mov r15, r14
122 #endif
123 .endm