1 /** @file
2   The EFI_SMM_SWAP_ADDRESS_RANGE_PROTOCOL is related to EDK II-specific implementation
3   and used to abstract the swap operation of boot block and backup block of FV in EFI
4   SMM environment. This swap is especially needed when updating the boot block of FV.
5   If a power failure happens during the boot block update, the swapped backup block
6   (now the boot block) can boot the machine with the old boot block backed up in it.
7   The swap operation is platform dependent, so other protocols such as SMM FTW (Fault
8   Tolerant Write) should use this protocol instead of handling hardware directly.
9 
10 Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>
11 This program and the accompanying materials are licensed and made available under
12 the terms and conditions of the BSD License that accompanies this distribution.
13 The full text of the license may be found at
14 http://opensource.org/licenses/bsd-license.php.
15 
16 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
17 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 
19 **/
20 
21 #ifndef __SMM_SWAP_ADDRESS_RANGE_H__
22 #define __SMM_SWAP_ADDRESS_RANGE_H__
23 
24 #include <Protocol/SwapAddressRange.h>
25 
26 #define EFI_SMM_SWAP_ADDRESS_RANGE_PROTOCOL_GUID \
27   { \
28     0x67c4f112, 0x3385, 0x4e55, { 0x9c, 0x5b, 0xc0, 0x5b, 0x71, 0x7c, 0x42, 0x28 } \
29   }
30 
31 //
32 // SMM Swap Address Range protocol structure is the same as Swap Address Range protocol.
33 // The SMM one is intend to run in SMM environment, which means it can be used by
34 // SMM drivers after ExitPmAuth.
35 //
36 typedef EFI_SWAP_ADDRESS_RANGE_PROTOCOL EFI_SMM_SWAP_ADDRESS_RANGE_PROTOCOL;
37 
38 extern EFI_GUID gEfiSmmSwapAddressRangeProtocolGuid;
39 
40 #endif
41