Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 7732 → Rev 7733

/kernel/trunk/core/irq.inc
1,6 → 1,6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; Copyright (C) KolibriOS team 2004-2015. All rights reserved. ;;
;; Copyright (C) KolibriOS team 2004-2020. All rights reserved. ;;
;; Distributed under terms of the GNU General Public License ;;
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8,7 → 8,7
$Revision$
 
 
IRQ_RESERVED = 24
IRQ_RESERVED = 56
 
IRQ_POOL_SIZE = 48
 
20,11 → 20,27
irqh_pool rd sizeof.IRQH * IRQ_POOL_SIZE /4
next_irqh rd 1
 
irq_active_set rd 1
irq_active_set rd (IRQ_RESERVED+31)/32
irq_failed rd IRQ_RESERVED
 
endg
 
set_irq_active:
mov eax, ebp
mov ecx, ebp
shr ecx, 5
and eax, 31
bts [irq_active_set+ecx*4], eax
ret
 
reset_irq_active:
mov eax, ebp
mov ecx, ebp
shr ecx, 5
and eax, 31
btr [irq_active_set+ecx*4], eax
ret
 
align 4
init_irqs:
 
137,20 → 153,15
align 16
irq_serv:
 
; .irq_1:
; push 1
; jmp .main
; etc...
rept 12 irqn:1 {irq_serv_h irqn} ; 1--12
rept 18 irqn:14 {irq_serv_h irqn} ; 14--31 (irq32 is vector 0x40)
rept 23 irqn:33 {irq_serv_h irqn} ; 33--55
 
irq_serv_h 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15
irq_serv_h 16, 17, 18, 19, 20, 21, 22, 23
 
purge irq_serv_h
 
align 16
.main:
save_ring3_context
 
mov ebp, [esp + 32]
mov bx, app_data;os_data
mov ds, bx
159,7 → 170,7
cmp [v86_irqhooks+ebp*8], 0
jnz v86_irq
 
bts [irq_active_set], ebp
call set_irq_active
 
lea esi, [irqh_tab+ebp*8] ; esi= list head
mov ebx, esi
184,11 → 195,11
jz .next
 
inc [ebx+IRQH.num_ints]
btr [irq_active_set], ebp
call reset_irq_active
jmp .next
 
.done:
btr [irq_active_set], ebp
call reset_irq_active
jnc .exit
 
; There is at least one configuration with one device which generates IRQ