|  | // Copyright lowRISC contributors. | 
|  | // Licensed under the Apache License, Version 2.0, see LICENSE for details. | 
|  | // SPDX-License-Identifier: Apache-2.0 | 
|  | { | 
|  | fields : [ | 
|  | { name: "manifest_identifier", | 
|  | desc: '''ROM_EXT Manifest identifier. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "field", | 
|  | size: 32, | 
|  | }, | 
|  | { type: "reserved", | 
|  | size: 32, | 
|  | }, | 
|  | { name: "image_signature", | 
|  | desc: '''ROM_EXT Manifest image signature. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "field", | 
|  | size: 3072, | 
|  | }, | 
|  | { | 
|  | name: 'signed_area_start', | 
|  | desc: '''ROM_EXT Manifest image start of signed area. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "offset", | 
|  | }, | 
|  | { | 
|  | name: "image_length", | 
|  | desc: '''ROM_EXT Manifest image length. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "field", | 
|  | size: 32, | 
|  | }, | 
|  | { | 
|  | name: "image_version", | 
|  | desc: '''ROM_EXT Manifest image version. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "field", | 
|  | size: 32, | 
|  | }, | 
|  | { | 
|  | name: "image_timestamp", | 
|  | desc: '''ROM_EXT Manifest image timestamp. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "field", | 
|  | size: 64, | 
|  | alignment: 64, | 
|  | }, | 
|  | { | 
|  | name: "signature_key_public_exponent", | 
|  | desc: '''ROM_EXT Manifest Signature Key Public Exponent. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "field", | 
|  | size: 32, | 
|  | }, | 
|  | { | 
|  | type: "reserved", | 
|  | size: 32, | 
|  | } | 
|  | { | 
|  | name: "usage_constraints", | 
|  | desc: '''ROM_EXT Manifest usage constraints. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "field", | 
|  | size: 256, | 
|  | }, | 
|  | { | 
|  | name: "peripheral_lockdown_info", | 
|  | desc: '''ROM_EXT Manifest peripheral lockdown info(TBC). | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "field", | 
|  | size: 128, | 
|  | }, | 
|  | { | 
|  | name: "signature_key_modulus", | 
|  | desc: '''ROM_EXT Manifest Signature Key Modulus. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "field", | 
|  | size: 3072, | 
|  | }, | 
|  | { | 
|  | name: "extension0_offset", | 
|  | desc: '''ROM_EXT Manifest extension0 offset. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "field", | 
|  | size: 32, | 
|  | }, | 
|  | { | 
|  | name: "extension0_checksum", | 
|  | desc: '''ROM_EXT Manifest extension0 checksum. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "field", | 
|  | size: 32, | 
|  | }, | 
|  | { | 
|  | name: "extension1_offset", | 
|  | desc: '''ROM_EXT Manifest extension1 offset. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "field", | 
|  | size: 32, | 
|  | }, | 
|  | { | 
|  | name: "extension1_checksum", | 
|  | desc: '''ROM_EXT Manifest extension1 checksum. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "field", | 
|  | size: 32, | 
|  | }, | 
|  | { | 
|  | name: "extension2_offset", | 
|  | desc: '''ROM_EXT Manifest extension2 offset. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "field", | 
|  | size: 32, | 
|  | }, | 
|  | { | 
|  | name: "extension2_checksum", | 
|  | desc: '''ROM_EXT Manifest extension2 checksum. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "field", | 
|  | size: 32, | 
|  | }, | 
|  | { | 
|  | name: "extension3_offset", | 
|  | desc: '''ROM_EXT Manifest extension3 offset. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "field", | 
|  | size: 32, | 
|  | }, | 
|  | { | 
|  | name: "extension3_checksum", | 
|  | desc: '''ROM_EXT Manifest extension3 checksum. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "field", | 
|  | size: 32, | 
|  | }, | 
|  | { | 
|  | // This is modelled as an offset, as we don't want this to have a size, | 
|  | // and if we generate assembly like `rom_ext_manifest.S`, we don't want to | 
|  | // allocate this area using `.byte` instructions. | 
|  | name: "interrupt_vector", | 
|  | desc: '''ROM_EXT Manifest interrupt vector. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "offset", | 
|  | // Ibex requires this to be 256-byte aligned. In this file, all alignments | 
|  | // and sizes are in bits. | 
|  | alignment: 2048, | 
|  | }, | 
|  | { | 
|  | // This reserved area covers the interrupt vector then, to ensure the | 
|  | // `entry_point` field is 128 bytes later. | 
|  | type: "reserved", | 
|  | // A RISC-V interrupt vector is 32*32bit entries. | 
|  | size: 1024, | 
|  | }, | 
|  | { | 
|  | name: "entry_point", | 
|  | desc: '''ROM_EXT Manifest entry point. | 
|  |  | 
|  | TODO | 
|  | ''', | 
|  | type: "offset", | 
|  | }, | 
|  | ], | 
|  | } |