lib: launch: move page size from a global variable to elf_image
This commit is contained in:
@@ -21,8 +21,8 @@
|
|||||||
/* TODO in case we ever support ELF32 images */
|
/* TODO in case we ever support ELF32 images */
|
||||||
#define elf_class_bits(x) (64)
|
#define elf_class_bits(x) (64)
|
||||||
|
|
||||||
#define PAGE_SIZE (page_size())
|
#define PAGE_SIZE (image->e_page_size)
|
||||||
#define PAGE_MASK (page_size() - 1)
|
#define PAGE_MASK (image->e_page_size - 1)
|
||||||
#define PAGE_OFFSET(v) ((v) & (PAGE_SIZE - 1))
|
#define PAGE_OFFSET(v) ((v) & (PAGE_SIZE - 1))
|
||||||
#define PAGE_ALIGN_DOWN(v) (v) &= ~(PAGE_SIZE - 1)
|
#define PAGE_ALIGN_DOWN(v) (v) &= ~(PAGE_SIZE - 1)
|
||||||
#define PAGE_ALIGN_UP(v) \
|
#define PAGE_ALIGN_UP(v) \
|
||||||
@@ -35,16 +35,6 @@
|
|||||||
|
|
||||||
#undef DEBUG_LOG
|
#undef DEBUG_LOG
|
||||||
|
|
||||||
static size_t page_size(void)
|
|
||||||
{
|
|
||||||
static size_t pagesz = 0;
|
|
||||||
if (pagesz == 0) {
|
|
||||||
kern_config_get(KERN_CFG_PAGE_SIZE, &pagesz, sizeof pagesz);
|
|
||||||
}
|
|
||||||
|
|
||||||
return pagesz;
|
|
||||||
}
|
|
||||||
|
|
||||||
static enum launch_status elf_validate_ehdr(elf_ehdr_t *hdr)
|
static enum launch_status elf_validate_ehdr(elf_ehdr_t *hdr)
|
||||||
{
|
{
|
||||||
if (hdr->e_ident[EI_MAG0] != ELF_MAG0) {
|
if (hdr->e_ident[EI_MAG0] != ELF_MAG0) {
|
||||||
@@ -488,6 +478,7 @@ void elf_image_init(struct elf_image *out)
|
|||||||
{
|
{
|
||||||
memset(out, 0x0, sizeof(*out));
|
memset(out, 0x0, sizeof(*out));
|
||||||
|
|
||||||
|
kern_config_get(KERN_CFG_PAGE_SIZE, &out->e_page_size, sizeof out->e_page_size);
|
||||||
out->e_image = KERN_HANDLE_INVALID;
|
out->e_image = KERN_HANDLE_INVALID;
|
||||||
out->e_data = KERN_HANDLE_INVALID;
|
out->e_data = KERN_HANDLE_INVALID;
|
||||||
out->e_local_space = KERN_HANDLE_INVALID;
|
out->e_local_space = KERN_HANDLE_INVALID;
|
||||||
|
|||||||
@@ -289,6 +289,7 @@ struct bootdata;
|
|||||||
struct bootfs_file;
|
struct bootfs_file;
|
||||||
|
|
||||||
struct elf_image {
|
struct elf_image {
|
||||||
|
size_t e_page_size;
|
||||||
kern_handle_t e_image, e_data;
|
kern_handle_t e_image, e_data;
|
||||||
kern_handle_t e_local_space, e_remote_space;
|
kern_handle_t e_local_space, e_remote_space;
|
||||||
kern_handle_t e_local_exec, e_remote_exec;
|
kern_handle_t e_local_exec, e_remote_exec;
|
||||||
|
|||||||
Reference in New Issue
Block a user