[arch-commits] Commit in efilinux-efi/repos/extra-any (5 files)

Tobias Powalowski tpowa at nymeria.archlinux.org
Wed Jun 19 18:37:29 UTC 2013


    Date: Wednesday, June 19, 2013 @ 20:37:28
  Author: tpowa
Revision: 188758

archrelease: copy trunk to extra-any

Added:
  efilinux-efi/repos/extra-any/PKGBUILD
    (from rev 188757, efilinux-efi/trunk/PKGBUILD)
  efilinux-efi/repos/extra-any/efilinux-efi.install
    (from rev 188757, efilinux-efi/trunk/efilinux-efi.install)
Deleted:
  efilinux-efi/repos/extra-any/PKGBUILD
  efilinux-efi/repos/extra-any/efilinux-1.0-to-aa925098a5887.patch
  efilinux-efi/repos/extra-any/efilinux-efi.install

-------------------------------------+
 PKGBUILD                            |  143 +++++---
 efilinux-1.0-to-aa925098a5887.patch |  604 ----------------------------------
 efilinux-efi.install                |   46 +-
 3 files changed, 118 insertions(+), 675 deletions(-)

Deleted: PKGBUILD
===================================================================
--- PKGBUILD	2013-06-19 18:29:23 UTC (rev 188757)
+++ PKGBUILD	2013-06-19 18:37:28 UTC (rev 188758)
@@ -1,48 +0,0 @@
-# Contributor : Keshav P R <(the.ridikulus.rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)>
-
-pkgname="efilinux-efi"
-pkgver="1.0"
-pkgrel="6"
-pkgdesc="Reference Implementation of a Linux Bootloader for UEFI Firmwares"
-url="https://github.com/mfleming/efilinux"
-arch=('any')
-license=('GPL')
-makedepends=('gnu-efi-libs')
-depends=('dosfstools' 'efibootmgr')
-conflicts=('efilinux-efi-x86_64' 'efilinux-efi-i386')
-provides=('efilinux-efi-x86_64' 'efilinux-efi-i386')
-replaces=('efilinux-efi-x86_64' 'efilinux-efi-i386')
-options=('!strip')
-install="${pkgname}.install"
-source=("http://www.kernel.org/pub/linux/utils/boot/efilinux/efilinux-${pkgver}.tar.xz"
-        'efilinux-1.0-to-aa925098a5887.patch')
-md5sums=('090e45f839cd23b97d05d82daa54508a'
-         '89e86f90e4f284651f5509ef1a1011cf')
-
-build() {	
-	if [[ "${CARCH}" != "x86_64" ]]; then
-		msg "efilinux-efi can be built only in an x86_64 system. Exiting."
-		exit 1
-	fi
-	
-	cd "${srcdir}/efilinux-${pkgver}/"
-	patch -Np1 -i "${srcdir}/efilinux-1.0-to-aa925098a5887.patch"
-	
-	sed 's|ARCH :=|ARCH ?=|g' -i "${srcdir}/efilinux-${pkgver}/Makefile"
-	sed 's|ARCH=|ARCH?=|g' -i "${srcdir}/efilinux-${pkgver}/Makefile"
-	sed 's|LIBDIR=|LIBDIR?=|g' -i "${srcdir}/efilinux-${pkgver}/Makefile"
-	
-	cp -r "${srcdir}/efilinux-${pkgver}" "${srcdir}/efilinux-${pkgver}-x86_64"
-	cd "${srcdir}/efilinux-${pkgver}-x86_64/"
-	CFLAGS="-m64" ARCH="x86_64" LIBDIR="/usr/lib" CRT0="/usr/lib/crt0-efi-x86_64.o" LDSCRIPT="/usr/lib/elf_x86_64_efi.lds" make
-	
-	cp -r "${srcdir}/efilinux-${pkgver}" "${srcdir}/efilinux-${pkgver}-i386"
-	cd "${srcdir}/efilinux-${pkgver}-i386/"
-	CFLAGS="-m32" ARCH="ia32" LIBDIR="/usr/lib32" CRT0="/usr/lib32/crt0-efi-ia32.o" LDSCRIPT="/usr/lib32/elf_ia32_efi.lds" make	
-}
-
-package() {	
-	install -d "${pkgdir}/usr/lib/efilinux/"
-	install -D -m0644 "${srcdir}/efilinux-${pkgver}-x86_64/efilinux.efi" "${pkgdir}/usr/lib/efilinux/efilinuxx64.efi"
-	install -D -m0644 "${srcdir}/efilinux-${pkgver}-i386/efilinux.efi" "${pkgdir}/usr/lib/efilinux/efilinuxia32.efi"	
-}

