VOID ExecuteWbinvdInstruction ( IN AMD_CONFIG_PARAMS *StdHeader ) { __wbinvd (); }
VOID XboxMemInit(VOID) { UCHAR ControlRegion[TEST_SIZE]; PVOID MembaseTop = (PVOID)(64 * 1024 * 1024); PVOID MembaseLow = (PVOID)0; (*(PULONG)(0xfd000000 + 0x100200)) = 0x03070103 ; (*(PULONG)(0xfd000000 + 0x100204)) = 0x11448000 ; WRITE_PORT_ULONG((ULONG*) 0xcf8, CONFIG_CMD(0, 0, 0x84)); WRITE_PORT_ULONG((ULONG*) 0xcfc, 0x7ffffff); /* Prep hardware for 128 Mb */ InstalledMemoryMb = 64; memset(ControlRegion, TEST_PATTERN1, TEST_SIZE); memset(MembaseTop, TEST_PATTERN1, TEST_SIZE); __wbinvd(); if (0 == memcmp(MembaseTop, ControlRegion, TEST_SIZE)) { /* Looks like there is memory .. maybe a 128MB box */ memset(ControlRegion, TEST_PATTERN2, TEST_SIZE); memset(MembaseTop, TEST_PATTERN2, TEST_SIZE); __wbinvd(); if (0 == memcmp(MembaseTop, ControlRegion, TEST_SIZE)) { /* Definitely looks like there is memory */ if (0 == memcmp(MembaseLow, ControlRegion, TEST_SIZE)) { /* Hell, we find the Test-string at 0x0 too ! */ InstalledMemoryMb = 64; } else { InstalledMemoryMb = 128; } } } /* Set hardware for amount of memory detected */ WRITE_PORT_ULONG((ULONG*) 0xcf8, CONFIG_CMD(0, 0, 0x84)); WRITE_PORT_ULONG((ULONG*) 0xcfc, InstalledMemoryMb * 1024 * 1024 - 1); AvailableMemoryMb = InstalledMemoryMb; }
VOID ShvVmxHandleInvd ( VOID ) { // // This is the handler for the INVD instruction. Technically it may be more // correct to use __invd instead of __wbinvd, but that intrinsic doesn't // actually exist. Additionally, the Windows kernel (or HAL) don't contain // any example of INVD actually ever being used. Finally, Hyper-V itself // handles INVD by issuing WBINVD as well, so we'll just do that here too. // __wbinvd(); }
void dc_clean_keys() { dev_hook *hook; for (hook = dc_first_hook(); hook != NULL; hook = dc_next_hook(hook)) { if (hook->dsk_key != NULL) RtlSecureZeroMemory(hook->dsk_key, sizeof(xts_key)); if (hook->tmp_key != NULL) RtlSecureZeroMemory(hook->tmp_key, sizeof(xts_key)); if (hook->hdr_key != NULL) RtlSecureZeroMemory(hook->hdr_key, sizeof(xts_key)); RtlSecureZeroMemory(&hook->tmp_header, sizeof(dc_header)); } // Write Back and Invalidate CPU Caches __wbinvd(); }