asmmacro.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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 <asm/hazards.h>
  11. #ifdef CONFIG_32BIT
  12. #include <asm/asmmacro-32.h>
  13. #endif
  14. #ifdef CONFIG_64BIT
  15. #include <asm/asmmacro-64.h>
  16. #endif
  17. #ifdef CONFIG_MIPS_MT_SMTC
  18. #include <asm/mipsmtregs.h>
  19. #endif
  20. #ifdef CONFIG_MIPS_MT_SMTC
  21. .macro local_irq_enable reg=t0
  22. mfc0 \reg, CP0_TCSTATUS
  23. ori \reg, \reg, TCSTATUS_IXMT
  24. xori \reg, \reg, TCSTATUS_IXMT
  25. mtc0 \reg, CP0_TCSTATUS
  26. _ehb
  27. .endm
  28. .macro local_irq_disable reg=t0
  29. mfc0 \reg, CP0_TCSTATUS
  30. ori \reg, \reg, TCSTATUS_IXMT
  31. mtc0 \reg, CP0_TCSTATUS
  32. _ehb
  33. .endm
  34. #else
  35. .macro local_irq_enable reg=t0
  36. mfc0 \reg, CP0_STATUS
  37. ori \reg, \reg, 1
  38. mtc0 \reg, CP0_STATUS
  39. irq_enable_hazard
  40. .endm
  41. .macro local_irq_disable reg=t0
  42. mfc0 \reg, CP0_STATUS
  43. ori \reg, \reg, 1
  44. xori \reg, \reg, 1
  45. mtc0 \reg, CP0_STATUS
  46. irq_disable_hazard
  47. .endm
  48. #endif /* CONFIG_MIPS_MT_SMTC */
  49. /*
  50. * Temporary until all gas have MT ASE support
  51. */
  52. .macro DMT reg=0
  53. .word 0x41600bc1 | (\reg << 16)
  54. .endm
  55. .macro EMT reg=0
  56. .word 0x41600be1 | (\reg << 16)
  57. .endm
  58. .macro DVPE reg=0
  59. .word 0x41600001 | (\reg << 16)
  60. .endm
  61. .macro EVPE reg=0
  62. .word 0x41600021 | (\reg << 16)
  63. .endm
  64. .macro MFTR rt=0, rd=0, u=0, sel=0
  65. .word 0x41000000 | (\rt << 16) | (\rd << 11) | (\u << 5) | (\sel)
  66. .endm
  67. .macro MTTR rt=0, rd=0, u=0, sel=0
  68. .word 0x41800000 | (\rt << 16) | (\rd << 11) | (\u << 5) | (\sel)
  69. .endm
  70. #endif /* _ASM_ASMMACRO_H */