Changeset cae5404 in mainline
- Timestamp:
- 2010-06-26T21:59:52Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 720db0c
- Parents:
- decfbe56
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/src/mm/frame.c
rdecfbe56 rcae5404 47 47 #include <print.h> 48 48 49 #define PHYSMEM_LIMIT 0x7C000000 50 49 51 size_t hardcoded_unmapped_ktext_size = 0; 50 52 size_t hardcoded_unmapped_kdata_size = 0; … … 55 57 { 56 58 unsigned int i; 57 59 58 60 for (i = 0; i < e820counter; i++) { 59 61 uint64_t base = e820table[i].base_address; … … 61 63 62 64 #ifdef __32_BITS__ 63 /* Ignore physical memory above 4 GB */ 64 if ((base >> 32) != 0) 65 /* 66 * XXX FIXME: 67 * 68 * Ignore zones which start above PHYSMEM_LIMIT 69 * or clip zones which go beyond PHYSMEM_LIMIT. 70 * 71 * The PHYSMEM_LIMIT (2 GB - 64 MB) is a rather 72 * arbitrary constant which allows to have at 73 * least 64 MB in the kernel address space to 74 * map hardware resources. 75 * 76 * The kernel uses fixed 1:1 identity mapping 77 * of the physical memory with 2:2 GB split. 78 * This is a severe limitation of the current 79 * kernel memory management. 80 * 81 */ 82 83 if (base > PHYSMEM_LIMIT) 65 84 continue; 66 85 67 /* Clip regions above 4 GB */ 68 if (((base + size) >> 32) != 0) 69 size = 0xffffffff - base; 86 if (base + size > PHYSMEM_LIMIT) 87 size = PHYSMEM_LIMIT - base; 70 88 #endif 71 89 72 90 pfn_t pfn; 73 91 size_t count;
Note:
See TracChangeset
for help on using the changeset viewer.