summaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2018-02-24 16:01:13 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2018-03-01 09:30:57 +0100
commitff612b866f301686fc490d076a138eaa65d79d4e (patch)
tree691f2fcbfabec8f9c11e66ec8f38bad0832fc333 /arch/x86
parent1eddb0d3821d7bb368fa6b092b980b89fc47db28 (diff)
downloadbarebox-ff612b866f301686fc490d076a138eaa65d79d4e.tar.gz
ratp: implement generic command support
The RATP implementation now allows executing generic commands with a binary interface: binary requests are received and binary responses are returned. Each command can define its own RATP request contents (e.g. to specify command-specific options) as well as its own RATP response contents (if any data is to be returned). Each command is associated with a pair of numeric unique request and response IDs, and for easy reference these IDs are maintained in the common ratp_bb header. Modules may override generic implemented commands or include their own new ones (as long as the numeric IDs introduced are unique). Signed-off-by: Aleksander Morgado <aleksander@aleksander.es> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/lib/barebox.lds.S7
-rw-r--r--arch/x86/mach-efi/elf_ia32_efi.lds.S5
-rw-r--r--arch/x86/mach-efi/elf_x86_64_efi.lds.S5
3 files changed, 17 insertions, 0 deletions
diff --git a/arch/x86/lib/barebox.lds.S b/arch/x86/lib/barebox.lds.S
index 23d7546..6ee9342 100644
--- a/arch/x86/lib/barebox.lds.S
+++ b/arch/x86/lib/barebox.lds.S
@@ -171,6 +171,13 @@ SECTIONS
. = ALIGN(4);
} > barebox
+ .barebox_ratp_cmd : AT ( LOADADDR(.got) + SIZEOF (.got) ) {
+ __barebox_ratp_cmd_start = .;
+ BAREBOX_RATP_CMDS
+ __barebox_ratp_cmd_end = .;
+ . = ALIGN(4);
+ } > barebox
+
.barebox_magicvars : AT ( LOADADDR(.barebox_cmd) + SIZEOF (.barebox_cmd) ) {
__barebox_magicvar_start = .;
BAREBOX_MAGICVARS
diff --git a/arch/x86/mach-efi/elf_ia32_efi.lds.S b/arch/x86/mach-efi/elf_ia32_efi.lds.S
index 69f43f5..9477aa7 100644
--- a/arch/x86/mach-efi/elf_ia32_efi.lds.S
+++ b/arch/x86/mach-efi/elf_ia32_efi.lds.S
@@ -70,6 +70,11 @@ SECTIONS
__barebox_cmd : { BAREBOX_CMDS }
__barebox_cmd_end = .;
+ . = ALIGN(64);
+ __barebox_ratp_cmd_start = .;
+ __barebox_ratp_cmd : { BAREBOX_RATP_CMDS }
+ __barebox_ratp_cmd_end = .;
+
. = ALIGN(4096);
.dynamic : { *(.dynamic) }
. = ALIGN(4096);
diff --git a/arch/x86/mach-efi/elf_x86_64_efi.lds.S b/arch/x86/mach-efi/elf_x86_64_efi.lds.S
index 93d34d1..90b6b9f 100644
--- a/arch/x86/mach-efi/elf_x86_64_efi.lds.S
+++ b/arch/x86/mach-efi/elf_x86_64_efi.lds.S
@@ -72,6 +72,11 @@ SECTIONS
__barebox_cmd : { BAREBOX_CMDS }
__barebox_cmd_end = .;
+ . = ALIGN(64);
+ __barebox_ratp_cmd_start = .;
+ __barebox_ratp_cmd : { BAREBOX_RATP_CMDS }
+ __barebox_ratp_cmd_end = .;
+
. = ALIGN(4096);
.dynamic : { *(.dynamic) }
. = ALIGN(4096);