ia64/xen-unstable

view extras/mini-os/arch/ia64/minios-ia64.lds @ 17042:a905c582a406

Add stubdomain support. See stubdom/README for usage details.

- Move PAGE_SIZE and STACK_SIZE into __PAGE_SIZE and __STACK_SIZE in
arch_limits.h so as to permit getting them from there without
pulling all the internal Mini-OS defines.
- Setup a xen-elf cross-compilation environment in stubdom/cross-root
- Add a POSIX layer on top of Mini-OS by linking against the newlib C
library and lwIP, and implementing the Unixish part in mini-os/lib/sys.c
- Cross-compile zlib and libpci too.
- Add an xs.h-compatible layer on top of Mini-OS' xenbus.
- Cross-compile libxc with an additional xc_minios.c and a few things
disabled.
- Cross-compile ioemu with an additional block-vbd, but without sound,
tpm and other details. A few hacks are needed:
- Align ide and scsi buffers at least on sector size to permit
direct transmission to the block backend. While we are at it, just
page-align it to possibly save a segment. Also, limit the scsi
buffer size because of limitations of the block paravirtualization
protocol.
- Allocate big tables dynamically rather that letting them go to
bss: when Mini-OS gets installed in memory, bss is not lazily
allocated, and doing so during Mini-OS is unnecessarily trick while
we can simply use malloc.
- Had to change the Mini-OS compilation somehow, so as to export
Mini-OS compilation flags to the Makefiles of libxc and ioemu.

Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
author Keir Fraser <keir.fraser@citrix.com>
date Tue Feb 12 14:35:39 2008 +0000 (2008-02-12)
parents ac18d251df63
children 681cfd0eda78
line source
1 OUTPUT_FORMAT("elf64-ia64-little")
2 OUTPUT_ARCH(ia64)
4 ENTRY(phys_start)
6 PHDRS
7 {
8 code PT_LOAD;
9 data PT_LOAD;
10 }
12 SECTIONS
13 {
15 phys_start = _start - (((5<<(61))+0x100000000) - (1 << 20));
17 code : { } :code
18 . = ((5<<(61))+0x100000000);
20 _text = .;
22 .text : AT(ADDR(.text) - (((5<<(61))+0x100000000) - (1 << 20)))
23 {
24 *(.text)
25 }
27 _etext = .;
29 data : { } :data
30 .data : AT(ADDR(.data) - (((5<<(61))+0x100000000) - (1 << 20)))
31 { *(.data)
32 }
34 .sdata : AT(ADDR(.sdata) - (((5<<(61))+0x100000000) - (1 << 20)))
35 { *(.sdata) *(.sdata1) *(.srdata) }
37 .rodata : AT(ADDR(.rodata) - (((5<<(61))+0x100000000) - (1 << 20)))
38 { *(.rodata) }
40 .rodata.str1.8 : AT(ADDR(.rodata.str1.8) - (((5<<(61))+0x100000000) - (1 << 20)))
41 { *(.rodata.str1.8) }
43 /* newlib initialization functions */
44 . = ALIGN(64 / 8);
45 PROVIDE (__preinit_array_start = .);
46 .preinit_array : { *(.preinit_array) }
47 PROVIDE (__preinit_array_end = .);
48 PROVIDE (__init_array_start = .);
49 .init_array : { *(.init_array) }
50 PROVIDE (__init_array_end = .);
51 PROVIDE (__fini_array_start = .);
52 .fini_array : { *(.fini_array) }
53 PROVIDE (__fini_array_end = .);
55 .IA_64.unwind_info : AT(ADDR(.IA_64.unwind_info) - (((5<<(61))+0x100000000) - (1 << 20)))
56 { *(.IA_64.unwind_info) }
58 .IA_64.unwind : AT(ADDR(.IA_64.unwind) - (((5<<(61))+0x100000000) - (1 << 20)))
59 { *(.IA_64.unwind) }
61 .bss : AT(ADDR(.bss) - (((5<<(61))+0x100000000) - (1 << 20)))
62 { *(.bss) }
64 _end = .;
66 }