summaryrefslogtreecommitdiffstats
path: root/bsps/arm/shared/start/start.S (unfollow)
Commit message (Collapse)AuthorFilesLines
2023-12-06bsps/arm: BSP_START_VECTOR_ADDRESS_TABLE_ALIGNMENTSebastian Huber1-0/+4
Add the BSP option BSP_START_VECTOR_ADDRESS_TABLE_ALIGNMENT to optionally define an alignment of the vector address table begin.
2023-05-20Update company nameSebastian Huber1-1/+1
The embedded brains GmbH & Co. KG is the legal successor of embedded brains GmbH.
2023-03-17bsps/arm: Fix wordingSebastian Huber1-1/+1
2022-09-22bsps/arm: Mark functions in start.SSebastian Huber1-0/+2
Add the function type to _start() and bsp_start_hook_0_done() so that the linker can generate ARM/Thumb interworking code. Update #4202.
2022-09-22bsps/arm: Add comment about banked FIQ registersSebastian Huber1-0/+1
2022-03-10bsps/arm/: Scripted embedded brains header file clean upJoel Sherrill1-6/+0
Updates #4625.
2021-08-12bsps/arm: More robust SMP startSebastian Huber1-2/+14
Do not continue execution on processors which are not configured to prevent the use of arbitrary memory for the initialization stack.
2021-07-09bsps/arm: Fix SMP startSebastian Huber1-0/+6
Skip the data cache initialization if we are a secondary processor. The bug was introduced by e164df5e33608576443b4cd5923a9046358ee773 and did not show up in tests using Qemu since the data cache behaviour is not emulated.
2021-07-07bsps/arm: Add start up support for ARMv6 RPi ModelsPranav Dangi1-1/+7
2021-06-24bsps/irq: Use BSP_INTERRUPT_VECTOR_COUNTSebastian Huber1-1/+1
Use BSP_INTERRUPT_VECTOR_COUNT instead of BSP_INTERRUPT_VECTOR_MAX. Update #3269.
2021-04-21bsps/arm: Set MSP in ARMv7-M start codeSebastian Huber1-0/+8
Set the Main Stack Pointer (MSP) to the ISR stack area end just in case we run using the Process Stack Pointer (PSP). This helps if applications are started by a boot loader.
2020-12-23bsps/arm: Invalidate TLB in start.SSebastian Huber1-0/+9
Update #4202.
2020-12-23bsps/arm: Clear SCTLR[M, I, A, C] in start.SSebastian Huber1-2/+35
Initialize the data and unified cache levels. Invalidate the instruction cache levels. Update #4202.
2020-12-23bsps/arm: Remove optional start hook argumentsSebastian Huber1-37/+26
The start hook arguments are not used by a BSP. Removing them avoids the need for a stack during the very early system initialization. Update #4202.
2020-12-23bsps/arm: Invalidate branch predictors earlierSebastian Huber1-0/+11
Make sure the branch predictors are invalidated before the first branch is executed. Update #4202.
2020-12-23bsps/arm: Set VBAR in start.SSebastian Huber1-1/+27
Set the VBAR to the vector table in the start section before bsp_start_hook_0() is called to earlier handle exceptions in RTEMS. Set the VBAR to the normal vector table in start.S for the main processor. Secondary processors set it in bsp_start_hook_0(). Update #4202.
2020-04-03arm: ARMv7-M statically initialized vector tableSebastian Huber1-5/+5
Statically initialize the ARMv7-M vector table to allow a placement in ROM with read-only MPU settings. Change licence to BSD-2-Clause in some files.
2019-12-19bsps/arm: Export bsp_start_hook_0_doneSebastian Huber1-5/+8
Close #3789.
2019-12-05bsps/arm: Add zImage boot headerJeff Kubascik1-0/+11
Xen currently only supports the zImage loader for 32 bit guests on ARM targets.
2019-07-26bsps/arm: Move HYP to SVC change to start.SSebastian Huber1-2/+40
This fixes the corruption of r3 by the call to bsp_start_arm_drop_hyp_mode(). Moving the code makes it easier to review changes in start.S. Close #3773.
2019-07-26bsps/arm: Move register init to start.SSebastian Huber1-4/+55
This makes it easier to review changes in start.S. Update #3773.
2019-07-26bsps/arm: Remove register init for ARMv7-MSebastian Huber1-12/+1
There are no known ARMv7-M chips with a dual lockstep mode. Update #3773.
2019-02-18bsps/arm: Move device tree copySebastian Huber1-23/+24
Move device tree copy operation after the mode initialization so that bsp_fdt_copy() uses the initialization stack and not the stack provided up by the boot loader.
2018-11-21bsps/arm: Avoid short range branch in start.SSebastian Huber1-14/+13
2018-11-21bsps/arm: Use local labels in start.SSebastian Huber1-44/+40
2018-11-21bsps/arm: Simplify start.SSebastian Huber1-12/+0
The boot_card() function does not return.
2018-11-08score: Rename interrupt stack symbolsSebastian Huber1-4/+4
Rename * _Configuration_Interrupt_stack_area_begin in _ISR_Stack_area_begin, * _Configuration_Interrupt_stack_area_end in _ISR_Stack_area_end, and * _Configuration_Interrupt_stack_size in _ISR_Stack_size. Move definitions to <rtems/score/isr.h>. The new names are considerable shorter and in the right namespace. Update #3459.
2018-06-27Rework initialization and interrupt stack supportSebastian Huber1-83/+46
Statically initialize the interrupt stack area (_Configuration_Interrupt_stack_area_begin, _Configuration_Interrupt_stack_area_end, and _Configuration_Interrupt_stack_size) via <rtems/confdefs.h>. Place the interrupt stack area in a special section ".rtemsstack.interrupt". Let BSPs define the optimal placement of this section in their linker command files (e.g. in a fast on-chip memory). This change makes makes the CPU_HAS_SOFTWARE_INTERRUPT_STACK and CPU_HAS_HARDWARE_INTERRUPT_STACK CPU port defines superfluous, since the low level initialization code has all information available via global symbols. This change makes the CPU_ALLOCATE_INTERRUPT_STACK CPU port define superfluous, since the interrupt stacks are allocated by confdefs.h for all architectures. There is no need for BSP-specific linker command file magic (except the section placement), see previous ARM linker command file as a bad example. Remove _CPU_Install_interrupt_stack(). Initialize the hardware interrupt stack in _CPU_Initialize() if necessary (e.g. m68k_install_interrupt_stack()). The optional _CPU_Interrupt_stack_setup() is still useful to customize the registration of the interrupt stack area in the per-CPU information. The initialization stack can reuse the interrupt stack, since * interrupts are disabled during the sequential system initialization, and * the boot_card() function does not return. This stack resuse saves memory. Changes per architecture: arm: * Mostly replace the linker symbol based configuration of stacks with the standard <rtems/confdefs.h> configuration via CONFIGURE_INTERRUPT_STACK_SIZE. The size of the FIQ, ABT and UND mode stack is still defined via linker symbols. These modes are rarely used in applications and the default values provided by the BSP should be sufficient in most cases. * Remove the bsp_processor_count linker symbol hack used for the SMP support. This is possible since the interrupt stack area is now allocated by the linker and not allocated from the heap. This makes some configure.ac stuff obsolete. Remove the now superfluous BSP variants altcycv_devkit_smp and realview_pbx_a9_qemu_smp. bfin: * Remove unused magic linker command file allocation of initialization stack. Maybe a previous linker command file copy and paste problem? In the start.S the initialization stack is set to a hard coded value. lm32, m32c, mips, nios2, riscv, sh, v850: * Remove magic linker command file allocation of initialization stack. Reuse interrupt stack for initialization stack. m68k: * Remove magic linker command file allocation of initialization stack. Reuse interrupt stack for initialization stack. powerpc: * Remove magic linker command file allocation of initialization stack. Reuse interrupt stack for initialization stack. * Used dedicated memory region (REGION_RTEMSSTACK) for the interrupt stack on BSPs using the shared linkcmds.base (replacement for REGION_RWEXTRA). sparc: * Remove the hard coded initialization stack. Use the interrupt stack for the initialization stack on the boot processor. This saves 16KiB of RAM. Update #3459.
2018-05-14Drop executable permissions on .[S] filesJoel Sherrill1-0/+0
2018-04-20bsps: Move start files to bspsSebastian Huber1-0/+0
This patch is a part of the BSP source reorganization. Update #3285.
2017-09-22bsps/arm: Copy FDT only on boot processorSebastian Huber1-7/+14
Update #3090.
2017-07-12bsp/beagle: Add FDT support for Beaglebone BlackSichen Zhao1-0/+5
2017-01-24Adding ARM VFP V2 supportKevin Kirspel1-0/+4
2016-11-18arm: Use TPIDRPRW for current per-CPU controlSebastian Huber1-5/+13
Use the previously unused TPIDRPRW register to get the per-CPU control of the current processor. This avoids instructions in GET_SELF_CPU_CONTROL which are not available in Thumb mode.
2016-09-22bsps/arm: Export bsp_start_hook_0_done symbol from ARM start.S.Pavel Pisa1-0/+1
The symbol can be used by bsp_start_hook_0 when complete RAM memory is initialization and overwritten during BSP self-test. The test overwrites even memory used to store return address / link register and regular resturn from bsp_start_hook_0 is not possible then.
2016-07-04bsps/arm: Support recent bootloaders starting kernel in HYP modePavel Pisa1-4/+75
When HYP mode is detected at startup then setup HYP mode vectors table (for future extensions) clean exceptions switching to HYP mode and switch CPU to ARM SVC mode. BSPs which want to use this support need to include next option in their configure.ac RTEMS_BSPOPTS_SET([BSP_START_IN_HYP_SUPPORT],[*],[1]) RTEMS_BSPOPTS_HELP([BSP_START_IN_HYP_SUPPORT], [Support start of BSP in ARM HYP mode]) AM_CONDITIONAL(BSP_START_IN_HYP_SUPPORT,test "$BSP_START_IN_HYP_SUPPORT" = "1") and need to include next lines in corresponding Makefile.am if BSP_START_IN_HYP_SUPPORT libbsp_a_SOURCES += ../shared/startup/bsp-start-in-hyp-support.S endif
2015-02-27ARM: Add BSP_START_NEEDS_REGISTER_INITIALIZATIONMartin Galvan1-0/+28
This patch adds the macro BSP_START_NEEDS_REGISTER_INITIALIZATION and three hooks for BSP-specific register init code to arm/shared/start.S. Said hooks are bsp_start_init_registers_core (intended for initializing the ARM core registers), bsp_start_init_registers_banked_fiq (for the FIQ mode banked registers) and bsp_start_init_registers_vfp (for the FPU registers). BSP_START_NEEDS_REGISTER_INITIALIZATION would be defined in a BSP's configure.ac (so that it appears in its bspopts.h). This patch also adds the register init code required by the TMS570. We've tested it with the tms570ls3137_hdk.cfg config and it works fine.
2015-02-20ARM: Support VFP-D16Martin Galvan1-3/+5
This patch allows the existing FPU code to support both VFP-D16 and VFP-D32. According to ARM, writes to D32DIS are ignored for D16 so there's no need to enclose the bic instruction with an #ifdef. We tested it on a TMS570LS3137 using TI initialization code and it works fine. Signed-off by: Martin Galvan <martin.galvan@tallertechnologies.com>
2014-08-12arm: Add support for FPv4-SP floating point unitSebastian Huber1-0/+15
This floating point unit is available in Cortex-M4 processors and defined by ARMv7-M. This adds basic support for other VFP-D16 variants.
2014-03-21Change all references of rtems.com to rtems.org.Chris Johns1-1/+1
2014-01-14bsps/arm: Use _ARMV4_Exception_interruptSebastian Huber1-3/+3
This allows read-only vector tables in ROM. It avoids also an unsolved problem with MMU/cache synchronization on SMP.
2013-09-16bsps/arm: Fix exception entriesRic Claus1-2/+2
2013-05-31bsps/arm: Add SMP supportSebastian Huber1-0/+33
2013-05-10arm: Support VFP-D32 and NeonSebastian Huber1-0/+20
2013-05-03bsps/arm: Copy vector table only if necessarySebastian Huber1-0/+4
2013-01-07arm: Add and use _ARMV7M_Exception_default()Sebastian Huber1-15/+16
2013-01-07arm: Add and use default exception handlerSebastian Huber1-15/+15
Add and use _ARMV4_Exception_undef_default(), _ARMV4_Exception_swi_default(), _ARMV4_Exception_data_abort_default(), _ARMV4_Exception_pref_abort_default(), _ARMV4_Exception_reserved_default(), _ARMV4_Exception_irq_default(), and _ARMV4_Exception_fiq_default().
2011-11-082011-11-08 Sebastian Huber <sebastian.huber@embedded-brains.de>Sebastian Huber1-73/+75
* shared/startup/bsp-start-copy-sections.c, shared/startup/bsp-start-memcpy.S: New files. * shared/include/start.h: Declare bsp_start_copy_sections(). * shared/start/start.S, shared/include/linker-symbols.h: Moved content. Support for ARMv7-M.
2011-03-282011-03-29 Sebastian Huber <sebastian.huber@embedded-brains.de>Sebastian Huber1-10/+13
* shared/start/start.S: Default exception handler will result in bsp_reset(). * shared/startup/linkcmds.base: Move unsupported sections into read-only section. Changed barrier sections.
2010-12-032010-12-03 Sebastian Huber <sebastian.huber@embedded-brains.de>Sebastian Huber1-4/+4
* preinstall.am, shared/lpc/include/lpc-i2s.h, shared/startup/linkcmds.armv4, shared/startup/linkcmds.armv7: New files. * Makefile.am: Added header and linker command files intended to be used by every ARM BSP. * shared/startup/linkcmds.base: Support for EABI and ARM ELF standard. * shared/include/linker-symbols.h: Update due to linker command file changes. * shared/start/start.S, shared/include/start.h: Renamed entry symbol from start to _start to avoid namespace conflicts. Update due to linker command file changes.