--- qemu/roms/SLOF/lib/libelf/libelf.code 2018/04/24 18:59:08 1.1 +++ qemu/roms/SLOF/lib/libelf/libelf.code 2018/04/24 19:24:33 1.1.1.2 @@ -1,5 +1,5 @@ /****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation + * Copyright (c) 2004, 2011 IBM Corporation * All rights reserved. * This program and the accompanying materials * are made available under the terms of the BSD License @@ -9,13 +9,35 @@ * Contributors: * IBM Corporation - initial implementation *****************************************************************************/ -int load_elf_file(unsigned long *file_addr, unsigned long *entry); -PRIM(LOADELF) +/* + * libelf Forth wrapper + */ + +#include + +// : elf-load-file ( fileaddr -- entry type ) +PRIM(ELF_X2d_LOAD_X2d_FILE) +{ + void *file_addr = TOS.a; + int type; + unsigned long entry; + type = elf_load_file(file_addr, &entry, elf_forth_claim, flush_cache); + TOS.u = entry; + PUSH; TOS.n = type; +} +MIRP + +// : elf-load-file-to-addr ( fileaddr destaddr -- entry type ) +PRIM(ELF_X2d_LOAD_X2d_FILE_X2d_TO_X2d_ADDR) +{ + void *dest_addr = TOS.a; POP; void *file_addr = TOS.a; int type; unsigned long entry; - type = load_elf_file(file_addr, &entry); + type = elf_load_file_to_addr(file_addr, dest_addr, &entry, + elf_forth_claim, flush_cache); TOS.u = entry; PUSH; TOS.n = type; +} MIRP