ia64/xen-unstable

view extras/mini-os/arch/x86/minios-x86_64.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 8101b65014e8
children 681cfd0eda78
line source
1 OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
2 OUTPUT_ARCH(i386:x86-64)
3 ENTRY(_start)
4 SECTIONS
5 {
6 . = 0x0;
7 _text = .; /* Text and read-only data */
8 .text : {
9 *(.text)
10 *(.gnu.warning)
11 } = 0x9090
13 _etext = .; /* End of text section */
15 .rodata : { *(.rodata) *(.rodata.*) }
16 . = ALIGN(4096);
17 _erodata = .;
19 /* newlib initialization functions */
20 . = ALIGN(64 / 8);
21 PROVIDE (__preinit_array_start = .);
22 .preinit_array : { *(.preinit_array) }
23 PROVIDE (__preinit_array_end = .);
24 PROVIDE (__init_array_start = .);
25 .init_array : { *(.init_array) }
26 PROVIDE (__init_array_end = .);
27 PROVIDE (__fini_array_start = .);
28 .fini_array : { *(.fini_array) }
29 PROVIDE (__fini_array_end = .);
31 .data : { /* Data */
32 *(.data)
33 CONSTRUCTORS
34 }
36 _edata = .; /* End of data section */
38 __bss_start = .; /* BSS */
39 .bss : {
40 *(.bss)
41 }
42 _end = . ;
44 /* Sections to be discarded */
45 /DISCARD/ : {
46 *(.text.exit)
47 *(.data.exit)
48 *(.exitcall.exit)
49 }
51 /* Stabs debugging sections. */
52 .stab 0 : { *(.stab) }
53 .stabstr 0 : { *(.stabstr) }
54 .stab.excl 0 : { *(.stab.excl) }
55 .stab.exclstr 0 : { *(.stab.exclstr) }
56 .stab.index 0 : { *(.stab.index) }
57 .stab.indexstr 0 : { *(.stab.indexstr) }
58 .comment 0 : { *(.comment) }
59 }