Changeset c832cc0a in mainline


Ignore:
Timestamp:
2005-08-31T23:57:30Z (19 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
2a0d782
Parents:
3817ed1
Message:

hardcoded_symbol fixed into linker script on amd64/ia32/mips architecture

Files:
9 edited

Legend:

Unmodified
Added
Removed
  • arch/amd64/Makefile.inc

    r3817ed1 rc832cc0a  
    2727        arch/delay.S \
    2828        arch/amd64.c \
    29         arch/bios/bios.c
    30 
     29        arch/bios/bios.c \
     30        arch/interrupt.c
  • arch/amd64/_link.ld

    r3817ed1 rc832cc0a  
    3232                *(.rodata*);            /* string literals */
    3333                *(COMMON);              /* global variables */
     34                hardcoded_load_address = .;
     35                QUAD(0xffffffff80008000);
     36                hardcoded_ktext_size = .;
     37                QUAD(ktext_end - ktext_start + (unmapped_ktext_end - unmapped_ktext_start));
     38                hardcoded_kdata_size = .;
     39                QUAD(kdata_end - kdata_start + (unmapped_kdata_end - unmapped_kdata_start));
     40                *(.eh_frame);
    3441                *(.bss);                /* uninitialized static variables */
    35                 *(.eh_frame);
    3642                *(K_DATA_END);
    3743                kdata_end = .;
    3844        }
    39 
    40         _hardcoded_ktext_size = ktext_end - ktext_start + (unmapped_ktext_end - unmapped_ktext_start);
    41         _hardcoded_kdata_size = kdata_end - kdata_start + (unmapped_kdata_end - unmapped_kdata_start);
    42         _hardcoded_load_address = 0xffffffff80008000;
    4345}
  • arch/amd64/include/asm.h

    r3817ed1 rc832cc0a  
    132132}
    133133
     134/** Read CR2
     135 *
     136 * Return value in CR2
     137 *
     138 * @return Value read.
     139 */
     140static inline __u32 read_cr2(void) { __u64 v; __asm__ volatile ("movq %%cr2,%0" : "=r" (v)); return v; }
     141
     142
    134143extern size_t interrupt_handler_size;
    135144extern void interrupt_handlers(void);
  • arch/amd64/src/dummy.s

    r3817ed1 rc832cc0a  
    4343.global frame_arch_init
    4444.global dummy
    45 .global trap_register
    46 .global trap_virtual_eoi
    47 .global trap_virtual_enable_irqs
    4845.global rdtsc
    49 .global trap_virtual_disable_irqs
    50 .global enable_irqs_function
    51 .global disable_irqs_function
    52 .global eoi_function
    53 .global syscall
     46.global reset_TS_flag
     47.global fpu_init
    5448       
    55 .global null_interrupt
    5649.global interrupt_handler_size
    57 .global gp_fault
    58 .global nm_fault
    59 .global ss_fault
    6050.global interrupt_handlers
    61 .global memcpy
    6251
    63 null_interrupt:
    6452interrupt_handler_size:
    6553interrupt_handlers:     
    66 gp_fault:
    67 nm_fault:
    68 ss_fault:       
    69 eoi_function:
    70 syscall:       
    71 enable_irqs_function:
    72 disable_irqs_function: 
    7354rdtsc:
    74 trap_virtual_eoi:
    75 trap_virtual_enable_irqs:
    76 trap_virtual_disable_irqs:     
    77 trap_register: 
    7855before_thread_runs_arch:
    7956userspace:
     
    9067page_arch_init:
    9168frame_arch_init:
    92 memcpy:
    93 
     69reset_TS_flag:
     70fpu_init:       
     71       
    9472dummy:
    95730:
    9674        ret
     75
     76.global memcpy
     77memcpy:
     78        jmp _memcpy
  • arch/ia32/_link.ld

    r3817ed1 rc832cc0a  
    3232                *(.rodata*);            /* string literals */
    3333                *(COMMON);              /* global variables */
     34                hardcoded_load_address = .;
     35                LONG(0xffffffff80008000);
     36                hardcoded_ktext_size = .;
     37                LONG(ktext_end - ktext_start + (unmapped_ktext_end - unmapped_ktext_start));
     38                hardcoded_kdata_size = .;
     39                LONG(kdata_end - kdata_start + (unmapped_kdata_end - unmapped_kdata_start));
    3440                *(.bss);                /* uninitialized static variables */
    3541                *(K_DATA_END);
    3642                kdata_end = .;
    3743        }
    38 
    39         _hardcoded_ktext_size = ktext_end - ktext_start + (unmapped_ktext_end - unmapped_ktext_start);
    40         _hardcoded_kdata_size = kdata_end - kdata_start + (unmapped_kdata_end - unmapped_kdata_start);
    41         _hardcoded_load_address = 0x80008000;
    42 
    4344}
  • arch/ia32/src/boot/boot.S

    r3817ed1 rc832cc0a  
    6767        call map_kernel                 # map kernel and turn paging on
    6868
    69         movl $_hardcoded_ktext_size, hardcoded_ktext_size
    70         movl $_hardcoded_kdata_size, hardcoded_kdata_size
    71         movl $_hardcoded_load_address, hardcoded_load_address
    72 
    7369        call main_bsp                   # never returns
    7470
  • arch/ia32/src/interrupt.c

    r3817ed1 rc832cc0a  
    6464 * CPU is cpu_priority_high().
    6565 */
    66 void trap_dispatcher(__u8 n, __u32 stack[])
     66void trap_dispatcher(__u8 n, __native stack[])
    6767{
    6868        ASSERT(n < IVT_ITEMS);
     
    7171}
    7272
    73 void null_interrupt(__u8 n, __u32 stack[])
     73void null_interrupt(__u8 n, __native stack[])
    7474{
    7575        printf("int %d: null_interrupt\n", n);
     
    7878}
    7979
    80 void gp_fault(__u8 n, __u32 stack[])
     80void gp_fault(__u8 n, __native stack[])
    8181{
    8282        printf("ERROR_WORD=%X, %%eip=%X, %%cs=%X, flags=%X\n", stack[0], stack[1], stack[2], stack[3]);
     
    8787}
    8888
    89 void ss_fault(__u8 n, __u32 stack[])
     89void ss_fault(__u8 n, __native stack[])
    9090{
    9191        printf("ERROR_WORD=%X, %%eip=%X, %%cs=%X, flags=%X\n", stack[0], stack[1], stack[2], stack[3]);
     
    9696
    9797
    98 void nm_fault(__u8 n, __u32 stack[])
     98void nm_fault(__u8 n, __native stack[])
    9999{
    100100        reset_TS_flag();
     
    110110
    111111
    112 void page_fault(__u8 n, __u32 stack[])
     112void page_fault(__u8 n, __native stack[])
    113113{
    114114        printf("page fault address: %X\n", read_cr2());
     
    119119}
    120120
    121 void syscall(__u8 n, __u32 stack[])
     121void syscall(__u8 n, __native stack[])
    122122{
    123123        printf("cpu%d: syscall\n", CPU->id);
     
    125125}
    126126
    127 void tlb_shootdown_ipi(__u8 n, __u32 stack[])
     127void tlb_shootdown_ipi(__u8 n, __native stack[])
    128128{
    129129        trap_virtual_eoi();
     
    131131}
    132132
    133 void wakeup_ipi(__u8 n, __u32 stack[])
     133void wakeup_ipi(__u8 n, __native stack[])
    134134{
    135135        trap_virtual_eoi();
  • arch/mips/_link.ld

    r3817ed1 rc832cc0a  
    2828                *(.sdata);
    2929                *(.sbss);
     30                hardcoded_ktext_size = .;
     31                LONG(ktext_end - ktext_start); 
     32                hardcoded_kdata_size = .;
     33                LONG(kdata_end - kdata_start);
     34                hardcoded_load_address = .;
     35                LONG(0x80000000);
    3036                *(.bss);                /* uninitialized static variables */   
    3137                *(.scommon);
     
    3440
    3541        } = 0x00000000
    36 
    37         . = ABSOLUTE(hardcoded_ktext_size);
    38         .patch_1 : {
    39                 LONG(ktext_end - ktext_start);
    40         }
    41 
    42         . = ABSOLUTE(hardcoded_kdata_size);
    43         .patch_2 : {
    44                 LONG(kdata_end - kdata_start);
    45         }
    46 
    47         . = ABSOLUTE(hardcoded_load_address);
    48         .patch_3 : {
    49                 LONG(0x80000000);
    50         }
    51 
    5242}
  • src/build.amd64

    r3817ed1 rc832cc0a  
    55(cd ../arch/amd64/src;make gencontext;./gencontext)
    66# Create links to ia32 architecture
    7 for a in drivers bios; do
     7for a in drivers bios interrupt.c; do
    88  ln -sf ../../../arch/ia32/src/$a ../arch/amd64/src/
    99done
Note: See TracChangeset for help on using the changeset viewer.