linux/arch/sh/include/asm/entry-macros.S
<<
>>
Prefs
   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
  647834:   .long   trace_hardirqs_on
  657835:
  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
  957834:   .long   trace_hardirqs_off
  967835:
  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         * Macro for use within assembly. Because the DWARF unwinder
 115         * needs to use the frame register to unwind the stack, we
 116         * need to setup r14 with the value of the stack pointer as
 117         * the return address is usually on the stack somewhere.
 118         */
 119        .macro  setup_frame_reg
 120#ifdef CONFIG_DWARF_UNWINDER
 121        mov     r15, r14
 122#endif
 123        .endm
 124