Subversion Repositories Kolibri OS

Rev

Rev 2231 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;;                                                              ;;
  3. ;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. ;;
  4. ;; Distributed under terms of the GNU General Public License    ;;
  5. ;;                                                              ;;
  6. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  7.  
  8. align 4
  9. pic_delay:
  10.  
  11.         jmp     pdl1
  12. pdl1:   ret
  13.  
  14. align 4
  15. rerouteirqs:
  16.  
  17.         cli
  18.  
  19.         mov     al,0x11         ;  icw4, edge triggered
  20.         out     0x20,al
  21.         call    pic_delay
  22.         out     0xA0,al
  23.         call    pic_delay
  24.  
  25.         mov     al,0x20         ;  generate 0x20 +
  26.         out     0x21,al
  27.         call    pic_delay
  28.         mov     al,0x28         ;  generate 0x28 +
  29.         out     0xA1,al
  30.         call    pic_delay
  31.  
  32.         mov     al,0x04         ;  slave at irq2
  33.         out     0x21,al
  34.         call    pic_delay
  35.         mov     al,0x02         ;  at irq9
  36.         out     0xA1,al
  37.         call    pic_delay
  38.  
  39.         mov     al,0x01         ;  8086 mode
  40.         out     0x21,al
  41.         call    pic_delay
  42.         out     0xA1,al
  43.         call    pic_delay
  44.  
  45.         mov     al,255          ; mask all irq's
  46.         out     0xA1,al
  47.         call    pic_delay
  48.         out     0x21,al
  49.         call    pic_delay
  50.  
  51.         mov     ecx,0x1000
  52.         cld
  53. picl1:  call    pic_delay
  54.         loop    picl1
  55.  
  56.         mov     al,255          ; mask all irq's
  57.         out     0xA1,al
  58.         call    pic_delay
  59.         out     0x21,al
  60.         call    pic_delay
  61.  
  62.         ret
  63.  
  64.  
  65. align 4
  66. ;proc enable_irq stdcall, irq_line:dword
  67. enable_irq:                                ; FIXME make fastcall
  68.        mov ebx, [esp+4]  ;irq_line
  69.        mov edx, 0x21
  70.        cmp ebx, 8
  71.        jb @F
  72.        mov edx, 0xA1
  73.        sub ebx,8
  74. @@:
  75.        in al,dx
  76.        btr eax, ebx
  77.        out dx, al
  78.        ret 4
  79.  
  80.  
  81. align 4
  82. ;proc irq_eoi fastcall, irq_line:dword
  83. irq_eoi:
  84.        cmp cl, 8
  85.        mov al, 0x20
  86.        jb @f
  87.        out 0xa0, al
  88. @@:
  89.        out 0x20, al
  90.        ret
  91.