Changeset 74df77d in mainline for src/mm/page.c


Ignore:
Timestamp:
2005-06-10T16:18:43Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
87cd61f
Parents:
18e0a6c
Message:

Add map_structure() to automate mapping of memory structures that can span multiple pages and/or cross page boundaries.
Change ACPI map_sdt() to use map_structure().

Small changes in MPS code.
The extra frame allocation for accessing frame 0 is unnecessary as it is possible to access frame 0 from kernel address space.
Zero TSS descriptor in the newly prepared GDT.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/mm/page.c

    r18e0a6c r74df77d  
    2929#include <mm/page.h>
    3030#include <arch/mm/page.h>
     31#include <arch/types.h>
     32#include <typedefs.h>
    3133
    3234void page_init(void)
     
    3537        map_page_to_frame(0x0, 0x0, PAGE_NOT_PRESENT, 0);
    3638}
     39
     40/** Map memory structure
     41 *
     42 * Identity-map memory structure
     43 * considering possible crossings
     44 * of page boundaries.
     45 *
     46 * @param s Address of the structure.
     47 * @param size Size of the structure.
     48 */
     49void map_structure(__address s, size_t size)
     50{
     51        int i, cnt, length;
     52
     53        /* TODO: implement portable way of computing page address from address */
     54        length = size + (s - (s & 0xfffff000));
     55        cnt = length/PAGE_SIZE + (length%PAGE_SIZE>0);
     56
     57        for (i = 0; i < cnt; i++)
     58                map_page_to_frame(s + i*PAGE_SIZE, s + i*PAGE_SIZE, PAGE_NOT_CACHEABLE, 0);
     59
     60}
Note: See TracChangeset for help on using the changeset viewer.