Re: [PATCH 3/3] doc: global data pointer

2020-09-22 Thread Daniel Schwierzeck
Am Samstag, den 19.09.2020, 18:03 +0200 schrieb Heinrich Schuchardt:
> Add the description of the global data pointer to the generated HTML
> documentation.
> 
> Signed-off-by: Heinrich Schuchardt 
> ---
>  doc/develop/global_data.rst | 53 +
>  doc/develop/index.rst   |  1 +
>  2 files changed, 54 insertions(+)
>  create mode 100644 doc/develop/global_data.rst
> 
> diff --git a/doc/develop/global_data.rst b/doc/develop/global_data.rst
> new file mode 100644
> index 00..9e7c8a24da
> --- /dev/null
> +++ b/doc/develop/global_data.rst
> @@ -0,0 +1,53 @@
> +.. SPDX-License-Identifier: GPL-2.0+
> +
> +Global data
> +===
> +
> +Globally required fields are held in the global data structure. A pointer to 
> the
> +structure is available as symbol gd. The symbol is made available by the 
> macro
> +%DECLARE_GLOBAL_DATA_PTR.
> +
> +Register pointing to global data
> +
> +
> +On most architectures the global data pointer is stored in a register.
> +
> +++--+
> +| ARC| r25  |
> +++--+
> +| ARM 32bit  | r9   |
> +++--+
> +| ARM 64bit  | x18  |
> +++--+
> +| M68000 | d7   |
> +++--+
> +| MicroBlaze | r31  |
> +++--+
> +| NDS32  | r10  |
> +++--+
> +| Nios II| gp   |
> +++--+
> +| PowerPC| r2   |
> +++--+
> +| RISC-V | gp (x3)  |
> +++--+
> +| SuperH | r13  |
> +++--+

if you want to add MIPS to the list, the register is: $26 (k0)

> +
> +The sandbox, x86, and Xtensa are notable exceptions.
> +
> +Clang for ARM does not support assigning a global register. When using Clang
> +gd is defined as an inline function using assembly code. This adds a few 
> bytes
> +to the code size.
> +
> +Binaries called by U-Boot are not aware of the register usage and will not
> +conserve gd. UEFI binaries call the API provided by U-Boot and may return to
> +U-Boot. The value of gd has to be saved every time U-Boot is left and 
> restored
> +whenever U-Boot is reentered. This is also relevant for the implementation of
> +function tracing. For setting the value of gd function set_gd() can be used.
> +
> +Global data structure
> +-
> +
> +.. kernel-doc:: include/asm-generic/global_data.h
> +   :internal:
> diff --git a/doc/develop/index.rst b/doc/develop/index.rst
> index 98a95ad434..89e80eab94 100644
> --- a/doc/develop/index.rst
> +++ b/doc/develop/index.rst
> @@ -9,4 +9,5 @@ Develop U-Boot
> 
> coccinelle
> crash_dumps
> +   global_data
> logging
> --
> 2.28.0
> 
-- 
- Daniel



Re: [PATCH 3/3] doc: global data pointer

2020-09-22 Thread Simon Glass
On Sat, 19 Sep 2020 at 10:10, Heinrich Schuchardt  wrote:
>
> Add the description of the global data pointer to the generated HTML
> documentation.
>
> Signed-off-by: Heinrich Schuchardt 
> ---
>  doc/develop/global_data.rst | 53 +
>  doc/develop/index.rst   |  1 +
>  2 files changed, 54 insertions(+)
>  create mode 100644 doc/develop/global_data.rst
>

Reviewed-by: Simon Glass 


[PATCH 3/3] doc: global data pointer

2020-09-19 Thread Heinrich Schuchardt
Add the description of the global data pointer to the generated HTML
documentation.

Signed-off-by: Heinrich Schuchardt 
---
 doc/develop/global_data.rst | 53 +
 doc/develop/index.rst   |  1 +
 2 files changed, 54 insertions(+)
 create mode 100644 doc/develop/global_data.rst

diff --git a/doc/develop/global_data.rst b/doc/develop/global_data.rst
new file mode 100644
index 00..9e7c8a24da
--- /dev/null
+++ b/doc/develop/global_data.rst
@@ -0,0 +1,53 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+Global data
+===
+
+Globally required fields are held in the global data structure. A pointer to 
the
+structure is available as symbol gd. The symbol is made available by the macro
+%DECLARE_GLOBAL_DATA_PTR.
+
+Register pointing to global data
+
+
+On most architectures the global data pointer is stored in a register.
+
+++--+
+| ARC| r25  |
+++--+
+| ARM 32bit  | r9   |
+++--+
+| ARM 64bit  | x18  |
+++--+
+| M68000 | d7   |
+++--+
+| MicroBlaze | r31  |
+++--+
+| NDS32  | r10  |
+++--+
+| Nios II| gp   |
+++--+
+| PowerPC| r2   |
+++--+
+| RISC-V | gp (x3)  |
+++--+
+| SuperH | r13  |
+++--+
+
+The sandbox, x86, and Xtensa are notable exceptions.
+
+Clang for ARM does not support assigning a global register. When using Clang
+gd is defined as an inline function using assembly code. This adds a few bytes
+to the code size.
+
+Binaries called by U-Boot are not aware of the register usage and will not
+conserve gd. UEFI binaries call the API provided by U-Boot and may return to
+U-Boot. The value of gd has to be saved every time U-Boot is left and restored
+whenever U-Boot is reentered. This is also relevant for the implementation of
+function tracing. For setting the value of gd function set_gd() can be used.
+
+Global data structure
+-
+
+.. kernel-doc:: include/asm-generic/global_data.h
+   :internal:
diff --git a/doc/develop/index.rst b/doc/develop/index.rst
index 98a95ad434..89e80eab94 100644
--- a/doc/develop/index.rst
+++ b/doc/develop/index.rst
@@ -9,4 +9,5 @@ Develop U-Boot

coccinelle
crash_dumps
+   global_data
logging
--
2.28.0