Message ID | 20180912132151.4258-2-ard.biesheuvel@linaro.org |
---|---|
State | New |
Headers | show |
Series | MdeModulePkg: add support for dispatching foreign arch PE/COFF images | expand |
On 2018/9/12 21:21, Ard Biesheuvel wrote: > Introduce a protocol that can be invoked by the image loading services > to execute foreign architecture PE/COFF images via an emulator. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > --- > MdeModulePkg/Include/Protocol/PeCoffImageEmulator.h | 51 ++++++++++++++++++++ > MdeModulePkg/MdeModulePkg.dec | 4 ++ > 2 files changed, 55 insertions(+) > > diff --git a/MdeModulePkg/Include/Protocol/PeCoffImageEmulator.h b/MdeModulePkg/Include/Protocol/PeCoffImageEmulator.h > new file mode 100644 > index 000000000000..3391e68557b9 > --- /dev/null > +++ b/MdeModulePkg/Include/Protocol/PeCoffImageEmulator.h > @@ -0,0 +1,51 @@ > +/** @file > + Copyright (c) 2018, Linaro, Ltd. All rights reserved.<BR> > + > + This program and the accompanying materials > + are licensed and made available under the terms and conditions of the BSD License > + which accompanies this distribution. The full text of the license may be found at > + http://opensource.org/licenses/bsd-license.php > + > + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > + > +**/ > + > +#ifndef __PECOFF_IMAGE_EMULATOR_PROTOCOL_GUID_H__ > +#define __PECOFF_IMAGE_EMULATOR_PROTOCOL_GUID_H__ > + > +#define EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL_GUID \ > + { 0x96F46153, 0x97A7, 0x4793, { 0xAC, 0xC1, 0xFA, 0x19, 0xBF, 0x78, 0xEA, 0x97 } } > + > +typedef struct _EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL; > + > +typedef > +BOOLEAN > +(EFIAPI *IS_PECOFF_IMAGE_SUPPORTED) ( > + IN EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL *This, > + IN UINT16 MachineType, > + IN UINT16 ImageType > + ); > + > +typedef > +EFI_STATUS > +(EFIAPI *REGISTER_PECOFF_IMAGE) ( > + IN EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL *This, > + IN EFI_PHYSICAL_ADDRESS ImageBase, > + IN UINT64 ImageSize > + ); > + > +typedef > +EFI_STATUS > +(EFIAPI *UNREGISTER_PECOFF_IMAGE) ( > + IN EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL *This, > + IN EFI_PHYSICAL_ADDRESS ImageBase > + ); > + > +typedef struct _EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL { > + IS_PECOFF_IMAGE_SUPPORTED IsImageSupported; > + REGISTER_PECOFF_IMAGE RegisterImage; > + UNREGISTER_PECOFF_IMAGE UnregisterImage; > +} EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL; Hi Ard, There is no any comment for these protocol typedefs? How about using EDKII_PECOFF_IMAGE_EMULATOR_IS_IMAGE_SUPPORTED/EDKII_PECOFF_IMAGE_EMULATOR_REGISTER_IMAGE/EDKII_PECOFF_IMAGE_EMULATOR_UNREGISTER_IMAGE as the function typedef names? Add below line to align with other protocol header files? extern EFI_GUID gEdkiiPeCoffImageEmulatorProtocolGuid; Thanks, Star > + > +#endif > diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec > index 6a6d9660edc2..be307329f901 100644 > --- a/MdeModulePkg/MdeModulePkg.dec > +++ b/MdeModulePkg/MdeModulePkg.dec > @@ -617,6 +617,10 @@ > > ## Include/Protocol/AtaAtapiPolicy.h > gEdkiiAtaAtapiPolicyProtocolGuid = { 0xe59cd769, 0x5083, 0x4f26,{ 0x90, 0x94, 0x6c, 0x91, 0x9f, 0x91, 0x6c, 0x4e } } > + > + ## Include/Protocol/PeCoffImageEmulator.h > + gEdkiiPeCoffImageEmulatorProtocolGuid = { 0x96f46153, 0x97a7, 0x4793, { 0xac, 0xc1, 0xfa, 0x19, 0xbf, 0x78, 0xea, 0x97 } } > + > # > # [Error.gEfiMdeModulePkgTokenSpaceGuid] > # 0x80000001 | Invalid value provided. > _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
On 13 September 2018 at 12:05, Zeng, Star <star.zeng@intel.com> wrote: > On 2018/9/12 21:21, Ard Biesheuvel wrote: >> >> Introduce a protocol that can be invoked by the image loading services >> to execute foreign architecture PE/COFF images via an emulator. >> >> Contributed-under: TianoCore Contribution Agreement 1.0 >> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> >> --- >> MdeModulePkg/Include/Protocol/PeCoffImageEmulator.h | 51 >> ++++++++++++++++++++ >> MdeModulePkg/MdeModulePkg.dec | 4 ++ >> 2 files changed, 55 insertions(+) >> >> diff --git a/MdeModulePkg/Include/Protocol/PeCoffImageEmulator.h >> b/MdeModulePkg/Include/Protocol/PeCoffImageEmulator.h >> new file mode 100644 >> index 000000000000..3391e68557b9 >> --- /dev/null >> +++ b/MdeModulePkg/Include/Protocol/PeCoffImageEmulator.h >> @@ -0,0 +1,51 @@ >> +/** @file >> + Copyright (c) 2018, Linaro, Ltd. All rights reserved.<BR> >> + >> + This program and the accompanying materials >> + are licensed and made available under the terms and conditions of the >> BSD License >> + which accompanies this distribution. The full text of the license may >> be found at >> + http://opensource.org/licenses/bsd-license.php >> + >> + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, >> + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR >> IMPLIED. >> + >> +**/ >> + >> +#ifndef __PECOFF_IMAGE_EMULATOR_PROTOCOL_GUID_H__ >> +#define __PECOFF_IMAGE_EMULATOR_PROTOCOL_GUID_H__ >> + >> +#define EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL_GUID \ >> + { 0x96F46153, 0x97A7, 0x4793, { 0xAC, 0xC1, 0xFA, 0x19, 0xBF, 0x78, >> 0xEA, 0x97 } } >> + >> +typedef struct _EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL >> EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL; >> + >> +typedef >> +BOOLEAN >> +(EFIAPI *IS_PECOFF_IMAGE_SUPPORTED) ( >> + IN EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL *This, >> + IN UINT16 MachineType, >> + IN UINT16 ImageType >> + ); >> + >> +typedef >> +EFI_STATUS >> +(EFIAPI *REGISTER_PECOFF_IMAGE) ( >> + IN EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL *This, >> + IN EFI_PHYSICAL_ADDRESS ImageBase, >> + IN UINT64 ImageSize >> + ); >> + >> +typedef >> +EFI_STATUS >> +(EFIAPI *UNREGISTER_PECOFF_IMAGE) ( >> + IN EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL *This, >> + IN EFI_PHYSICAL_ADDRESS ImageBase >> + ); >> + >> +typedef struct _EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL { >> + IS_PECOFF_IMAGE_SUPPORTED IsImageSupported; >> + REGISTER_PECOFF_IMAGE RegisterImage; >> + UNREGISTER_PECOFF_IMAGE UnregisterImage; >> +} EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL; > > > Hi Ard, > > There is no any comment for these protocol typedefs? > > How about using > EDKII_PECOFF_IMAGE_EMULATOR_IS_IMAGE_SUPPORTED/EDKII_PECOFF_IMAGE_EMULATOR_REGISTER_IMAGE/EDKII_PECOFF_IMAGE_EMULATOR_UNREGISTER_IMAGE > as the function typedef names? > > Add below line to align with other protocol header files? > extern EFI_GUID gEdkiiPeCoffImageEmulatorProtocolGuid; > Yes, I can do that. Thanks, Ard. _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
diff --git a/MdeModulePkg/Include/Protocol/PeCoffImageEmulator.h b/MdeModulePkg/Include/Protocol/PeCoffImageEmulator.h new file mode 100644 index 000000000000..3391e68557b9 --- /dev/null +++ b/MdeModulePkg/Include/Protocol/PeCoffImageEmulator.h @@ -0,0 +1,51 @@ +/** @file + Copyright (c) 2018, Linaro, Ltd. All rights reserved.<BR> + + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#ifndef __PECOFF_IMAGE_EMULATOR_PROTOCOL_GUID_H__ +#define __PECOFF_IMAGE_EMULATOR_PROTOCOL_GUID_H__ + +#define EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL_GUID \ + { 0x96F46153, 0x97A7, 0x4793, { 0xAC, 0xC1, 0xFA, 0x19, 0xBF, 0x78, 0xEA, 0x97 } } + +typedef struct _EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL; + +typedef +BOOLEAN +(EFIAPI *IS_PECOFF_IMAGE_SUPPORTED) ( + IN EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL *This, + IN UINT16 MachineType, + IN UINT16 ImageType + ); + +typedef +EFI_STATUS +(EFIAPI *REGISTER_PECOFF_IMAGE) ( + IN EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL *This, + IN EFI_PHYSICAL_ADDRESS ImageBase, + IN UINT64 ImageSize + ); + +typedef +EFI_STATUS +(EFIAPI *UNREGISTER_PECOFF_IMAGE) ( + IN EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL *This, + IN EFI_PHYSICAL_ADDRESS ImageBase + ); + +typedef struct _EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL { + IS_PECOFF_IMAGE_SUPPORTED IsImageSupported; + REGISTER_PECOFF_IMAGE RegisterImage; + UNREGISTER_PECOFF_IMAGE UnregisterImage; +} EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL; + +#endif diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec index 6a6d9660edc2..be307329f901 100644 --- a/MdeModulePkg/MdeModulePkg.dec +++ b/MdeModulePkg/MdeModulePkg.dec @@ -617,6 +617,10 @@ ## Include/Protocol/AtaAtapiPolicy.h gEdkiiAtaAtapiPolicyProtocolGuid = { 0xe59cd769, 0x5083, 0x4f26,{ 0x90, 0x94, 0x6c, 0x91, 0x9f, 0x91, 0x6c, 0x4e } } + + ## Include/Protocol/PeCoffImageEmulator.h + gEdkiiPeCoffImageEmulatorProtocolGuid = { 0x96f46153, 0x97a7, 0x4793, { 0xac, 0xc1, 0xfa, 0x19, 0xbf, 0x78, 0xea, 0x97 } } + # # [Error.gEfiMdeModulePkgTokenSpaceGuid] # 0x80000001 | Invalid value provided.
Introduce a protocol that can be invoked by the image loading services to execute foreign architecture PE/COFF images via an emulator. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> --- MdeModulePkg/Include/Protocol/PeCoffImageEmulator.h | 51 ++++++++++++++++++++ MdeModulePkg/MdeModulePkg.dec | 4 ++ 2 files changed, 55 insertions(+) -- 2.17.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel