diff options
| author | Linus Torvalds <torvalds@home.transmeta.com> | 2002-05-12 04:25:07 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-05-12 04:25:07 -0700 |
| commit | 4af4c05c4d495e9bc88ea084c6dd11adaa742410 (patch) | |
| tree | 5c453657fcc7ebe01af0b842e8ebb7dc5ebbabec /include | |
| parent | 2658bb8b1447f937757efe474fb68f92802f7743 (diff) | |
| parent | 32e5dbb6ba8d091c00bb554f83e00de45568a9c2 (diff) | |
Merge http://linux-isdn.bkbits.net/linux-2.5.isdn
into home.transmeta.com:/home/torvalds/v2.5/linux
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-arm/arch-clps711x/memory.h | 57 | ||||
| -rw-r--r-- | include/asm-arm/arch-integrator/time.h | 1 | ||||
| -rw-r--r-- | include/asm-arm/arch-sa1100/SA-1100.h | 10 | ||||
| -rw-r--r-- | include/asm-arm/arch-sa1100/hardware.h | 9 | ||||
| -rw-r--r-- | include/asm-arm/arch-sa1100/irqs.h | 5 | ||||
| -rw-r--r-- | include/asm-arm/arch-sa1100/memory.h | 41 | ||||
| -rw-r--r-- | include/asm-arm/glue.h | 19 | ||||
| -rw-r--r-- | include/asm-arm/io.h | 18 | ||||
| -rw-r--r-- | include/asm-arm/memory.h | 87 | ||||
| -rw-r--r-- | include/asm-arm/page.h | 13 | ||||
| -rw-r--r-- | include/asm-arm/pgtable.h | 26 | ||||
| -rw-r--r-- | include/asm-arm/setup.h | 72 |
12 files changed, 144 insertions, 214 deletions
diff --git a/include/asm-arm/arch-clps711x/memory.h b/include/asm-arm/arch-clps711x/memory.h index 1e884d9e4167..dd1ae0acb55e 100644 --- a/include/asm-arm/arch-clps711x/memory.h +++ b/include/asm-arm/arch-clps711x/memory.h @@ -120,9 +120,10 @@ (((unsigned long)(addr) - PAGE_OFFSET) >> NODE_MAX_MEM_SHIFT) /* - * Given a physical address, convert it to a node id. + * Given a page frame number, convert it to a node id. */ -#define PHYS_TO_NID(addr) KVADDR_TO_NID(__phys_to_virt(addr)) +#define PFN_TO_NID(pfn) \ + (((pfn) - PHYS_PFN_OFFSET) >> (NODE_MAX_MEM_SHIFT - PAGE_SHIFT)) /* * Given a kaddr, ADDR_TO_MAPBASE finds the owning node of the memory @@ -131,30 +132,15 @@ #define ADDR_TO_MAPBASE(kaddr) \ NODE_MEM_MAP(KVADDR_TO_NID((unsigned long)(kaddr))) +#define PFN_TO_MAPBASE(pfn) NODE_MEM_MAP(PFN_TO_NID(pfn)) + /* * Given a kaddr, LOCAL_MAR_NR finds the owning node of the memory * and returns the index corresponding to the appropriate page in the * node's mem_map. */ -#define LOCAL_MAP_NR(kaddr) \ - (((unsigned long)(kaddr)-LOCAL_BASE_ADDR((kaddr))) >> PAGE_SHIFT) - -/* - * Given a kaddr, virt_to_page returns a pointer to the corresponding - * mem_map entry. - */ -#define virt_to_page(kaddr) \ - (ADDR_TO_MAPBASE(kaddr) + LOCAL_MAP_NR(kaddr)) - -/* - * VALID_PAGE returns a non-zero value if given page pointer is valid. - * This assumes all node's mem_maps are stored within the node they refer to. - */ -#define VALID_PAGE(page) \ -({ unsigned int node = KVADDR_TO_NID(page); \ - ( (node < NR_NODES) && \ - ((unsigned)((page) - NODE_MEM_MAP(node)) < NODE_DATA(node)->node_size) ); \ -}) +#define LOCAL_MAP_NR(addr) \ + (((unsigned long)(addr) & (NODE_MAX_MEM_SIZE - 1)) >> PAGE_SHIFT) /* * The PS7211 allows up to 256MB max per DRAM bank, but the EDB7211 @@ -167,40 +153,13 @@ #define NODE_MAX_MEM_SHIFT 24 #define NODE_MAX_MEM_SIZE (1<<NODE_MAX_MEM_SHIFT) -/* - * Given a mem_map_t, LOCAL_MAP_BASE finds the owning node for the - * physical page and returns the kaddr for the mem_map of that node. - */ -#define LOCAL_MAP_BASE(page) \ - NODE_MEM_MAP(KVADDR_TO_NID((unsigned long)(page))) - -/* - * Given a kaddr, LOCAL_BASE_ADDR finds the owning node of the memory - * and returns the kaddr corresponding to first physical page in the - * node's mem_map. - */ -#define LOCAL_BASE_ADDR(kaddr) ((unsigned long)(kaddr) & ~(NODE_MAX_MEM_SIZE-1)) - -/* - * With discontigmem, the conceptual mem_map array starts from PAGE_OFFSET. - * Given a kaddr, MAP_NR returns the appropriate global mem_map index so - * it matches the corresponding node's local mem_map. - */ -#define MAP_NR(kaddr) (LOCAL_MAP_NR((kaddr)) + \ - (((unsigned long)ADDR_TO_MAPBASE((kaddr)) - PAGE_OFFSET) / \ - sizeof(mem_map_t))) - #else -#define PHYS_TO_NID(addr) (0) +#define PFN_TO_NID(pfn) (0) #endif /* CONFIG_DISCONTIGMEM */ #endif /* CONFIG_ARCH_EDB7211 */ -#ifndef PHYS_TO_NID -#define PHYS_TO_NID(addr) (0) -#endif - #endif diff --git a/include/asm-arm/arch-integrator/time.h b/include/asm-arm/arch-integrator/time.h index 6ed75675387e..cb6f749f2db8 100644 --- a/include/asm-arm/arch-integrator/time.h +++ b/include/asm-arm/arch-integrator/time.h @@ -129,7 +129,6 @@ void __init time_init(void) timer2->TimerControl = 0; timer1->TimerLoad = TIMER_RELOAD; - timer1->TimerValue = TIMER_RELOAD; timer1->TimerControl = TIMER_CTRL | 0x40; /* periodic */ /* diff --git a/include/asm-arm/arch-sa1100/SA-1100.h b/include/asm-arm/arch-sa1100/SA-1100.h index 22d38d4f9276..62aaf04a3906 100644 --- a/include/asm-arm/arch-sa1100/SA-1100.h +++ b/include/asm-arm/arch-sa1100/SA-1100.h @@ -22,6 +22,16 @@ #include "bitfield.h" +/* + * SA1100 CS line to physical address + */ + +#define SA1100_CS0_PHYS 0x00000000 +#define SA1100_CS1_PHYS 0x08000000 +#define SA1100_CS2_PHYS 0x10000000 +#define SA1100_CS3_PHYS 0x18000000 +#define SA1100_CS4_PHYS 0x40000000 +#define SA1100_CS5_PHYS 0x48000000 /* * Personal Computer Memory Card International Association (PCMCIA) sockets diff --git a/include/asm-arm/arch-sa1100/hardware.h b/include/asm-arm/arch-sa1100/hardware.h index af9ce59b8ab2..f12446570ffd 100644 --- a/include/asm-arm/arch-sa1100/hardware.h +++ b/include/asm-arm/arch-sa1100/hardware.h @@ -24,15 +24,6 @@ /* - * Those are statically mapped PCMCIA IO space for designs using it as a - * generic IO bus, typically with ISA parts, hardwired IDE interfaces, etc. - * The actual PCMCIA code is mapping required IO region at run time. - */ -#define PCMCIA_IO_0_BASE 0xf6000000 -#define PCMCIA_IO_1_BASE 0xf7000000 - - -/* * We requires absolute addresses i.e. (PCMCIA_IO_0_BASE + 0x3f8) for * in*()/out*() macros to be usable for all cases. */ diff --git a/include/asm-arm/arch-sa1100/irqs.h b/include/asm-arm/arch-sa1100/irqs.h index d8caa5c836b4..d4ba9b21f404 100644 --- a/include/asm-arm/arch-sa1100/irqs.h +++ b/include/asm-arm/arch-sa1100/irqs.h @@ -61,11 +61,6 @@ #define IRQ_GPIO27 48 /* - * To get the GPIO number from an IRQ number - */ -#define GPIO_11_27_IRQ(i) ((i) - 21) - -/* * The next 16 interrupts are for board specific purposes. Since * the kernel can only run on one machine at a time, we can re-use * these. If you need more, increase IRQ_BOARD_END, but keep it diff --git a/include/asm-arm/arch-sa1100/memory.h b/include/asm-arm/arch-sa1100/memory.h index 192d44243330..1f7c463b32b1 100644 --- a/include/asm-arm/arch-sa1100/memory.h +++ b/include/asm-arm/arch-sa1100/memory.h @@ -79,49 +79,36 @@ /* * Given a kernel address, find the home node of the underlying memory. */ -#define KVADDR_TO_NID(addr) \ - (((unsigned long)(addr) - 0xc0000000) >> 27) +#define KVADDR_TO_NID(addr) (((unsigned long)(addr) - PAGE_OFFSET) >> 27) /* - * Given a physical address, convert it to a node id. + * Given a page frame number, convert it to a node id. */ -#define PHYS_TO_NID(addr) KVADDR_TO_NID(__phys_to_virt(addr)) +#define PFN_TO_NID(pfn) (((pfn) - PHYS_PFN_OFFSET) >> (27 - PAGE_SHIFT)) /* * Given a kaddr, ADDR_TO_MAPBASE finds the owning node of the memory - * and returns the mem_map of that node. + * and return the mem_map of that node. */ -#define ADDR_TO_MAPBASE(kaddr) \ - NODE_MEM_MAP(KVADDR_TO_NID((unsigned long)(kaddr))) +#define ADDR_TO_MAPBASE(kaddr) NODE_MEM_MAP(KVADDR_TO_NID(kaddr)) /* - * Given a kaddr, LOCAL_MEM_MAP finds the owning node of the memory - * and returns the index corresponding to the appropriate page in the - * node's mem_map. + * Given a page frame number, find the owning node of the memory + * and return the mem_map of that node. */ -#define LOCAL_MAP_NR(kvaddr) \ - (((unsigned long)(kvaddr) & 0x07ffffff) >> PAGE_SHIFT) +#define PFN_TO_MAPBASE(pfn) NODE_MEM_MAP(PFN_TO_NID(pfn)) /* - * Given a kaddr, virt_to_page returns a pointer to the corresponding - * mem_map entry. - */ -#define virt_to_page(kaddr) \ - (ADDR_TO_MAPBASE(kaddr) + LOCAL_MAP_NR(kaddr)) - -/* - * VALID_PAGE returns a non-zero value if given page pointer is valid. - * This assumes all node's mem_maps are stored within the node they refer to. + * Given a kaddr, LOCAL_MEM_MAP finds the owning node of the memory + * and returns the index corresponding to the appropriate page in the + * node's mem_map. */ -#define VALID_PAGE(page) \ -({ unsigned int node = KVADDR_TO_NID(page); \ - ( (node < NR_NODES) && \ - ((unsigned)((page) - NODE_MEM_MAP(node)) < NODE_DATA(node)->node_size) ); \ -}) +#define LOCAL_MAP_NR(addr) \ + (((unsigned long)(addr) & 0x07ffffff) >> PAGE_SHIFT) #else -#define PHYS_TO_NID(addr) (0) +#define PFN_TO_NID(addr) (0) #endif diff --git a/include/asm-arm/glue.h b/include/asm-arm/glue.h index 9cbfa2d6605c..d0c0c121aa28 100644 --- a/include/asm-arm/glue.h +++ b/include/asm-arm/glue.h @@ -158,7 +158,8 @@ * * We have the following to choose from: * v3 - ARMv3 - * v4 - ARMv4 without minicache + * v4wt - ARMv4 with writethrough cache, without minicache + * v4wb - ARMv4 with writeback cache, without minicache * v4_mc - ARMv4 with minicache * v5te_mc - ARMv5TE with minicache */ @@ -173,13 +174,21 @@ # endif #endif -#if defined(CONFIG_CPU_ARM720T) || defined(CONFIG_CPU_ARM920T) || \ - defined(CONFIG_CPU_ARM922T) || defined(CONFIG_CPU_ARM926T) || \ - defined(CONFIG_CPU_SA110) || defined(CONFIG_CPU_ARM1020) +#if defined(CONFIG_CPU_ARM720T) +# ifdef _USER +# define MULTI_USER 1 +# else +# define _USER v4wt +# endif +#endif + +#if defined(CONFIG_CPU_ARM920T) || defined(CONFIG_CPU_ARM922T) || \ + defined(CONFIG_CPU_ARM926T) || defined(CONFIG_CPU_SA110) || \ + defined(CONFIG_CPU_ARM1020) # ifdef _USER # define MULTI_USER 1 # else -# define _USER v4 +# define _USER v4wb # endif #endif diff --git a/include/asm-arm/io.h b/include/asm-arm/io.h index d12af77640aa..21ca5ae0b847 100644 --- a/include/asm-arm/io.h +++ b/include/asm-arm/io.h @@ -270,24 +270,6 @@ extern void consistent_free(void *vaddr, size_t size, dma_addr_t handle); extern void consistent_sync(void *vaddr, size_t size, int rw); /* - * Change "struct page" to physical address. - */ -#ifdef CONFIG_DISCONTIGMEM -#define page_to_phys(page) \ - ((((page) - page_zone(page)->zone_mem_map) << PAGE_SHIFT) \ - + page_zone(page)->zone_start_paddr) -#else -#define page_to_phys(page) \ - (PHYS_OFFSET + (((page) - mem_map) << PAGE_SHIFT)) -#endif - -/* - * We should really eliminate virt_to_bus() here - it's depreciated. - */ -#define page_to_bus(page) \ - (virt_to_bus(page_address(page))) - -/* * can the hardware map this into one segment or not, given no other * constraints. */ diff --git a/include/asm-arm/memory.h b/include/asm-arm/memory.h index c9f63415e223..865f1d686a30 100644 --- a/include/asm-arm/memory.h +++ b/include/asm-arm/memory.h @@ -1,22 +1,34 @@ /* * linux/include/asm-arm/memory.h * - * Copyright (C) 2000 Russell King + * Copyright (C) 2000-2002 Russell King * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * Note: this file should not be included by non-asm/.h files - * - * Modifications: */ #ifndef __ASM_ARM_MEMORY_H #define __ASM_ARM_MEMORY_H +#include <linux/config.h> #include <asm/arch/memory.h> -static inline unsigned long virt_to_phys(volatile void *x) +/* + * PFNs are used to describe any physical page; this means + * PFN 0 == physical address 0. + * + * This is the PFN of the first RAM page in the kernel + * direct-mapped view. We assume this is the first page + * of RAM in the mem_map as well. + */ +#define PHYS_PFN_OFFSET (PHYS_OFFSET >> PAGE_SHIFT) + +/* + * These are *only* valid on the kernel direct mapped RAM memory. + */ +static inline unsigned long virt_to_phys(void *x) { return __virt_to_phys((unsigned long)(x)); } @@ -26,10 +38,77 @@ static inline void *phys_to_virt(unsigned long x) return (void *)(__phys_to_virt((unsigned long)(x))); } +#define __pa(x) __virt_to_phys((unsigned long)(x)) +#define __va(x) ((void *)__phys_to_virt((unsigned long)(x))) + /* * Virtual <-> DMA view memory address translations + * Again, these are *only* valid on the kernel direct mapped RAM + * memory. Use of these is *depreciated*. */ #define virt_to_bus(x) (__virt_to_bus((unsigned long)(x))) #define bus_to_virt(x) ((void *)(__bus_to_virt((unsigned long)(x)))) +/* + * Conversion between a struct page and a physical address. + * + * Note: when converting an unknown physical address to a + * struct page, the resulting pointer must be validated + * using VALID_PAGE(). It must return an invalid struct page + * for any physical address not corresponding to a system + * RAM address. + * + * page_to_pfn(page) convert a struct page * to a PFN number + * pfn_to_page(pfn) convert a _valid_ PFN number to struct page * + * pfn_valid(pfn) indicates whether a PFN number is valid + * + * virt_to_page(k) convert a _valid_ virtual address to struct page * + * virt_addr_valid(k) indicates whether a virtual address is valid + */ +#ifndef CONFIG_DISCONTIGMEM + +#define page_to_pfn(page) (((page) - mem_map) + PHYS_PFN_OFFSET) +#define pfn_to_page(pfn) ((mem_map + (pfn)) - PHYS_PFN_OFFSET) +#define pfn_valid(pfn) ((pfn) >= PHYS_PFN_OFFSET && (pfn) < max_mapnr) + +#define virt_to_page(kaddr) (pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)) +#define virt_addr_valid(kaddr) ((kaddr) >= PAGE_OFFSET && (kaddr) < (unsigned long)high_memory) + +#else +/* + * This is more complex. We have a set of mem_map arrays spread + * around in memory. + */ +#define page_to_pfn(page) \ + (((page) - page_zone(page)->zone_mem_map) \ + + (page_zone(page)->zone_start_paddr >> PAGE_SHIFT)) + +#define pfn_to_page(pfn) \ + (PFN_TO_MAPBASE(pfn) + LOCAL_MAP_NR((pfn) << PAGE_SHIFT)) + +#define pfn_valid(pfn) (PFN_TO_NID(pfn) < NR_NODES) + +#define virt_to_page(kaddr) \ + (ADDR_TO_MAPBASE(kaddr) + LOCAL_MAP_NR(kaddr)) + +#define virt_addr_valid(kaddr) (KVADDR_TO_NID(kaddr) < NR_NODES) + +/* + * Common discontigmem stuff. + * PHYS_TO_NID is used by the ARM kernel/setup.c + */ +#define PHYS_TO_NID(addr) PFN_TO_NID((addr) >> PAGE_SHIFT) + +#endif + +/* + * For BIO. "will die". Kill me when bio_to_phys() and bvec_to_phys() die. + */ +#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) + +/* + * We should really eliminate virt_to_bus() here - it's depreciated. + */ +#define page_to_bus(page) (virt_to_bus(page_address(page))) + #endif diff --git a/include/asm-arm/page.h b/include/asm-arm/page.h index 56730ced5d2d..6f8afed589ac 100644 --- a/include/asm-arm/page.h +++ b/include/asm-arm/page.h @@ -125,18 +125,9 @@ static inline int get_order(unsigned long size) return order; } -#endif /* !__ASSEMBLY__ */ - -#include <asm/arch/memory.h> - -#define __pa(x) __virt_to_phys((unsigned long)(x)) -#define __va(x) ((void *)__phys_to_virt((unsigned long)(x))) +#include <asm/memory.h> -#ifndef CONFIG_DISCONTIGMEM -#define virt_to_page(kaddr) (mem_map + (__pa(kaddr) >> PAGE_SHIFT) - \ - (PHYS_OFFSET >> PAGE_SHIFT)) -#define VALID_PAGE(page) ((page - mem_map) < max_mapnr) -#endif +#endif /* !__ASSEMBLY__ */ #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) diff --git a/include/asm-arm/pgtable.h b/include/asm-arm/pgtable.h index f01a476df49a..dbbb85bd3995 100644 --- a/include/asm-arm/pgtable.h +++ b/include/asm-arm/pgtable.h @@ -11,7 +11,7 @@ #define _ASMARM_PGTABLE_H #include <linux/config.h> -#include <asm/arch/memory.h> +#include <asm/memory.h> #include <asm/arch/vmalloc.h> /* @@ -79,21 +79,12 @@ extern void __pgd_error(const char *file, int line, unsigned long val); extern struct page *empty_zero_page; #define ZERO_PAGE(vaddr) (empty_zero_page) +#define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT) +#define pfn_pte(pfn,prot) (__pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))) + #define pte_none(pte) (!pte_val(pte)) #define pte_clear(ptep) set_pte((ptep), __pte(0)) - -#ifndef CONFIG_DISCONTIGMEM -#define pte_page(x) (mem_map + (pte_val((x)) >> PAGE_SHIFT) - \ - (PHYS_OFFSET >> PAGE_SHIFT)) -#else -/* - * I'm not happy with this - we needlessly convert a physical address - * to a virtual one, and then immediately back to a physical address, - * which, if __va and __pa are expensive causes twice the expense for - * zero gain. --rmk - */ -#define pte_page(x) (virt_to_page(__va(pte_val((x))))) -#endif +#define pte_page(pte) (pfn_to_page(pte_pfn(pte))) #define pmd_none(pmd) (!pmd_val(pmd)) #define pmd_present(pmd) (pmd_val(pmd)) @@ -107,12 +98,7 @@ extern struct page *empty_zero_page; * Conversion functions: convert a page and protection to a page entry, * and a page entry and page directory to the page they refer to. */ -static inline pte_t mk_pte_phys(unsigned long physpage, pgprot_t pgprot) -{ - return __pte(physpage | pgprot_val(pgprot)); -} - -#define mk_pte(page,pgprot) mk_pte_phys(__pa(page_address(page)), pgprot) +#define mk_pte(page,prot) pfn_pte(page_to_pfn(page),prot) /* * The "pgd_xxx()" functions here are trivial for a folded two-level diff --git a/include/asm-arm/setup.h b/include/asm-arm/setup.h index b9d7ba17645f..1e1002711665 100644 --- a/include/asm-arm/setup.h +++ b/include/asm-arm/setup.h @@ -10,77 +10,12 @@ * Structure passed to kernel to tell it about the * hardware it's running on. See linux/Documentation/arm/Setup * for more info. - * - * NOTE: - * This file contains two ways to pass information from the boot - * loader to the kernel. The old struct param_struct is deprecated, - * but it will be kept in the kernel for 5 years from now - * (2001). This will allow boot loaders to convert to the new struct - * tag way. */ #ifndef __ASMARM_SETUP_H #define __ASMARM_SETUP_H -/* - * Usage: - * - do not go blindly adding fields, add them at the end - * - when adding fields, don't rely on the address until - * a patch from me has been released - * - unused fields should be zero (for future expansion) - * - this structure is relatively short-lived - only - * guaranteed to contain useful data in setup_arch() - */ #define COMMAND_LINE_SIZE 1024 -/* This is the old deprecated way to pass parameters to the kernel */ -struct param_struct { - union { - struct { - unsigned long page_size; /* 0 */ - unsigned long nr_pages; /* 4 */ - unsigned long ramdisk_size; /* 8 */ - unsigned long flags; /* 12 */ -#define FLAG_READONLY 1 -#define FLAG_RDLOAD 4 -#define FLAG_RDPROMPT 8 - unsigned long rootdev; /* 16 */ - unsigned long video_num_cols; /* 20 */ - unsigned long video_num_rows; /* 24 */ - unsigned long video_x; /* 28 */ - unsigned long video_y; /* 32 */ - unsigned long memc_control_reg; /* 36 */ - unsigned char sounddefault; /* 40 */ - unsigned char adfsdrives; /* 41 */ - unsigned char bytes_per_char_h; /* 42 */ - unsigned char bytes_per_char_v; /* 43 */ - unsigned long pages_in_bank[4]; /* 44 */ - unsigned long pages_in_vram; /* 60 */ - unsigned long initrd_start; /* 64 */ - unsigned long initrd_size; /* 68 */ - unsigned long rd_start; /* 72 */ - unsigned long system_rev; /* 76 */ - unsigned long system_serial_low; /* 80 */ - unsigned long system_serial_high; /* 84 */ - unsigned long mem_fclk_21285; /* 88 */ - } s; - char unused[256]; - } u1; - union { - char paths[8][128]; - struct { - unsigned long magic; - char n[1024 - sizeof(unsigned long)]; - } s; - } u2; - char commandline[COMMAND_LINE_SIZE]; -}; - - - -/* - * The new way of passing information: a list of tagged entries - */ - /* The list ends with an ATAG_NONE node. */ #define ATAG_NONE 0x00000000 @@ -131,8 +66,15 @@ struct tag_ramdisk { }; /* describes where the compressed ramdisk image lives */ +/* + * this one accidentally used virtual addresses - as such, + * its depreciated. + */ #define ATAG_INITRD 0x54410005 +/* describes where the compressed ramdisk image lives */ +#define ATAG_INITRD2 0x54420005 + struct tag_initrd { u32 start; /* physical start address */ u32 size; /* size of compressed ramdisk image in bytes */ |
