From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1OqBrO-0008MR-RS for mharc-grub-devel@gnu.org; Mon, 30 Aug 2010 17:25:46 -0400 Received: from [140.186.70.92] (port=38369 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OqBrL-0008LF-M8 for grub-devel@gnu.org; Mon, 30 Aug 2010 17:25:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OqBrK-0007cn-9w for grub-devel@gnu.org; Mon, 30 Aug 2010 17:25:43 -0400 Received: from mail-bw0-f41.google.com ([209.85.214.41]:61365) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OqBrK-0007ce-2y for grub-devel@gnu.org; Mon, 30 Aug 2010 17:25:42 -0400 Received: by bwz6 with SMTP id 6so5410596bwz.0 for ; Mon, 30 Aug 2010 14:25:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:subject:x-enigmail-version:content-type; bh=8FP3c3juXZ5HtILO9knxxThYl80Hl0jhzlIgtGy5lCc=; b=terLHeIlLAF1Rrti5yjbM6avTW0e5cz73fncSJ7bpw9KXD1HRwwOutOZjw4icH5CXn km0HdDqMsBFBpEs2Wvmm3/4wMFZNNT/Gz0TYNMAdksBHWJQABKlizoHpjCNkGUgmvnfD OO/OMzGXI7w3Q6RGlXzE69dIVl8G9wrYj6rYg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject :x-enigmail-version:content-type; b=BqIJXBnXLpwJaVvYB6vILru62l68wU14R9BwhtpuOhm+XJDJEJ6+Fc5oGACFo+7fWR rszvMZ4k+ECHSA3rQYdIeXlfn8LQ4CFKZmBOUoIAjGA+77x3QESDOcFTTYJ2BubjomDF jpm+LkA+/X3M1u1BjDG+ycI3CsCUOfYOB5eJQ= Received: by 10.204.47.193 with SMTP id o1mr3769419bkf.134.1283203540946; Mon, 30 Aug 2010 14:25:40 -0700 (PDT) Received: from debian.bg45.phnet (194-161.203-62.cust.bluewin.ch [62.203.161.194]) by mx.google.com with ESMTPS id 24sm5608818bkr.7.2010.08.30.14.25.39 (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 30 Aug 2010 14:25:40 -0700 (PDT) Message-ID: <4C7C21CC.4060602@gmail.com> Date: Mon, 30 Aug 2010 23:25:32 +0200 From: =?UTF-8?B?VmxhZGltaXIgJ8+GLWNvZGVyL3BoY29kZXInIFNlcmJpbmVua28=?= User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.11) Gecko/20100805 Icedove/3.0.6 MIME-Version: 1.0 To: The development of GRUB 2 X-Enigmail-Version: 1.0.1 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="------------enig8850F9EF4D439DC68F746DF2" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) Subject: Newreloc and intwrap merges X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Aug 2010 21:25:45 -0000 This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig8850F9EF4D439DC68F746DF2 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hello, I'm happy to announce the newreloc and intwrap. First branch abstract the problems of putting right image into right place. It handles such issues as self-overwriting and firmware allocation. This allows to write loaders by just specifying the address requirements for chunks, loading data into them and specifying the initial register state. As immediate benefits all the helpers and trampolines are gone, core size decreased, functions moved where they should be instead of being constrained to kernel. Only BIOS chainloader helper is still present and still in the core because it has to redisable A20. Also all x86 loaders except heavily firmware-dependent (linux16, chainloaders and appleloader) are available on all x86 platforms. The target kernels may however have issues themselves when being loaded on unexpected platform (more info is in documentation). Also to check all these platform-target pairs I added bootchecks (more info is in docs). intwrap is another concept. Previously all BIOS calls were done in kernel from asm helpers. Now we have an unified helper grub_bios_interrupt which receives an interrupt number and cpu state and fills cpu state structure with new data. Now you don't have to know asm to do BIOS calls, C knowledge is enough, functions are at their logical places and core is smaller. Some console functions, get_rtc, grub_exit and pxe_call remain in startup.S (in addition to the stuff which is really for startup, chainloader helper and unified helper). Moving first 3 categories won't save any space since these functions are required to be in kernel and must have a pointer to them (so no inlining), however they may be moved to C for maintenance reasons in the future. grub_pxe_call shouldn't be in kernel but it's different from interrupt helper so it's easier to keep this helper as is (yes, I know about PM interface but it's difficult to say which one is less buggy). Both merges together allowed me to greatly reduce the tags representing an arbitrary grouping of platforms and unify a lot of code. --=20 Regards Vladimir '=CF=86-coder/phcoder' Serbinenko --------------enig8850F9EF4D439DC68F746DF2 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iF4EAREKAAYFAkx8IdIACgkQNak7dOguQgkiiwEAjSqsfh2b/8cmtOX3zOe4zKFX SZfClODDjxP2GCUxmUMA/18XT5dJIrVOxM9O2ez5DPV4snWDiP3f73m6cmqzSYCv =8hwt -----END PGP SIGNATURE----- --------------enig8850F9EF4D439DC68F746DF2--