diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2010-02-12 09:16:10 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2010-02-12 09:16:10 +0000 |
commit | 98650e12c1241d6a72f6d3e6a4f8d16faaf9f9c5 (patch) | |
tree | 8b13bfd60c344bac138bb9659de65825a339f5f3 /tools | |
parent | 1ffced4c92ed11f0ddae83bc7f355d7a64b735b4 (diff) | |
download | xen-98650e12c1241d6a72f6d3e6a4f8d16faaf9f9c5.tar.gz xen-98650e12c1241d6a72f6d3e6a4f8d16faaf9f9c5.tar.bz2 xen-98650e12c1241d6a72f6d3e6a4f8d16faaf9f9c5.zip |
hvmloader: Fix parallel build of ACPI tables.
Make build.c dependency on ssdt_{pm,tpm}.h explicit, else they can be
built in the wrong order.
Also, improve naming of target DSDT structures, and specify -p option
to iasl so that all generated files for a given target have
target-unique names, hence build can proceed safely in parallel.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/firmware/hvmloader/acpi/Makefile | 27 | ||||
-rw-r--r-- | tools/firmware/hvmloader/acpi/build.c | 12 |
2 files changed, 20 insertions, 19 deletions
diff --git a/tools/firmware/hvmloader/acpi/Makefile b/tools/firmware/hvmloader/acpi/Makefile index 6737bb2c0a..7d82c63cbd 100644 --- a/tools/firmware/hvmloader/acpi/Makefile +++ b/tools/firmware/hvmloader/acpi/Makefile @@ -18,7 +18,7 @@ XEN_ROOT = ../../../.. include $(XEN_ROOT)/tools/firmware/Rules.mk -C_SRC = build.c dsdt.c dsdt15.c static_tables.c +C_SRC = build.c dsdt_anycpu.c dsdt_15cpu.c static_tables.c OBJS = $(patsubst %.c,%.o,$(C_SRC)) CFLAGS += -I. -I.. $(CFLAGS_include) @@ -26,21 +26,19 @@ CFLAGS += -I. -I.. $(CFLAGS_include) vpath iasl $(PATH) all: acpi.a -ssdt_pm.h ssdt_tpm.h: %.h: %.asl - $(MAKE) iasl - iasl -tc $< +ssdt_pm.h ssdt_tpm.h: %.h: %.asl iasl + iasl -p $* -tc $< sed -e 's/AmlCode/$*/g' $*.hex >$@ - rm -f *.aml $*.hex + rm -f $*.hex $*.aml -dsdt.c dsdt15.c: %.c: dsdt.asl mk_dsdt.c - $(MAKE) iasl +dsdt_15cpu.c dsdt_anycpu.c: %.c: dsdt.asl mk_dsdt.c iasl $(HOSTCC) $(HOSTCFLAGS) $(CFLAGS_include) -o mk_$* mk_dsdt.c - head -n -1 $< >_$*.asl - ./mk_$* >>_$*.asl - iasl -tc _$*.asl - sed -e 's/AmlCode/_$*/g' _$*.hex >$@ - echo "int _$*_len=sizeof(_$*);" >>$@ - rm -f *.aml _dsdt* mk_$* + head -n -1 $< >$*.asl + ./mk_$* >>$*.asl + iasl -p $* -tc $*.asl + sed -e 's/AmlCode/$*/g' $*.hex >$@ + echo "int $*_len=sizeof($*);" >>$@ + rm -f $*.hex $*.aml $*.asl mk_$* iasl: @echo @@ -50,11 +48,14 @@ iasl: @echo @exit 1 +build.o: ssdt_pm.h ssdt_tpm.h + acpi.a: $(OBJS) $(AR) rc $@ $(OBJS) clean: rm -rf *.a *.o $(IASL_VER) $(IASL_VER).tar.gz $(DEPS) + rm -rf ssdt_*.h dsdt*.c *~ *.aml *.hex mk_dsdt mk_dsdt15 dsdt_*cpu.asl install: all diff --git a/tools/firmware/hvmloader/acpi/build.c b/tools/firmware/hvmloader/acpi/build.c index d3f70a2ec5..dc38c73e95 100644 --- a/tools/firmware/hvmloader/acpi/build.c +++ b/tools/firmware/hvmloader/acpi/build.c @@ -42,8 +42,8 @@ extern struct acpi_20_facs Facs; * The latter is required for Windows 2000, which experiences a BSOD of * KMODE_EXCEPTION_NOT_HANDLED if it sees more than 15 processor objects. */ -extern unsigned char _dsdt[], _dsdt15; -extern int _dsdt_len, _dsdt15_len; +extern unsigned char dsdt_anycpu[], dsdt_15cpu; +extern int dsdt_anycpu_len, dsdt_15cpu_len; /* Number of processor objects in the chosen DSDT. */ static unsigned int nr_processor_objects; @@ -265,14 +265,14 @@ static void __acpi_build_tables(uint8_t *buf, int *low_sz, int *high_sz) dsdt = (unsigned char *)&buf[offset]; if ( hvm_info->nr_vcpus <= 15 ) { - memcpy(dsdt, &_dsdt15, _dsdt15_len); - offset += align16(_dsdt15_len); + memcpy(dsdt, &dsdt_15cpu, dsdt_15cpu_len); + offset += align16(dsdt_15cpu_len); nr_processor_objects = 15; } else { - memcpy(dsdt, &_dsdt, _dsdt_len); - offset += align16(_dsdt_len); + memcpy(dsdt, &dsdt_anycpu, dsdt_anycpu_len); + offset += align16(dsdt_anycpu_len); nr_processor_objects = HVM_MAX_VCPUS; } |