Home | History | Annotate | Download | only in PiDxeS3BootScriptLib
      1 /** @file
      2   This file declares the internal Framework Boot Script format used by
      3   the PI implementation of Script Saver and Executor.
      4 
      5   Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
      6 
      7   This program and the accompanying materials
      8   are licensed and made available under the terms and conditions
      9   of the BSD License which accompanies this distribution.  The
     10   full text of the license may be found at
     11   http://opensource.org/licenses/bsd-license.php
     12 
     13   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     14   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     15 
     16 **/
     17 
     18 #ifndef _BOOT_SCRIPT_INTERNAL_FORMAT_H_
     19 #define _BOOT_SCRIPT_INTERNAL_FORMAT_H_
     20 
     21 #pragma pack(1)
     22 
     23 //
     24 // Boot Script Opcode Header Structure Definitions
     25 //
     26 
     27 typedef struct {
     28   UINT16  OpCode;
     29   UINT8   Length;
     30 } EFI_BOOT_SCRIPT_GENERIC_HEADER;
     31 
     32 typedef struct {
     33   UINT16  OpCode;
     34   UINT8   Length;
     35   UINT16  Version;
     36   UINT32  TableLength;
     37   UINT16  Reserved[2];
     38 } EFI_BOOT_SCRIPT_TABLE_HEADER;
     39 
     40 typedef struct {
     41   UINT16                OpCode;
     42   UINT8                 Length;
     43   UINT32                Width;
     44 } EFI_BOOT_SCRIPT_COMMON_HEADER;
     45 
     46 typedef struct {
     47   UINT16                OpCode;
     48   UINT8                 Length;
     49   UINT32                Width;
     50   UINT32                Count;
     51   UINT64                Address;
     52 } EFI_BOOT_SCRIPT_IO_WRITE;
     53 
     54 typedef struct {
     55   UINT16                OpCode;
     56   UINT8                 Length;
     57   UINT32                Width;
     58   UINT64                Address;
     59 } EFI_BOOT_SCRIPT_IO_READ_WRITE;
     60 
     61 typedef struct {
     62   UINT16                OpCode;
     63   UINT8                 Length;
     64   UINT32                Width;
     65   UINT32                Count;
     66   UINT64                Address;
     67 } EFI_BOOT_SCRIPT_MEM_WRITE;
     68 
     69 typedef struct {
     70   UINT16                OpCode;
     71   UINT8                 Length;
     72   UINT32                Width;
     73   UINT64                Address;
     74 } EFI_BOOT_SCRIPT_MEM_READ_WRITE;
     75 
     76 typedef struct {
     77   UINT16                OpCode;
     78   UINT8                 Length;
     79   UINT32                Width;
     80   UINT32                Count;
     81   UINT64                Address;
     82 } EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE;
     83 
     84 typedef struct {
     85   UINT16                OpCode;
     86   UINT8                 Length;
     87   UINT32                Width;
     88   UINT32                Count;
     89   UINT64                Address;
     90   UINT16                Segment;
     91 } EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE;
     92 
     93 typedef struct {
     94   UINT16                OpCode;
     95   UINT8                 Length;
     96   UINT32                Width;
     97   UINT64                Address;
     98 } EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE;
     99 
    100 typedef struct {
    101   UINT16                OpCode;
    102   UINT8                 Length;
    103   UINT32                Width;
    104   UINT64                Address;
    105   UINT16                Segment;
    106 } EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE;
    107 
    108 typedef struct {
    109   UINT16                    OpCode;
    110   UINT8                     Length;
    111   UINT64                    SmBusAddress;
    112   UINT32                    Operation;
    113   UINT32                    DataSize;
    114 } EFI_BOOT_SCRIPT_SMBUS_EXECUTE;
    115 
    116 typedef struct {
    117   UINT16  OpCode;
    118   UINT8   Length;
    119   UINT64  Duration;
    120 } EFI_BOOT_SCRIPT_STALL;
    121 
    122 typedef struct {
    123   UINT16                OpCode;
    124   UINT8                 Length;
    125   EFI_PHYSICAL_ADDRESS  EntryPoint;
    126 } EFI_BOOT_SCRIPT_DISPATCH;
    127 
    128 typedef struct {
    129   UINT16                OpCode;
    130   UINT8                 Length;
    131   EFI_PHYSICAL_ADDRESS  EntryPoint;
    132   EFI_PHYSICAL_ADDRESS  Context;
    133 } EFI_BOOT_SCRIPT_DISPATCH_2;
    134 
    135 typedef struct {
    136   UINT16  OpCode;
    137   UINT8   Length;
    138   UINT32  Width;
    139   UINT64  Address;
    140   UINT64  Duration;
    141   UINT64  LoopTimes;
    142 } EFI_BOOT_SCRIPT_MEM_POLL;
    143 
    144 typedef struct {
    145   UINT16  OpCode;
    146   UINT8   Length;
    147   UINT32  InformationLength;
    148 // UINT8   InformationData[InformationLength];
    149 } EFI_BOOT_SCRIPT_INFORMATION;
    150 
    151 typedef struct {
    152   UINT16  OpCode;
    153   UINT8   Length;
    154   UINT32  Width;
    155   UINT64  Address;
    156   UINT64  Delay;
    157 } EFI_BOOT_SCRIPT_IO_POLL;
    158 
    159 typedef struct {
    160   UINT16  OpCode;
    161   UINT8   Length;
    162   UINT32  Width;
    163   UINT64  Address;
    164   UINT64  Delay;
    165 } EFI_BOOT_SCRIPT_PCI_CONFIG_POLL;
    166 
    167 typedef struct {
    168   UINT16  OpCode;
    169   UINT8   Length;
    170   UINT32  Width;
    171   UINT64  Address;
    172   UINT16  Segment;
    173   UINT64  Delay;
    174 } EFI_BOOT_SCRIPT_PCI_CONFIG2_POLL;
    175 
    176 typedef struct {
    177   UINT16  OpCode;
    178   UINT8   Length;
    179 } EFI_BOOT_SCRIPT_TERMINATE;
    180 
    181 
    182 #pragma pack()
    183 
    184 #define BOOT_SCRIPT_NODE_MAX_LENGTH   1024
    185 
    186 #define BOOT_SCRIPT_TABLE_VERSION     0x0001
    187 
    188 #endif
    189