diff options
Diffstat (limited to 'uClinux-2.4.20-uc1/arch/armnommu/kernel/compat.c')
-rw-r--r-- | uClinux-2.4.20-uc1/arch/armnommu/kernel/compat.c | 68 |
1 files changed, 37 insertions, 31 deletions
diff --git a/uClinux-2.4.20-uc1/arch/armnommu/kernel/compat.c b/uClinux-2.4.20-uc1/arch/armnommu/kernel/compat.c index a23932c..23c085d 100644 --- a/uClinux-2.4.20-uc1/arch/armnommu/kernel/compat.c +++ b/uClinux-2.4.20-uc1/arch/armnommu/kernel/compat.c @@ -8,7 +8,7 @@ * published by the Free Software Foundation. * * We keep the old params compatibility cruft in one place (here) - * so we don't end up with lots of + * so we don't end up with lots of mess around other places. */ #include <linux/config.h> #include <linux/types.h> @@ -33,18 +33,18 @@ static struct tag * __init memtag(struct tag *tag, unsigned long start, unsigned return tag; } -static void __init build_tag_list(struct param_struct *params, void *taglist, int mem_init) +static void __init build_tag_list(struct param_struct *params, void *taglist) { struct tag *tag = taglist; - printk(KERN_DEBUG "Converting old-style param struct to taglist\n"); - if (params->u1.s.page_size != PAGE_SIZE) { printk(KERN_WARNING "Warning: bad configuration page, " "trying to continue\n"); return; } + printk(KERN_DEBUG "Converting old-style param struct to taglist\n"); + tag->hdr.tag = ATAG_CORE; tag->hdr.size = tag_size(tag_core); tag->u.core.flags = params->u1.s.flags & FLAG_READONLY; @@ -76,35 +76,33 @@ static void __init build_tag_list(struct param_struct *params, void *taglist, in tag->hdr.size = tag_size(tag_revision); tag->u.revision.rev = params->u1.s.system_rev; - if (mem_init) { #ifdef CONFIG_ARCH_ACORN - if (machine_is_riscpc()) { - int i; - for (i = 0; i < 4; i++) - tag = memtag(tag, PHYS_OFFSET + (i << 26), - params->u1.s.pages_in_bank[i] * PAGE_SIZE); - } else + if (machine_is_riscpc()) { + int i; + for (i = 0; i < 4; i++) + tag = memtag(tag, PHYS_OFFSET + (i << 26), + params->u1.s.pages_in_bank[i] * PAGE_SIZE); + } else #endif -#ifdef CONFIG_ARCH_SHARK - if (machine_is_shark()) { - int i; - for (i = 0; i < 4; i++) { - unsigned int val = params->u1.s.pages_in_bank[i]; - if (!val) - continue; - tag = memtag(tag, val & 0xffff0000, - (val & 0xffff) * PAGE_SIZE); - } + if (machine_is_shark()) { + int i; + for (i = 0; i < 4; i++) { + unsigned int val = params->u1.s.pages_in_bank[i]; + if (!val) + continue; + tag = memtag(tag, val & 0xffff0000, + (val & 0xffff) * PAGE_SIZE); } -#endif - tag = memtag(tag, PHYS_OFFSET, params->u1.s.nr_pages * PAGE_SIZE); - } + } else + tag = memtag(tag, PHYS_OFFSET, params->u1.s.nr_pages * PAGE_SIZE); #ifdef CONFIG_FOOTBRIDGE - tag = tag_next(tag); - tag->hdr.tag = ATAG_MEMCLK; - tag->hdr.size = tag_size(tag_memclk); - tag->u.memclk.fmemclk = params->u1.s.mem_fclk_21285; + if (params->u1.s.mem_fclk_21285) { + tag = tag_next(tag); + tag->hdr.tag = ATAG_MEMCLK; + tag->hdr.size = tag_size(tag_memclk); + tag->u.memclk.fmemclk = params->u1.s.mem_fclk_21285; + } #endif #ifdef CONFIG_ARCH_ACORN @@ -124,14 +122,22 @@ static void __init build_tag_list(struct param_struct *params, void *taglist, in strcpy(tag->u.cmdline.cmdline, params->commandline); tag = tag_next(tag); - tag->hdr.tag = 0; + tag->hdr.tag = ATAG_NONE; tag->hdr.size = 0; memmove(params, taglist, ((int)tag) - ((int)taglist) + sizeof(struct tag_header)); } -void __init convert_to_tag_list(struct param_struct *params, int mem_init) +void __init convert_to_tag_list(struct tag *tags) +{ + struct param_struct *params = (struct param_struct *)tags; + build_tag_list(params, ¶ms->u2); +} + +void __init squash_mem_tags(struct tag *tag) { - build_tag_list(params, ¶ms->u2, mem_init); + for (; tag->hdr.size; tag = tag_next(tag)) + if (tag->hdr.tag == ATAG_MEM) + tag->hdr.tag = ATAG_NONE; } |