2 * This file is part of the coreboot project.
4 * Copyright 2015 Google Inc.
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; version 2 of the License.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
16 #ifndef _STAGE_CACHE_H_
17 #define _STAGE_CACHE_H_
21 #include <program_loading.h>
23 /* Types of stages that may be stored in stage cache */
30 /* Types of raw data that may be stored in stage cache */
35 /* Cache the loaded stage provided according to the parameters. */
36 void stage_cache_add(int stage_id
, const struct prog
*stage
);
37 /* Cache non-specific data or code. */
38 void stage_cache_add_raw(int stage_id
, const void *base
, const size_t size
);
39 /* Get a pointer to cached raw data and its size. */
40 void stage_cache_get_raw(int stage_id
, void **base
, size_t *size
);
41 /* Load the cached stage at given location returning the stage entry point. */
42 void stage_cache_load_stage(int stage_id
, struct prog
*stage
);
43 /* Fill in parameters for the external stage cache, if utilized. */
44 void stage_cache_external_region(void **base
, size_t *size
);
46 /* Metadata associated with each stage. */
53 #endif /* _STAGE_CACHE_H_ */