Changeset 4cc2ddd in mainline


Ignore:
Timestamp:
2008-01-15T13:19:35Z (16 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
62da45a
Parents:
22e8166d
Message:

amd64: shorten kernel address space by 2 GB to support proper mapping of more than 2 GB of physical memory

Location:
kernel
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/include/mm/as.h

    r22e8166d r4cc2ddd  
    3939
    4040#define KERNEL_ADDRESS_SPACE_START_ARCH         (unsigned long) 0xffff800000000000
    41 #define KERNEL_ADDRESS_SPACE_END_ARCH           (unsigned long) 0xffffffffffffffff
     41#define KERNEL_ADDRESS_SPACE_END_ARCH           (unsigned long) 0xffffffff80000000
    4242#define USER_ADDRESS_SPACE_START_ARCH           (unsigned long) 0x0000000000000000
    4343#define USER_ADDRESS_SPACE_END_ARCH             (unsigned long) 0x00007fffffffffff
  • kernel/arch/amd64/src/amd64.c

    r22e8166d r4cc2ddd  
    7272static void clean_IOPL_NT_flags(void)
    7373{
    74         asm
    75         (
    76                 "pushfq;"
    77                 "pop %%rax;"
    78                 "and $~(0x7000),%%rax;"
    79                 "pushq %%rax;"
    80                 "popfq;"
    81                 :
    82                 :
    83                 :"%rax"
     74        asm (
     75                "pushfq\n"
     76                "pop %%rax\n"
     77                "and $~(0x7000), %%rax\n"
     78                "pushq %%rax\n"
     79                "popfq\n"
     80                :
     81                :
     82                : "%rax"
    8483        );
    8584}
     
    9190static void clean_AM_flag(void)
    9291{
    93         asm
    94         (
    95                 "mov %%cr0,%%rax;"
    96                 "and $~(0x40000),%%rax;"
    97                 "mov %%rax,%%cr0;"
    98                 :
    99                 :
    100                 :"%rax"
     92        asm (
     93                "mov %%cr0, %%rax\n"
     94                "and $~(0x40000), %%rax\n"
     95                "mov %%rax, %%cr0\n"
     96                :
     97                :
     98                : "%rax"
    10199        );
    102100}
     
    128126}
    129127
     128
    130129void arch_post_mm_init(void)
    131130{
     
    136135                /* hard clock */
    137136                i8254_init();
    138 
     137                               
    139138#ifdef CONFIG_FB
    140139                if (vesa_present())
     
    149148                zone_merge_all();
    150149        }
     150       
    151151        /* Setup fast SYSCALL/SYSRET */
    152152        syscall_setup_cpu();
    153        
    154153}
    155154
  • kernel/arch/amd64/src/mm/page.c

    r22e8166d r4cc2ddd  
    8888        if (config.cpu_active == 1) {
    8989                page_mapping_operations = &pt_mapping_operations;
    90                
     90
    9191                /*
    9292                 * PA2KA(identity) mapping for all frames.
     
    9696                        page_mapping_insert(AS_KERNEL, PA2KA(cur), cur, identity_flags);
    9797                }
     98               
    9899                /* Upper kernel mapping
    99100                 * - from zero to top of kernel (include bottom addresses
    100                  *   because some are needed for init )
     101                 *   because some are needed for init)
    101102                 */
    102103                for (cur = PA2KA_CODE(0); cur < config.base + config.kernel_size; cur += FRAME_SIZE)
  • kernel/arch/ia32/src/mm/frame.c

    r22e8166d r4cc2ddd  
    6262        for (i = 0; i < e820counter; i++) {
    6363                if (e820table[i].type == MEMMAP_MEMORY_AVAILABLE) {
    64                         start = ADDR2PFN(ALIGN_UP(e820table[i].base_address,
    65                                                   FRAME_SIZE));
    66                         size = SIZE2FRAMES(ALIGN_DOWN(e820table[i].size,
    67                                                    FRAME_SIZE));
    68                         if (minconf < start || minconf >= start + size)
     64                        start = ADDR2PFN(ALIGN_UP(e820table[i].base_address, FRAME_SIZE));
     65                        size = SIZE2FRAMES(ALIGN_DOWN(e820table[i].size, FRAME_SIZE));
     66                        if ((minconf < start) || (minconf >= start + size))
    6967                                conf = start;
    7068                        else
     
    112110{
    113111        static pfn_t minconf;
    114 
     112       
    115113        if (config.cpu_active == 1) {
    116114                cmd_initialize(&e820_info);
    117115                cmd_register(&e820_info);
    118116
    119 
    120117                minconf = 1;
    121118#ifdef CONFIG_SMP
    122119                minconf = max(minconf,
    123                               ADDR2PFN(AP_BOOT_OFFSET+hardcoded_unmapped_ktext_size + hardcoded_unmapped_kdata_size));
     120                        ADDR2PFN(AP_BOOT_OFFSET + hardcoded_unmapped_ktext_size + hardcoded_unmapped_kdata_size));
    124121#endif
    125122#ifdef CONFIG_SIMICS_FIX
     
    134131                /* Reserve AP real mode bootstrap memory */
    135132                frame_mark_unavailable(AP_BOOT_OFFSET >> FRAME_WIDTH,
    136                                        (hardcoded_unmapped_ktext_size + hardcoded_unmapped_kdata_size) >> FRAME_WIDTH);
     133                        (hardcoded_unmapped_ktext_size + hardcoded_unmapped_kdata_size) >> FRAME_WIDTH);
    137134               
    138135#ifdef CONFIG_SIMICS_FIX
    139136                /* Don't know why, but these addresses help */
    140                 frame_mark_unavailable(0xd000 >> FRAME_WIDTH,3);
     137                frame_mark_unavailable(0xd000 >> FRAME_WIDTH, 3);
    141138#endif
    142139#endif
  • kernel/generic/src/console/console.c

    r22e8166d r4cc2ddd  
    6161        .write = null_putchar
    6262};
     63
    6364chardev_t null_stdout = {
    6465        .name = "null",
Note: See TracChangeset for help on using the changeset viewer.