/* Copyright 2012 Castle Technology Ltd
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#ifndef GLOBAL_OSENTRIES_H

#include <stdbool.h>
#include <stdint.h>

typedef struct {
  uint32_t Magic;
  uint32_t Flags;
  uint32_t ImageSize;
  uint32_t Entries;
  uint32_t NumEntries;
  uint32_t CompressedSize;
  uint32_t DecompressHdr;
  uint32_t CompressOffset;
} OSHdr;

typedef struct {
  uint32_t WSSize;
  uint32_t Code;
} OSDecompHdr;

#define OSHdr_Magic_Value (0x6d49534f) /* 'OSIm' */

typedef struct {
  uint32_t AddrFlags;
#define OSIICOpDesc_Addr_Shift    (0)
#define OSIICOpDesc_Addr_Mask     (0xFF)
#define OSIICOpDesc_Reserved_Mask (0x1FFFFF00uL)
#define OSIICOpDesc_Flag_Retry    (1uL<<29)
#define OSIICOpDesc_Flag_SumOnly  (1uL<<30)
#define OSIICOpDesc_Flag_NoStart  (1uL<<31)
  union {
    void    *Data;
    uint32_t CheckSum;
  } d;
  uint32_t Length;
} OSIICOpDesc;

#endif
/* In the exported copy of this file, the Hdr2H translation of hdr.OSEntries will follow. */
/* Created by Hdr2H.  Do not edit.*/
#ifndef GLOBAL_OSENTRIES_H
#define GLOBAL_OSENTRIES_H

#ifdef __CC_NORCROFT
#pragma force_top_level
#pragma include_only_once
#endif

#define OS_InitARM                               (0)
#define OS_AddRAM                                (1)
#define OS_Start                                 (2)
#define OS_MapInIO                               (3)
#define OS_AddDevice                             (4)
#define OS_LogToPhys                             (5)
#define OS_IICOpV                                (6)
#define OS_MapInIO64                             (7)
#define HighestOSEntry                           (8 - 1)
#define OSHdr_Magic                              (0)
#define OSHdr_Flags                              (4)
#define OSHdr_ImageSize                          (8)
#define OSHdr_Entries                            (12)
#define OSHdr_NumEntries                         (16)
#define OSHdr_CompressedSize                     (20)
#define OSHdr_DecompressHdr                      (24)
#define OSHdr_CompressOffset                     (28)
#define OSHdr_size                               (32)
#define OSHdrFlag_SupportsCompression            (1)
#define OSHdr_ValidFlags                         (1)
#define OSStartFlag_POR                          (1 << 0)
#define OSStartFlag_NoCMOSReset                  (1 << 1)
#define OSStartFlag_CMOSReset                    (1 << 2)
#define OSStartFlag_NoCMOS                       (1 << 3)
#define OSStartFlag_RAMCleared                   (1 << 4)
#define OSDecompHdr_WSSize                       (0)
#define OSDecompHdr_Code                         (4)
#define OSDecompHdr_size                         (8)
#define OSAddRAM_IsVRAM                          (1 << 0)
#define OSAddRAM_VRAMNotForGeneralUse            (1 << 1)
#define OSAddRAM_NoDMA                           (1 << 7)
#define OSAddRAM_Speed                           (1 << 8)
#define OSAddRAM_LargeAddresses                  (1 << 12)
#endif
