source: mainline/arch/ia64/src/start.S@ 00a44bc

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 00a44bc was 00a44bc, checked in by Jakub Jermar <jakub@…>, 20 years ago

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.

  • Property mode set to 100644
File size: 2.4 KB
Line 
1#
2# Copyright (C) 2005 Jakub Jermar
3# All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions
7# are met:
8#
9# - Redistributions of source code must retain the above copyright
10# notice, this list of conditions and the following disclaimer.
11# - Redistributions in binary form must reproduce the above copyright
12# notice, this list of conditions and the following disclaimer in the
13# documentation and/or other materials provided with the distribution.
14# - The name of the author may not be used to endorse or promote products
15# derived from this software without specific prior written permission.
16#
17# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27#
28
29#include <arch/ski/ski.h>
30
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
48.text
49
50.global kernel_image_start
51
52stack0:
53kernel_image_start:
54 # initialize gp (Global Pointer) register
55 movl r1=k_text_start;
56
57 # set stack pointer to some sane value
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
78
79 # initialize Ski console using SSC (Simulator System Call)
80 mov r15=SKI_CONSOLE_INIT
81 break 0x80000
82
83 br.call.sptk.many b0=main_bsp
84
850:
86 br 0b
87
Note: See TracBrowser for help on using the repository browser.