Commit Graph

12515 Commits

Author SHA1 Message Date
Sebastian Huber
c1072919fa Revert "bsps/powerpc: Fix potential relocation truncation"
This reverts commit d9ff8b3e68.

It is not that simple:

https://sourceware.org/ml/binutils/2014-06/msg00062.html

On Fri, Jun 06, 2014 at 01:31:48PM +0200, Sebastian Huber wrote:
> On 2014-06-06 13:23, Sebastian Huber wrote:
> >Ok, so this "cmplwi cr0, rX, ppc_exc_lock_std@sdarel" is illegal,
> >since
> >ppc_exc_lock_std@sdarel is signed and the immediate is unsigned
> >16-bit?  The
> >assembler doesn't issue a warning about this.
> >
> >Exists there a way to rescue this cmplwi hack without relaxing the
> >overflow
> >checks?
>
> Hm, sorry, it was surprisingly simple.  This works:
>
> "cmplwi cr0, rX, ppc_exc_lock_std@sdarel@l"
>
> I was not aware that you can add several @ in a row.

That is the wrong thing to use here.  sdarel@l translates to a VLE
reloc which applies to a split 16-bit field in VLE insns.

You want
 cmpwi cr0, rX, ppc_exc_lock_std@sdarel
to properly compare a 16-bit signed number from sym@sdarel.

Note that the assembler does error if you write something like
 cmplwi 3,-30000
or
 cmpwi 3,40000
so what the linker is now doing is extending this behaviour to link
time.
2014-06-06 14:54:37 +02:00
Sebastian Huber
d9ff8b3e68 bsps/powerpc: Fix potential relocation truncation
See also

https://sourceware.org/ml/binutils/2014-06/msg00059.html

On Fri, Jun 06, 2014 at 11:01:10AM +0200, Sebastian Huber wrote:
> I performed a git bisect and found this:
>
> 93d1b056cb396d6468781fe0e40dd769891bed32 is the first bad commit
> commit 93d1b056cb396d6468781fe0e40dd769891bed32
> Author: Alan Modra <amodra@gmail.com>
> Date:   Tue May 20 11:42:42 2014 +0930
>
>     Rewrite ppc32 backend .sdata and .sdata2 handling

Hmm, I'm surprised that your git bisect found this patch.  Was
_SDA_BASE_ set differently before this?

>                 0x00000000000dfc00                _SDA_BASE_
>                 0x00000000000d7f78                ppc_exc_lock_std

>      4b8:       28 05 00 00     cmplwi  r5,0
>                         4ba: R_PPC_SDAREL16     ppc_exc_lock_std

ppc_exc_lock_std@sdarel will be calculating 0xd7f78 - 0xdfc00
which is 0xf...fff8378, and that falls foul of

commit 86c9573369616e7437481b6e5533aef3a435cdcf
Author: Alan Modra <amodra@gmail.com>
Date:   Sat Mar 8 13:05:06 2014 +1030

    Better overflow checking for powerpc32 relocations

cmplwi has an *unsigned* 16-bit field, and we now check the overflow
properly.

