Skip to content
GitLab
Menu
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
484acce3
Commit
484acce3
authored
Apr 21, 2017
by
davidcunado-arm
Committed by
GitHub
Apr 21, 2017
Browse files
Merge pull request #910 from dp-arm/dp/AArch32-juno-port
Add AArch32 support for Juno
parents
94e0ed60
6f249345
Changes
26
Show whitespace changes
Inline
Side-by-side
plat/arm/common/arm_bl1_setup.c
View file @
484acce3
...
...
@@ -44,6 +44,7 @@
#pragma weak bl1_plat_arch_setup
#pragma weak bl1_platform_setup
#pragma weak bl1_plat_sec_mem_layout
#pragma weak bl1_plat_prepare_exit
/* Data structure which holds the extents of the trusted SRAM for BL1*/
...
...
plat/arm/common/arm_bl2_setup.c
View file @
484acce3
...
...
@@ -249,11 +249,7 @@ void bl2_plat_arch_setup(void)
}
#if LOAD_IMAGE_V2
/*******************************************************************************
* This function can be used by the platforms to update/use image
* information for given `image_id`.
******************************************************************************/
int
bl2_plat_handle_post_image_load
(
unsigned
int
image_id
)
int
arm_bl2_handle_post_image_load
(
unsigned
int
image_id
)
{
int
err
=
0
;
bl_mem_params_node_t
*
bl_mem_params
=
get_bl_mem_params_node
(
image_id
);
...
...
@@ -286,6 +282,15 @@ int bl2_plat_handle_post_image_load(unsigned int image_id)
return
err
;
}
/*******************************************************************************
* This function can be used by the platforms to update/use image
* information for given `image_id`.
******************************************************************************/
int
bl2_plat_handle_post_image_load
(
unsigned
int
image_id
)
{
return
arm_bl2_handle_post_image_load
(
image_id
);
}
#else
/* LOAD_IMAGE_V2 */
/*******************************************************************************
...
...
plat/arm/common/arm_common.mk
View file @
484acce3
...
...
@@ -148,8 +148,14 @@ BL2_SOURCES += drivers/io/io_fip.c \
plat/arm/common/arm_bl2_setup.c
\
plat/arm/common/arm_io_storage.c
ifeq
(${LOAD_IMAGE_V2},1)
BL2_SOURCES
+=
plat/arm/common/
${ARCH}
/arm_bl2_mem_params_desc.c
\
plat/arm/common/arm_image_load.c
\
# Because BL1/BL2 execute in AArch64 mode but BL32 in AArch32 we need to use
# the AArch32 descriptors.
ifeq
(${JUNO_AARCH32_EL3_RUNTIME},1)
BL2_SOURCES
+=
plat/arm/common/aarch32/arm_bl2_mem_params_desc.c
else
BL2_SOURCES
+=
plat/arm/common/
${ARCH}
/arm_bl2_mem_params_desc.c
endif
BL2_SOURCES
+=
plat/arm/common/arm_image_load.c
\
common/desc_image_load.c
endif
...
...
plat/arm/css/common/aarch32/css_helpers.S
0 → 100644
View file @
484acce3
/*
*
Copyright
(
c
)
2016
,
ARM
Limited
and
Contributors
.
All
rights
reserved
.
*
*
Redistribution
and
use
in
source
and
binary
forms
,
with
or
without
*
modification
,
are
permitted
provided
that
the
following
conditions
are
met
:
*
*
Redistributions
of
source
code
must
retain
the
above
copyright
notice
,
this
*
list
of
conditions
and
the
following
disclaimer
.
*
*
Redistributions
in
binary
form
must
reproduce
the
above
copyright
notice
,
*
this
list
of
conditions
and
the
following
disclaimer
in
the
documentation
*
and
/
or
other
materials
provided
with
the
distribution
.
*
*
Neither
the
name
of
ARM
nor
the
names
of
its
contributors
may
be
used
*
to
endorse
or
promote
products
derived
from
this
software
without
specific
*
prior
written
permission
.
*
*
THIS
SOFTWARE
IS
PROVIDED
BY
THE
COPYRIGHT
HOLDERS
AND
CONTRIBUTORS
"AS IS"
*
AND
ANY
EXPRESS
OR
IMPLIED
WARRANTIES
,
INCLUDING
,
BUT
NOT
LIMITED
TO
,
THE
*
IMPLIED
WARRANTIES
OF
MERCHANTABILITY
AND
FITNESS
FOR
A
PARTICULAR
PURPOSE
*
ARE
DISCLAIMED
.
IN
NO
EVENT
SHALL
THE
COPYRIGHT
HOLDER
OR
CONTRIBUTORS
BE
*
LIABLE
FOR
ANY
DIRECT
,
INDIRECT
,
INCIDENTAL
,
SPECIAL
,
EXEMPLARY
,
OR
*
CONSEQUENTIAL
DAMAGES
(
INCLUDING
,
BUT
NOT
LIMITED
TO
,
PROCUREMENT
OF
*
SUBSTITUTE
GOODS
OR
SERVICES
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
*
INTERRUPTION
)
HOWEVER
CAUSED
AND
ON
ANY
THEORY
OF
LIABILITY
,
WHETHER
IN
*
CONTRACT
,
STRICT
LIABILITY
,
OR
TORT
(
INCLUDING
NEGLIGENCE
OR
OTHERWISE
)
*
ARISING
IN
ANY
WAY
OUT
OF
THE
USE
OF
THIS
SOFTWARE
,
EVEN
IF
ADVISED
OF
THE
*
POSSIBILITY
OF
SUCH
DAMAGE
.
*/
#include <arch.h>
#include <asm_macros.S>
#include <cpu_macros.S>
#include <css_def.h>
.
weak
plat_secondary_cold_boot_setup
.
weak
plat_get_my_entrypoint
.
globl
css_calc_core_pos_swap_cluster
.
weak
plat_is_my_cpu_primary
/
*
---------------------------------------------------------------------
*
void
plat_secondary_cold_boot_setup
(
void
)
;
*
In
the
normal
boot
flow
,
cold
-
booting
secondary
*
CPUs
is
not
yet
implemented
and
they
panic
.
*
---------------------------------------------------------------------
*/
func
plat_secondary_cold_boot_setup
/
*
TODO
:
Implement
secondary
CPU
cold
boot
setup
on
CSS
platforms
*/
cb_panic
:
b
cb_panic
endfunc
plat_secondary_cold_boot_setup
/
*
---------------------------------------------------------------------
*
uintptr_t
plat_get_my_entrypoint
(
void
)
;
*
*
Main
job
of
this
routine
is
to
distinguish
between
a
cold
and
a
warm
*
boot
.
On
CSS
platforms
,
this
distinction
is
based
on
the
contents
of
*
the
Trusted
Mailbox
.
It
is
initialised
to
zero
by
the
SCP
before
the
*
AP
cores
are
released
from
reset
.
Therefore
,
a
zero
mailbox
means
*
it
's a cold reset.
*
*
This
functions
returns
the
contents
of
the
mailbox
,
i
.
e
.
:
*
-
0
for
a
cold
boot
;
*
-
the
warm
boot
entrypoint
for
a
warm
boot
.
*
---------------------------------------------------------------------
*/
func
plat_get_my_entrypoint
ldr
r0
,
=
PLAT_ARM_TRUSTED_MAILBOX_BASE
ldr
r0
,
[
r0
]
bx
lr
endfunc
plat_get_my_entrypoint
/
*
-----------------------------------------------------------
*
unsigned
int
css_calc_core_pos_swap_cluster
(
u_register_t
mpidr
)
*
Utility
function
to
calculate
the
core
position
by
*
swapping
the
cluster
order
.
This
is
necessary
in
order
to
*
match
the
format
of
the
boot
information
passed
by
the
SCP
*
and
read
in
plat_is_my_cpu_primary
below
.
*
-----------------------------------------------------------
*/
func
css_calc_core_pos_swap_cluster
and
r1
,
r0
,
#
MPIDR_CPU_MASK
and
r0
,
r0
,
#
MPIDR_CLUSTER_MASK
eor
r0
,
r0
,
#(
1
<<
MPIDR_AFFINITY_BITS
)
//
swap
cluster
order
add
r0
,
r1
,
r0
,
LSR
#
6
bx
lr
endfunc
css_calc_core_pos_swap_cluster
/
*
-----------------------------------------------------
*
unsigned
int
plat_is_my_cpu_primary
(
void
)
;
*
*
Find
out
whether
the
current
cpu
is
the
primary
*
cpu
(
applicable
ony
after
a
cold
boot
)
*
-----------------------------------------------------
*/
func
plat_is_my_cpu_primary
mov
r10
,
lr
bl
plat_my_core_pos
ldr
r1
,
=
SCP_BOOT_CFG_ADDR
ldr
r1
,
[
r1
]
ubfx
r1
,
r1
,
#
PLAT_CSS_PRIMARY_CPU_SHIFT
,
\
#
PLAT_CSS_PRIMARY_CPU_BIT_WIDTH
cmp
r0
,
r1
moveq
r0
,
#
1
movne
r0
,
#
0
bx
r10
endfunc
plat_is_my_cpu_primary
plat/arm/css/common/css_common.mk
View file @
484acce3
...
...
@@ -36,7 +36,7 @@ PLAT_INCLUDES += -Iinclude/plat/arm/css/common \
-Iinclude
/plat/arm/css/common/aarch64
PLAT_BL_COMMON_SOURCES
+=
plat/arm/css/common/
aarch64
/css_helpers.S
PLAT_BL_COMMON_SOURCES
+=
plat/arm/css/common/
${ARCH}
/css_helpers.S
BL1_SOURCES
+=
plat/arm/css/common/css_bl1_setup.c
...
...
plat/arm/css/drivers/scp/css_pm_scpi.c
View file @
484acce3
...
...
@@ -32,6 +32,7 @@
#include <assert.h>
#include <css_pm.h>
#include <debug.h>
#include <plat_arm.h>
#include "../scpi/css_scpi.h"
#include "css_scp.h"
...
...
@@ -134,6 +135,12 @@ void __dead2 css_scp_sys_shutdown(void)
{
uint32_t
response
;
/*
* Disable GIC CPU interface to prevent pending interrupt
* from waking up the AP from WFI.
*/
plat_arm_gic_cpuif_disable
();
/* Send the power down request to the SCP */
response
=
scpi_sys_power_state
(
scpi_system_shutdown
);
...
...
@@ -153,6 +160,12 @@ void __dead2 css_scp_sys_reboot(void)
{
uint32_t
response
;
/*
* Disable GIC CPU interface to prevent pending interrupt
* from waking up the AP from WFI.
*/
plat_arm_gic_cpuif_disable
();
/* Send the system reset request to the SCP */
response
=
scpi_sys_power_state
(
scpi_system_reboot
);
...
...
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