Contents of /alx-src/trunk/kernel26-alx/linux/Documentation/arm/Porting
Parent Directory | Revision Log
Revision 628 -
(show annotations)
(download)
Wed Mar 4 10:48:58 2009 UTC (15 years, 2 months ago) by niro
File size: 4488 byte(s)
Wed Mar 4 10:48:58 2009 UTC (15 years, 2 months ago) by niro
File size: 4488 byte(s)
import linux sources based on 2.6.12-alx-r9: -using linux-2.6.12.6 -using 2.6.12-ck6 patch set -using fbsplash-0.9.2-r3 -using vesafb-tng-0.9-rc7 -using squashfs-2.2 -added cddvd-cmdfilter-drop.patch as ck dropped it -added via-epia-dri (cle266) patch -added zd1211-svn-32 wlan driver (http://zd1211.ath.cx/download/) -added debian patches to zd1211 for wep256 etc
1 | Taken from list archive at http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2001-July/004064.html |
2 | |
3 | Initial definitions |
4 | ------------------- |
5 | |
6 | The following symbol definitions rely on you knowing the translation that |
7 | __virt_to_phys() does for your machine. This macro converts the passed |
8 | virtual address to a physical address. Normally, it is simply: |
9 | |
10 | phys = virt - PAGE_OFFSET + PHYS_OFFSET |
11 | |
12 | |
13 | Decompressor Symbols |
14 | -------------------- |
15 | |
16 | ZTEXTADDR |
17 | Start address of decompressor. There's no point in talking about |
18 | virtual or physical addresses here, since the MMU will be off at |
19 | the time when you call the decompressor code. You normally call |
20 | the kernel at this address to start it booting. This doesn't have |
21 | to be located in RAM, it can be in flash or other read-only or |
22 | read-write addressable medium. |
23 | |
24 | ZBSSADDR |
25 | Start address of zero-initialised work area for the decompressor. |
26 | This must be pointing at RAM. The decompressor will zero initialise |
27 | this for you. Again, the MMU will be off. |
28 | |
29 | ZRELADDR |
30 | This is the address where the decompressed kernel will be written, |
31 | and eventually executed. The following constraint must be valid: |
32 | |
33 | __virt_to_phys(TEXTADDR) == ZRELADDR |
34 | |
35 | The initial part of the kernel is carefully coded to be position |
36 | independent. |
37 | |
38 | INITRD_PHYS |
39 | Physical address to place the initial RAM disk. Only relevant if |
40 | you are using the bootpImage stuff (which only works on the old |
41 | struct param_struct). |
42 | |
43 | INITRD_VIRT |
44 | Virtual address of the initial RAM disk. The following constraint |
45 | must be valid: |
46 | |
47 | __virt_to_phys(INITRD_VIRT) == INITRD_PHYS |
48 | |
49 | PARAMS_PHYS |
50 | Physical address of the struct param_struct or tag list, giving the |
51 | kernel various parameters about its execution environment. |
52 | |
53 | |
54 | Kernel Symbols |
55 | -------------- |
56 | |
57 | PHYS_OFFSET |
58 | Physical start address of the first bank of RAM. |
59 | |
60 | PAGE_OFFSET |
61 | Virtual start address of the first bank of RAM. During the kernel |
62 | boot phase, virtual address PAGE_OFFSET will be mapped to physical |
63 | address PHYS_OFFSET, along with any other mappings you supply. |
64 | This should be the same value as TASK_SIZE. |
65 | |
66 | TASK_SIZE |
67 | The maximum size of a user process in bytes. Since user space |
68 | always starts at zero, this is the maximum address that a user |
69 | process can access+1. The user space stack grows down from this |
70 | address. |
71 | |
72 | Any virtual address below TASK_SIZE is deemed to be user process |
73 | area, and therefore managed dynamically on a process by process |
74 | basis by the kernel. I'll call this the user segment. |
75 | |
76 | Anything above TASK_SIZE is common to all processes. I'll call |
77 | this the kernel segment. |
78 | |
79 | (In other words, you can't put IO mappings below TASK_SIZE, and |
80 | hence PAGE_OFFSET). |
81 | |
82 | TEXTADDR |
83 | Virtual start address of kernel, normally PAGE_OFFSET + 0x8000. |
84 | This is where the kernel image ends up. With the latest kernels, |
85 | it must be located at 32768 bytes into a 128MB region. Previous |
86 | kernels placed a restriction of 256MB here. |
87 | |
88 | DATAADDR |
89 | Virtual address for the kernel data segment. Must not be defined |
90 | when using the decompressor. |
91 | |
92 | VMALLOC_START |
93 | VMALLOC_END |
94 | Virtual addresses bounding the vmalloc() area. There must not be |
95 | any static mappings in this area; vmalloc will overwrite them. |
96 | The addresses must also be in the kernel segment (see above). |
97 | Normally, the vmalloc() area starts VMALLOC_OFFSET bytes above the |
98 | last virtual RAM address (found using variable high_memory). |
99 | |
100 | VMALLOC_OFFSET |
101 | Offset normally incorporated into VMALLOC_START to provide a hole |
102 | between virtual RAM and the vmalloc area. We do this to allow |
103 | out of bounds memory accesses (eg, something writing off the end |
104 | of the mapped memory map) to be caught. Normally set to 8MB. |
105 | |
106 | Architecture Specific Macros |
107 | ---------------------------- |
108 | |
109 | BOOT_MEM(pram,pio,vio) |
110 | `pram' specifies the physical start address of RAM. Must always |
111 | be present, and should be the same as PHYS_OFFSET. |
112 | |
113 | `pio' is the physical address of an 8MB region containing IO for |
114 | use with the debugging macros in arch/arm/kernel/debug-armv.S. |
115 | |
116 | `vio' is the virtual address of the 8MB debugging region. |
117 | |
118 | It is expected that the debugging region will be re-initialised |
119 | by the architecture specific code later in the code (via the |
120 | MAPIO function). |
121 | |
122 | BOOT_PARAMS |
123 | Same as, and see PARAMS_PHYS. |
124 | |
125 | FIXUP(func) |
126 | Machine specific fixups, run before memory subsystems have been |
127 | initialised. |
128 | |
129 | MAPIO(func) |
130 | Machine specific function to map IO areas (including the debug |
131 | region above). |
132 | |
133 | INITIRQ(func) |
134 | Machine specific function to initialise interrupts. |
135 |