blob: 6837ef8c8573f11d558a8a1c83c6efbc3abf0b09 [file] [log] [blame]
/*
* Copyright (C) 2013 Google Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <config.h>
#include <stddef.h>
#include <stdint.h>
#include <symbols.h>
#include "header.h"
struct config_headers {
// The table of contents.
struct configuration_header_toc_item toc_chsettings;
struct configuration_header_toc_item toc_end;
// An inert instance of chsettings.
struct configuration_header_settings chsettings;
} __attribute__((packed));
struct omap_image_headers {
union {
struct config_headers config_headers;
uint8_t bytes[512];
};
struct gp_device_header image_header;
};
// A symbol which defines how much of the image the iROM should load.
extern char header_load_size;
struct omap_image_headers headers __attribute__((section(".header"))) = {
.config_headers = {
.toc_chsettings = {
.start = offsetof(struct omap_image_headers,
config_headers.chsettings),
.size = sizeof(struct configuration_header_settings),
.reserved = { 0, 0, 0 },
.filename = "CHSETTINGS\0"
},
.toc_end = {
.start = 0xffffffff,
.size = 0xffffffff,
.reserved = { 0xffffffff, 0xffffffff, 0xffffffff },
.filename = { 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff }
},
.chsettings = {
.key = 0xc0c0c0c1,
.valid = 0,
.version = 1,
.reserved = 0,
.flags = 0
}
},
.image_header = {
.size = (uintptr_t)&header_load_size,
.destination = (uintptr_t)_dram
}
};