Rev 3534 | Rev 3732 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3534 | Rev 3539 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | ;; Copyright (C) KolibriOS team 2004-2012. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2004-2012. 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: 3534 $ |
8 | $Revision: 3539 $ |
9 | 9 | ||
Line 629... | Line 629... | ||
629 | inc [pg_data.pages_faults] |
629 | inc [pg_data.pages_faults] |
Line 630... | Line 630... | ||
630 | 630 | ||
Line 631... | Line 631... | ||
631 | mov eax, [pf_err_code] |
631 | mov eax, [pf_err_code] |
632 | 632 | ||
Line 633... | Line 633... | ||
633 | cmp ebx, OS_BASE ;ebx == .err_addr |
633 | cmp ebx, OS_BASE ;ebx == .err_addr |
634 | jb .user_space ;ñòðàíèöà â ïàìÿòè ïðèëîæåíèÿ ; |
634 | jb .user_space ;страница в памяти приложения ; |
Line 635... | Line 635... | ||
635 | 635 | ||
636 | cmp ebx, page_tabs |
636 | cmp ebx, page_tabs |
637 | jb .kernel_space ;ñòðàíèöà â ïàìÿòè ÿäðà |
637 | jb .kernel_space ;страница в памяти ядра |
638 | 638 | ||
639 | cmp ebx, kernel_tabs |
639 | cmp ebx, kernel_tabs |
640 | jb .alloc;.app_tabs ;òàáëèöû ñòðàíèö ïðèëîæåíèÿ ; |
640 | jb .alloc;.app_tabs ;таблицы страниц приложения ; |
641 | ;ïðîñòî ñîçäàäèì îäíó |
641 | ;просто создадим одну |
642 | if 0 ;ïîêà ýòî ïðîñòî ëèøíåå |
642 | if 0 ;пока это просто лишнее |
643 | cmp ebx, LFB_BASE |
643 | cmp ebx, LFB_BASE |
644 | jb .core_tabs ;òàáëèöû ñòðàíèö ÿäðà |
644 | jb .core_tabs ;таблицы страниц ядра |
645 | ;Îøèáêà |
645 | ;Ошибка |
646 | .lfb: |
646 | .lfb: |
647 | ;îáëàñòü LFB |
647 | ;область LFB |
648 | ;Îøèáêà |
648 | ;Ошибка |
649 | jmp .fail |
649 | jmp .fail |
Line 659... | Line 659... | ||
659 | ; restore_ring3_context |
659 | ; restore_ring3_context |
660 | ; iretd |
660 | ; iretd |
Line 661... | Line 661... | ||
661 | 661 | ||
662 | .user_space: |
662 | .user_space: |
663 | test eax, PG_MAP |
663 | test eax, PG_MAP |
664 | jnz .err_access ;Ñòðàíèöà ïðèñóòñòâóåò |
664 | jnz .err_access ;Страница присутствует |
Line 665... | Line 665... | ||
665 | ;Îøèáêà äîñòóïà ? |
665 | ;Ошибка доступа ? |
666 | 666 | ||
667 | shr ebx, 12 |
667 | shr ebx, 12 |
668 | mov ecx, ebx |
668 | mov ecx, ebx |
669 | shr ecx, 10 |
669 | shr ecx, 10 |
670 | mov edx, [master_tab+ecx*4] |
670 | mov edx, [master_tab+ecx*4] |
671 | test edx, PG_MAP |
671 | test edx, PG_MAP |
Line 672... | Line 672... | ||
672 | jz .fail ;òàáëèöà ñòðàíèö íå ñîçäàíà |
672 | jz .fail ;таблица страниц не создана |
673 | ;íåâåðíûé àäðåñ â ïðîãðàììå |
673 | ;неверный адрес в программе |
674 | 674 | ||
675 | mov eax, [page_tabs+ebx*4] |
675 | mov eax, [page_tabs+ebx*4] |
676 | test eax, 2 |
676 | test eax, 2 |
677 | jz .fail ;àäðåñ íå çàðåçåðâèðîâàí äëÿ ; |
677 | jz .fail ;адрес не зарезервирован для ; |
678 | ;èñïîëüçîâàíèÿ. Îøèáêà |
678 | ;использования. Ошибка |
679 | .alloc: |
679 | .alloc: |
Line 729... | Line 729... | ||
729 | rep movsd |
729 | rep movsd |
730 | jmp .exit |
730 | jmp .exit |
Line 731... | Line 731... | ||
731 | 731 | ||
732 | .kernel_space: |
732 | .kernel_space: |
733 | test eax, PG_MAP |
733 | test eax, PG_MAP |
Line 734... | Line 734... | ||
734 | jz .fail ;ñòðàíèöà íå ïðèñóòñòâóåò |
734 | jz .fail ;страница не присутствует |
735 | 735 | ||
736 | test eax, 12 ;U/S (+below) |
736 | test eax, 12 ;U/S (+below) |
737 | jnz .fail ;ïðèëîæåíèå îáðàòèëîñü ê ïàìÿòè |
737 | jnz .fail ;приложение обратилось к памяти |
738 | ;ÿäðà |
738 | ;ядра |
739 | ;test eax, 8 |
739 | ;test eax, 8 |
Line 740... | Line 740... | ||
740 | ;jnz .fail ;óñòàíîâëåí çàðåçåðâèðîâàííûé áèò |
740 | ;jnz .fail ;установлен зарезервированный бит |
Line 741... | Line 741... | ||
741 | ;â òàáëèöàõ ñòðàíèö. äîáàâëåíî â P4/Xeon |
741 | ;в таблицах страниц. добавлено в P4/Xeon |
742 | 742 | ||
Line 743... | Line 743... | ||
743 | ;ïîïûòêà çàïèñè â çàùèù¸ííóþ ñòðàíèöó ÿäðà |
743 | ;попытка записи в защищённую страницу ядра |