summaryrefslogtreecommitdiffstats
path: root/arch/architecture.dox
diff options
context:
space:
mode:
Diffstat (limited to 'arch/architecture.dox')
-rw-r--r--arch/architecture.dox175
1 files changed, 0 insertions, 175 deletions
diff --git a/arch/architecture.dox b/arch/architecture.dox
deleted file mode 100644
index 2d2cf05aa7..0000000000
--- a/arch/architecture.dox
+++ /dev/null
@@ -1,175 +0,0 @@
-/** @page dev_architecture Integrate a new architecture (ARCH)
-
-@section linker_scripts Rules for the generic Linker Script File
-
-Never include an object file by name directly! Linker Script Files defines the
-layout, not the content. Content is defined in objecfiles instead.
-
-Don't rely on the given object file order to create your binary @a barebox! This
-may work, but is not relyable in all cases (and its a very bad style)!
-
-For the special case some layout contraints exists, use specific section
-naming instead. Refer @ref reset_code how to define this specific section.
-
-@section reset_code Bring it up: The Reset Code
-
-The way a CPU wakes up after reset is very specific to its architecture.
-
-For example the ARM architecture starts its reset code at address 0x0000000,
-the x86 architecture at 0x000FFFF0, PowerPC at 0x00000100 or 0xFFFFF100.
-
-So for the special reset code on all architectures it must be located at
-architecture specific locations within the binary @a barebox image.
-
-All reset code uses section ".text_entry" for its localisation within the
-binary @a barebox image. Its up to the linker script file to use this section name
-to find the right place in whatever environment and @a barebox sizes.
-
-@code
- .section ".text_entry","ax"
-@endcode
-
-@section arch_files List of changes
-
- - create a new subdirectory in /arch
-TODO
-
-*/
-
-/** @page dev_cpu Integrate a new CPU (MACH)
-
-Features required for every CPU:
-
- - clocksource
- - CPU reset function
-
-@section time_keeping Time keeping
-
-In @a barebox we are using the clocksource mechanism from the Linux Kernel.
-This makes it fairly easy to add timer functionality for a new board or
-architecture.
-
-Apart from initialization there is only one function to be registerd:
-clocksource_read(). This function returns the current value of a free running
-counter. Other functions like udelay() and get_time_ns() are derived from this
-function. The only thing you have to implement is a clocksource driver and
-to register it at runtime.
-
-@code
-static uint64_t mycpu_clocksource_read(void)
-{
- TODO
-}
-
-static struct clocksource cs = {
- .read = mycpu_clocksource_read,
- .mask = 0xffffffff,
- .shift = 10,
-};
-
-....
- init_clock(&cs);
-....
-@endcode
-
-See arch/arm/mach-imx/clocksource.c for an example. clocksource drivers from
-the Linux Kernel can be used nearly 1:1, except for the register accesses.
-
-Note: For clocksources the __lshrdi3 symbol is needed. You can find the
-function for your architecture in the Linux Kernel or a libc of your choice.
-
-@note @a barebox expects an upward counting counter!
-
-@section reset_function Reset function
-
-TODO
-
-@li @subpage dev_arm_mach
-@li @subpage dev_bf_mach
-@li @subpage dev_mips_mach
-@li @subpage dev_ppc_mach
-@li @subpage dev_x86_mach
-
-*/
-
-/** @page io_access_functions I/O access functions
-
-List of functions to be used for hardware register access (I/O).
-
-@section native_access Native IN/OUT access
-
-@note Native means: It uses the same endianess than the CPU.
-
-@subsection single_native_access Single access of various width
-
-The following functions are intended to be used for a single I/O access.
-
-To read a byte (8 bit) from a specific I/O address:
-@code
-uint8_t readb(unsigned long)
-@endcode
-
-To read a word (16 bit) from a specific I/O address:
-@code
-uint16_t readw(unsigned long)
-@endcode
-
-To read a long word (32 bit) from a specific I/O address:
-@code
-uint32_t readl(unsigned long)
-@endcode
-
-To write a byte (8 bit) into a specific I/O address:
-@code
-void writeb(uint8_t val, unsigned long)
-@endcode
-
-To write a word (16 bit) into a specific I/O address:
-@code
-void writew(uint16_t val, unsigned long)
-@endcode
-
-To write a long word (32 bit) into a specific I/O address:
-@code
-void writel(uint32_t val, unsigned long)
-@endcode
-
-@subsection string_native_access String native access of various width
-
-The following functions are intended to be used for string based I/O access.
-
-To read a string of bytes (8 bit) from one specific I/O address:
-@code
-void readsb(const void __iomem *addr, void *mem_buffer, int byte_count);
-@endcode
-
-To read a string of words (16 bit) from one specific I/O address:
-@code
-void readsw(const void __iomem *addr, void *mem_buffer, int word_count);
-@endcode
-
-To read a string of long words (32 bit) from one specific I/O address:
-@code
-void readsl(const void __iomem *addr, void *mem_buffer, int long_count);
-@endcode
-
-To write a string of bytes (8 bit) to one specific I/O address:
-@code
-void writesb(void __iomem *addr, const void *mem_buffer, int byte_count);
-@endcode
-
-To write a string of words (16 bit) to one specific I/O address:
-@code
-void writesw(void __iomem *addr, const void *mem_buffer, int word_count);
-@endcode
-
-To write a string of long words (32 bit) to one specific I/O address:
-@code
-void writesl(void __iomem *addr, const void *mem_buffer, int long_count);
-@endcode
-
-@section special_access Special IN/OUT access
-
-TBD
-
-*/