Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
a937d93e
Commit
a937d93e
authored
7 years ago
by
danh-arm
Committed by
GitHub
7 years ago
Browse files
Options
Download
Plain Diff
Merge pull request #1046 from jeenu-arm/revc
Support for RevC FVP model
parents
33a8ead0
955242d8
Changes
23
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
plat/arm/board/fvp/platform.mk
+14
-5
plat/arm/board/fvp/platform.mk
plat/arm/common/arm_gicv3.c
+22
-2
plat/arm/common/arm_gicv3.c
plat/common/aarch32/platform_mp_stack.S
+4
-4
plat/common/aarch32/platform_mp_stack.S
with
40 additions
and
11 deletions
+40
-11
plat/arm/board/fvp/platform.mk
View file @
a937d93e
...
...
@@ -6,19 +6,28 @@
# Use the GICv3 driver on the FVP by default
FVP_USE_GIC_DRIVER
:=
FVP_GICV3
# Use the SP804 timer instead of the generic one
FVP_USE_SP804_TIMER
:=
0
# Default cluster count for FVP
FVP_CLUSTER_COUNT
:=
2
# Default number of threads per CPU on FVP
FVP_MAX_PE_PER_CPU
:=
1
$(eval
$(call
assert_boolean,FVP_USE_SP804_TIMER))
$(eval
$(call
add_define,FVP_USE_SP804_TIMER))
# The FVP platform depends on this macro to build with correct GIC driver.
$(eval
$(call
add_define,FVP_USE_GIC_DRIVER))
# Define default FVP_CLUSTER_COUNT to 2 and pass it into the build system.
FVP_CLUSTER_COUNT
:=
2
# Pass FVP_CLUSTER_COUNT to the build system.
$(eval
$(call
add_define,FVP_CLUSTER_COUNT))
# Pass FVP_MAX_PE_PER_CPU to the build system.
$(eval
$(call
add_define,FVP_MAX_PE_PER_CPU))
# Sanity check the cluster count and if FVP_CLUSTER_COUNT <= 2,
# choose the CCI driver , else the CCN driver
ifeq
($(FVP_CLUSTER_COUNT), 0)
...
...
@@ -63,8 +72,7 @@ $(error "Incorrect GIC driver chosen on FVP port")
endif
ifeq
(${FVP_INTERCONNECT_DRIVER}, FVP_CCI)
FVP_INTERCONNECT_SOURCES
:=
drivers/arm/cci/cci.c
\
plat/arm/common/arm_cci.c
FVP_INTERCONNECT_SOURCES
:=
drivers/arm/cci/cci.c
else
ifeq
(${FVP_INTERCONNECT_DRIVER}, FVP_CCN)
FVP_INTERCONNECT_SOURCES
:=
drivers/arm/ccn/ccn.c
\
plat/arm/common/arm_ccn.c
...
...
@@ -127,7 +135,8 @@ endif
BL2U_SOURCES
+=
plat/arm/board/fvp/fvp_bl2u_setup.c
\
${FVP_SECURITY_SOURCES}
BL31_SOURCES
+=
plat/arm/board/fvp/fvp_bl31_setup.c
\
BL31_SOURCES
+=
drivers/arm/smmu/smmu_v3.c
\
plat/arm/board/fvp/fvp_bl31_setup.c
\
plat/arm/board/fvp/fvp_pm.c
\
plat/arm/board/fvp/fvp_topology.c
\
plat/arm/board/fvp/aarch64/fvp_helpers.S
\
...
...
This diff is collapsed.
Click to expand it.
plat/arm/common/arm_gicv3.c
View file @
a937d93e
/*
* Copyright (c) 2015, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2015
-2017
, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
...
...
@@ -35,6 +35,26 @@ static const unsigned int g0_interrupt_array[] = {
PLAT_ARM_G0_IRQS
};
/*
* MPIDR hashing function for translating MPIDRs read from GICR_TYPER register
* to core position.
*
* Calculating core position is dependent on MPIDR_EL1.MT bit. However, affinity
* values read from GICR_TYPER don't have an MT field. To reuse the same
* translation used for CPUs, we insert MT bit read from the PE's MPIDR into
* that read from GICR_TYPER.
*
* Assumptions:
*
* - All CPUs implemented in the system have MPIDR_EL1.MT bit set;
* - No CPUs implemented in the system use affinity level 3.
*/
static
unsigned
int
arm_gicv3_mpidr_hash
(
u_register_t
mpidr
)
{
mpidr
|=
(
read_mpidr_el1
()
&
MPIDR_MT_MASK
);
return
plat_arm_calc_core_pos
(
mpidr
);
}
const
gicv3_driver_data_t
arm_gic_data
=
{
.
gicd_base
=
PLAT_ARM_GICD_BASE
,
.
gicr_base
=
PLAT_ARM_GICR_BASE
,
...
...
@@ -44,7 +64,7 @@ const gicv3_driver_data_t arm_gic_data = {
.
g1s_interrupt_array
=
g1s_interrupt_array
,
.
rdistif_num
=
PLATFORM_CORE_COUNT
,
.
rdistif_base_addrs
=
rdistif_base_addrs
,
.
mpidr_to_core_pos
=
plat_arm_calc_core_pos
.
mpidr_to_core_pos
=
arm_gicv3_mpidr_hash
};
void
plat_arm_gic_driver_init
(
void
)
...
...
This diff is collapsed.
Click to expand it.
plat/common/aarch32/platform_mp_stack.S
View file @
a937d93e
...
...
@@ -19,9 +19,9 @@
*
-----------------------------------------------------
*/
func
plat_get_my_stack
mov
r3
,
lr
push
{
r4
,
lr
}
get_my_mp_stack
platform_normal_stacks
,
PLATFORM_STACK_SIZE
bx
r3
pop
{
r4
,
pc
}
endfunc
plat_get_my_stack
/
*
-----------------------------------------------------
...
...
@@ -32,10 +32,10 @@ endfunc plat_get_my_stack
*
-----------------------------------------------------
*/
func
plat_set_my_stack
mov
r
3
,
lr
mov
r
4
,
lr
get_my_mp_stack
platform_normal_stacks
,
PLATFORM_STACK_SIZE
mov
sp
,
r0
bx
r
3
bx
r
4
endfunc
plat_set_my_stack
/
*
-----------------------------------------------------
...
...
This diff is collapsed.
Click to expand it.
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help