barebox/arch/arm/include/asm/barebox-arm.h
Sascha Hauer 2078438662 Add multi images support
This adds the make infrastructure to build multiple SoC or
board specific images from a single barebox binary.

The basic idea is that we no longer have a single pbl, but instead
multiple pbls, one per image if necessary. Each pbl is defined
by its entry function so that each pbl can do exactly what a given
board needs. Additionally the pbls together with a self extracting
barebox binary can be encapsulated in specific image formats.

squashed in build fixes from Lucas Stach for make version >= 3.82:

Split Multimage Makefile rule in explicit and implicit parts

Fixes build with make version >=3.82

Frome the make 3.82 NEWS file:
* WARNING: Backward-incompatibility!
  In previous versions of make it was acceptable to list one or more explicit
  targets followed by one or more pattern targets in the same rule and it
  worked "as expected".  However, this was not documented as acceptable and if
  you listed any explicit targets AFTER the pattern targets, the entire rule
  would be mis-parsed.  This release removes this ability completely: make
  will generate an error message if you mix explicit and pattern targets in
  the same rule.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Lucas Stach <dev@lynxeye.de>
2013-07-01 10:13:12 +02:00

87 lines
2.4 KiB
C

/*
* (C) Copyright 2002
* Sysgo Real-Time Solutions, GmbH <www.elinos.com>
* Marius Groeger <mgroeger@sysgo.de>
*
* (C) Copyright 2002
* Sysgo Real-Time Solutions, GmbH <www.elinos.com>
* Alex Zuepke <azu@sysgo.de>
*
* See file CREDITS for list of people who contributed to this
* project.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef _BAREBOX_ARM_H_
#define _BAREBOX_ARM_H_
#include <sizes.h>
#include <asm-generic/memory_layout.h>
/* cpu/.../cpu.c */
int cleanup_before_linux(void);
/* arch/<arch>board(s)/.../... */
int board_init(void);
int dram_init (void);
extern char __exceptions_start[], __exceptions_stop[];
void board_init_lowlevel(void);
uint32_t get_runtime_offset(void);
void setup_c(void);
void relocate_to_current_adr(void);
void relocate_to_adr(unsigned long target);
void __noreturn barebox_arm_entry(uint32_t membase, uint32_t memsize, uint32_t boarddata);
unsigned long barebox_arm_boarddata(void);
#if defined(CONFIG_RELOCATABLE) && defined(CONFIG_ARM_EXCEPTIONS)
void arm_fixup_vectors(void);
#else
static inline void arm_fixup_vectors(void)
{
}
#endif
void *barebox_arm_boot_dtb(void);
/*
* For relocatable binaries find a suitable start address for the
* relocated binary. Beginning at the memory end substract the reserved
* space and round down a bit at the end. This is used by the pbl to
* extract the image to a suitable place so that the uncompressed image
* does not have to copy itself to another place. Also it's used by
* the uncompressed image to relocate itself to the same place.
*/
static inline unsigned long arm_barebox_image_place(unsigned long endmem)
{
endmem -= STACK_SIZE;
endmem -= SZ_32K; /* ttb */
endmem -= SZ_128K; /* early malloc */
endmem -= SZ_1M; /* place for barebox image */
/*
* round down to make translating the objdump easier
*/
endmem &= ~(SZ_1M - 1);
return endmem;
}
#define ENTRY_FUNCTION(name) \
void __naked __section(.text_head_entry_##name) \
name
#endif /* _BAREBOX_ARM_H_ */