Path: blob/master/arch/sh/include/asm/entry-macros.S
15126 views
! entry.S macro define12.macro cli3stc sr, r04or #0xf0, r05ldc r0, sr6.endm78.macro sti9mov #0xfffffff0, r1110extu.b r11, r1111not r11, r1112stc sr, r1013and r11, r1014#ifdef CONFIG_CPU_HAS_SR_RB15stc k_g_imask, r1116or r11, r1017#endif18ldc r10, sr19.endm2021.macro get_current_thread_info, ti, tmp22#ifdef CONFIG_CPU_HAS_SR_RB23stc r7_bank, \ti24#else25mov #((THREAD_SIZE - 1) >> 10) ^ 0xff, \tmp26shll8 \tmp27shll2 \tmp28mov r15, \ti29and \tmp, \ti30#endif31.endm3233#ifdef CONFIG_TRACE_IRQFLAGS3435.macro TRACE_IRQS_ON36mov.l r0, @-r1537mov.l r1, @-r1538mov.l r2, @-r1539mov.l r3, @-r1540mov.l r4, @-r1541mov.l r5, @-r1542mov.l r6, @-r1543mov.l r7, @-r154445mov.l 7834f, r046jsr @r047nop4849mov.l @r15+, r750mov.l @r15+, r651mov.l @r15+, r552mov.l @r15+, r453mov.l @r15+, r354mov.l @r15+, r255mov.l @r15+, r156mov.l @r15+, r057mov.l 7834f, r05859bra 7835f60nop61.balign 4627834: .long trace_hardirqs_on637835:64.endm65.macro TRACE_IRQS_OFF6667mov.l r0, @-r1568mov.l r1, @-r1569mov.l r2, @-r1570mov.l r3, @-r1571mov.l r4, @-r1572mov.l r5, @-r1573mov.l r6, @-r1574mov.l r7, @-r157576mov.l 7834f, r077jsr @r078nop7980mov.l @r15+, r781mov.l @r15+, r682mov.l @r15+, r583mov.l @r15+, r484mov.l @r15+, r385mov.l @r15+, r286mov.l @r15+, r187mov.l @r15+, r088mov.l 7834f, r08990bra 7835f91nop92.balign 4937834: .long trace_hardirqs_off947835:95.endm9697#else98.macro TRACE_IRQS_ON99.endm100101.macro TRACE_IRQS_OFF102.endm103#endif104105#if defined(CONFIG_CPU_SH2A) || defined(CONFIG_CPU_SH4)106# define PREF(x) pref @x107#else108# define PREF(x) nop109#endif110111/*112* Macro for use within assembly. Because the DWARF unwinder113* needs to use the frame register to unwind the stack, we114* need to setup r14 with the value of the stack pointer as115* the return address is usually on the stack somewhere.116*/117.macro setup_frame_reg118#ifdef CONFIG_DWARF_UNWINDER119mov r15, r14120#endif121.endm122123124