Changeset 68667ce in mainline


Ignore:
Timestamp:
2010-06-26T23:42:26Z (14 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
74c5a1ca
Parents:
720db0c
Message:

add physical memory workaround for amd64

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia32/src/mm/frame.c

    r720db0c r68667ce  
    4747#include <print.h>
    4848
    49 #define PHYSMEM_LIMIT  0x7C000000ull
     49#define PHYSMEM_LIMIT32  0x7c000000ull
     50#define PHYSMEM_LIMIT64  0xe0000000ull
    5051
    5152size_t hardcoded_unmapped_ktext_size = 0;
     
    6667                 * XXX FIXME:
    6768                 *
    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
     69                 * Ignore zones which start above PHYSMEM_LIMIT32
     70                 * or clip zones which go beyond PHYSMEM_LIMIT32.
     71                 *
     72                 * The PHYSMEM_LIMIT32 (2 GB - 64 MB) is a rather
    7273                 * arbitrary constant which allows to have at
    7374                 * least 64 MB in the kernel address space to
     
    8182                 */
    8283               
    83                 if (base > PHYSMEM_LIMIT)
     84                if (base > PHYSMEM_LIMIT32)
    8485                        continue;
    8586               
    86                 if (base + size > PHYSMEM_LIMIT)
    87                         size = PHYSMEM_LIMIT - base;
     87                if (base + size > PHYSMEM_LIMIT32)
     88                        size = PHYSMEM_LIMIT32 - base;
     89#endif
     90               
     91#ifdef __64_BITS__
     92                /*
     93                 * XXX FIXME:
     94                 *
     95                 * Ignore zones which start above PHYSMEM_LIMIT64
     96                 * or clip zones which go beyond PHYSMEM_LIMIT64.
     97                 *
     98                 * The limit PHYSMEM_LIMIT64 (3.5 GB) is caused
     99                 * by various limitations of the current kernel
     100                 * memory management.
     101                 *
     102                 */
     103               
     104                if (base > PHYSMEM_LIMIT64)
     105                        continue;
     106               
     107                if (base + size > PHYSMEM_LIMIT64)
     108                        size = PHYSMEM_LIMIT64 - base;
    88109#endif
    89110               
Note: See TracChangeset for help on using the changeset viewer.