[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] arm: link a device tree blob into the xen image
# HG changeset patch # User David Vrabel <david.vrabel@xxxxxxxxxx> # Date 1329143088 0 # Node ID 14a97085fbec0d3a87c584a1c2b268a4f61fc57c # Parent 865d6bb72b5beac73b89dcacb8ea0fd29ed07c24 arm: link a device tree blob into the xen image Link a device tree blob (DTB) into the xen image. This is loaded immediately after Xen and xen_start() is called with the correct address in atag_paddr. The DTB file must be supplied by setting the CONFIG_DTB_FILE variable in .config or on the make command line. Signed-off-by: David Vrabel <david.vrabel@xxxxxxxxxx> Acked-by: Tim Deegan <tim@xxxxxxx> Committed-by: Ian Campbell <ian.campbell@xxxxxxxxxx> --- diff -r 865d6bb72b5b -r 14a97085fbec config/arm.mk --- a/config/arm.mk Mon Feb 13 14:24:45 2012 +0000 +++ b/config/arm.mk Mon Feb 13 14:24:48 2012 +0000 @@ -16,3 +16,9 @@ LDFLAGS_DIRECT += -marmelf$(LDFLAGS_DIRECT_$(XEN_OS))_eabi CONFIG_LOAD_ADDRESS ?= 0x80000000 + +# XXX: When running on the model there is no bootloader to provide a +# device tree. It must be linked into Xen. +ifndef CONFIG_DTB_FILE +$(error CONFIG_DTB_FILE must be set to the absolute filename of a DTB) +endif diff -r 865d6bb72b5b -r 14a97085fbec xen/arch/arm/Makefile --- a/xen/arch/arm/Makefile Mon Feb 13 14:24:45 2012 +0000 +++ b/xen/arch/arm/Makefile Mon Feb 13 14:24:48 2012 +0000 @@ -22,12 +22,17 @@ #obj-bin-y += ....o +ifdef CONFIG_DTB_FILE +obj-y += dtb.o +AFLAGS += -DCONFIG_DTB_FILE=\"$(CONFIG_DTB_FILE)\" +endif + ALL_OBJS := head.o $(ALL_OBJS) $(TARGET): $(TARGET)-syms # XXX: VE model loads by VMA so instead of # making a proper ELF we link with LMA == VMA and adjust crudely - $(OBJCOPY) --change-addresses +0x7fe00000 $< $@ + $(OBJCOPY) --change-addresses +0x80000000 $< $@ # XXX strip it #$(TARGET): $(TARGET)-syms $(efi-y) boot/mkelf32 @@ -71,6 +76,8 @@ sed -e 's/xen\.lds\.o:/xen\.lds:/g' <.xen.lds.d >.xen.lds.d.new mv -f .xen.lds.d.new .xen.lds.d +dtb.o: $(CONFIG_DTB_FILE) + .PHONY: clean clean:: rm -f asm-offsets.s xen.lds diff -r 865d6bb72b5b -r 14a97085fbec xen/arch/arm/dtb.S --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xen/arch/arm/dtb.S Mon Feb 13 14:24:48 2012 +0000 @@ -0,0 +1,2 @@ + .section .dtb,#alloc + .incbin CONFIG_DTB_FILE diff -r 865d6bb72b5b -r 14a97085fbec xen/arch/arm/head.S --- a/xen/arch/arm/head.S Mon Feb 13 14:24:45 2012 +0000 +++ b/xen/arch/arm/head.S Mon Feb 13 14:24:48 2012 +0000 @@ -55,6 +55,12 @@ adr r9, start /* r9 := paddr (start) */ sub r10, r9, r0 /* r10 := phys-offset */ + /* Using the DTB in the .dtb section? */ +#ifdef CONFIG_DTB_FILE + ldr r8, =_sdtb + add r8, r10 /* r8 := paddr(DTB) */ +#endif + #ifdef EARLY_UART_ADDRESS /* Say hello */ ldr r11, =EARLY_UART_ADDRESS /* r11 := UART base address */ diff -r 865d6bb72b5b -r 14a97085fbec xen/arch/arm/xen.lds.S --- a/xen/arch/arm/xen.lds.S Mon Feb 13 14:24:45 2012 +0000 +++ b/xen/arch/arm/xen.lds.S Mon Feb 13 14:24:48 2012 +0000 @@ -122,6 +122,10 @@ } :text _end = . ; + /* Section for the device tree blob (if any). */ + _sdtb = .; + .dtb : { *(.dtb) } :text + /* Sections to be discarded */ /DISCARD/ : { *(.exit.text) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |