asmmacro.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /*
  2. * This file is subject to the terms and conditions of the GNU General Public
  3. * License. See the file "COPYING" in the main directory of this archive
  4. * for more details.
  5. *
  6. * Copyright (C) 2003 Ralf Baechle
  7. */
  8. #ifndef _ASM_ASMMACRO_H
  9. #define _ASM_ASMMACRO_H
  10. #include <linux/config.h>
  11. #include <asm/hazards.h>
  12. #ifdef CONFIG_32BIT
  13. #include <asm/asmmacro-32.h>
  14. #endif
  15. #ifdef CONFIG_64BIT
  16. #include <asm/asmmacro-64.h>
  17. #endif
  18. #ifdef CONFIG_MIPS_MT_SMTC
  19. #include <asm/mipsmtregs.h>
  20. #endif
  21. #ifdef CONFIG_MIPS_MT_SMTC
  22. .macro local_irq_enable reg=t0
  23. mfc0 \reg, CP0_TCSTATUS
  24. ori \reg, \reg, TCSTATUS_IXMT
  25. xori \reg, \reg, TCSTATUS_IXMT
  26. mtc0 \reg, CP0_TCSTATUS
  27. ehb
  28. .endm
  29. .macro local_irq_disable reg=t0
  30. mfc0 \reg, CP0_TCSTATUS
  31. ori \reg, \reg, TCSTATUS_IXMT
  32. mtc0 \reg, CP0_TCSTATUS
  33. ehb
  34. .endm
  35. #else
  36. .macro local_irq_enable reg=t0
  37. mfc0 \reg, CP0_STATUS
  38. ori \reg, \reg, 1
  39. mtc0 \reg, CP0_STATUS
  40. irq_enable_hazard
  41. .endm
  42. .macro local_irq_disable reg=t0
  43. mfc0 \reg, CP0_STATUS
  44. ori \reg, \reg, 1
  45. xori \reg, \reg, 1
  46. mtc0 \reg, CP0_STATUS
  47. irq_disable_hazard
  48. .endm
  49. #endif /* CONFIG_MIPS_MT_SMTC */
  50. #ifdef CONFIG_CPU_SB1
  51. .macro fpu_enable_hazard
  52. .set push
  53. .set noreorder
  54. .set mips2
  55. SSNOP
  56. bnezl $0, .+4
  57. SSNOP
  58. .set pop
  59. .endm
  60. #else
  61. .macro fpu_enable_hazard
  62. .endm
  63. #endif
  64. /*
  65. * Temporary until all gas have MT ASE support
  66. */
  67. .macro DMT reg=0
  68. .word (0x41600bc1 | (\reg << 16))
  69. .endm
  70. .macro EMT reg=0
  71. .word (0x41600be1 | (\reg << 16))
  72. .endm
  73. .macro DVPE reg=0
  74. .word (0x41600001 | (\reg << 16))
  75. .endm
  76. .macro EVPE reg=0
  77. .word (0x41600021 | (\reg << 16))
  78. .endm
  79. .macro MFTR rt=0, rd=0, u=0, sel=0
  80. .word (0x41000000 | (\rt << 16) | (\rd << 11) | (\u << 5) | (\sel))
  81. .endm
  82. .macro MTTR rt=0, rd=0, u=0, sel=0
  83. .word (0x41800000 | (\rt << 16) | (\rd << 11) | (\u << 5) | (\sel))
  84. .endm
  85. #endif /* _ASM_ASMMACRO_H */