Changeset 00a44bc in mainline


Ignore:
Timestamp:
2005-05-11T14:12:53Z (20 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
724b58a
Parents:
9db5b66
Message:

IA-64 work.
Give up attempts to persuade ld to patch the kernel image with proper hardcoded lenghts and addresses.
Add special sections and calculate the numbers manually.
Fix wrong order of operands in sub instructions in memcpy() implementation.

Location:
arch/ia64
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • arch/ia64/Makefile.inc

    r9db5b66 r00a44bc  
    1313CPPFLAGS=$(DEFS) -nostdinc -I../include
    1414CFLAGS=$(CPPFLAGS) -nostdlib -fno-builtin -Wmissing-prototypes -Werror -O3
    15 LFLAGS=-EL -n -M -no-check-sections -T ../arch/ia64/_link.ld
     15LFLAGS=-EL -M -no-check-sections -T ../arch/ia64/_link.ld
    1616
    1717arch_sources= \
  • arch/ia64/_link.ld

    r9db5b66 r00a44bc  
    1313SECTIONS {
    1414    .image 0x0000000000001000: AT (0x0000000000001000) {
    15             ktext_start = .;
     15            *(K_TEXT_START)
    1616            *(.text .stub .text.* .gnu.linkonce.t.*)
    1717            *(.interp)
     
    5151            *(.plt)
    5252            *(.fini)
    53             ktext_end = .;
    54             kdata_start = .;
     53            *(K_TEXT_END)
     54            *(K_DATA_START)
    5555            *(.rodata .rodata.* .gnu.linkonce.r.*)
    5656            *(.rodata1)
     
    8080            *(.dynbss)
    8181            *(.bss .bss.* .gnu.linkonce.b.*)
    82             *(COMMON)
    83             kdata_end = .;
     82            *(COMMON);
     83            *(K_DATA_END)
    8484    }
    8585
    86     . = ABSOLUTE(hardcoded_ktext_size);
    87     .patch_1 : {
    88         LONG(ktext_end - ktext_start);
    89     }
    90 
    91     . = ABSOLUTE(hardcoded_kdata_size);
    92     .patch_2 : {
    93         LONG(kdata_end - kdata_start);
    94     }
    95 
    96     . = ABSOLUTE(hardcoded_load_address);
    97     .patch_3 : {
    98         QUAD(0x0000000000001000);
    99     }
    100 
     86   
    10187}
  • arch/ia64/src/asm.S

    r9db5b66 r00a44bc  
    3434         * Switch the role of first two arguments
    3535         */
    36         sub r33 = r32, r33      ;;
     36        sub r33 = r33, r32      ;;
    3737        add r32 = r32, r33      ;;
    38         sub r33 = r33, r32     
     38        sub r33 = r32, r33     
    3939               
    4040        br _memcopy
  • arch/ia64/src/context.S

    r9db5b66 r00a44bc  
    7878       
    7979        add r8 = r0, r0, 1              /* context_save returns 1 */
    80         br.ret.sptk.many rp
     80        br.ret.sptk.many b0
    8181
    8282context_restore:
     
    126126       
    127127        mov r8 = r0                     /* context_restore returns 0 */
    128         br.ret.sptk.many rp
     128        br.ret.sptk.many b0
  • arch/ia64/src/fake.s

    r9db5b66 r00a44bc  
    7070memsetb:
    7171panic:
    72         br.ret.sptk.many rp
     72        br.ret.sptk.many b0
    7373
  • arch/ia64/src/start.S

    r9db5b66 r00a44bc  
    2929#include <arch/ski/ski.h>
    3030
     31.section K_TEXT_START
     32.global k_text_start
     33k_text_start:
     34
     35.section K_TEXT_END
     36.global k_text_end
     37k_text_end:
     38
     39.section K_DATA_START
     40.global k_data_start
     41k_data_start:
     42
     43.section K_DATA_END
     44.global k_data_end
     45k_data_end:
     46
     47
    3148.text
    3249
     
    3653kernel_image_start:
    3754        # initialize gp (Global Pointer) register
    38         mov r1=kernel_image_start;
     55        movl r1=k_text_start;
    3956
    4057        # set stack pointer to some sane value
    41         mov r12=stack0
     58        movl r12=stack0
     59
     60        #
     61        # Initialize hardcoded_* variables.
     62        # (IA-64 port doesn't get these values from linker.)
     63        #
     64        movl r8 = k_text_start  ;;
     65        movl r9 = k_text_end    ;;
     66        sub r8 = r9, r8         ;;
     67        addl r10 = @gprel(hardcoded_ktext_size), gp;;
     68        st4 [r10] = r8          ;;
     69
     70        movl r8 = k_data_start  ;;
     71        movl r9 = k_data_end    ;;
     72        sub r8 = r9, r8         ;;
     73        addl r10 = @gprel(hardcoded_kdata_size), gp;;
     74        st4 [r10] = r8          ;;
     75       
     76        addl r10 = @gprel(hardcoded_load_address), gp;;
     77        st8 [r10] = r1
    4278       
    4379        # initialize Ski console using SSC (Simulator System Call)
     
    4581        break 0x80000
    4682
    47         br.call.sptk.many rp=main_bsp
     83        br.call.sptk.many b0=main_bsp
    4884
    49850:
    5086        br 0b
     87
Note: See TracChangeset for help on using the changeset viewer.