bsp/qoriq: Add basic 64-bit support

Update #3082.
This commit is contained in:
Sebastian Huber
2017-08-10 11:39:43 +02:00
parent c6994af7a7
commit 43cc2b4daf
8 changed files with 29 additions and 9 deletions

View File

@@ -47,7 +47,8 @@ dist_project_lib_DATA += startup/linkcmds \
startup/linkcmds.qoriq_core_0 \
startup/linkcmds.qoriq_core_1 \
startup/linkcmds.qoriq_e500 \
startup/linkcmds.qoriq_e6500_32
startup/linkcmds.qoriq_e6500_32 \
startup/linkcmds.qoriq_e6500_64
noinst_LIBRARIES += libbsp.a
libbsp_a_SOURCES =

View File

@@ -10,5 +10,5 @@
%{!qrtems: %(old_endfile)} %{qrtems: crtend.o%s rtems_crtn.o%s ecrtn.o%s}
*link:
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -u __vectors -N}
%{!qrtems: %(old_link)} %{qrtems: -dc -dp -u __vectors -N %(link_os)}

View File

@@ -116,7 +116,8 @@ RTEMS_BSPOPTS_SET([QORIQ_INITIAL_HID0],[qoriq_e6500*],[0x40000000])
RTEMS_BSPOPTS_SET([QORIQ_INITIAL_HID0],[*],[])
RTEMS_BSPOPTS_HELP([QORIQ_INITIAL_HID0],[initial HID0 value (EN_L2MMU_MHD is set by default on the T-series)])
RTEMS_BSPOPTS_SET([QORIQ_INITIAL_MSR],[qoriq_e6500*],[0x02002200])
RTEMS_BSPOPTS_SET([QORIQ_INITIAL_MSR],[qoriq_e6500_64*],[0x82002200])
RTEMS_BSPOPTS_SET([QORIQ_INITIAL_MSR],[qoriq_e6500_32*],[0x02002200])
RTEMS_BSPOPTS_SET([QORIQ_INITIAL_MSR],[*],[0x02000200])
RTEMS_BSPOPTS_HELP([QORIQ_INITIAL_MSR],[initial MSR value])

View File

@@ -141,3 +141,7 @@ $(PROJECT_LIB)/linkcmds.qoriq_e6500_32: startup/linkcmds.qoriq_e6500_32 $(PROJEC
$(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.qoriq_e6500_32
PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.qoriq_e6500_32
$(PROJECT_LIB)/linkcmds.qoriq_e6500_64: startup/linkcmds.qoriq_e6500_64 $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.qoriq_e6500_64
PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.qoriq_e6500_64

View File

@@ -112,7 +112,7 @@ static void wait_for_event(rtems_event_set in)
static void intercom_handler(void *arg)
{
rtems_id task = (rtems_id) arg;
rtems_id task = (rtems_id) (uintptr_t) arg;
send_event(task, INTERCOM_EVENT_IPI);
}
@@ -310,7 +310,7 @@ void qoriq_intercom_init(void)
"INTERCOM",
RTEMS_INTERRUPT_UNIQUE,
intercom_handler,
(void *) task
(void *) (uintptr_t) task
);
assert(sc == RTEMS_SUCCESSFUL);

View File

@@ -7,7 +7,7 @@
*/
/*
* Copyright (c) 2010, 2016 embedded brains GmbH. All rights reserved.
* Copyright (c) 2010, 2017 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
@@ -115,8 +115,10 @@ _start:
LA r4, bsp_section_bss_size
bl bsp_start_zero
#ifndef __powerpc64__
/* Set up EABI and SYSV environment */
bl __eabi
#endif
/* Clear command line */
li r3, 0
@@ -124,7 +126,7 @@ _start:
bl boot_card
.Lcopy:
cmpw r3, r4
PPC_REG_CMP r3, r4
beqlr
b memcpy
@@ -134,6 +136,13 @@ _start:
* the boot loader.
*/
#ifdef __powerpc64__
mfmsr r0
oris r0, r0, MSR_CM >> 16
mtmsr r0
isync
#endif
/* Disable decrementer */
mfspr r0, BOOKE_TCR
LWI r4, BOOKE_TCR_DIE
@@ -159,11 +168,15 @@ _start:
mtspr HID0, r0
#endif
#ifdef __powerpc64__
LA32 r2, .TOC.
#else
/* Invalidate TLS anchor */
li r2, 0
/* Set small-data anchor */
LA r13, _SDA_BASE_
#endif
SET_SELF_CPU_CONTROL r4, r5
@@ -282,7 +295,7 @@ _start_thread:
/* Initialize start stack */
GET_SELF_CPU_CONTROL r3
lwz r3, PER_CPU_INTERRUPT_STACK_HIGH(r3)
PPC_REG_LOAD r3, PER_CPU_INTERRUPT_STACK_HIGH(r3)
subi r1, r3, PPC_MINIMUM_STACK_FRAME_SIZE
clrrwi r1, r1, PPC_STACK_ALIGN_POWER
li r0, 0

View File

@@ -1,7 +1,7 @@
/**
* @file
*
* Memory map for T2080RDB.
* Memory map for e6500 core based QorIQ chips, e.g. T2080, T4240.
*/
MEMORY {

View File

@@ -0,0 +1 @@
INCLUDE linkcmds.qoriq_e6500_32