! entry.S macro define | |
.macro cli | |
stc sr, r0 | |
or #0xf0, r0 | |
ldc r0, sr | |
.endm | |
.macro sti | |
mov #0xfffffff0, r11 | |
extu.b r11, r11 | |
not r11, r11 | |
stc sr, r10 | |
and r11, r10 | |
#ifdef CONFIG_CPU_HAS_SR_RB | |
stc k_g_imask, r11 | |
or r11, r10 | |
#endif | |
ldc r10, sr | |
.endm | |
.macro get_current_thread_info, ti, tmp | |
#ifdef CONFIG_CPU_HAS_SR_RB | |
stc r7_bank, \ti | |
#else | |
mov #((THREAD_SIZE - 1) >> 10) ^ 0xff, \tmp | |
shll8 \tmp | |
shll2 \tmp | |
mov r15, \ti | |
and \tmp, \ti | |
#endif | |
.endm | |
#ifdef CONFIG_TRACE_IRQFLAGS | |
.macro TRACE_IRQS_ON | |
mov.l r0, @-r15 | |
mov.l r1, @-r15 | |
mov.l r2, @-r15 | |
mov.l r3, @-r15 | |
mov.l r4, @-r15 | |
mov.l r5, @-r15 | |
mov.l r6, @-r15 | |
mov.l r7, @-r15 | |
mov.l 7834f, r0 | |
jsr @r0 | |
nop | |
mov.l @r15+, r7 | |
mov.l @r15+, r6 | |
mov.l @r15+, r5 | |
mov.l @r15+, r4 | |
mov.l @r15+, r3 | |
mov.l @r15+, r2 | |
mov.l @r15+, r1 | |
mov.l @r15+, r0 | |
mov.l 7834f, r0 | |
bra 7835f | |
nop | |
.balign 4 | |
7834: .long trace_hardirqs_on | |
7835: | |
.endm | |
.macro TRACE_IRQS_OFF | |
mov.l r0, @-r15 | |
mov.l r1, @-r15 | |
mov.l r2, @-r15 | |
mov.l r3, @-r15 | |
mov.l r4, @-r15 | |
mov.l r5, @-r15 | |
mov.l r6, @-r15 | |
mov.l r7, @-r15 | |
mov.l 7834f, r0 | |
jsr @r0 | |
nop | |
mov.l @r15+, r7 | |
mov.l @r15+, r6 | |
mov.l @r15+, r5 | |
mov.l @r15+, r4 | |
mov.l @r15+, r3 | |
mov.l @r15+, r2 | |
mov.l @r15+, r1 | |
mov.l @r15+, r0 | |
mov.l 7834f, r0 | |
bra 7835f | |
nop | |
.balign 4 | |
7834: .long trace_hardirqs_off | |
7835: | |
.endm | |
#else | |
.macro TRACE_IRQS_ON | |
.endm | |
.macro TRACE_IRQS_OFF | |
.endm | |
#endif | |
#if defined(CONFIG_CPU_SH2A) || defined(CONFIG_CPU_SH4) | |
# define PREF(x) pref @x | |
#else | |
# define PREF(x) nop | |
#endif | |
/* | |
* Macro for use within assembly. Because the DWARF unwinder | |
* needs to use the frame register to unwind the stack, we | |
* need to setup r14 with the value of the stack pointer as | |
* the return address is usually on the stack somewhere. | |
*/ | |
.macro setup_frame_reg | |
#ifdef CONFIG_DWARF_UNWINDER | |
mov r15, r14 | |
#endif | |
.endm |