Copied: efilinux-efi/repos/extra-any/PKGBUILD (from rev 188757, efilinux-efi/trunk/PKGBUILD)
===================================================================
--- PKGBUILD	                        (rev 0)
+++ PKGBUILD	2013-06-19 18:37:28 UTC (rev 188758)
@@ -0,0 +1,95 @@
+# Contributor : Keshav Padram <(the.ridikulus.rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)>
+
+_gitroot="git://git.kernel.org/pub/scm/boot/efilinux/efilinux.git"
+_gitname="efilinux"
+_gitbranch="master"
+
+pkgname="efilinux-efi"
+pkgver="1.0"
+pkgrel="7"
+pkgdesc="Simple UEFI Linux bootloader - Precursor to EFISTUB"
+url="https://github.com/mfleming/efilinux"
+arch=('any')
+license=('GPL')
+makedepends=('gcc-multilib' 'gnu-efi-libs')
+depends=('dosfstools' 'efibootmgr')
+options=('!strip')
+install="${pkgname}.install"
+
+conflicts=('efilinux-efi-x86_64' 'efilinux-efi-i386')
+provides=('efilinux-efi-x86_64' 'efilinux-efi-i386')
+replaces=('efilinux-efi-x86_64' 'efilinux-efi-i386')
+
+source=("${_gitname}::git+${_gitroot}#branch=${_gitbranch}")
+sha1sums=('SKIP')
+
+_build_efilinux-efi-x86_64() {
+	
+	cp -r "${srcdir}/efilinux-${pkgver}" "${srcdir}/efilinux-${pkgver}-x86_64"
+	cd "${srcdir}/efilinux-${pkgver}-x86_64/"
+	
+	## Unset all compiler FLAGS
+	unset CFLAGS
+	unset CPPFLAGS
+	unset CXXFLAGS
+	unset LDFLAGS
+	unset MAKEFLAGS
+	
+	make ARCH="x86_64" LIBDIR="/usr/lib" CRT0="/usr/lib/crt0-efi-x86_64.o" LDSCRIPT="/usr/lib/elf_x86_64_efi.lds"
+	
+}
+
+_build_efilinux-efi-ia32() {
+	
+	cp -r "${srcdir}/efilinux-${pkgver}" "${srcdir}/efilinux-${pkgver}-ia32"
+	cd "${srcdir}/efilinux-${pkgver}-ia32/"
+	
+	## Unset all compiler FLAGS
+	unset CFLAGS
+	unset CPPFLAGS
+	unset CXXFLAGS
+	unset LDFLAGS
+	unset MAKEFLAGS
+	
+	make ARCH="ia32" LIBDIR="/usr/lib32" CRT0="/usr/lib32/crt0-efi-ia32.o" LDSCRIPT="/usr/lib32/elf_ia32_efi.lds"
+	
+}
+
+build() {
+	
+	if [[ "${CARCH}" != "x86_64" ]]; then
+		msg "efilinux-efi can be built only in an x86_64 system. Exiting."
+		exit 1
+	fi
+	
+	rm -rf "${srcdir}/efilinux-${pkgver}/" || true
+	cp -r "${srcdir}/${_gitname}" "${srcdir}/efilinux-${pkgver}"
+	
+	## Fix Makefile variables
+	sed 's|ARCH=|ARCH :=|g' -i "${srcdir}/efilinux-${pkgver}/Makefile"
+	sed 's|LIBDIR=|LIBDIR :=|g' -i "${srcdir}/efilinux-${pkgver}/Makefile"
+	
+	## Use gnu-efi ms_abi support
+	sed 's|-DEFI_FUNCTION_WRAPPER|-DEFI_FUNCTION_WRAPPER -DGNU_EFI_USE_MS_ABI|g' -i "${srcdir}/efilinux-${pkgver}/Makefile"
+	
+	## Add "-fno-strict-aliasing -fno-stack-protector -fno-stack-check -mno-sse -mno-mmx" to CFLAGS
+	sed 's|-DEFI_FUNCTION_WRAPPER|-fno-strict-aliasing -fno-stack-protector -fno-stack-check -mno-sse -mno-mmx -DEFI_FUNCTION_WRAPPER -DGNU_EFI_USE_MS_ABI|g' -i "${srcdir}/efilinux-${pkgver}/Makefile"
+	
+	## Add -m64 for x86_64 build
+	sed 's|CFLAGS += -mno-red-zone|CFLAGS += -m64 -mno-red-zone|g' -i "${srcdir}/efilinux-${pkgver}/Makefile"
+	
+	## Compile efilinuxx64.efi
+	_build_efilinux-efi-x86_64
+	
+	## Compile efilinuxia32.efi
+	_build_efilinux-efi-ia32
+	
+}
+
+package() {
+	
+	install -d "${pkgdir}/usr/lib/efilinux/"
+	install -D -m0644 "${srcdir}/efilinux-${pkgver}-x86_64/efilinux.efi" "${pkgdir}/usr/lib/efilinux/efilinuxx64.efi"
+	install -D -m0644 "${srcdir}/efilinux-${pkgver}-ia32/efilinux.efi" "${pkgdir}/usr/lib/efilinux/efilinuxia32.efi"
+	
+}

