1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- /** @file
- This code fills in BDA (0x400) and EBDA (pointed to by 0x4xx)
- information. There is support for doing initializeation before
- Legacy16 is loaded and before a legacy boot is attempted.
- Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #include "LegacyBiosInterface.h"
- /**
- Fill in the standard BDA and EBDA stuff before Legacy16 load
- @param Private Legacy BIOS Instance data
- @retval EFI_SUCCESS It should always work.
- **/
- EFI_STATUS
- LegacyBiosInitBda (
- IN LEGACY_BIOS_INSTANCE *Private
- )
- {
- BDA_STRUC *Bda;
- UINT8 *Ebda;
- Bda = (BDA_STRUC *)((UINTN)0x400);
- Ebda = (UINT8 *)((UINTN)0x9fc00);
- ACCESS_PAGE0_CODE (
- ZeroMem (Bda, 0x100);
- //
- // 640k-1k for EBDA
- //
- Bda->MemSize = 0x27f;
- Bda->KeyHead = 0x1e;
- Bda->KeyTail = 0x1e;
- Bda->FloppyData = 0x00;
- Bda->FloppyTimeout = 0xff;
- Bda->KeyStart = 0x001E;
- Bda->KeyEnd = 0x003E;
- Bda->KeyboardStatus = 0x10;
- Bda->Ebda = 0x9fc0;
- //
- // Move LPT time out here and zero out LPT4 since some SCSI OPROMS
- // use this as scratch pad (LPT4 is Reserved)
- //
- Bda->Lpt1_2Timeout = 0x1414;
- Bda->Lpt3_4Timeout = 0x1400;
- );
- ZeroMem (Ebda, 0x400);
- *Ebda = 0x01;
- return EFI_SUCCESS;
- }
|