Changeset 567807b1 in mainline for arch/amd64/src/mm/page.c


Ignore:
Timestamp:
2006-05-24T17:03:29Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
8d6bc2d5
Parents:
82da5f5
Message:

Modify the hierarchy of page fault handlers to pass access mode that caused the fault.
Architectures are required to pass either PF_ACCESS_READ, PF_ACCESS_WRITE or PF_ACCESS_EXEC
to as_page_fault(), depending on the cause of the fault.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/amd64/src/mm/page.c

    r82da5f5 r567807b1  
    169169{
    170170        __address page;
     171        pf_access_t access;
    171172       
    172173        page = read_cr2();
    173         if (as_page_fault(page, istate) == AS_PF_FAULT) {
     174       
     175        if (istate->error_word & PFERR_CODE_RSVD)
     176                panic("Reserved bit set in page table entry.\n");
     177       
     178        if (istate->error_word & PFERR_CODE_RW)
     179                access = PF_ACCESS_WRITE;
     180        else if (istate->error_word & PFERR_CODE_ID)
     181                access = PF_ACCESS_EXEC;
     182        else
     183                access = PF_ACCESS_READ;
     184       
     185        if (as_page_fault(page, access, istate) == AS_PF_FAULT) {
    174186                print_info_errcode(n, istate);
    175187                printf("Page fault address: %llX\n", page);
Note: See TracChangeset for help on using the changeset viewer.