entry-macro.S
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * include/asm-arm/arch-h720x/entry-macro.S
  3.  *
  4.  * Low-level IRQ helper macros for Hynix HMS720x based platforms
  5.  *
  6.  * This file is licensed under  the terms of the GNU General Public
  7.  * License version 2. This program is licensed "as is" without any
  8.  * warranty of any kind, whether express or implied.
  9.  */
  10. .macro  disable_fiq
  11. .endm
  12. .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
  13. #if defined (CONFIG_CPU_H7201) || defined (CONFIG_CPU_H7202)
  14. @ we could use the id register on H7202, but this is not
  15. @ properly updated when we come back from asm_do_irq
  16. @ without a previous return from interrupt
  17. @ (see loops below in irq_svc, irq_usr)
  18. @ We see unmasked pending ints only, as the masked pending ints
  19. @ are not visible here
  20. mov     base, #0xf0000000        @ base register
  21. orr     base, base, #0x24000        @ irqbase
  22. ldr     irqstat, [base, #0x04]        @ get interrupt status
  23. #if defined (CONFIG_CPU_H7201)
  24. ldr tmp, =0x001fffff
  25. #else
  26. mvn     tmp, #0xc0000000
  27. #endif
  28. and     irqstat, irqstat, tmp        @ mask out unused ints
  29. mov     irqnr, #0
  30. mov     tmp, #0xff00
  31. orr     tmp, tmp, #0xff
  32. tst     irqstat, tmp
  33. addeq   irqnr, irqnr, #16
  34. moveq   irqstat, irqstat, lsr #16
  35. tst     irqstat, #255
  36. addeq   irqnr, irqnr, #8
  37. moveq   irqstat, irqstat, lsr #8
  38. tst     irqstat, #15
  39. addeq   irqnr, irqnr, #4
  40. moveq   irqstat, irqstat, lsr #4
  41. tst     irqstat, #3
  42. addeq   irqnr, irqnr, #2
  43. moveq   irqstat, irqstat, lsr #2
  44. tst     irqstat, #1
  45. addeq   irqnr, irqnr, #1
  46. moveq   irqstat, irqstat, lsr #1
  47. tst     irqstat, #1        @ bit 0 should be set
  48. .endm
  49. .macro  irq_prio_table
  50. .endm
  51. #else
  52. #error hynix processor selection missmatch
  53. #endif