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
0812d49c
Commit
0812d49c
authored
Jan 13, 2016
by
danh-arm
Browse files
Merge pull request #482 from sandrine-bailleux/sb/cortex-a35
Add support for ARM Cortex-A35 processor
parents
af94b08c
820756e9
Changes
3
Hide whitespace changes
Inline
Side-by-side
include/lib/cpus/aarch64/cortex_a35.h
0 → 100644
View file @
0812d49c
/*
* 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.
*/
#ifndef __CORTEX_A35_H__
#define __CORTEX_A35_H__
/* Cortex-A35 Main ID register for revision 0 */
#define CORTEX_A35_MIDR 0x410FD040
/*******************************************************************************
* CPU Extended Control register specific definitions.
* CPUECTLR_EL1 is an implementation-specific register.
******************************************************************************/
#define CORTEX_A35_CPUECTLR_EL1 S3_1_C15_C2_1
#define CORTEX_A35_CPUECTLR_SMPEN_BIT (1 << 6)
#endif
/* __CORTEX_A35_H__ */
lib/cpus/aarch64/cortex_a35.S
0 → 100644
View file @
0812d49c
/*
*
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 <bl_common.h>
#include <cortex_a35.h>
#include <cpu_macros.S>
#include <plat_macros.S>
/
*
---------------------------------------------
*
Disable
L1
data
cache
and
unified
L2
cache
*
---------------------------------------------
*/
func
cortex_a35_disable_dcache
mrs
x1
,
sctlr_el3
bic
x1
,
x1
,
#
SCTLR_C_BIT
msr
sctlr_el3
,
x1
isb
ret
endfunc
cortex_a35_disable_dcache
/
*
---------------------------------------------
*
Disable
intra
-
cluster
coherency
*
---------------------------------------------
*/
func
cortex_a35_disable_smp
mrs
x0
,
CORTEX_A35_CPUECTLR_EL1
bic
x0
,
x0
,
#
CORTEX_A35_CPUECTLR_SMPEN_BIT
msr
CORTEX_A35_CPUECTLR_EL1
,
x0
isb
dsb
sy
ret
endfunc
cortex_a35_disable_smp
/
*
-------------------------------------------------
*
The
CPU
Ops
reset
function
for
Cortex
-
A35
.
*
Clobbers
:
x0
*
-------------------------------------------------
*/
func
cortex_a35_reset_func
/
*
---------------------------------------------
*
As
a
bare
minimum
enable
the
SMP
bit
if
it
is
*
not
already
set
.
*
---------------------------------------------
*/
mrs
x0
,
CORTEX_A35_CPUECTLR_EL1
tst
x0
,
#
CORTEX_A35_CPUECTLR_SMPEN_BIT
b.ne
skip_smp_setup
orr
x0
,
x0
,
#
CORTEX_A35_CPUECTLR_SMPEN_BIT
msr
CORTEX_A35_CPUECTLR_EL1
,
x0
skip_smp_setup
:
isb
ret
endfunc
cortex_a35_reset_func
func
cortex_a35_core_pwr_dwn
mov
x18
,
x30
/
*
---------------------------------------------
*
Turn
off
caches
.
*
---------------------------------------------
*/
bl
cortex_a35_disable_dcache
/
*
---------------------------------------------
*
Flush
L1
caches
.
*
---------------------------------------------
*/
mov
x0
,
#
DCCISW
bl
dcsw_op_level1
/
*
---------------------------------------------
*
Come
out
of
intra
cluster
coherency
*
---------------------------------------------
*/
mov
x30
,
x18
b
cortex_a35_disable_smp
endfunc
cortex_a35_core_pwr_dwn
func
cortex_a35_cluster_pwr_dwn
mov
x18
,
x30
/
*
---------------------------------------------
*
Turn
off
caches
.
*
---------------------------------------------
*/
bl
cortex_a35_disable_dcache
/
*
---------------------------------------------
*
Flush
L1
caches
.
*
---------------------------------------------
*/
mov
x0
,
#
DCCISW
bl
dcsw_op_level1
/
*
---------------------------------------------
*
Disable
the
optional
ACP
.
*
---------------------------------------------
*/
bl
plat_disable_acp
/
*
---------------------------------------------
*
Flush
L2
caches
.
*
---------------------------------------------
*/
mov
x0
,
#
DCCISW
bl
dcsw_op_level2
/
*
---------------------------------------------
*
Come
out
of
intra
cluster
coherency
*
---------------------------------------------
*/
mov
x30
,
x18
b
cortex_a35_disable_smp
endfunc
cortex_a35_cluster_pwr_dwn
/
*
---------------------------------------------
*
This
function
provides
cortex_a35
specific
*
register
information
for
crash
reporting
.
*
It
needs
to
return
with
x6
pointing
to
*
a
list
of
register
names
in
ascii
and
*
x8
-
x15
having
values
of
registers
to
be
*
reported
.
*
---------------------------------------------
*/
.
section
.
rodata.
cortex_a35_regs
,
"aS"
cortex_a35_regs
:
/
*
The
ascii
list
of
register
names
to
be
reported
*/
.
asciz
"cpuectlr_el1"
,
""
func
cortex_a35_cpu_reg_dump
adr
x6
,
cortex_a35_regs
mrs
x8
,
CORTEX_A35_CPUECTLR_EL1
ret
endfunc
cortex_a35_cpu_reg_dump
declare_cpu_ops
cortex_a35
,
CORTEX_A35_MIDR
plat/arm/board/fvp/platform.mk
View file @
0812d49c
#
#
# Copyright (c) 2013-201
5
, ARM Limited and Contributors. All rights reserved.
# Copyright (c) 2013-201
6
, ARM Limited and Contributors. All rights reserved.
#
#
# Redistribution and use in source and binary forms, with or without
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# modification, are permitted provided that the following conditions are met:
...
@@ -64,6 +64,7 @@ PLAT_BL_COMMON_SOURCES := plat/arm/board/fvp/aarch64/fvp_common.c
...
@@ -64,6 +64,7 @@ PLAT_BL_COMMON_SOURCES := plat/arm/board/fvp/aarch64/fvp_common.c
BL1_SOURCES
+=
drivers/io/io_semihosting.c
\
BL1_SOURCES
+=
drivers/io/io_semihosting.c
\
lib/cpus/aarch64/aem_generic.S
\
lib/cpus/aarch64/aem_generic.S
\
lib/cpus/aarch64/cortex_a35.S
\
lib/cpus/aarch64/cortex_a53.S
\
lib/cpus/aarch64/cortex_a53.S
\
lib/cpus/aarch64/cortex_a57.S
\
lib/cpus/aarch64/cortex_a57.S
\
lib/semihosting/semihosting.c
\
lib/semihosting/semihosting.c
\
...
@@ -87,6 +88,7 @@ BL2U_SOURCES += plat/arm/board/fvp/fvp_bl2u_setup.c \
...
@@ -87,6 +88,7 @@ BL2U_SOURCES += plat/arm/board/fvp/fvp_bl2u_setup.c \
plat/arm/board/fvp/fvp_security.c
plat/arm/board/fvp/fvp_security.c
BL31_SOURCES
+=
lib/cpus/aarch64/aem_generic.S
\
BL31_SOURCES
+=
lib/cpus/aarch64/aem_generic.S
\
lib/cpus/aarch64/cortex_a35.S
\
lib/cpus/aarch64/cortex_a53.S
\
lib/cpus/aarch64/cortex_a53.S
\
lib/cpus/aarch64/cortex_a57.S
\
lib/cpus/aarch64/cortex_a57.S
\
plat/arm/board/fvp/fvp_bl31_setup.c
\
plat/arm/board/fvp/fvp_bl31_setup.c
\
...
...
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