aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/xen.lds.S
Commit message (Collapse)AuthorAgeFilesLines
* x86: move struct bug_frame instances out of lineJan Beulich2013-08-231-0/+12
| | | | | | | | | | | | | | Just like Linux did many years ago, move them into a separate (data) section, such that they no longer pollute instruction caches and TLBs. Assertion frames, requiring two pointers to be stored, occupy two slots in the array, with the second slot mimicking a frame the location pointer of which doesn't match any address within .text or .init.text (it effectively points back to the slot itself, which - being in a data section - can't be reached by non-buggy execution). Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Keir Fraser <keir@xen.org>
* coverage: fix on ARMIan Campbell2013-03-121-4/+2
| | | | | | | | | | Use a list of pointers to simplify the handling of 32- vs 64-bit. Also on ARM the section name is ".init_array" and not ".ctors". Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Keir Fraser <keir@xen.org> [ ijc -- tweak whitespace per Frediano's comment ]
* gcov: Call constructors during initializationFrediano Ziglio2013-02-211-0/+7
| | | | | | This allow modules to set initializer functions. This is used by Gcc instrumentation code for profiling arcs and test coverage.
* xen: Remove x86_32 build target.Keir Fraser2012-09-121-9/+1
| | | | Signed-off-by: Keir Fraser <keir@xen.org>
* x86-64: construct static, uniform parts of page tables at build timeJan Beulich2012-09-111-0/+4
| | | | | | | | ... rather than at boot time, removing unnecessary redundancy between EFI and legacy boot code. Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Keir Fraser <keir@xen.org>
* x86: merge .text.* into .text while linkingJan Beulich2012-05-081-0/+2
| | | | | | | | For xen.efi, this eliminates a pointless gap between .text and .text.unlikely of almost 2Mb size. Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Keir Fraser <keir@xen.org>
* x86: make run-time part of trampoline relocatableJan Beulich2011-08-191-0/+7
| | | | | | | | | | | | | | In order to eliminate an initial hack in the EFI boot code (where memory for the trampoline was just "claimed" instead of properly allocated), the trampoline code must no longer make assumption on the address at which it would be located. For the time being, the fixed address is being retained for the traditional multiboot path. As an additional benefit (at least from my pov) it allows confining the visibility of the BOOT_TRAMPOLINE definition to just the boot code. Signed-off-by: Jan Beulich <jbeulich@novell.com>
* x86-64/EFI: discard .comment.* sectionsJan Beulich2011-07-081-0/+1
| | | | | | | | | | | | The SuSE version of gcc produces a non-standard section named .comment.SUSE.OPTs, but the PE32+ handling in binutils can't really deal with any section to be placed at virtual address zero (and not needing to be loaded). Even if binutils did, at least the UEFI implementation in EDK 1.06 doesn't look at the section characteristics at all, and hence would attempt to load such a section, and fail or corrupt other data. Signed-off-by: Jan Beulich <jbeulich@novell.com>
* x86-64: EFI boot codeJan Beulich2011-06-281-3/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Besides introducing the relevant code paralleling parts of what is under xen/arch/x86/boot/, this adjusts the build logic so that with a single compilation two images (gzip-compressed ELF and EFI application) can get created. The EFI part of this depends on a new enough compiler (supposedly gcc 4.4.x and above, but so far only tested to work with 4.5.x) and a properly configured linker (must support the i386pep emulation). If either functionality is found to not be available, the EFI part of the build will simply be skipped. The patch adds all code to allow Xen and the (accordingly enabled) Dom0 kernel to boot, but doesn't allow Dom0 to make use of EFI runtime calls (this will be the subject of the next patch). Parts of the code were lifted from an earlier never published OS project of ours - whether respective license information needs to be added to the respective source file is unclear to me (I was told internally that adding a GPLv2 license header can be done if needed by the community). Open issues (not preventing this from being committed imo): The trampoline allocation and initialization isn't really nice. This is due to the trampoline needing to be placed at a fixed address, and hence making the trampoline relocatable would seem desirable here (as well as for BIOS-based booting, where the trampoline location needed to be adjusted a number of time already in the past, due to it colliding with firmware data). By excluding mem.S, edd.S, and video.S from copied trampoline (i.e. moving up wakeup.S? and making sure none of the symbols are used from EFI code), the effective trampoline size could at least be reduced. Should the mappings of [__XEN_VIRT_START, mbi.mem_upper) and [_end, __XEN_VIRT_START+BOOTSTRAP_MAP_BASE) be destroyed, despite non-EFI code also keeping them? Signed-off-by: Jan Beulich <jbeulich@novell.com>
* x86: link-time .data section adjustmentsKeir Fraser2010-12-241-0/+4
| | | | | | | Fold compiler generated sections (mostly due to -fPIC on x86-64) into the general .data and .data.read_mostly sections. Signed-off-by: Jan Beulich <jbeulich@novell.com>
* x86-64: use PC-relative exception table entriesKeir Fraser2010-12-241-12/+8
| | | | | | | | | | | | | ... thus allowing to make the entries half their current size. Rather than adjusting all instances to the new layout, abstract the construction the table entries via a macro (paralleling a similar one in recent Linux). Also change the name of the section (to allow easier detection of missed cases) and merge the final resulting output sections into .data.read_mostly. Signed-off-by: Jan Beulich <jbeulich@novell.com>
* libelf: move to init text/data when built for the hypervisorKeir Fraser2010-11-041-0/+4
| | | | | | | | | Rather than annotating each and every function and data object (and then still missing some compiler generated ones, plus getting into ugliness due to the code also being built from tools/libxc/), use objcopy to rename all relevant sections. Signed-off-by: Jan Beulich <jbeulich@novell.com>
* x86: Dynamically allocate percpu data area when a CPU comes online.Keir Fraser2010-05-181-21/+10
| | | | | | At the same time, the data area starts life zeroed. Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
* x86: Implement cpu hotplug notifiers. Use them.Keir Fraser2010-05-141-0/+2
| | | | Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
* x86: add .data.page_aligned sectionKeir Fraser2010-05-061-0/+2
| | | | | | | ... and move page-aligned data there, instead of having random holes (to fulfill the demanded alignment) in the final image. Signed-off-by: Jan Beulich <jbeulich@novell.com>
* x86: Fix and clarify 20803:50bd4235f486Keir Fraser2010-01-141-0/+1
| | | | Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
* Spinlock profiling (enable in build with lock_profile=y)Keir Fraser2009-10-141-0/+7
| | | | | | | Adds new tool xenlockprof to run from dom0. From: Juergen Gross <juergen.gross@ts.fujitsu.com> Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
* x86: merge final linking scriptsKeir Fraser2009-07-131-0/+136
While unrelated to the previous four patches, I realized that the two scripts are nearly identical when coding those earlier patches, and this patch depends on them in order to apply cleanly. As an extra measure, it also adjusts the (unused) space freed at the end of the per-CPU area to include all alignment space needed before the first actual constituent of the .bss section (up to 7 pages on x86-64). Signed-off-by: Jan Beulich <jbeulich@novell.com>