TianoCore EDK2 master
Loading...
Searching...
No Matches
SmmS3SaveState.c
Go to the documentation of this file.
1
10
11EFI_S3_SMM_SAVE_STATE_PROTOCOL mS3SmmSaveState = {
16};
17
30 IN VA_LIST Marker
31 )
32{
34 UINT64 Address;
35 UINTN Count;
36 UINT8 *Buffer;
37
38 Width = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
39 Address = VA_ARG (Marker, UINT64);
40 Count = VA_ARG (Marker, UINTN);
41 Buffer = VA_ARG (Marker, UINT8 *);
42
43 return S3BootScriptSaveIoWrite (Width, Address, Count, Buffer);
44}
45
58 IN VA_LIST Marker
59 )
60{
62 UINT64 Address;
63 UINT8 *Data;
64 UINT8 *DataMask;
65
66 Width = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
67 Address = VA_ARG (Marker, UINT64);
68 Data = VA_ARG (Marker, UINT8 *);
69 DataMask = VA_ARG (Marker, UINT8 *);
70
71 return S3BootScriptSaveIoReadWrite (Width, Address, Data, DataMask);
72}
73
86 IN VA_LIST Marker
87 )
88{
90 UINT64 Address;
91 UINTN Count;
92 UINT8 *Buffer;
93
94 Width = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
95 Address = VA_ARG (Marker, UINT64);
96 Count = VA_ARG (Marker, UINTN);
97 Buffer = VA_ARG (Marker, UINT8 *);
98
99 return S3BootScriptSaveMemWrite (Width, Address, Count, Buffer);
100}
101
114 IN VA_LIST Marker
115 )
116{
118 UINT64 Address;
119 UINT8 *Data;
120 UINT8 *DataMask;
121
122 Width = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
123 Address = VA_ARG (Marker, UINT64);
124 Data = VA_ARG (Marker, UINT8 *);
125 DataMask = VA_ARG (Marker, UINT8 *);
126
127 return S3BootScriptSaveMemReadWrite (Width, Address, Data, DataMask);
128}
129
142 IN VA_LIST Marker
143 )
144{
146 UINT64 Address;
147 UINTN Count;
148 UINT8 *Buffer;
149
150 Width = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
151 Address = VA_ARG (Marker, UINT64);
152 Count = VA_ARG (Marker, UINTN);
153 Buffer = VA_ARG (Marker, UINT8 *);
154
155 return S3BootScriptSavePciCfgWrite (Width, Address, Count, Buffer);
156}
157
170 IN VA_LIST Marker
171 )
172{
174 UINT64 Address;
175 UINT8 *Data;
176 UINT8 *DataMask;
177
178 Width = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
179 Address = VA_ARG (Marker, UINT64);
180 Data = VA_ARG (Marker, UINT8 *);
181 DataMask = VA_ARG (Marker, UINT8 *);
182
183 return S3BootScriptSavePciCfgReadWrite (Width, Address, Data, DataMask);
184}
185
198 IN VA_LIST Marker
199 )
200{
202 UINT64 Address;
203 UINTN Count;
204 UINT8 *Buffer;
205 UINT16 Segment;
206
207 Width = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
208 Segment = VA_ARG (Marker, UINT16);
209 Address = VA_ARG (Marker, UINT64);
210 Count = VA_ARG (Marker, UINTN);
211 Buffer = VA_ARG (Marker, UINT8 *);
212
213 return S3BootScriptSavePciCfg2Write (Width, Segment, Address, Count, Buffer);
214}
215
228 IN VA_LIST Marker
229 )
230{
232 UINT16 Segment;
233 UINT64 Address;
234 UINT8 *Data;
235 UINT8 *DataMask;
236
237 Width = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
238 Segment = VA_ARG (Marker, UINT16);
239 Address = VA_ARG (Marker, UINT64);
240 Data = VA_ARG (Marker, UINT8 *);
241 DataMask = VA_ARG (Marker, UINT8 *);
242
243 return S3BootScriptSavePciCfg2ReadWrite (Width, Segment, Address, Data, DataMask);
244}
245
258 IN VA_LIST Marker
259 )
260{
261 EFI_SMBUS_DEVICE_ADDRESS SlaveAddress;
263 EFI_SMBUS_OPERATION Operation;
264 BOOLEAN PecCheck;
265 VOID *Buffer;
266 UINTN *DataSize;
267 UINTN SmBusAddress;
268
269 SlaveAddress.SmbusDeviceAddress = VA_ARG (Marker, UINTN);
270 Command = VA_ARG (Marker, EFI_SMBUS_DEVICE_COMMAND);
271 Operation = VA_ARG (Marker, EFI_SMBUS_OPERATION);
272 PecCheck = VA_ARG (Marker, BOOLEAN);
273 SmBusAddress = SMBUS_LIB_ADDRESS (SlaveAddress.SmbusDeviceAddress, Command, 0, PecCheck);
274 DataSize = VA_ARG (Marker, UINTN *);
275 Buffer = VA_ARG (Marker, VOID *);
276
277 return S3BootScriptSaveSmbusExecute (SmBusAddress, Operation, DataSize, Buffer);
278}
279
292 IN VA_LIST Marker
293 )
294{
295 UINT32 Duration;
296
297 Duration = VA_ARG (Marker, UINT32);
298
299 return S3BootScriptSaveStall (Duration);
300}
301
315 IN VA_LIST Marker
316 )
317{
318 VOID *EntryPoint;
319
320 EntryPoint = (VOID *)(UINTN)VA_ARG (Marker, EFI_PHYSICAL_ADDRESS);
321 return S3BootScriptSaveDispatch (EntryPoint);
322}
323
336 IN VA_LIST Marker
337 )
338{
340 UINT64 Address;
341 VOID *Data;
342 VOID *DataMask;
343 UINT64 Delay;
344 UINT64 LoopTimes;
345 UINT32 Remainder;
346
347 Width = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
348 Address = VA_ARG (Marker, UINT64);
349 Data = VA_ARG (Marker, VOID *);
350 DataMask = VA_ARG (Marker, VOID *);
351 Delay = VA_ARG (Marker, UINT64);
352 //
353 // According to the spec, the interval between 2 polls is 100ns,
354 // but the unit of Duration for S3BootScriptSaveMemPoll() is microsecond(1000ns).
355 // Duration * 1000ns * LoopTimes = Delay * 100ns
356 // Duration will be minimum 1(microsecond) to be minimum deviation,
357 // so LoopTimes = Delay / 10.
358 //
359 LoopTimes = DivU64x32Remainder (
360 Delay,
361 10,
362 &Remainder
363 );
364 if (Remainder != 0) {
365 //
366 // If Remainder is not zero, LoopTimes will be rounded up by 1.
367 //
368 LoopTimes += 1;
369 }
370
371 return S3BootScriptSaveMemPoll (Width, Address, DataMask, Data, 1, LoopTimes);
372}
373
387 IN VA_LIST Marker
388 )
389{
390 VOID *EntryPoint;
391 VOID *Context;
392
393 EntryPoint = (VOID *)(UINTN)VA_ARG (Marker, EFI_PHYSICAL_ADDRESS);
394 Context = (VOID *)(UINTN)VA_ARG (Marker, EFI_PHYSICAL_ADDRESS);
395
396 return S3BootScriptSaveDispatch2 (EntryPoint, Context);
397}
398
411 IN VA_LIST Marker
412 )
413{
414 UINT32 InformationLength;
415 EFI_PHYSICAL_ADDRESS Information;
416
417 InformationLength = VA_ARG (Marker, UINT32);
418 Information = VA_ARG (Marker, EFI_PHYSICAL_ADDRESS);
419 return S3BootScriptSaveInformation (InformationLength, (VOID *)(UINTN)Information);
420}
421
433 IN VA_LIST Marker
434 )
435{
437 UINT64 Address;
438 VOID *Data;
439 VOID *DataMask;
440 UINT64 Delay;
441
442 Width = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
443 Address = VA_ARG (Marker, UINT64);
444 Data = VA_ARG (Marker, VOID *);
445 DataMask = VA_ARG (Marker, VOID *);
446 Delay = (UINT64)VA_ARG (Marker, UINT64);
447
448 return S3BootScriptSaveIoPoll (Width, Address, Data, DataMask, Delay);
449}
450
463 IN VA_LIST Marker
464 )
465{
467 UINT64 Address;
468 VOID *Data;
469 VOID *DataMask;
470 UINT64 Delay;
471
472 Width = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
473 Address = VA_ARG (Marker, UINT64);
474 Data = VA_ARG (Marker, VOID *);
475 DataMask = VA_ARG (Marker, VOID *);
476 Delay = (UINT64)VA_ARG (Marker, UINT64);
477
478 return S3BootScriptSavePciPoll (Width, Address, Data, DataMask, Delay);
479}
480
493 IN VA_LIST Marker
494 )
495{
497 UINT16 Segment;
498 UINT64 Address;
499 VOID *Data;
500 VOID *DataMask;
501 UINT64 Delay;
502
503 Width = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
504 Segment = VA_ARG (Marker, UINT16);
505 Address = VA_ARG (Marker, UINT64);
506 Data = VA_ARG (Marker, VOID *);
507 DataMask = VA_ARG (Marker, VOID *);
508 Delay = (UINT64)VA_ARG (Marker, UINT64);
509
510 return S3BootScriptSavePci2Poll (Width, Segment, Address, Data, DataMask, Delay);
511}
512
541EFIAPI
544 IN UINTN OpCode,
545 ...
546 )
547{
548 EFI_STATUS Status;
549 VA_LIST Marker;
550
551 //
552 // Build script according to opcode
553 //
554 switch (OpCode) {
555 case EFI_BOOT_SCRIPT_IO_WRITE_OPCODE:
556 VA_START (Marker, OpCode);
557 Status = BootScriptWriteIoWrite (Marker);
558 VA_END (Marker);
559 break;
560
561 case EFI_BOOT_SCRIPT_IO_READ_WRITE_OPCODE:
562 VA_START (Marker, OpCode);
563 Status = BootScriptWriteIoReadWrite (Marker);
564 VA_END (Marker);
565 break;
566
567 case EFI_BOOT_SCRIPT_MEM_WRITE_OPCODE:
568 VA_START (Marker, OpCode);
569 Status = BootScriptWriteMemWrite (Marker);
570 VA_END (Marker);
571 break;
572
573 case EFI_BOOT_SCRIPT_MEM_READ_WRITE_OPCODE:
574 VA_START (Marker, OpCode);
575 Status = BootScriptWriteMemReadWrite (Marker);
576 VA_END (Marker);
577 break;
578
579 case EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE_OPCODE:
580 VA_START (Marker, OpCode);
581 Status = BootScriptWritePciCfgWrite (Marker);
582 VA_END (Marker);
583 break;
584
585 case EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE_OPCODE:
586 VA_START (Marker, OpCode);
587 Status = BootScriptWritePciCfgReadWrite (Marker);
588 VA_END (Marker);
589 break;
590
591 case EFI_BOOT_SCRIPT_SMBUS_EXECUTE_OPCODE:
592 VA_START (Marker, OpCode);
593 Status = BootScriptWriteSmbusExecute (Marker);
594 VA_END (Marker);
595 break;
596
597 case EFI_BOOT_SCRIPT_STALL_OPCODE:
598 VA_START (Marker, OpCode);
599 Status = BootScriptWriteStall (Marker);
600 VA_END (Marker);
601
602 break;
603
604 case EFI_BOOT_SCRIPT_DISPATCH_OPCODE:
605 VA_START (Marker, OpCode);
606 Status = BootScriptWriteDispatch (Marker);
607 VA_END (Marker);
608 break;
609
610 case EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE:
611 VA_START (Marker, OpCode);
612 Status = BootScriptWriteDispatch2 (Marker);
613 VA_END (Marker);
614 break;
615
616 case EFI_BOOT_SCRIPT_INFORMATION_OPCODE:
617 VA_START (Marker, OpCode);
618 Status = BootScriptWriteInformation (Marker);
619 VA_END (Marker);
620 break;
621
622 case EFI_BOOT_SCRIPT_MEM_POLL_OPCODE:
623 VA_START (Marker, OpCode);
624 Status = BootScriptWriteMemPoll (Marker);
625 VA_END (Marker);
626 break;
627
628 case EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE_OPCODE:
629 VA_START (Marker, OpCode);
630 Status = BootScriptWritePciCfg2Write (Marker);
631 VA_END (Marker);
632 break;
633
634 case EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE_OPCODE:
635 VA_START (Marker, OpCode);
636 Status = BootScriptWritePciCfg2ReadWrite (Marker);
637 VA_END (Marker);
638 break;
639
640 case EFI_BOOT_SCRIPT_IO_POLL_OPCODE:
641 VA_START (Marker, OpCode);
642 Status = BootScriptWriteIoPoll (Marker);
643 VA_END (Marker);
644 break;
645
646 case EFI_BOOT_SCRIPT_PCI_CONFIG_POLL_OPCODE:
647 VA_START (Marker, OpCode);
648 Status = BootScriptWritePciConfigPoll (Marker);
649 VA_END (Marker);
650 break;
651
652 case EFI_BOOT_SCRIPT_PCI_CONFIG2_POLL_OPCODE:
653 VA_START (Marker, OpCode);
654 Status = BootScriptWritePciConfig2Poll (Marker);
655 VA_END (Marker);
656 break;
657
658 default:
659 Status = EFI_INVALID_PARAMETER;
660 break;
661 }
662
663 return Status;
664}
665
695EFIAPI
698 IN BOOLEAN BeforeOrAfter,
699 IN OUT EFI_S3_BOOT_SCRIPT_POSITION *Position OPTIONAL,
700 IN UINTN OpCode,
701 ...
702 )
703{
704 EFI_STATUS Status;
705 VA_LIST Marker;
706
707 //
708 // Build script according to opcode
709 //
710 switch (OpCode) {
711 case EFI_BOOT_SCRIPT_IO_WRITE_OPCODE:
712 VA_START (Marker, OpCode);
713 Status = BootScriptWriteIoWrite (Marker);
714 VA_END (Marker);
715 break;
716
717 case EFI_BOOT_SCRIPT_IO_READ_WRITE_OPCODE:
718 VA_START (Marker, OpCode);
719 Status = BootScriptWriteIoReadWrite (Marker);
720 VA_END (Marker);
721 break;
722
723 case EFI_BOOT_SCRIPT_MEM_WRITE_OPCODE:
724 VA_START (Marker, OpCode);
725 Status = BootScriptWriteMemWrite (Marker);
726 VA_END (Marker);
727 break;
728
729 case EFI_BOOT_SCRIPT_MEM_READ_WRITE_OPCODE:
730 VA_START (Marker, OpCode);
731 Status = BootScriptWriteMemReadWrite (Marker);
732 VA_END (Marker);
733 break;
734
735 case EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE_OPCODE:
736 VA_START (Marker, OpCode);
737 Status = BootScriptWritePciCfgWrite (Marker);
738 VA_END (Marker);
739 break;
740
741 case EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE_OPCODE:
742 VA_START (Marker, OpCode);
743 Status = BootScriptWritePciCfgReadWrite (Marker);
744 VA_END (Marker);
745 break;
746
747 case EFI_BOOT_SCRIPT_SMBUS_EXECUTE_OPCODE:
748 VA_START (Marker, OpCode);
749 Status = BootScriptWriteSmbusExecute (Marker);
750 VA_END (Marker);
751 break;
752
753 case EFI_BOOT_SCRIPT_STALL_OPCODE:
754 VA_START (Marker, OpCode);
755 Status = BootScriptWriteStall (Marker);
756 VA_END (Marker);
757
758 break;
759
760 case EFI_BOOT_SCRIPT_DISPATCH_OPCODE:
761 VA_START (Marker, OpCode);
762 Status = BootScriptWriteDispatch (Marker);
763 VA_END (Marker);
764 break;
765
766 case EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE:
767 VA_START (Marker, OpCode);
768 Status = BootScriptWriteDispatch2 (Marker);
769 VA_END (Marker);
770 break;
771
772 case EFI_BOOT_SCRIPT_INFORMATION_OPCODE:
773 VA_START (Marker, OpCode);
774 Status = BootScriptWriteInformation (Marker);
775 VA_END (Marker);
776 break;
777
778 case EFI_BOOT_SCRIPT_MEM_POLL_OPCODE:
779 VA_START (Marker, OpCode);
780 Status = BootScriptWriteMemPoll (Marker);
781 VA_END (Marker);
782 break;
783
784 case EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE_OPCODE:
785 VA_START (Marker, OpCode);
786 Status = BootScriptWritePciCfg2Write (Marker);
787 VA_END (Marker);
788 break;
789
790 case EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE_OPCODE:
791 VA_START (Marker, OpCode);
792 Status = BootScriptWritePciCfg2ReadWrite (Marker);
793 VA_END (Marker);
794 break;
795
796 case EFI_BOOT_SCRIPT_IO_POLL_OPCODE:
797 VA_START (Marker, OpCode);
798 Status = BootScriptWriteIoPoll (Marker);
799 VA_END (Marker);
800 break;
801
802 case EFI_BOOT_SCRIPT_PCI_CONFIG_POLL_OPCODE:
803 VA_START (Marker, OpCode);
804 Status = BootScriptWritePciConfigPoll (Marker);
805 VA_END (Marker);
806 break;
807
808 case EFI_BOOT_SCRIPT_PCI_CONFIG2_POLL_OPCODE:
809 VA_START (Marker, OpCode);
810 Status = BootScriptWritePciConfig2Poll (Marker);
811 VA_END (Marker);
812 break;
813
814 default:
815 Status = EFI_INVALID_PARAMETER;
816 break;
817 }
818
819 if (!EFI_ERROR (Status)) {
820 Status = S3BootScriptMoveLastOpcode (BeforeOrAfter, (VOID **)Position);
821 }
822
823 return Status;
824}
825
854EFIAPI
857 IN BOOLEAN BeforeOrAfter,
858 IN BOOLEAN CreateIfNotFound,
859 IN OUT EFI_S3_BOOT_SCRIPT_POSITION *Position OPTIONAL,
860 IN CONST CHAR8 *Label
861 )
862{
863 return S3BootScriptLabel (BeforeOrAfter, CreateIfNotFound, (VOID **)Position, Label);
864}
865
884EFIAPI
887 IN EFI_S3_BOOT_SCRIPT_POSITION Position1,
888 IN EFI_S3_BOOT_SCRIPT_POSITION Position2,
889 OUT UINTN *RelativePosition
890 )
891{
892 return S3BootScriptCompare (Position1, Position2, RelativePosition);
893}
894
907EFIAPI
909 IN EFI_HANDLE ImageHandle,
910 IN EFI_SYSTEM_TABLE *SystemTable
911 )
912{
913 EFI_HANDLE Handle;
914
915 if (!PcdGetBool (PcdAcpiS3Enable)) {
916 return EFI_UNSUPPORTED;
917 }
918
919 Handle = NULL;
921 &Handle,
922 &gEfiS3SmmSaveStateProtocolGuid,
924 &mS3SmmSaveState
925 );
926}
UINT64 UINTN
UINT64 EFIAPI DivU64x32Remainder(IN UINT64 Dividend, IN UINT32 Divisor, OUT UINT32 *Remainder OPTIONAL)
RETURN_STATUS EFIAPI S3BootScriptSaveInformation(IN UINT32 InformationLength, IN VOID *Information)
RETURN_STATUS EFIAPI S3BootScriptSaveIoPoll(IN S3_BOOT_SCRIPT_LIB_WIDTH Width, IN UINT64 Address, IN VOID *Data, IN VOID *DataMask, IN UINT64 Delay)
RETURN_STATUS EFIAPI S3BootScriptSavePciCfg2ReadWrite(IN S3_BOOT_SCRIPT_LIB_WIDTH Width, IN UINT16 Segment, IN UINT64 Address, IN VOID *Data, IN VOID *DataMask)
RETURN_STATUS EFIAPI S3BootScriptSavePci2Poll(IN S3_BOOT_SCRIPT_LIB_WIDTH Width, IN UINT16 Segment, IN UINT64 Address, IN VOID *Data, IN VOID *DataMask, IN UINT64 Delay)
RETURN_STATUS EFIAPI S3BootScriptSaveDispatch2(IN VOID *EntryPoint, IN VOID *Context)
RETURN_STATUS EFIAPI S3BootScriptSaveIoReadWrite(IN S3_BOOT_SCRIPT_LIB_WIDTH Width, IN UINT64 Address, IN VOID *Data, IN VOID *DataMask)
RETURN_STATUS EFIAPI S3BootScriptSaveIoWrite(IN S3_BOOT_SCRIPT_LIB_WIDTH Width, IN UINT64 Address, IN UINTN Count, IN VOID *Buffer)
RETURN_STATUS EFIAPI S3BootScriptSavePciCfgWrite(IN S3_BOOT_SCRIPT_LIB_WIDTH Width, IN UINT64 Address, IN UINTN Count, IN VOID *Buffer)
RETURN_STATUS EFIAPI S3BootScriptCompare(IN UINT8 *Position1, IN UINT8 *Position2, OUT UINTN *RelativePosition)
RETURN_STATUS EFIAPI S3BootScriptSaveStall(IN UINTN Duration)
RETURN_STATUS EFIAPI S3BootScriptSaveSmbusExecute(IN UINTN SmBusAddress, IN EFI_SMBUS_OPERATION Operation, IN UINTN *Length, IN VOID *Buffer)
RETURN_STATUS EFIAPI S3BootScriptSaveMemPoll(IN S3_BOOT_SCRIPT_LIB_WIDTH Width, IN UINT64 Address, IN VOID *BitMask, IN VOID *BitValue, IN UINTN Duration, IN UINT64 LoopTimes)
RETURN_STATUS EFIAPI S3BootScriptSavePciCfg2Write(IN S3_BOOT_SCRIPT_LIB_WIDTH Width, IN UINT16 Segment, IN UINT64 Address, IN UINTN Count, IN VOID *Buffer)
RETURN_STATUS EFIAPI S3BootScriptSaveDispatch(IN VOID *EntryPoint)
RETURN_STATUS EFIAPI S3BootScriptMoveLastOpcode(IN BOOLEAN BeforeOrAfter, IN OUT VOID **Position OPTIONAL)
RETURN_STATUS EFIAPI S3BootScriptSavePciCfgReadWrite(IN S3_BOOT_SCRIPT_LIB_WIDTH Width, IN UINT64 Address, IN VOID *Data, IN VOID *DataMask)
RETURN_STATUS EFIAPI S3BootScriptSaveMemWrite(IN S3_BOOT_SCRIPT_LIB_WIDTH Width, IN UINT64 Address, IN UINTN Count, IN VOID *Buffer)
RETURN_STATUS EFIAPI S3BootScriptLabel(IN BOOLEAN BeforeOrAfter, IN BOOLEAN CreateIfNotFound, IN OUT VOID **Position OPTIONAL, IN CONST CHAR8 *Label)
RETURN_STATUS EFIAPI S3BootScriptSaveMemReadWrite(IN S3_BOOT_SCRIPT_LIB_WIDTH Width, IN UINT64 Address, IN VOID *Data, IN VOID *DataMask)
RETURN_STATUS EFIAPI S3BootScriptSavePciPoll(IN S3_BOOT_SCRIPT_LIB_WIDTH Width, IN UINT64 Address, IN VOID *Data, IN VOID *DataMask, IN UINT64 Delay)
#define NULL
Definition: Base.h:319
#define CONST
Definition: Base.h:259
#define VA_ARG(Marker, TYPE)
Definition: Base.h:679
#define VA_START(Marker, Parameter)
Definition: Base.h:661
CHAR8 * VA_LIST
Definition: Base.h:643
#define IN
Definition: Base.h:279
#define OUT
Definition: Base.h:284
#define VA_END(Marker)
Definition: Base.h:691
#define PcdGetBool(TokenName)
Definition: PcdLib.h:401
EFI_SMM_SYSTEM_TABLE2 * gSmst
S3_BOOT_SCRIPT_LIB_WIDTH
UINTN EFI_SMBUS_DEVICE_COMMAND
Definition: SmBus.h:71
enum _EFI_SMBUS_OPERATION EFI_SMBUS_OPERATION
#define SMBUS_LIB_ADDRESS(SlaveAddress, Command, Length, Pec)
Definition: SmbusLib.h:27
EFI_STATUS BootScriptWriteIoWrite(IN VA_LIST Marker)
EFI_STATUS EFIAPI BootScriptLabel(IN CONST EFI_S3_SAVE_STATE_PROTOCOL *This, IN BOOLEAN BeforeOrAfter, IN BOOLEAN CreateIfNotFound, IN OUT EFI_S3_BOOT_SCRIPT_POSITION *Position OPTIONAL, IN CONST CHAR8 *Label)
EFI_STATUS BootScriptWriteInformation(IN VA_LIST Marker)
EFI_STATUS BootScriptWritePciConfigPoll(IN VA_LIST Marker)
EFI_STATUS EFIAPI BootScriptWrite(IN CONST EFI_S3_SAVE_STATE_PROTOCOL *This, IN UINTN OpCode,...)
EFI_STATUS BootScriptWriteStall(IN VA_LIST Marker)
EFI_STATUS EFIAPI BootScriptInsert(IN CONST EFI_S3_SAVE_STATE_PROTOCOL *This, IN BOOLEAN BeforeOrAfter, IN OUT EFI_S3_BOOT_SCRIPT_POSITION *Position OPTIONAL, IN UINTN OpCode,...)
EFI_STATUS BootScriptWritePciCfgReadWrite(IN VA_LIST Marker)
EFI_STATUS BootScriptWriteDispatch2(IN VA_LIST Marker)
EFI_STATUS BootScriptWriteIoReadWrite(IN VA_LIST Marker)
EFI_STATUS EFIAPI InitializeSmmS3SaveState(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
EFI_STATUS BootScriptWriteMemReadWrite(IN VA_LIST Marker)
EFI_STATUS BootScriptWritePciCfgWrite(IN VA_LIST Marker)
EFI_STATUS BootScriptWriteDispatch(IN VA_LIST Marker)
EFI_STATUS BootScriptWritePciConfig2Poll(IN VA_LIST Marker)
EFI_STATUS BootScriptWriteMemWrite(IN VA_LIST Marker)
EFI_STATUS BootScriptWriteIoPoll(IN VA_LIST Marker)
EFI_STATUS BootScriptWriteMemPoll(IN VA_LIST Marker)
EFI_STATUS BootScriptWritePciCfg2ReadWrite(IN VA_LIST Marker)
EFI_STATUS EFIAPI BootScriptCompare(IN CONST EFI_S3_SAVE_STATE_PROTOCOL *This, IN EFI_S3_BOOT_SCRIPT_POSITION Position1, IN EFI_S3_BOOT_SCRIPT_POSITION Position2, OUT UINTN *RelativePosition)
EFI_STATUS BootScriptWriteSmbusExecute(IN VA_LIST Marker)
EFI_STATUS BootScriptWritePciCfg2Write(IN VA_LIST Marker)
UINT64 EFI_PHYSICAL_ADDRESS
Definition: UefiBaseType.h:50
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
VOID * EFI_HANDLE
Definition: UefiBaseType.h:33
@ EFI_NATIVE_INTERFACE
Definition: UefiSpec.h:1193
EFI_INSTALL_PROTOCOL_INTERFACE SmmInstallProtocolInterface
Definition: PiSmmCis.h:185