linux/arch/score/include/asm/asmmacro.h
<<
>>
Prefs
   1#ifndef _ASM_SCORE_ASMMACRO_H
   2#define _ASM_SCORE_ASMMACRO_H
   3
   4#include <asm/asm-offsets.h>
   5
   6#ifdef __ASSEMBLY__
   7
   8.macro  SAVE_ALL
   9        mfcr    r30, cr0
  10        mv      r31, r0
  11        nop
  12        /* if UMs == 1, change stack. */
  13        slli.c  r30, r30, 28
  14        bpl     1f
  15        la      r31, kernelsp
  16        lw      r31, [r31]
  171:
  18        mv      r30, r0
  19        addri   r0, r31, -PT_SIZE
  20
  21        sw      r30, [r0, PT_R0]
  22        .set    r1
  23        sw      r1, [r0, PT_R1]
  24        .set    nor1
  25        sw      r2, [r0, PT_R2]
  26        sw      r3, [r0, PT_R3]
  27        sw      r4, [r0, PT_R4]
  28        sw      r5, [r0, PT_R5]
  29        sw      r6, [r0, PT_R6]
  30        sw      r7, [r0, PT_R7]
  31
  32        sw      r8, [r0, PT_R8]
  33        sw      r9, [r0, PT_R9]
  34        sw      r10, [r0, PT_R10]
  35        sw      r11, [r0, PT_R11]
  36        sw      r12, [r0, PT_R12]
  37        sw      r13, [r0, PT_R13]
  38        sw      r14, [r0, PT_R14]
  39        sw      r15, [r0, PT_R15]
  40
  41        sw      r16, [r0, PT_R16]
  42        sw      r17, [r0, PT_R17]
  43        sw      r18, [r0, PT_R18]
  44        sw      r19, [r0, PT_R19]
  45        sw      r20, [r0, PT_R20]
  46        sw      r21, [r0, PT_R21]
  47        sw      r22, [r0, PT_R22]
  48        sw      r23, [r0, PT_R23]
  49
  50        sw      r24, [r0, PT_R24]
  51        sw      r25, [r0, PT_R25]
  52        sw      r25, [r0, PT_R25]
  53        sw      r26, [r0, PT_R26]
  54        sw      r27, [r0, PT_R27]
  55
  56        sw      r28, [r0, PT_R28]
  57        sw      r29, [r0, PT_R29]
  58        orri    r28, r0, 0x1fff
  59        li      r31, 0x00001fff
  60        xor     r28, r28, r31
  61
  62        mfcehl  r30, r31
  63        sw      r30, [r0, PT_CEH]
  64        sw      r31, [r0, PT_CEL]
  65
  66        mfcr    r31, cr0
  67        sw      r31, [r0, PT_PSR]
  68
  69        mfcr    r31, cr1
  70        sw      r31, [r0, PT_CONDITION]
  71
  72        mfcr    r31, cr2
  73        sw      r31, [r0, PT_ECR]
  74        
  75        mfcr    r31, cr5
  76        srli    r31, r31, 1
  77        slli    r31, r31, 1
  78        sw      r31, [r0, PT_EPC]
  79.endm
  80
  81.macro  RESTORE_ALL_AND_RET
  82        mfcr    r30, cr0
  83        srli    r30, r30, 1
  84        slli    r30, r30, 1
  85        mtcr    r30, cr0
  86        nop
  87        nop
  88        nop
  89        nop
  90        nop
  91
  92        .set    r1
  93        ldis    r1, 0x00ff
  94        and     r30, r30, r1
  95        not     r1, r1
  96        lw      r31, [r0, PT_PSR]
  97        and     r31, r31, r1
  98        .set    nor1
  99        or      r31, r31, r30
 100        mtcr    r31, cr0
 101        nop
 102        nop
 103        nop
 104        nop
 105        nop
 106
 107        lw      r30, [r0, PT_CONDITION]
 108        mtcr    r30, cr1
 109        nop
 110        nop
 111        nop
 112        nop
 113        nop
 114
 115        lw      r30, [r0, PT_CEH]
 116        lw      r31, [r0, PT_CEL]
 117        mtcehl  r30, r31
 118
 119        .set    r1
 120        lw      r1, [r0, PT_R1]
 121        .set    nor1
 122        lw      r2, [r0, PT_R2]
 123        lw      r3, [r0, PT_R3]
 124        lw      r4, [r0, PT_R4]
 125        lw      r5, [r0, PT_R5]
 126        lw      r6, [r0, PT_R6]
 127        lw      r7, [r0, PT_R7]
 128
 129        lw      r8, [r0, PT_R8]
 130        lw      r9, [r0, PT_R9]
 131        lw      r10, [r0, PT_R10]
 132        lw      r11, [r0, PT_R11]
 133        lw      r12, [r0, PT_R12]
 134        lw      r13, [r0, PT_R13]
 135        lw      r14, [r0, PT_R14]
 136        lw      r15, [r0, PT_R15]
 137
 138        lw      r16, [r0, PT_R16]
 139        lw      r17, [r0, PT_R17]
 140        lw      r18, [r0, PT_R18]
 141        lw      r19, [r0, PT_R19]
 142        lw      r20, [r0, PT_R20]
 143        lw      r21, [r0, PT_R21]
 144        lw      r22, [r0, PT_R22]
 145        lw      r23, [r0, PT_R23]
 146
 147        lw      r24, [r0, PT_R24]
 148        lw      r25, [r0, PT_R25]
 149        lw      r26, [r0, PT_R26]
 150        lw      r27, [r0, PT_R27]
 151        lw      r28, [r0, PT_R28]
 152        lw      r29, [r0, PT_R29]
 153
 154        lw      r30, [r0, PT_EPC]
 155        lw      r0, [r0, PT_R0]
 156        mtcr    r30, cr5
 157        rte
 158.endm
 159
 160#endif /* __ASSEMBLY__ */
 161#endif /* _ASM_SCORE_ASMMACRO_H */
 162