summaryrefslogtreecommitdiff
path: root/firmware/include/load_kernel_fw.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/include/load_kernel_fw.h')
-rw-r--r--firmware/include/load_kernel_fw.h117
1 files changed, 68 insertions, 49 deletions
diff --git a/firmware/include/load_kernel_fw.h b/firmware/include/load_kernel_fw.h
index 0040e56d..7e8d6960 100644
--- a/firmware/include/load_kernel_fw.h
+++ b/firmware/include/load_kernel_fw.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -20,63 +20,82 @@
#define BOOT_FLAG_DEVELOPER UINT64_C(0x01)
/* In recovery mode */
#define BOOT_FLAG_RECOVERY UINT64_C(0x02)
-/* Skip check of kernel buffer address. Since body load address check is
- * omitted; this flag is deprecated and not used anywhere in the codebase. */
-#define BOOT_FLAG_SKIP_ADDR_CHECK UINT64_C(0x04)
typedef struct LoadKernelParams {
- /* Inputs to LoadKernel() */
- void* shared_data_blob; /* Buffer for data shared between
- * LoadFirmware() and LoadKernel(). Pass the
- * same buffer which was passed to
- * LoadFirmware(). */
- uint64_t shared_data_size; /* Size of shared data blob buffer, in bytes.
- * On output, this will contain the actual
- * data size placed into the buffer. */
- void* gbb_data; /* Pointer to GBB data */
- uint64_t gbb_size; /* Size of GBB data in bytes */
+ /* Inputs to LoadKernel() */
+ /*
+ * Buffer for data shared between LoadFirmware() and LoadKernel().
+ * Pass the same buffer which was passed to LoadFirmware().
+ */
+ void *shared_data_blob;
+ /*
+ * Size of shared data blob buffer, in bytes. On output, this will
+ * contain the actual data size placed into the buffer.
+ */
+ uint64_t shared_data_size;
+ /* Pointer to GBB data */
+ void *gbb_data;
+ /* Size of GBB data in bytes */
+ uint64_t gbb_size;
+ /* Disk handle for current device */
+ VbExDiskHandle_t disk_handle;
+ /* Bytes per lba sector on current device */
+ uint64_t bytes_per_lba;
+ /* Last addressable lba sector on current device */
+ uint64_t ending_lba;
+ /* Destination buffer for kernel (normally at 0x100000) */
+ void *kernel_buffer;
+ /* Size of kernel buffer in bytes */
+ uint64_t kernel_buffer_size;
+ /* Boot flags */
+ uint64_t boot_flags;
+ /*
+ * Context for NV storage. Caller is responsible for calling
+ * VbNvSetup() and VbNvTeardown() on the context.
+ */
+ VbNvContext *nv_context;
- VbExDiskHandle_t disk_handle; /* Disk handle for current device */
- uint64_t bytes_per_lba; /* Bytes per lba sector on current device */
- uint64_t ending_lba; /* Last addressable lba sector on current
- * device */
-
- void* kernel_buffer; /* Destination buffer for kernel
- * (normally at 0x100000) */
- uint64_t kernel_buffer_size; /* Size of kernel buffer in bytes */
- uint64_t boot_flags; /* Boot flags */
- VbNvContext* nv_context; /* Context for NV storage. Caller is
- * responsible for calling VbNvSetup() and
- * VbNvTeardown() on the context. */
-
- /* Outputs from LoadKernel(); valid only if LoadKernel() returns
- * LOAD_KERNEL_SUCCESS */
- uint64_t partition_number; /* Partition number to boot on current device
- * (1...M) */
- uint64_t bootloader_address; /* Address of bootloader image in RAM */
- uint64_t bootloader_size; /* Size of bootloader image in bytes */
- uint8_t partition_guid[16]; /* UniquePartitionGuid for boot partition */
+ /*
+ * Outputs from LoadKernel(); valid only if LoadKernel() returns
+ * LOAD_KERNEL_SUCCESS
+ */
+ /* Partition number to boot on current device (1...M) */
+ uint64_t partition_number;
+ /* Address of bootloader image in RAM */
+ uint64_t bootloader_address;
+ /* Size of bootloader image in bytes */
+ uint64_t bootloader_size;
+ /* UniquePartitionGuid for boot partition */
+ uint8_t partition_guid[16];
} LoadKernelParams;
-VbError_t LoadKernel(LoadKernelParams* params);
-/* Attempts to load the kernel from the current device.
+/**
+ * Attempt to load the kernel from the current device.
*
* Returns VBERROR_SUCCESS if successful. If unsuccessful, sets a recovery
- * reason via VbNvStorage and returns an error code. */
-
+ * reason via VbNvStorage and returns an error code.
+ */
+VbError_t LoadKernel(LoadKernelParams *params);
+/*
+ * The bootloader is loaded using the EFI LoadImage() and StartImage() calls.
+ * Pass this struct via loaded_image->load_options.
+ */
typedef struct KernelBootloaderOptions {
- /* The bootloader is loaded using the EFI LoadImage() and StartImage()
- * calls. Pass this struct via loaded_image->load_options. */
- uint64_t drive_number; /* Drive number of boot device (0...N) */
- uint64_t partition_number; /* Partition number, as returned from
- * LoadKernel() in
- * LoadKernelParams.partition_number */
- uint64_t original_address; /* Absolute bootloader start adddress,
- * as returned from LoadKernel() in
- * LoadKernelParams.bootloader_start */
- uint8_t partition_guid[16]; /* UniquePartitionGuid for boot partition */
+ /* Drive number of boot device (0...N) */
+ uint64_t drive_number;
+ /*
+ * Partition number, as returned from LoadKernel() in
+ * LoadKernelParams.partition_number
+ */
+ uint64_t partition_number;
+ /*
+ * Absolute bootloader start adddress, as returned from LoadKernel() in
+ * LoadKernelParams.bootloader_start
+ */
+ uint64_t original_address;
+ /* UniquePartitionGuid for boot partition */
+ uint8_t partition_guid[16];
} KernelBootloaderOptions;
-
#endif /* VBOOT_REFERENCE_LOAD_KERNEL_FW_H_ */