Deleted: efilinux-1.0-to-aa925098a5887.patch
===================================================================
--- efilinux-1.0-to-aa925098a5887.patch	2013-06-19 18:29:23 UTC (rev 188757)
+++ efilinux-1.0-to-aa925098a5887.patch	2013-06-19 18:37:28 UTC (rev 188758)
@@ -1,604 +0,0 @@
-diff --git a/Makefile b/Makefile
-index 4c7e990..a955e34 100644
---- a/Makefile
-+++ b/Makefile
-@@ -12,9 +12,6 @@
- #      copyright notice, this list of conditions and the following
- #      disclaimer in the documentation and/or other materials provided
- #      with the distribution.
--#    * Neither the name of Intel Corporation nor the names of its
--#      contributors may be used to endorse or promote products derived
--#      from this software without specific prior written permission.
- #
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-@@ -32,7 +29,7 @@
- 
- %.efi: %.so
- 	$(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \
--		-j .rela -j .reloc --target=$(FORMAT) $*.so $@
-+		-j .rela -j .reloc -S --target=$(FORMAT) $*.so $@
- 
- OBJCOPY=objcopy
- 
-@@ -63,6 +60,9 @@ ifeq ($(ARCH),ia32)
- 		CFLAGS += -m32
- 	endif
- endif
-+ifeq ($(ARCH),x86_64)
-+	CFLAGS += -mno-red-zone
-+endif
- 
- LDFLAGS=-T $(LDSCRIPT) -Bsymbolic -shared -nostdlib -znocombreloc \
- 		-L$(LIBDIR) $(CRT0)
-diff --git a/README b/README
-index b94a49f..9eae5db 100644
---- a/README
-+++ b/README
-@@ -12,7 +12,12 @@ The latest development version of efilinux can be found at,
- 
- Stable versions can be found at,
- 
--	http://www.kernel.org/pub/linux/boot/efilinux/
-+	http://www.kernel.org/pub/linux/utils/boot/efilinux/
- 
-+CONFIGURATION FILE SYNTAX
- 
--Matt Fleming <matt.fleming at linux.intel.com>
-+There is no config syntax as such. A config file is a one-line file
-+that contains command line parameters. See example.cfg.
-+
-+
-+Matt Fleming <matt.fleming at intel.com>
-diff --git a/efilinux.h b/efilinux.h
-index 9ca320f..dcbcb29 100644
---- a/efilinux.h
-+++ b/efilinux.h
-@@ -12,10 +12,6 @@
-  *      notice, this list of conditions and the following disclaimer
-  *      in the documentation and/or other materials provided with the
-  *      distribution.
-- *    * Neither the name of Intel Corporation nor the names of its
-- *      contributors may be used to endorse or promote products
-- *      derived from this software without specific prior written
-- *      permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-diff --git a/entry.c b/entry.c
-index 5e165b1..0aa6cdd 100644
---- a/entry.c
-+++ b/entry.c
-@@ -12,10 +12,6 @@
-  *      notice, this list of conditions and the following disclaimer
-  *      in the documentation and/or other materials provided with the
-  *      distribution.
-- *    * Neither the name of Intel Corporation nor the names of its
-- *      contributors may be used to endorse or promote products
-- *      derived from this software without specific prior written
-- *      permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-@@ -323,7 +319,7 @@ read_config_file(EFI_LOADED_IMAGE *image, CHAR16 **options,
- 	if (err != TRUE)
- 		return FALSE;
- 
--	err = file_open(path, &file);
-+	err = file_open(image, path, &file);
- 	if (err != EFI_SUCCESS)
- 		return FALSE;
- 
-diff --git a/example.cfg b/example.cfg
-new file mode 100644
-index 0000000..bc3f786
---- /dev/null
-+++ b/example.cfg
-@@ -0,0 +1 @@
-+-f 0:\bzImage console=ttyS0 initrd=0:\initrd
-diff --git a/fs/fs.c b/fs/fs.c
-index 8a45442..36a75f8 100644
---- a/fs/fs.c
-+++ b/fs/fs.c
-@@ -12,10 +12,6 @@
-  *      notice, this list of conditions and the following disclaimer
-  *      in the documentation and/or other materials provided with the
-  *      distribution.
-- *    * Neither the name of Intel Corporation nor the names of its
-- *      contributors may be used to endorse or promote products
-- *      derived from this software without specific prior written
-- *      permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-@@ -73,7 +69,7 @@ handle_to_dev(EFI_HANDLE *handle)
-  * @file: used to return a pointer to the allocated file on success
-  */
- EFI_STATUS
--file_open(CHAR16 *name, struct file **file)
-+file_open(EFI_LOADED_IMAGE *image, CHAR16 *name, struct file **file)
- {
- 	EFI_FILE_HANDLE fh;
- 	struct file *f;
-@@ -91,10 +87,19 @@ file_open(CHAR16 *name, struct file **file)
- 			break;
- 	}
- 
--	if (!name[dev_len] || !dev_len)
--		goto notfound;
-+	if (!name[dev_len] || !dev_len) {
-+		dev_len = 0;
-+		if (!image)
-+			goto notfound;
-+
-+		i = handle_to_dev(image->DeviceHandle);
-+		if (i < 0 || i >= nr_fs_devices)
-+			goto notfound;
- 
--	name[dev_len] = 0;
-+		f->handle = fs_devices[i].fh;
-+		goto found;
-+	} else
-+		name[dev_len++] = 0;
- 
- 	if (name[0] >= '0' && name[0] <= '9') {
- 		i = Atoi(name);
-@@ -126,7 +131,7 @@ file_open(CHAR16 *name, struct file **file)
- 
- found:
- 	/* Strip the device name */
--	filename = name + dev_len + 1;
-+	filename = name + dev_len;
- 
- 	/* skip any path separators */
- 	while (*filename == ':' || *filename == '\\')
-diff --git a/fs/fs.h b/fs/fs.h
-index 0f76d0c..9223b79 100644
---- a/fs/fs.h
-+++ b/fs/fs.h
-@@ -12,10 +12,6 @@
-  *      notice, this list of conditions and the following disclaimer
-  *      in the documentation and/or other materials provided with the
-  *      distribution.
-- *    * Neither the name of Intel Corporation nor the names of its
-- *      contributors may be used to endorse or promote products
-- *      derived from this software without specific prior written
-- *      permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-@@ -98,7 +94,7 @@ file_size(struct file *f, UINT64 *size)
- 	return EFI_SUCCESS;
- }
- 
--extern EFI_STATUS file_open(CHAR16 *name, struct file **file);
-+extern EFI_STATUS file_open(EFI_LOADED_IMAGE *image, CHAR16 *name, struct file **file);
- extern EFI_STATUS file_close(struct file *f);
- 
- extern void list_boot_devices(void);
-diff --git a/loaders/bzimage/bzimage.c b/loaders/bzimage/bzimage.c
-index af73e77..efdb884 100644
---- a/loaders/bzimage/bzimage.c
-+++ b/loaders/bzimage/bzimage.c
-@@ -12,10 +12,6 @@
-  *      notice, this list of conditions and the following disclaimer
-  *      in the documentation and/or other materials provided with the
-  *      distribution.
-- *    * Neither the name of Intel Corporation nor the names of its
-- *      contributors may be used to endorse or promote products
-- *      derived from this software without specific prior written
-- *      permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-@@ -54,7 +50,7 @@ struct initrd {
- 	struct file *file;
- };
- 
--static void parse_initrd(struct boot_params *buf, char *cmdline)
-+static void parse_initrd(EFI_LOADED_IMAGE *image, struct boot_params *buf, char *cmdline)
- {
- 	EFI_PHYSICAL_ADDRESS addr;
- 	struct initrd *initrds;
-@@ -116,7 +112,7 @@ static void parse_initrd(struct boot_params *buf, char *cmdline)
- 
- 		*n = '\0';
- 
--		err = file_open(filename, &rdfile);
-+		err = file_open(image, filename, &rdfile);
- 		if (err != EFI_SUCCESS)
- 			goto close_handles;
- 
-@@ -167,13 +163,16 @@ close_handles:
-  * load_kernel - Load a kernel image into memory from the boot device
-  */
- EFI_STATUS
--load_kernel(EFI_HANDLE image, CHAR16 *name, char *cmdline)
-+load_kernel(EFI_HANDLE image, CHAR16 *name, char *_cmdline)
- {
- 	UINTN map_size, _map_size, map_key;
- 	EFI_PHYSICAL_ADDRESS kernel_start, addr;
-+	EFI_PHYSICAL_ADDRESS pref_address;
- 	struct boot_params *boot_params;
- 	EFI_MEMORY_DESCRIPTOR *map_buf;
-+	EFI_LOADED_IMAGE *info = NULL;
- 	struct e820_entry *e820_map;
-+	UINT64 setup_sz, init_size;
- 	struct boot_params *buf;
- 	struct efi_info *efi;
- 	UINT32 desc_version;
-@@ -181,10 +180,16 @@ load_kernel(EFI_HANDLE image, CHAR16 *name, char *cmdline)
- 	struct file *file;
- 	UINTN desc_size;
- 	EFI_STATUS err;
--	UINTN size = 0;
-+	char *cmdline;
-+	UINT64 size;
- 	int i, j = 0;
- 
--	err = file_open(name, &file);
-+	err = handle_protocol(image, &LoadedImageProtocol, (void **)&info);
-+	if (err != EFI_SUCCESS)
-+		info = NULL;
-+
-+	err = file_open(info, name, &file);
-+
- 	if (err != EFI_SUCCESS)
- 		goto out;
- 
-@@ -193,14 +198,14 @@ load_kernel(EFI_HANDLE image, CHAR16 *name, char *cmdline)
- 		goto out;
- 
- 	size = 1;
--	err = file_read(file, &size, &nr_setup_secs);
-+	err = file_read(file, (UINTN *)&size, &nr_setup_secs);
- 	if (err != EFI_SUCCESS)
- 		goto out;
- 
- 	nr_setup_secs++;	/* Add the boot sector */
--	size = nr_setup_secs * 512;
-+	setup_sz = nr_setup_secs * 512;
- 
--	buf = malloc(size);
-+	buf = malloc(setup_sz);
- 	if (!buf)
- 		goto out;
- 
-@@ -208,10 +213,16 @@ load_kernel(EFI_HANDLE image, CHAR16 *name, char *cmdline)
- 	if (err != EFI_SUCCESS)
- 		goto out;
- 
--	err = file_read(file, &size, buf);
-+	err = file_read(file, (UINTN *)&setup_sz, buf);
-+	if (err != EFI_SUCCESS)
-+		goto out;
-+
-+	err = file_size(file, &size);
- 	if (err != EFI_SUCCESS)
- 		goto out;
- 
-+	size -= setup_sz;
-+
- 	/* Check boot sector signature */
- 	if (buf->hdr.signature != 0xAA55) {
- 		Print(L"bzImage kernel corrupt");
-@@ -237,33 +248,70 @@ load_kernel(EFI_HANDLE image, CHAR16 *name, char *cmdline)
- 		goto out;
- 	}
- 
-+	if (buf->hdr.version >= 0x20a) {
-+		pref_address = buf->hdr.pref_address;
-+		init_size = buf->hdr.init_size;
-+	} else {
-+		pref_address = 0x100000;
-+
-+		/*
-+		 * We need to account for the fact that the kernel
-+		 * needs room for decompression, otherwise we could
-+		 * end up trashing other chunks of allocated memory.
-+		 */
-+		init_size = size * 3;
-+	}
-+
- 	/* Don't need an allocated ID, we're a prototype */
- 	buf->hdr.loader_id = 0x1;
- 
--	parse_initrd(buf, cmdline);
-+	/*
-+	 * The kernel expects cmdline to be allocated pretty low,
-+	 * Documentation/x86/boot.txt says,
-+	 *
-+	 *	"The kernel command line can be located anywhere
-+	 *	between the end of the setup heap and 0xA0000"
-+	 */
-+	addr = 0xA0000;
-+	err = allocate_pages(AllocateMaxAddress, EfiLoaderData,
-+			     EFI_SIZE_TO_PAGES(strlen(_cmdline) + 1),
-+			     &addr);
-+	if (err != EFI_SUCCESS)
-+		goto out;
-+	cmdline = (char *)(UINTN)addr;
-+	memcpy(cmdline, _cmdline, strlen(_cmdline) + 1);
-+
-+	parse_initrd(info, buf, cmdline);
- 
- 	buf->hdr.cmd_line_ptr = (UINT32)(UINTN)cmdline;
- 
- 	memset((char *)&buf->screen_info, 0x0, sizeof(buf->screen_info));
- 
--	err = setup_graphics(buf);
--	if (err != EFI_SUCCESS)
--		goto out;
-+	addr = pref_address;
-+	err = allocate_pages(AllocateAddress, EfiLoaderData,
-+			     EFI_SIZE_TO_PAGES(init_size), &addr);
-+	if (err != EFI_SUCCESS) {
-+		/*
-+		 * We failed to allocate the preferred address, so
-+		 * just allocate some memory and hope for the best.
-+		 */
-+		err = emalloc(init_size, buf->hdr.kernel_alignment, &addr);
-+		if (err != EFI_SUCCESS)
-+			goto out;
-+	}
-+
-+	kernel_start = addr;
- 
- 	/*
--	 * Time to allocate our memory.
--	 *
--	 * Because the kernel needs to decompress itself we first
--	 * allocate boot_params, gdt and space for the memory map
--	 * under the assumption that they'll be allocated at lower
--	 * addresses than the kernel. If we dont't allocate these data
--	 * structures first there is the potential for them to be
--	 * trashed when the kernel is decompressed! Allocating them
--	 * underneath the kernel should be safe.
--	 *
--	 * Max kernel size is 8MB
-+	 * Read the rest of the kernel image.
- 	 */
--	err = emalloc(16384, 1, &addr);
-+	err = file_read(file, (UINTN *)&size, (void *)(UINTN)kernel_start);
-+	if (err != EFI_SUCCESS)
-+		goto out;
-+
-+	addr = 0x3fffffff;
-+	err = allocate_pages(AllocateMaxAddress, EfiLoaderData,
-+			     EFI_SIZE_TO_PAGES(16384), &addr);
- 	if (err != EFI_SUCCESS)
- 		goto out;
- 
-@@ -273,6 +321,20 @@ load_kernel(EFI_HANDLE image, CHAR16 *name, char *cmdline)
- 
- 	/* Copy first two sectors to boot_params */
- 	memcpy((char *)boot_params, (char *)buf, 2 * 512);
-+	boot_params->hdr.code32_start = (UINT32)((UINT64)kernel_start);
-+
-+	/*
-+	 * Use the kernel's EFI boot stub by invoking the handover
-+	 * protocol.
-+	 */
-+	if (buf->hdr.version >= 0x20b) {
-+		handover_jump(image, boot_params, kernel_start);
-+		goto out;
-+	}
-+
-+	err = setup_graphics(buf);
-+	if (err != EFI_SUCCESS)
-+		goto out;
- 
- 	err = emalloc(gdt.limit, 8, (EFI_PHYSICAL_ADDRESS *)&gdt.base);
- 	if (err != EFI_SUCCESS)
-@@ -312,38 +374,6 @@ again:
- 		goto out;
- 
- 	map_buf = (EFI_MEMORY_DESCRIPTOR *)(UINTN)addr;
--	size = 0x800000;
--	err = emalloc(size, buf->hdr.kernel_alignment, &kernel_start);
--	if (err != EFI_SUCCESS)
--		goto out;
--
--	/*
--	 * If the firmware doesn't sort the memory map by increasing
--	 * address it's possible that kernel_start may have been
--	 * allocated below boot_params or gdt.base.
--	 *
--	 * Print a warning and hope for the best.
--	 */
--	if (kernel_start < (UINTN)boot_params ||
--	    kernel_start < (UINTN)map_buf ||
--	    kernel_start < (UINTN)gdt.base)
--	    Print(L"Warning: kernel_start is too low.\n");
--
--	/*
--	 * Read the rest of the kernel image.
--	 */
--	err = file_read(file, &size, (void *)(UINTN)kernel_start);
--	if (err != EFI_SUCCESS)
--		goto out;
--
--	boot_params->hdr.code32_start = (UINT32)((UINT64)kernel_start);
--
--	/*
--	 * Remember! We've already allocated map_buf with emalloc (and
--	 * 'map_size' contains its size) which means that it should be
--	 * positioned below our allocation for the kernel. Use that
--	 * space for the memory map.
--	 */
- 	err = get_memory_map(&map_size, map_buf, &map_key,
- 			     &desc_size, &desc_version);
- 	if (err != EFI_SUCCESS) {
-@@ -355,9 +385,7 @@ again:
- 			 * larger. 'map_size' has been updated by the
- 			 * call to memory_map().
- 			 */
--			efree(kernel_start, 0x800000);
- 			efree((UINTN)map_buf, _map_size);
--			file_set_position(file, (UINT64)nr_setup_secs * 512);
- 			goto again;
- 		}
- 		goto out;
-diff --git a/loaders/bzimage/bzimage.h b/loaders/bzimage/bzimage.h
-index 370d126..cd11fd3 100644
---- a/loaders/bzimage/bzimage.h
-+++ b/loaders/bzimage/bzimage.h
-@@ -12,10 +12,6 @@
-  *      notice, this list of conditions and the following disclaimer
-  *      in the documentation and/or other materials provided with the
-  *      distribution.
-- *    * Neither the name of Intel Corporation nor the names of its
-- *      contributors may be used to endorse or promote products
-- *      derived from this software without specific prior written
-- *      permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-@@ -80,6 +76,9 @@ struct setup_header {
- 	UINT32 payload_offset;
- 	UINT32 payload_length;
- 	UINT64 setup_data;
-+	UINT64 pref_address;
-+	UINT32 init_size;
-+	UINT32 handover_offset;
- } __attribute__((packed));
- 
- struct efi_info {
-diff --git a/loaders/bzimage/graphics.c b/loaders/bzimage/graphics.c
-index 22a4d81..b14cae1 100644
---- a/loaders/bzimage/graphics.c
-+++ b/loaders/bzimage/graphics.c
-@@ -12,10 +12,6 @@
-  *      notice, this list of conditions and the following disclaimer
-  *      in the documentation and/or other materials provided with the
-  *      distribution.
-- *    * Neither the name of Intel Corporation nor the names of its
-- *      contributors may be used to endorse or promote products
-- *      derived from this software without specific prior written
-- *      permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-diff --git a/loaders/bzimage/i386.h b/loaders/bzimage/i386.h
-index 3199a02..593e2af 100644
---- a/loaders/bzimage/i386.h
-+++ b/loaders/bzimage/i386.h
-@@ -12,10 +12,6 @@
-  *      notice, this list of conditions and the following disclaimer
-  *      in the documentation and/or other materials provided with the
-  *      distribution.
-- *    * Neither the name of Intel Corporation nor the names of its
-- *      contributors may be used to endorse or promote products
-- *      derived from this software without specific prior written
-- *      permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-@@ -46,4 +42,19 @@ static inline void kernel_jump(EFI_PHYSICAL_ADDRESS kernel_start,
- 		      :: "m" (boot_params), "m" (kernel_start));
- }
- 
-+static inline void handover_jump(EFI_HANDLE image, struct boot_params *bp,
-+				 EFI_PHYSICAL_ADDRESS kernel_start)
-+{
-+	kernel_start += bp->hdr.handover_offset;
-+
-+	asm volatile ("cli		\n"
-+		      "pushl %0         \n"
-+		      "pushl %1         \n"
-+		      "pushl %2         \n"
-+		      "movl %3, %%ecx	\n"
-+		      "jmp *%%ecx	\n"
-+		      :: "m" (bp), "m" (ST),
-+		         "m" (image), "m" (kernel_start));
-+}
-+
- #endif /* __I386_H__ */
-diff --git a/loaders/bzimage/x86_64.h b/loaders/bzimage/x86_64.h
-index e3e7a33..b63710e 100644
---- a/loaders/bzimage/x86_64.h
-+++ b/loaders/bzimage/x86_64.h
-@@ -12,10 +12,6 @@
-  *      notice, this list of conditions and the following disclaimer
-  *      in the documentation and/or other materials provided with the
-  *      distribution.
-- *    * Neither the name of Intel Corporation nor the names of its
-- *      contributors may be used to endorse or promote products
-- *      derived from this software without specific prior written
-- *      permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-@@ -37,6 +33,7 @@
- #define EFI_LOADER_SIGNATURE	"EL64"
- 
- typedef void(*kernel_func)(void *, struct boot_params *);
-+typedef void(*handover_func)(void *, EFI_SYSTEM_TABLE *, struct boot_params *);
- 
- static inline void kernel_jump(EFI_PHYSICAL_ADDRESS kernel_start,
- 			       struct boot_params *boot_params)
-@@ -55,4 +52,19 @@ static inline void kernel_jump(EFI_PHYSICAL_ADDRESS kernel_start,
- 	kf(NULL, boot_params);
- }
- 
-+static inline void handover_jump(EFI_HANDLE image, struct boot_params *bp,
-+				 EFI_PHYSICAL_ADDRESS kernel_start)
-+{
-+	UINT32 offset = bp->hdr.handover_offset;
-+	handover_func hf;
-+
-+	asm volatile ("cli");
-+
-+	/* The 64-bit kernel entry is 512 bytes after the start. */
-+	kernel_start += 512;
-+
-+	hf = (handover_func)(kernel_start + offset);
-+	hf(image, ST, bp);
-+}
-+
- #endif /* __X86_64_H__ */
-diff --git a/loaders/loader.h b/loaders/loader.h
-index 2a3d271..7e26eff 100644
---- a/loaders/loader.h
-+++ b/loaders/loader.h
-@@ -12,10 +12,6 @@
-  *      notice, this list of conditions and the following disclaimer
-  *      in the documentation and/or other materials provided with the
-  *      distribution.
-- *    * Neither the name of Intel Corporation nor the names of its
-- *      contributors may be used to endorse or promote products
-- *      derived from this software without specific prior written
-- *      permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-diff --git a/malloc.c b/malloc.c
-index 8f2b18c..d10b314 100644
---- a/malloc.c
-+++ b/malloc.c
-@@ -12,10 +12,6 @@
-  *      notice, this list of conditions and the following disclaimer
-  *      in the documentation and/or other materials provided with the
-  *      distribution.
-- *    * Neither the name of Intel Corporation nor the names of its
-- *      contributors may be used to endorse or promote products
-- *      derived from this software without specific prior written
-- *      permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-diff --git a/protocol.h b/protocol.h
-index 6881d70..2972d5d 100644
---- a/protocol.h
-+++ b/protocol.h
-@@ -12,10 +12,6 @@
-  *      notice, this list of conditions and the following disclaimer
-  *      in the documentation and/or other materials provided with the
-  *      distribution.
-- *    * Neither the name of Intel Corporation nor the names of its
-- *      contributors may be used to endorse or promote products
-- *      derived from this software without specific prior written
-- *      permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT

Deleted: efilinux-efi.install
===================================================================
--- efilinux-efi.install	2013-06-19 18:29:23 UTC (rev 188757)
+++ efilinux-efi.install	2013-06-19 18:37:28 UTC (rev 188758)
@@ -1,23 +0,0 @@
-post_install() {
-	
-	cat << EOF 
-
-efilinux has been installed at /usr/lib/efilinux/*.efi
-
-Copy the efi application for your UEFI ARCH to a sub-directory of
-<EFISYS>/EFI/ and add an entry to firmware boot menu using efibootmgr
-or mactel-boot (for Macs)
-
-Usage instructions at http://thread.gmane.org/gmane.linux.kernel/1172645 
-and http://article.gmane.org/gmane.linux.kernel/1175060
-
-EOF
-	
-}
-
-post_upgrade() {
-	
-	post_install
-	
-}
-

Copied: efilinux-efi/repos/extra-any/efilinux-efi.install (from rev 188757, efilinux-efi/trunk/efilinux-efi.install)
===================================================================
--- efilinux-efi.install	                        (rev 0)
+++ efilinux-efi.install	2013-06-19 18:37:28 UTC (rev 188758)
@@ -0,0 +1,23 @@
+post_install() {
+	
+	cat << EOF 
+
+efilinux has been installed at /usr/lib/efilinux/*.efi
+
+Copy the efi application for your UEFI ARCH to a sub-directory of
+<EFISYS>/EFI/ and add an entry to firmware boot menu using efibootmgr
+or mactel-boot (for Macs)
+
+Usage instructions at http://thread.gmane.org/gmane.linux.kernel/1172645 
+and http://article.gmane.org/gmane.linux.kernel/1175060
+
+EOF
+	
+}
+
+post_upgrade() {
+	
+	post_install
+	
+}
+




More information about the arch-commits mailing list