I wonder how many more of these we'll hit, and whether the uproar will
be enough that I'll be forced to relax the checks?
2014-06-06 13:39:55 +02:00
Sebastian Huber
dc44de7686 bsps/arm: Fix TLB invalidation for ARMv7-A 2014-06-06 08:02:10 +02:00
Sebastian Huber
c19342a767 bsps/arm: Fix Cortex-A9 MPCore clock driver
The nanoseconds extension returned wrong values on secondary processors
since some of the global timer registeres are banked.  Use global
variables instead.
2014-06-06 08:02:10 +02:00
Sebastian Huber
1468d70f79 bsp/altera-cyclone-v: Enable unified L2 cache 2014-06-06 08:02:10 +02:00
Sebastian Huber
2a1d86c6bf bsp/altera-cyclone-v: Move SMP support 2014-06-06 08:02:10 +02:00
Sebastian Huber
40599e7e86 bsps/arm: Change L2 cache initialization
Do not touch the L1 caches since they have been initialized by the start
hooks.
2014-06-06 08:02:09 +02:00
Sebastian Huber
8fb685b7a3 bsp/altera-cyclone-v: Simplify start hooks
Use arm_a9mpcore_start_hook_0().  The L2 cache is now disabled.
2014-06-06 08:02:09 +02:00
Sebastian Huber
330ccc5f65 bsp/altera-cyclone-v: Change default baud
Use value for standard U-Boot.
2014-06-06 08:02:09 +02:00
Sebastian Huber
82054c8052 bsp/altera-cyclone-v: Use NOLOAD for nocache sec 2014-06-06 08:02:09 +02:00
Sebastian Huber
9fa88124ef bsp/altera-cyclone-v: Simplify MMU config table 2014-06-06 08:02:08 +02:00
Sebastian Huber
2d3caccf86 bsps/arm: Define ARM_CP15_TEXT_SECTION
Define ARM_CP15_TEXT_SECTION to BSP_START_TEXT_SECTION so that the
start code is in the right section.
2014-06-06 08:02:04 +02:00
Sebastian Huber
66a2409d30 bsps/arm: Add ARM_CP15_TEXT_SECTION
Allow users of this header file to optionally place the inline functions
into a non-standard section.
2014-06-05 14:55:16 +02:00
Sebastian Huber
44fbca379a bsps/arm: Simplify L1 caches support
Delete superfluous/incorrect interrupt disable/enable.
2014-06-05 14:55:16 +02:00
Sebastian Huber
d0a8f513f5 bsps/arm: Add all level data cache invalidation 2014-06-05 14:55:16 +02:00
Sebastian Huber
def03aecef bsps/arm: Typo 2014-06-05 14:55:16 +02:00
Sebastian Huber
82850b8e82 bsps/arm: Cortex-A9 MPCore start
Invalidate entire branch predictor array.
2014-06-05 14:55:16 +02:00
Sebastian Huber
e87ccf547b bsps/arm: Cortex-A9 MPCore start
Enable SCU only on the boot processor.
2014-06-05 14:55:16 +02:00
Sebastian Huber
b938108b3d bsps/arm: Cortex-A9 MPCore start
Add arm_a9mpcore_start_enable_smp_in_auxiliary_control().
2014-06-05 14:55:16 +02:00
Sebastian Huber
041bf16fd4 bsps/arm: Simplify Cortex-A9 MPCore start
Add arm_a9mpcore_start_on_secondary_processor().  Rely on error checks
in _SMP_Start_multitasking_on_secondary_processor().
2014-06-05 14:55:16 +02:00
Daniel Hellstrom
537f7271b3 LEON2: enable exception prinout by default 2014-06-05 09:34:51 +02:00
Daniel Hellstrom
8343aa414c LEON3: enable exception prinout by default 2014-06-05 09:34:51 +02:00
Daniel Hellstrom
a20c114f4a GRETH: remove TCP/UDP HW checksum generation
The GRETH doesn't support IP fragments.
2014-06-05 09:34:51 +02:00
Christian Mauderer
8df1f408fd score/sparc: Add support for paravirtualization
Guest systems in paravirtualization environments run usually in user
mode.  Thus it is not possible to directly access the PSR and TBR
registers.  Use functions instead of inline assembler to access these
registers if RTEMS_PARAVIRT is defined.
2014-06-03 08:35:47 +02:00
Joel Sherrill
36601543db mrm332: Tests now build and fewer warnings 2014-06-01 18:18:28 -05:00
Joel Sherrill
6ddc4dab20 m68k/shared/misc/memProbe.c: Add prototype to eliminate warning 2014-06-01 18:18:00 -05:00
Chris Johns
4d5845824e bsps/gdbarmsim: Add the missing bspstarthooks.c. 2014-05-30 09:11:30 +10:00
Daniel Hellstrom
d6f1ec91b6 SPARC: syscall optimizations and PSR-write fix
The last optimization missed was incorrect in regards to
PSR write instruction delay must be 3 instructions.

New optimizations:
 * align to 32-byte cache line.
 * rearrange code into three "blocks" of 4 instructions that
   is executed by syscall 2 and 3. This is to optimize for
   16/32 byte cache lines.
 * use delay-slot instruction in trap table to reduce by one
   instruction.
 * use the fact that "wr %PSR" implements XOR to reduce by
   one instruction.
2014-05-28 17:33:22 +02:00
Daniel Hellstrom
70eff78971 LEON3: coding style clean bsp_irq_fixup() 2014-05-28 17:33:22 +02:00
Daniel Hellstrom
3a76d83098 LEON3: add support for IRQ16..31 for CPU!=0 2014-05-28 17:33:22 +02:00
Chris Johns
5b45d51a59 bsps: Do not build tests that require a tick interrupt.
The following BSPs do not have tick support so the tests fail:

 arm1136jfs
 arm1136js
 arm7tdmi
 arm920
 armcortexa9 (does not run any more)
 avrtest
 h8sim
 h8sxsim
 m32csim
 m32rsim
 moxiesim
 simsh1
 simsh2
 simsh4
 v850e1sim
 v850e2sim
 v850e2v3sim
 v850esim
 v850essim
 v850sim

