mirror of
https://github.com/AetherDroid/android_kernel_samsung_on5xelte.git
synced 2025-09-08 09:08:05 -04:00
Fixed MTP to work with TWRP
This commit is contained in:
commit
f6dfaef42e
50820 changed files with 20846062 additions and 0 deletions
135
Documentation/arm/Porting
Normal file
135
Documentation/arm/Porting
Normal file
|
@ -0,0 +1,135 @@
|
|||
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.
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue