Subversion Repositories Kolibri OS

Rev

Rev 1103 | Rev 1275 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1103 Rev 1105
Line 3... Line 3...
3
;; Copyright (C) KolibriOS team 2004-2008. All rights reserved. ;;
3
;; Copyright (C) KolibriOS team 2004-2008. All rights reserved. ;;
4
;; Distributed under terms of the GNU General Public License    ;;
4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 7... Line 7...
7
 
7
 
Line 8... Line 8...
8
$Revision: 1103 $
8
$Revision: 1105 $
9
 
9
 
Line 545... Line 545...
545
           and eax, 0xFFFFF000
545
           and eax, 0xFFFFF000
546
           ret
546
           ret
Line 547... Line 547...
547
 
547
 
548
 
548
 
549
align 4
549
align 4
Line 550... Line 550...
550
; Now it is called from sys32::exc_c (see stack frame there)
550
; Now it is called from core/sys32::exc_c (see stack frame there)
Line -... Line 551...
-
 
551
proc page_fault_handler
551
proc page_fault_handler
552
 
552
 
553
    .err_addr   equ ebp-4
553
    .err_addr   equ ebp-4
554
 
554
 
555
        push    ebx               ;save exception number (#PF)
Line 586... Line 587...
586
        jmp     .fail
587
        jmp     .fail
587
end if
588
end if
588
.core_tabs:
589
.core_tabs:
589
.fail:  ;simply return to caller
590
.fail:  ;simply return to caller
590
        mov     esp, ebp
591
        mov     esp, ebp
591
        push    14                ;#PF
592
        pop     ebx               ;restore exception number (#PF)
592
        pop     ebx
-
 
593
        ret
593
        ret
Line 594... Line 594...
594
 
594
 
595
.user_space:
595
.user_space:
596
        test    eax, PG_MAP
596
        test    eax, PG_MAP
Line 621... Line 621...
621
        mov     ecx, 1024
621
        mov     ecx, 1024
622
        xor     eax, eax
622
        xor     eax, eax
623
       ;cld     ;caller is duty for this
623
       ;cld     ;caller is duty for this
624
        rep     stosd
624
        rep     stosd
625
.exit:  ;iret with repeat fault instruction
625
.exit:  ;iret with repeat fault instruction
626
        add     esp,8 ; clear in stack: locals(.err_addr) + ret_to_caller
626
        add     esp,12 ;clear in stack: locals(.err_addr) + #PF + ret_to_caller
627
        restore_ring3_context
627
        restore_ring3_context
628
        iretd
628
        iretd
Line 629... Line 629...
629
 
629
 
630
.err_access  =  .fail
630
.err_access  =  .fail