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 |