summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/include')
-rw-r--r--src/include/program_loading.h34
1 files changed, 13 insertions, 21 deletions
diff --git a/src/include/program_loading.h b/src/include/program_loading.h
index bb4f6ea1d2..d01eff64d8 100644
--- a/src/include/program_loading.h
+++ b/src/include/program_loading.h
@@ -41,17 +41,13 @@ void arch_segment_loaded(uintptr_t start, size_t size, int flags);
/* Representation of a program. */
struct prog {
- /* The region_device represents the memory region of the stages and
- * payload. For architectures that use a bounce buffer
- * then it would represent the bounce buffer. */
enum prog_type type;
enum cbfs_type cbfs_type;
const char *name;
- struct region_device rdev;
- /* Entry to program with optional argument. It's up to the architecture
- * to decide if argument is passed. */
- void (*entry)(void *);
- void *arg;
+ void *start; /* Program start in memory. */
+ size_t size; /* Program size in memory (including BSS). */
+ void (*entry)(void *); /* Function pointer to entry point. */
+ void *arg; /* Optional argument (only valid for some archs). */
};
#define PROG_INIT(type_, name_) \
@@ -75,21 +71,14 @@ static inline enum cbfs_type prog_cbfs_type(const struct prog *prog)
return prog->cbfs_type;
}
-static inline struct region_device *prog_rdev(struct prog *prog)
-{
- return &prog->rdev;
-}
-
-/* Only valid for loaded programs. */
static inline size_t prog_size(const struct prog *prog)
{
- return region_device_sz(&prog->rdev);
+ return prog->size;
}
-/* Only valid for loaded programs. */
static inline void *prog_start(const struct prog *prog)
{
- return rdev_mmap_full(&prog->rdev);
+ return prog->start;
}
static inline void *prog_entry(const struct prog *prog)
@@ -105,15 +94,18 @@ static inline void *prog_entry_arg(const struct prog *prog)
/* region_device representing the 32-bit flat address space. */
extern const struct mem_region_device addrspace_32bit;
-static inline void prog_memory_init(struct prog *prog, uintptr_t ptr,
- size_t size)
+/* Can be used to get an rdev representation of program area in memory. */
+static inline void prog_chain_rdev(const struct prog *prog,
+ struct region_device *rdev_out)
{
- rdev_chain(&prog->rdev, &addrspace_32bit.rdev, ptr, size);
+ rdev_chain(rdev_out, &addrspace_32bit.rdev,
+ (uintptr_t)prog->start, prog->size);
}
static inline void prog_set_area(struct prog *prog, void *start, size_t size)
{
- prog_memory_init(prog, (uintptr_t)start, size);
+ prog->start = start;
+ prog->size = size;
}
static inline void prog_set_entry(struct prog *prog, void *e, void *arg)