aboutsummaryrefslogtreecommitdiff
path: root/sys/boot/arc
diff options
context:
space:
mode:
authorBoris Popov <bp@FreeBSD.org>2000-05-01 17:41:25 +0000
committerBoris Popov <bp@FreeBSD.org>2000-05-01 17:41:25 +0000
commit801e789e01eae994cafa8952ee477207fa4b5b0c (patch)
tree0d7138009f72831c7771b09d4e84166fe54ee0a8 /sys/boot/arc
parentdb667a40a524ed6b14468d2335a8a99c01b65cba (diff)
downloadsrc-801e789e01eae994cafa8952ee477207fa4b5b0c.tar.gz
src-801e789e01eae994cafa8952ee477207fa4b5b0c.zip
Update loader logic to distinguish modules vs. files.
Add support for module metadata. The old way of dependancy handling will be supported for a while. Reviewed by: peter
Notes
Notes: svn path=/head/; revision=59854
Diffstat (limited to 'sys/boot/arc')
-rw-r--r--sys/boot/arc/lib/bootinfo.c32
-rw-r--r--sys/boot/arc/lib/elf_freebsd.c18
-rw-r--r--sys/boot/arc/loader/conf.c4
3 files changed, 27 insertions, 27 deletions
diff --git a/sys/boot/arc/lib/bootinfo.c b/sys/boot/arc/lib/bootinfo.c
index 8b74e0d2c06e..f95e7e47ef40 100644
--- a/sys/boot/arc/lib/bootinfo.c
+++ b/sys/boot/arc/lib/bootinfo.c
@@ -121,17 +121,17 @@ bi_copyenv(vm_offset_t addr)
vm_offset_t
bi_copymodules(vm_offset_t addr)
{
- struct loaded_module *mp;
- struct module_metadata *md;
+ struct preloaded_file *fp;
+ struct file_metadata *md;
/* start with the first module on the list, should be the kernel */
- for (mp = mod_findmodule(NULL, NULL); mp != NULL; mp = mp->m_next) {
+ for (fp = file_findfile(NULL, NULL); fp != NULL; fp = fp->f_next) {
- MOD_NAME(addr, mp->m_name); /* this field must come first */
- MOD_TYPE(addr, mp->m_type);
- MOD_ADDR(addr, mp->m_addr);
- MOD_SIZE(addr, mp->m_size);
- for (md = mp->m_metadata; md != NULL; md = md->md_next)
+ MOD_NAME(addr, fp->f_name); /* this field must come first */
+ MOD_TYPE(addr, fp->f_type);
+ MOD_ADDR(addr, fp->f_addr);
+ MOD_SIZE(addr, fp->f_size);
+ for (md = fp->f_metadata; md != NULL; md = md->md_next)
if (!(md->md_type & MODINFOMD_NOCOPY))
MOD_METADATA(addr, md);
}
@@ -147,18 +147,18 @@ bi_copymodules(vm_offset_t addr)
*/
int
bi_load(struct bootinfo_v1 *bi, vm_offset_t *ffp_save,
- struct loaded_module *mp)
+ struct preloaded_file *fp)
{
- struct loaded_module *xp;
+ struct preloaded_file *xp;
vm_offset_t addr, bootinfo_addr;
u_int pad;
vm_offset_t ssym, esym;
- struct module_metadata *md;
+ struct file_metadata *md;
ssym = esym = 0;
- if ((md = mod_findmetadata(mp, MODINFOMD_SSYM)) != NULL)
+ if ((md = file_findmetadata(fp, MODINFOMD_SSYM)) != NULL)
ssym = *((vm_offset_t *)&(md->md_data));
- if ((md = mod_findmetadata(mp, MODINFOMD_ESYM)) != NULL)
+ if ((md = file_findmetadata(fp, MODINFOMD_ESYM)) != NULL)
esym = *((vm_offset_t *)&(md->md_data));
if (ssym == 0 || esym == 0)
ssym = esym = 0; /* sanity */
@@ -168,9 +168,9 @@ bi_load(struct bootinfo_v1 *bi, vm_offset_t *ffp_save,
/* find the last module in the chain */
addr = 0;
- for (xp = mod_findmodule(NULL, NULL); xp != NULL; xp = xp->m_next) {
- if (addr < (xp->m_addr + xp->m_size))
- addr = xp->m_addr + xp->m_size;
+ for (xp = file_findfile(NULL, NULL); xp != NULL; xp = xp->f_next) {
+ if (addr < (xp->f_addr + xp->f_size))
+ addr = xp->f_addr + xp->f_size;
}
/* pad to a page boundary */
pad = (u_int)addr & PAGE_MASK;
diff --git a/sys/boot/arc/lib/elf_freebsd.c b/sys/boot/arc/lib/elf_freebsd.c
index 4e75820a88ca..994a78714bbf 100644
--- a/sys/boot/arc/lib/elf_freebsd.c
+++ b/sys/boot/arc/lib/elf_freebsd.c
@@ -90,37 +90,37 @@
#define _KERNEL
-static int elf_exec(struct loaded_module *amp);
+static int elf_exec(struct preloaded_file *amp);
int bi_load(struct bootinfo_v1 *, vm_offset_t *,
- struct loaded_module *);
+ struct preloaded_file *);
-struct module_format alpha_elf = { elf_loadmodule, elf_exec };
+struct file_format alpha_elf = { elf_loadfile, elf_exec };
vm_offset_t ffp_save, ptbr_save;
static int
-elf_exec(struct loaded_module *mp)
+elf_exec(struct preloaded_file *fp)
{
#if 0
static struct bootinfo_v1 bootinfo_v1;
- struct module_metadata *md;
+ struct file_metadata *md;
Elf_Ehdr *hdr;
int err;
- if ((md = mod_findmetadata(mp, MODINFOMD_ELFHDR)) == NULL)
+ if ((md = file_findmetadata(fp, MODINFOMD_ELFHDR)) == NULL)
return(EFTYPE); /* XXX actually EFUCKUP */
hdr = (Elf_Ehdr *)&(md->md_data);
/* XXX ffp_save does not appear to be used in the kernel.. */
bzero(&bootinfo_v1, sizeof(bootinfo_v1));
- err = bi_load(&bootinfo_v1, &ffp_save, mp);
+ err = bi_load(&bootinfo_v1, &ffp_save, fp);
if (err)
return(err);
/*
* Fill in the bootinfo for the kernel.
*/
- strncpy(bootinfo_v1.booted_kernel, mp->m_name,
+ strncpy(bootinfo_v1.booted_kernel, fp->f_name,
sizeof(bootinfo_v1.booted_kernel));
prom_getenv(PROM_E_BOOTED_OSFLAGS, bootinfo_v1.boot_flags,
sizeof(bootinfo_v1.boot_flags));
@@ -130,7 +130,7 @@ elf_exec(struct loaded_module *mp)
bootinfo_v1.cnputc = NULL;
bootinfo_v1.cnpollc = NULL;
- printf("Entering %s at 0x%lx...\n", mp->m_name, hdr->e_entry);
+ printf("Entering %s at 0x%lx...\n", fp->f_name, hdr->e_entry);
exit(0);
closeall();
alpha_pal_imb();
diff --git a/sys/boot/arc/loader/conf.c b/sys/boot/arc/loader/conf.c
index d40ea46fe06a..ba4000eb39cd 100644
--- a/sys/boot/arc/loader/conf.c
+++ b/sys/boot/arc/loader/conf.c
@@ -64,9 +64,9 @@ struct fs_ops *file_system[] = {
* Sort formats so that those that can detect based on arguments
* rather than reading the file go first.
*/
-extern struct module_format alpha_elf;
+extern struct file_format alpha_elf;
-struct module_format *module_formats[] = {
+struct file_format *file_formats[] = {
&alpha_elf,
NULL
};