Changeset 81010 in vbox
- Timestamp:
- Sep 25, 2019 5:22:00 PM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 133608
- Location:
- trunk/src/VBox/Devices/EFI/Firmware/SourceLevelDebugPkg/Library/PeCoffExtraActionLibDebug
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/EFI/Firmware/SourceLevelDebugPkg/Library/PeCoffExtraActionLibDebug/PeCoffExtraActionLib.c
r80721 r81010 9 9 #include <PeCoffExtraActionLib.h> 10 10 11 #ifdef VBOX 12 #include "VBoxPkg.h" 13 #include "../../../../DevEFI.h" 14 15 16 17 static void vboxImageEvtU64(uint32_t uCmd, uint64_t uValue) 18 { 19 RTUINT64U u; /* 64-bit shift builtins. */ 20 u.u = uValue; 21 ASMOutU32(EFI_PORT_IMAGE_EVENT, EFI_IMAGE_EVT_MAKE(uCmd, u.au16[3])); 22 ASMOutU32(EFI_PORT_IMAGE_EVENT, EFI_IMAGE_EVT_MAKE(uCmd, u.au16[2])); 23 ASMOutU32(EFI_PORT_IMAGE_EVENT, EFI_IMAGE_EVT_MAKE(uCmd, u.au16[1])); 24 ASMOutU32(EFI_PORT_IMAGE_EVENT, EFI_IMAGE_EVT_MAKE(uCmd, u.au16[0])); 25 } 26 27 static void vboxImageEvtString(uint32_t uCmd, const char *pszName) 28 { 29 unsigned char uch; 30 while ((uch = *pszName++) != '\0') 31 ASMOutU32(EFI_PORT_IMAGE_EVENT, EFI_IMAGE_EVT_MAKE(uCmd, uch)); 32 } 33 34 static void vboxImageEvtEmitOne(PE_COFF_LOADER_IMAGE_CONTEXT const *pImageCtx, uint32_t uEvt) 35 { 36 ASMOutU32(EFI_PORT_IMAGE_EVENT, uEvt); 37 if (pImageCtx->DestinationAddress) 38 vboxImageEvtU64(EFI_IMAGE_EVT_CMD_ADDR0, pImageCtx->DestinationAddress); 39 else 40 vboxImageEvtU64(EFI_IMAGE_EVT_CMD_ADDR0, pImageCtx->ImageAddress); 41 vboxImageEvtU64(EFI_IMAGE_EVT_CMD_SIZE0, pImageCtx->ImageSize); 42 if (pImageCtx->PdbPointer) 43 vboxImageEvtString(EFI_IMAGE_EVT_CMD_NAME, pImageCtx->PdbPointer); 44 ASMOutU32(EFI_PORT_IMAGE_EVENT, EFI_IMAGE_EVT_CMD_COMPLETE); 45 } 46 #endif 47 48 49 #ifdef VBOX_SOURCE_DEBUG_ENABLE 11 50 /** 12 51 Check if the hardware breakpoint in Drx is enabled by checking the Lx and Gx bit in Dr7. … … 190 229 SetInterruptState (InterruptState); 191 230 } 231 #endif 192 232 193 233 /** … … 204 244 ) 205 245 { 246 #ifdef VBOX_SOURCE_DEBUG_ENABLE 206 247 PeCoffLoaderExtraActionCommon (ImageContext, IMAGE_LOAD_SIGNATURE); 248 #endif 249 250 #ifdef VBOX 251 # if ARCH_BITS == 32 252 vboxImageEvtEmitOne(ImageContext, EFI_IMAGE_EVT_CMD_START_LOAD32); 253 # else 254 vboxImageEvtEmitOne(ImageContext, EFI_IMAGE_EVT_CMD_START_LOAD64); 255 # endif 256 #endif 207 257 } 208 258 … … 221 271 ) 222 272 { 273 #ifdef VBOX_SOURCE_DEBUG_ENABLE 223 274 PeCoffLoaderExtraActionCommon (ImageContext, IMAGE_UNLOAD_SIGNATURE); 224 } 275 #endif 276 277 #ifdef VBOX 278 # if ARCH_BITS == 32 279 vboxImageEvtEmitOne(ImageContext, EFI_IMAGE_EVT_CMD_START_UNLOAD32); 280 # else 281 vboxImageEvtEmitOne(ImageContext, EFI_IMAGE_EVT_CMD_START_UNLOAD64); 282 # endif 283 #endif 284 } 285 286 #ifdef VBOX 287 VOID 288 EFIAPI 289 VBoxPeCoffLoaderMoveImageExtraAction( 290 IN PHYSICAL_ADDRESS OldBase, 291 IN PHYSICAL_ADDRESS NewBase 292 ) 293 { 294 #if ARCH_BITS == 32 295 ASMOutU32(EFI_PORT_IMAGE_EVENT, EFI_IMAGE_EVT_CMD_START_RELOC32); 296 #else 297 ASMOutU32(EFI_PORT_IMAGE_EVENT, EFI_IMAGE_EVT_CMD_START_RELOC64); 298 #endif 299 vboxImageEvtU64(EFI_IMAGE_EVT_CMD_ADDR0, NewBase); 300 vboxImageEvtU64(EFI_IMAGE_EVT_CMD_ADDR1, OldBase); 301 ASMOutU32(EFI_PORT_IMAGE_EVENT, EFI_IMAGE_EVT_CMD_COMPLETE); 302 } 303 #endif -
trunk/src/VBox/Devices/EFI/Firmware/SourceLevelDebugPkg/Library/PeCoffExtraActionLibDebug/PeCoffExtraActionLibDebug.inf
r80721 r81010 39 39 MdePkg/MdePkg.dec 40 40 SourceLevelDebugPkg/SourceLevelDebugPkg.dec 41 VBoxPkg/VBoxPkg.dec 41 42 42 43 [LibraryClasses]
Note:
See TracChangeset
for help on using the changeset viewer.