123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- Taken from list archive at http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2001-July/004064.html
- Initial definitions
- -------------------
- The following symbol definitions rely on you knowing the translation that
- __virt_to_phys() does for your machine. This macro converts the passed
- virtual address to a physical address. Normally, it is simply:
- phys = virt - PAGE_OFFSET + PHYS_OFFSET
- Decompressor Symbols
- --------------------
- ZTEXTADDR
- Start address of decompressor. There's no point in talking about
- virtual or physical addresses here, since the MMU will be off at
- the time when you call the decompressor code. You normally call
- the kernel at this address to start it booting. This doesn't have
- to be located in RAM, it can be in flash or other read-only or
- read-write addressable medium.
- ZBSSADDR
- Start address of zero-initialised work area for the decompressor.
- This must be pointing at RAM. The decompressor will zero initialise
- this for you. Again, the MMU will be off.
- ZRELADDR
- This is the address where the decompressed kernel will be written,
- and eventually executed. The following constraint must be valid:
- __virt_to_phys(TEXTADDR) == ZRELADDR
- The initial part of the kernel is carefully coded to be position
- independent.
- INITRD_PHYS
- Physical address to place the initial RAM disk. Only relevant if
- you are using the bootpImage stuff (which only works on the old
- struct param_struct).
- INITRD_VIRT
- Virtual address of the initial RAM disk. The following constraint
- must be valid:
- __virt_to_phys(INITRD_VIRT) == INITRD_PHYS
- PARAMS_PHYS
- Physical address of the struct param_struct or tag list, giving the
- kernel various parameters about its execution environment.
- Kernel Symbols
- --------------
- PHYS_OFFSET
- Physical start address of the first bank of RAM.
- PAGE_OFFSET
- Virtual start address of the first bank of RAM. During the kernel
- boot phase, virtual address PAGE_OFFSET will be mapped to physical
- address PHYS_OFFSET, along with any other mappings you supply.
- This should be the same value as TASK_SIZE.
- TASK_SIZE
- The maximum size of a user process in bytes. Since user space
- always starts at zero, this is the maximum address that a user
- process can access+1. The user space stack grows down from this
- address.
- Any virtual address below TASK_SIZE is deemed to be user process
- area, and therefore managed dynamically on a process by process
- basis by the kernel. I'll call this the user segment.
- Anything above TASK_SIZE is common to all processes. I'll call
- this the kernel segment.
- (In other words, you can't put IO mappings below TASK_SIZE, and
- hence PAGE_OFFSET).
- TEXTADDR
- Virtual start address of kernel, normally PAGE_OFFSET + 0x8000.
- This is where the kernel image ends up. With the latest kernels,
- it must be located at 32768 bytes into a 128MB region. Previous
- kernels placed a restriction of 256MB here.
- DATAADDR
- Virtual address for the kernel data segment. Must not be defined
- when using the decompressor.
- VMALLOC_START
- VMALLOC_END
- Virtual addresses bounding the vmalloc() area. There must not be
- any static mappings in this area; vmalloc will overwrite them.
- The addresses must also be in the kernel segment (see above).
- Normally, the vmalloc() area starts VMALLOC_OFFSET bytes above the
- last virtual RAM address (found using variable high_memory).
- VMALLOC_OFFSET
- Offset normally incorporated into VMALLOC_START to provide a hole
- between virtual RAM and the vmalloc area. We do this to allow
- out of bounds memory accesses (eg, something writing off the end
- of the mapped memory map) to be caught. Normally set to 8MB.
- Architecture Specific Macros
- ----------------------------
- BOOT_MEM(pram,pio,vio)
- `pram' specifies the physical start address of RAM. Must always
- be present, and should be the same as PHYS_OFFSET.
- `pio' is the physical address of an 8MB region containing IO for
- use with the debugging macros in arch/arm/kernel/debug-armv.S.
- `vio' is the virtual address of the 8MB debugging region.
- It is expected that the debugging region will be re-initialised
- by the architecture specific code later in the code (via the
- MAPIO function).
- BOOT_PARAMS
- Same as, and see PARAMS_PHYS.
- FIXUP(func)
- Machine specific fixups, run before memory subsystems have been
- initialised.
- MAPIO(func)
- Machine specific function to map IO areas (including the debug
- region above).
- INITIRQ(func)
- Machine specific function to initialise interrupts.
|