public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Andrew Fish <afish@apple.com>
To: Leif Lindholm <leif.lindholm@linaro.org>
Cc: edk2-devel <edk2-devel@lists.01.org>,
	Feng Tian <feng.tian@intel.com>, Star Zeng <star.zeng@intel.com>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: Re: [RFC] MdeModulePkg: ARM/AARCH64 requirements added to .dsc
Date: Fri, 12 Aug 2016 10:27:52 -0700	[thread overview]
Message-ID: <1533F1AE-CA83-4C22-A2B6-90CD5E9A6CBA@apple.com> (raw)
In-Reply-To: <1471021908-3509-1-git-send-email-leif.lindholm@linaro.org>


> On Aug 12, 2016, at 10:11 AM, Leif Lindholm <leif.lindholm@linaro.org> wrote:
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
> ---
> 
> This is not a proposed change, but rather a demonstration:
> When trying to build HelloWorld standalone for ARM/AARCH64,
> with a command line like
> build -a AARCH64 -t GCC5 -p MdeModulePkg/MdeModulePkg.dsc \
>   -m MdeModulePkg/Application/HelloWorld/HelloWorld.inf
> this fails with
> 
> /work/git/edk2/MdeModulePkg/MdeModulePkg.dsc(...): error 4000: Instance of library class [ArmMmuLib] is not found
> 	in [/work/git/edk2/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf] [AARCH64]
> 	consumed by module [/work/git/edk2/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf]
> 
> Adding the below stanzas resolve the issue, but looking
> into why other architectures have no issues with this,
> I spot a lot of low-level MMU tweakery directly under
> DxeIplPeim.
> 
> Would this not be better handled through some standardised
> mechanism?
> 

Leif,

The DXE IPL containing the paging code predated the edk2. On x86 the common boot flow is IA32 PEI and X64 DXE. To turn on X64 (long mode) paging must be enabled. So the paging code is here since this is the location than needs to transition to long mode. I'm guessing this code did not get turned into a library "back in the day" as it was the only place it was being used. 

Thanks,

Andrew Fish

> /
>    Leif
> 
> MdeModulePkg/MdeModulePkg.dsc | 8 ++++++++
> 1 file changed, 8 insertions(+)
> 
> diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc
> index 05120c7..e9c2866 100644
> --- a/MdeModulePkg/MdeModulePkg.dsc
> +++ b/MdeModulePkg/MdeModulePkg.dsc
> @@ -24,6 +24,14 @@ [Defines]
>   BUILD_TARGETS                  = DEBUG|RELEASE|NOOPT
>   SKUID_IDENTIFIER               = DEFAULT
> 
> +[LibraryClasses.ARM, LibraryClasses.AARCH64]
> +  ArmMmuLib|ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf
> +[LibraryClasses.ARM]
> +  ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7Lib.inf
> +  NULL|MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf
> +[LibraryClasses.AARCH64]
> +  ArmLib|ArmPkg/Library/ArmLib/AArch64/AArch64Lib.inf
> +
> [LibraryClasses]
>   #
>   # Entry point
> -- 
> 2.1.4
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel



      reply	other threads:[~2016-08-12 17:27 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-12 17:11 [RFC] MdeModulePkg: ARM/AARCH64 requirements added to .dsc Leif Lindholm
2016-08-12 17:27 ` Andrew Fish [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1533F1AE-CA83-4C22-A2B6-90CD5E9A6CBA@apple.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox