From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1LaxnC-0002gM-Mv for mharc-grub-devel@gnu.org; Sat, 21 Feb 2009 14:45:42 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LaxnA-0002bU-Fj for grub-devel@gnu.org; Sat, 21 Feb 2009 14:45:40 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Laxn9-0002YO-3a for grub-devel@gnu.org; Sat, 21 Feb 2009 14:45:39 -0500 Received: from [199.232.76.173] (port=49473 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Laxn8-0002Xu-PD for grub-devel@gnu.org; Sat, 21 Feb 2009 14:45:38 -0500 Received: from fg-out-1718.google.com ([72.14.220.156]:62838) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Laxn7-00015F-KU for grub-devel@gnu.org; Sat, 21 Feb 2009 14:45:38 -0500 Received: by fg-out-1718.google.com with SMTP id l27so1697937fgb.30 for ; Sat, 21 Feb 2009 11:45:35 -0800 (PST) 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:content-type; bh=gq+D4HppUNFHdc0WUu2Dhrp1P9hfBsLvv3hHukYi8j4=; b=pzZW6PV8SrZtsuB0adyxb+q34gljOaQr4hhFepYpPPGDmPhhKpZc3gIAtVntjMYegj Sbbkq4SQOUwsBX5jXnpdvlIq7/gCybpIi+tQPriqIpKdE7BbPki07HvweoXD3xC0beao R8PFclZWp75SgGCmM3cVx5ujC5YaDHeH+FbEM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject :content-type; b=twIY7Cb0fMUTo5aqR4u7fN3cAOyQncam/hAYw8OSx2WbeoDZWRq+glfHnEISLHgZ1j bCudenb9edypdYjCBgxool4bu8pEQizQ3p8uPb1mWSmKJ+vpao9eafVdgL9PklawHDPp 9xpb1VHjWnERs3q0Ni7prBgytD/1CGuvmwp3E= Received: by 10.86.53.11 with SMTP id b11mr381381fga.76.1235245535519; Sat, 21 Feb 2009 11:45:35 -0800 (PST) Received: from ?192.168.1.25? (166-90.62-81.cust.bluewin.ch [81.62.90.166]) by mx.google.com with ESMTPS id d6sm4217007fga.39.2009.02.21.11.45.33 (version=SSLv3 cipher=RC4-MD5); Sat, 21 Feb 2009 11:45:34 -0800 (PST) Message-ID: <49A059D7.600@gmail.com> Date: Sat, 21 Feb 2009 20:45:27 +0100 From: phcoder User-Agent: Thunderbird 2.0.0.19 (X11/20090105) MIME-Version: 1.0 To: The development of GRUB 2 Content-Type: multipart/mixed; boundary="------------030405070308080803080902" X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) Subject: [PATCH] efi_emu X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GRUB 2 List-Id: The development of GRUB 2 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Feb 2009 19:45:40 -0000 This is a multi-part message in MIME format. --------------030405070308080803080902 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hello. Here is a version 0.0 of efiemu patch. First couple of words about how efi works first efi works in boot services mode then booter calls EfiExitBootServices after it only small number of calls called efi runtime is available after then. Only these functions are emulated by this patch. This is the difference with tianocore. Usage cases: -look how OS works in EFI environments. Debugging. Debugging ACPI -launch darwin on non-EFI machine without usage of unmaintained buggy kernel patches (I already have xnu loading, it works but I have to fix few things) -future port of coreboot to mac without losing ability to launch Mac OS X Usage: First compile grub2 with this patch and efiemu runtime (in archive) Then on grub prompt efiemu_loadcore efiemu_pnvram efiemu_acpi [-x ] efiemu_prepare linux_efiemu initrd_efiemu Soon I'll also submit xnu patch which uses efiemu on non-EFI platforms Programming note: To keep compact I use defered allocation of all objects Drawbacks and TODOs (I'm working on it but help is much appreciated): -no way to hide standard bios functions -time functions aren't implemented yet -reset function isn't implemented yet -only 32-bit is supported for now -efiemu runtime is now has to be compiled separately Regards Vladimir 'phcoder' Serbinenko --------------030405070308080803080902 Content-Type: application/x-compressed-tar; name="efiemu.tgz" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="efiemu.tgz" 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 efg8fB4+D5+Hz8Pn4fPw+Ts+/w9ZgxXlALgBAA== --------------030405070308080803080902--