Changes in / [d767cb1:c2cf033] in mainline


Ignore:
Files:
1 added
1 deleted
12 edited

Legend:

Unmodified
Added
Removed
  • HelenOS.config

    rd767cb1 rc2cf033  
    7070@ "pentium4" Pentium 4
    7171@ "pentium3" Pentium 3
    72 @ "i486" i486
    7372@ "core" Core Solo/Duo
    7473@ "athlon_xp" Athlon XP
  • kernel/arch/ia32/Makefile.inc

    rd767cb1 rc2cf033  
    6464endif
    6565
    66 ifeq ($(PROCESSOR),i486)
    67         CMN2 = -march=i486
    68 endif
    69 
    7066ifeq ($(PROCESSOR),core)
    7167        CMN2 = -march=prescott
  • kernel/arch/ia32/include/asm.h

    rd767cb1 rc2cf033  
    311311}
    312312
    313 #ifndef PROCESSOR_i486
    314313/** Write to MSR */
    315314NO_TRACE static inline void write_msr(uint32_t msr, uint64_t value)
     
    336335        return ((uint64_t) dx << 32) | ax;
    337336}
    338 #endif
    339337
    340338
  • kernel/arch/ia32/include/atomic.h

    rd767cb1 rc2cf033  
    121121        asm volatile (
    122122                "0:\n"
    123 #ifndef PROCESSOR_i486
    124123                "pause\n"        /* Pentium 4's HT love this instruction */
    125 #endif
    126124                "mov %[count], %[tmp]\n"
    127125                "testl %[tmp], %[tmp]\n"
  • kernel/arch/ia32/include/cycle.h

    rd767cb1 rc2cf033  
    4040NO_TRACE static inline uint64_t get_cycle(void)
    4141{
    42 #ifdef PROCESSOR_i486
    43         return 0;
    44 #else
    4542        uint64_t v;
    4643       
     
    5148       
    5249        return v;
    53 #endif
    5450}
    5551
  • kernel/arch/ia32/src/asm.S

    rd767cb1 rc2cf033  
    405405        xorl %eax, %eax
    406406        cmpl $(GDT_SELECTOR(KTEXT_DES)), ISTATE_OFFSET_CS(%esp)
    407 #ifdef PROCESSOR_i486
    408         jz 0f
    409         movl %eax, %ebp
    410 0:
    411 #else
    412407        cmovnzl %eax, %ebp
    413 #endif
    414408
    415409        movl %ebp, ISTATE_OFFSET_EBP_FRAME(%esp)
  • kernel/arch/ia32/src/boot/boot.S

    rd767cb1 rc2cf033  
    9797        pm_status $status_prot
    9898       
     99        movl $(INTEL_CPUID_LEVEL), %eax
     100        cpuid
     101        cmp $0x0, %eax  /* any function > 0? */
     102        jbe pse_unsupported
     103       
     104        movl $(INTEL_CPUID_STANDARD), %eax
     105        cpuid
     106        bt $(INTEL_PSE), %edx
     107        jc pse_supported
     108       
     109        pse_unsupported:
     110               
     111                pm_error $err_pse
     112       
     113        pse_supported:
     114       
    99115#include "vesa_prot.inc"
    100116       
     
    124140                jmp hlt0
    125141
    126 /** Calculate unmapped address of the end of the kernel. */
    127 calc_end_of_kernel:
    128         movl $hardcoded_load_address, %edi
    129         andl $0x7fffffff, %edi
    130         movl (%edi), %esi
    131         andl $0x7fffffff, %esi
    132        
    133         movl $hardcoded_ktext_size, %edi
    134         andl $0x7fffffff, %edi
    135         addl (%edi), %esi
    136         andl $0x7fffffff, %esi
    137        
    138         movl $hardcoded_kdata_size, %edi
    139         andl $0x7fffffff, %edi
    140         addl (%edi), %esi
    141         andl $0x7fffffff, %esi
    142         movl %esi, end_of_kernel
    143         ret
    144 
    145 /** Find free 2M (+4k for alignment) region where to store page tables */
    146 find_mem_for_pt:
    147         /* Check if multiboot info is present */
    148         cmpl $0x2BADB002, grub_eax
    149         je check_multiboot_map
    150         ret
    151 check_multiboot_map:
    152         /* Copy address of the multiboot info to ebx */
    153         movl grub_ebx, %ebx
    154         /* Check if memory map flag is present */
    155         movl (%ebx), %edx
    156         andl $(1 << 6), %edx
    157         jnz use_multiboot_map
    158         ret
    159 use_multiboot_map:
    160         /* Copy address of the memory map to edx */
    161         movl 48(%ebx), %edx
    162         movl %edx, %ecx
    163         addl 44(%ebx), %ecx
    164         /* Find a free region at least 2M in size */
    165         check_memmap_loop:
    166                 /* Is this a free region? */
    167                 cmp $1, 20(%edx)
    168                 jnz next_region
    169                 /* Check size */
    170                 cmp $0, 16(%edx)
    171                 jnz next_region
    172                 cmpl $(2 * 1024 * 1024 + 4 * 1024), 12(%edx)
    173                 jbe next_region
    174                 cmp $0, 8(%edx)
    175                 jz found_region
    176         next_region:
    177                 cmp %ecx, %edx
    178                 jbe next_region_do
    179                 ret
    180         next_region_do:
    181                 addl (%edx), %edx
    182                 addl $4, %edx
    183                 jmp check_memmap_loop
    184         found_region:
    185                 /* Use end of the found region */
    186                 mov 4(%edx), %ecx
    187                 add 12(%edx), %ecx
    188                 sub $(2 * 1024 * 1024), %ecx
    189                 mov %ecx, free_area
    190         ret
    191                
    192 
    193142/** Setup mapping for the kernel.
    194143 *
     
    199148.global map_kernel
    200149map_kernel:
    201         /* Paging features */
    202150        movl %cr4, %ecx
     151        orl $(1 << 4), %ecx      /* PSE on */
    203152        andl $(~(1 << 5)), %ecx  /* PAE off */
    204153        movl %ecx, %cr4
    205154       
    206         call calc_end_of_kernel
    207         call find_mem_for_pt
    208         mov end_of_kernel, %esi
    209         mov free_area, %ecx
    210         cmpl %esi, %ecx
    211         jbe use_end_of_kernel
    212         mov %ecx, %esi
    213         /* Align address down to 4k */
    214         andl $(~4095), %esi
    215 use_end_of_kernel:
    216        
    217         /* Align address to 4k */
    218         addl $4095, %esi
    219         andl $(~4095), %esi
    220        
    221         /* Allocate space for page tables*/     
    222         movl %esi, pt_loc
    223         movl $ballocs, %edi
    224         andl $0x7fffffff, %edi
    225         movl %esi, (%edi)
    226         addl $4, %edi
    227         movl $(2*1024*1024), (%edi)
    228        
    229         /* Fill page tables */
    230         xorl %ecx, %ecx
    231         xorl %ebx, %ebx
    232        
    233         floop_pt:
    234                 movl $((1 << 1) | (1 << 0)), %eax
    235                 orl %ebx, %eax
    236                 movl %eax, (%esi, %ecx, 4)
    237                 addl $(4 * 1024), %ebx
    238                
    239                 incl %ecx
    240                 cmpl $(512 * 1024), %ecx
    241                 jl floop_pt
    242        
    243         /* Fill page directory */
    244155        movl $(page_directory + 0), %esi
    245156        movl $(page_directory + 2048), %edi
    246157        xorl %ecx, %ecx
    247         movl pt_loc, %ebx
     158        xorl %ebx, %ebx
    248159       
    249160        floop:
    250                 movl $((1 << 1) | (1 << 0)), %eax
     161                movl $((1 << 7) | (1 << 1) | (1 << 0)), %eax
    251162                orl %ebx, %eax
    252163                /* Mapping 0x00000000 + %ecx * 4M => 0x00000000 + %ecx * 4M */
     
    254165                /* Mapping 0x80000000 + %ecx * 4M => 0x00000000 + %ecx * 4M */
    255166                movl %eax, (%edi, %ecx, 4)
    256                 addl $(4 * 1024), %ebx
     167                addl $(4 * 1024 * 1024), %ebx
    257168               
    258169                incl %ecx
     
    612523
    613524grub_ebx:
    614         .long 0
    615 
    616 pt_loc:
    617         .long 0
    618 end_of_kernel:
    619         .long 0
    620 free_area:
    621525        .long 0
    622526
  • kernel/arch/ia32/src/cpu/cpu.c

    rd767cb1 rc2cf033  
    118118                );
    119119        }
    120 
    121 #ifndef PROCESSOR_i486
     120       
    122121        if (CPU->arch.fi.bits.sep) {
    123122                /* Setup fast SYSENTER/SYSEXIT syscalls */
    124123                syscall_setup_cpu();
    125124        }
    126 #endif
    127125}
    128126
  • kernel/arch/ia32/src/proc/scheduler.c

    rd767cb1 rc2cf033  
    6060        uintptr_t kstk = (uintptr_t) &THREAD->kstack[STACK_SIZE];
    6161       
    62 #ifndef PROCESSOR_i486
    6362        if (CPU->arch.fi.bits.sep) {
    6463                /* Set kernel stack for CP3 -> CPL0 switch via SYSENTER */
    6564                write_msr(IA32_MSR_SYSENTER_ESP, kstk - sizeof(istate_t));
    6665        }
    67 #endif
    6866       
    6967        /* Set kernel stack for CPL3 -> CPL0 switch via interrupt */
  • kernel/arch/ia32/src/syscall.c

    rd767cb1 rc2cf033  
    3939#include <arch/pm.h>
    4040
    41 #ifndef PROCESSOR_i486
    4241/** Enable & setup support for SYSENTER/SYSEXIT */
    4342void syscall_setup_cpu(void)
     
    5049        write_msr(IA32_MSR_SYSENTER_EIP, (uint32_t) sysenter_handler);
    5150}
    52 #endif
    5351
    5452/** @}
  • uspace/lib/c/arch/ia32/Makefile.common

    rd767cb1 rc2cf033  
    2828
    2929CLANG_ARCH = i386
    30 ifeq ($(PROCESSOR),i486)
    31 GCC_CFLAGS += -march=i486 -fno-omit-frame-pointer
    32 else
    3330GCC_CFLAGS += -march=pentium -fno-omit-frame-pointer
    34 endif
    3531
    3632ENDIANESS = LE
  • uspace/lib/c/arch/ia32/Makefile.inc

    rd767cb1 rc2cf033  
    2828
    2929ARCH_SOURCES = \
    30         arch/$(UARCH)/src/entry.S \
     30        arch/$(UARCH)/src/entry.s \
    3131        arch/$(UARCH)/src/entryjmp.s \
    3232        arch/$(UARCH)/src/thread_entry.s \
Note: See TracChangeset for help on using the changeset viewer.