This list was provided by Joel in the following post:

 http://www.rtems.org/pipermail/rtems-devel/2014-April/006526.html
2014-05-28 23:44:26 +10:00
Ralf Kirchner
7280fe3f24 bsp/altera-cyclone-v: Cleanup 2014-05-28 15:01:37 +02:00
Ralf Kirchner
12a4d08553 bsp/altera-cyclone-v: Reduce size of nocache heap
Network mbufs and clusters now are cached. Thus the nocache heap can get reduced to 1 MByte.
2014-05-28 15:01:31 +02:00
Ralf Kirchner
bb70bea198 bsp/altera-cyclone-v: Cache mbufs and clusters 2014-05-28 14:59:01 +02:00
Ralf Kirchner
32c8960925 bsp/altera-cyclone-v: Enable L2 cache for network driver 2014-05-28 14:59:01 +02:00
Ralf Kirchner
dda78f43d5 bsp/altera-vyclone-v: Broadcast cache maintenances 2014-05-28 14:59:01 +02:00
Ralf Kirchner
5fd4e35f9b bsp/arm: Broadcast cache maintenances 2014-05-28 14:59:01 +02:00
Daniel Cederman
9f058fb1c2 bsps/sparc: Change tabs to spaces. 2014-05-27 09:46:30 +02:00
Daniel Cederman
c903fc28a9 bsps/sparc: Add copyright and license information 2014-05-27 09:46:22 +02:00
Daniel Cederman
363b1f7f02 bsps/sparc: Make lines in SPARC BSPs adhere to 80 character limit. 2014-05-27 09:46:13 +02:00
Chris Johns
97d0b9bb6a bsp/gdbarmsim: Switch to the standard arm/shared/startup.
Switch to the standard ARM startup code. This requires adding the
standard interrupt code. The interrupt code does nothing at this
point in time. I do not know if the ARM simulator in GDB supports
interrupts.
2014-05-26 22:02:00 +10:00
Chris Johns
b3fb2fff42 bsp/gdbarmsim: Change syscall functions to not clash with RTEMS functions.
The syscall functions overlapped with RTEMS, for example _write, _read, etc.
Change these to be internal to the BSP and avoid any clash with names in
RTEMS. Add support for SWI_Write0.

Change the console driver to use SWI_Write0. This outputs the character
to the host's stdout. Writing to file name 0 is not captured and managed
by GDB's simulation code while the SWI_Write0 is. The managed stdout
data is encapulated in the MI protocol while writes to file handle 0 are
dropped by GDB when in MI mode.
2014-05-26 11:52:02 +10:00
Daniel Hellstrom
6a740c2e70 SPARC: add syscall 1 (exit) function entry point
The exit SPARC system call doesn't have a function entry
point like the others do. This is probably why people use
TA 0x0 instruction directly for shutting down the system.
2014-05-23 09:14:15 -05:00
Daniel Hellstrom
434e7f7bee SPARC: syscall code clean-up and minor optimizations 2014-05-23 09:14:08 -05:00
Joel Sherrill
decff88836 c/src/aclocal/check-smp.m4: Use HAS_SMP not HAS_POSIX_API 2014-05-22 18:05:46 -05:00
Chris Johns
e9d980713c bsp/zynq: Add BSP_ZYNQ_RAM_LENGTH to allow a user to override the RAM length.
The Zynq BSPs can be used with varations of hardware such as memory size.
This option lets you set a length.
2014-05-22 16:53:25 +10:00
Chris Johns
18bd35bcb3 bsps/zynq: Add BSP_ARM_A9MPCORE_UARTCLK to set the UART clock rate.
This value can be found the xparameters.h file generated by the
Xilinx tools.
2014-05-22 16:53:24 +10:00
Sebastian Huber
249eaf9991 bsps/sparc: Fix BSS initialization
Use __bss_start available via %g2 to clear the BSS section.  The usage
of _edata resulted in a copy of [_edata, __bss_start) from ROM to RAM
and then a clear to zero of this area.

Clear now only [__bss_start, _end).
2014-05-14 14:46:20 +02:00
Sebastian Huber
b2d191e833 bsps/sparc: Fix data copy in start procedure
Use the register %g4 for the data content since it must be an even
numbered register due to the std/ldd.  Use the register %g2 for the BSS
start address, so that it can be later re-used for the BSS zero loop.
2014-05-14 14:46:20 +02:00
Ralf Kirchner
c8b7b32329 bsp/altera-caclone-v: Early printk support
Make sure printk can work early during BSP startup.
2014-05-12 15:57:50 +02:00