home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / arm / include / asm / hardware / entry-macro-iomd.S < prev    next >
Encoding:
Text File  |  2008-12-24  |  5.9 KB  |  140 lines

  1. /*
  2.  * arch/arm/include/asm/hardware/entry-macro-iomd.S
  3.  *
  4.  * Low-level IRQ helper macros for IOC/IOMD 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.  
  11. /* IOC / IOMD based hardware */
  12. #include <asm/hardware/iomd.h>
  13.  
  14.         .macro    disable_fiq
  15.         mov    r12, #ioc_base_high
  16.         .if    ioc_base_low
  17.         orr    r12, r12, #ioc_base_low
  18.         .endif
  19.         strb    r12, [r12, #0x38]    @ Disable FIQ register
  20.         .endm
  21.  
  22.         .macro    get_irqnr_and_base, irqnr, irqstat, base, tmp
  23.         ldrb    \irqstat, [\base, #IOMD_IRQREQB]    @ get high priority first
  24.         ldr    \tmp, =irq_prio_h
  25.         teq    \irqstat, #0
  26. #ifdef IOMD_BASE
  27.         ldreqb    \irqstat, [\base, #IOMD_DMAREQ]    @ get dma
  28.         addeq    \tmp, \tmp, #256        @ irq_prio_h table size
  29.         teqeq    \irqstat, #0
  30.         bne    2406f
  31. #endif
  32.         ldreqb    \irqstat, [\base, #IOMD_IRQREQA]    @ get low priority
  33.         addeq    \tmp, \tmp, #256        @ irq_prio_d table size
  34.         teqeq    \irqstat, #0
  35. #ifdef IOMD_IRQREQC
  36.         ldreqb    \irqstat, [\base, #IOMD_IRQREQC]
  37.         addeq    \tmp, \tmp, #256        @ irq_prio_l table size
  38.         teqeq    \irqstat, #0
  39. #endif
  40. #ifdef IOMD_IRQREQD
  41.         ldreqb    \irqstat, [\base, #IOMD_IRQREQD]
  42.         addeq    \tmp, \tmp, #256        @ irq_prio_lc table size
  43.         teqeq    \irqstat, #0
  44. #endif
  45. 2406:        ldrneb    \irqnr, [\tmp, \irqstat]    @ get IRQ number
  46.         .endm
  47.  
  48. /*
  49.  * Interrupt table (incorporates priority).  Please note that we
  50.  * rely on the order of these tables (see above code).
  51.  */
  52.         .align    5
  53. irq_prio_h:    .byte     0, 8, 9, 8,10,10,10,10,11,11,11,11,10,10,10,10
  54.         .byte    12, 8, 9, 8,10,10,10,10,11,11,11,11,10,10,10,10
  55.         .byte    13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
  56.         .byte    13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
  57.         .byte    14,14,14,14,10,10,10,10,11,11,11,11,10,10,10,10
  58.         .byte    14,14,14,14,10,10,10,10,11,11,11,11,10,10,10,10
  59.         .byte    13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
  60.         .byte    13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
  61.         .byte    15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
  62.         .byte    15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
  63.         .byte    13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
  64.         .byte    13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
  65.         .byte    15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
  66.         .byte    15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
  67.         .byte    13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
  68.         .byte    13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
  69. #ifdef IOMD_BASE
  70. irq_prio_d:    .byte     0,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  71.         .byte    20,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  72.         .byte    21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  73.         .byte    21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  74.         .byte    22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  75.         .byte    22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  76.         .byte    21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  77.         .byte    21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  78.         .byte    23,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  79.         .byte    23,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  80.         .byte    21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  81.         .byte    21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  82.         .byte    22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  83.         .byte    22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  84.         .byte    21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  85.         .byte    21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  86. #endif
  87. irq_prio_l:    .byte     0, 0, 1, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3
  88.         .byte     4, 0, 1, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3
  89.         .byte     5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
  90.         .byte     5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
  91.         .byte     6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3
  92.         .byte     6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3
  93.         .byte     5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
  94.         .byte     5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
  95.         .byte     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
  96.         .byte     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
  97.         .byte     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
  98.         .byte     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
  99.         .byte     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
  100.         .byte     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
  101.         .byte     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
  102.         .byte     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
  103. #ifdef IOMD_IRQREQC
  104. irq_prio_lc:    .byte    24,24,25,24,26,26,26,26,27,27,27,27,27,27,27,27
  105.         .byte    28,24,25,24,26,26,26,26,27,27,27,27,27,27,27,27
  106.         .byte    29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
  107.         .byte    29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
  108.         .byte    30,30,30,30,30,30,30,30,27,27,27,27,27,27,27,27
  109.         .byte    30,30,30,30,30,30,30,30,27,27,27,27,27,27,27,27
  110.         .byte    29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
  111.         .byte    29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
  112.         .byte    31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
  113.         .byte    31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
  114.         .byte    31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
  115.         .byte    31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
  116.         .byte    31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
  117.         .byte    31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
  118.         .byte    31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
  119.         .byte    31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
  120. #endif
  121. #ifdef IOMD_IRQREQD
  122. irq_prio_ld:    .byte    40,40,41,40,42,42,42,42,43,43,43,43,43,43,43,43
  123.         .byte    44,40,41,40,42,42,42,42,43,43,43,43,43,43,43,43
  124.         .byte    45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
  125.         .byte    45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
  126.         .byte    46,46,46,46,46,46,46,46,43,43,43,43,43,43,43,43
  127.         .byte    46,46,46,46,46,46,46,46,43,43,43,43,43,43,43,43
  128.         .byte    45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
  129.         .byte    45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
  130.         .byte    47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
  131.         .byte    47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
  132.         .byte    47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
  133.         .byte    47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
  134.         .byte    47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
  135.         .byte    47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
  136.         .byte    47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
  137.         .byte    47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
  138. #endif
  139.  
  140.