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
7e998c42
Commit
7e998c42
authored
Sep 25, 2014
by
achingupta
Browse files
Merge pull request #214 from soby-mathew/sm/bl_specific_mmap
Create BL stage specific translation tables
parents
d402f3dc
d0ecd979
Changes
3
Hide whitespace changes
Inline
Side-by-side
include/lib/aarch64/xlat_tables.h
View file @
7e998c42
...
@@ -41,6 +41,16 @@
...
@@ -41,6 +41,16 @@
#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__
#include <stdint.h>
#include <stdint.h>
/* Helper macro to define entries for mmap_region_t. It creates
* identity mappings for each region.
*/
#define MAP_REGION_FLAT(adr, sz, attr) MAP_REGION(adr, adr, sz, attr)
/* Helper macro to define entries for mmap_region_t. It allows to
* re-map address mappings from 'pa' to 'va' for each region.
*/
#define MAP_REGION(pa, va, sz, attr) {(pa), (va), (sz), (attr)}
/*
/*
* Flags for building up memory mapping attributes.
* Flags for building up memory mapping attributes.
* These are organised so that a clear bit gives a more restrictive mapping
* These are organised so that a clear bit gives a more restrictive mapping
...
...
plat/fvp/aarch64/fvp_common.c
View file @
7e998c42
...
@@ -36,6 +36,7 @@
...
@@ -36,6 +36,7 @@
#include <debug.h>
#include <debug.h>
#include <mmio.h>
#include <mmio.h>
#include <platform.h>
#include <platform.h>
#include <platform_def.h>
#include <plat_config.h>
#include <plat_config.h>
#include <xlat_tables.h>
#include <xlat_tables.h>
#include "../fvp_def.h"
#include "../fvp_def.h"
...
@@ -49,33 +50,70 @@
...
@@ -49,33 +50,70 @@
******************************************************************************/
******************************************************************************/
plat_config_t
plat_config
;
plat_config_t
plat_config
;
#define MAP_SHARED_RAM MAP_REGION_FLAT(FVP_SHARED_RAM_BASE, \
FVP_SHARED_RAM_SIZE, \
MT_MEMORY | MT_RW | MT_SECURE)
#define MAP_FLASH0 MAP_REGION_FLAT(FLASH0_BASE, \
FLASH0_SIZE, \
MT_MEMORY | MT_RO | MT_SECURE)
#define MAP_DEVICE0 MAP_REGION_FLAT(DEVICE0_BASE, \
DEVICE0_SIZE, \
MT_DEVICE | MT_RW | MT_SECURE)
#define MAP_DEVICE1 MAP_REGION_FLAT(DEVICE1_BASE, \
DEVICE1_SIZE, \
MT_DEVICE | MT_RW | MT_SECURE)
#define MAP_DRAM1 MAP_REGION_FLAT(DRAM1_BASE, \
DRAM1_SIZE, \
MT_MEMORY | MT_RW | MT_NS)
#define MAP_TSP_SEC_MEM MAP_REGION_FLAT(TSP_SEC_MEM_BASE, \
TSP_SEC_MEM_SIZE, \
MT_MEMORY | MT_RW | MT_SECURE)
/*
/*
* Table of regions to map using the MMU.
* Table of regions
for various BL stages
to map using the MMU.
* This doesn't include TZRAM as the 'mem_layout' argument passed to
* This doesn't include TZRAM as the 'mem_layout' argument passed to
* configure_mmu_elx() will give the available subset of that,
* configure_mmu_elx() will give the available subset of that,
*/
*/
#if IMAGE_BL1
const
mmap_region_t
fvp_mmap
[]
=
{
MAP_SHARED_RAM
,
MAP_FLASH0
,
MAP_DEVICE0
,
MAP_DEVICE1
,
{
0
}
};
#endif
#if IMAGE_BL2
const
mmap_region_t
fvp_mmap
[]
=
{
MAP_SHARED_RAM
,
MAP_FLASH0
,
MAP_DEVICE0
,
MAP_DEVICE1
,
MAP_DRAM1
,
MAP_TSP_SEC_MEM
,
{
0
}
};
#endif
#if IMAGE_BL31
const
mmap_region_t
fvp_mmap
[]
=
{
MAP_SHARED_RAM
,
MAP_DEVICE0
,
MAP_DEVICE1
,
{
0
}
};
#endif
#if IMAGE_BL32
const
mmap_region_t
fvp_mmap
[]
=
{
const
mmap_region_t
fvp_mmap
[]
=
{
{
FVP_SHARED_RAM_BASE
,
FVP_SHARED_RAM_BASE
,
FVP_SHARED_RAM_SIZE
,
MAP_DEVICE0
,
MT_MEMORY
|
MT_RW
|
MT_SECURE
},
MAP_DEVICE1
,
{
FVP_TRUSTED_DRAM_BASE
,
FVP_TRUSTED_DRAM_BASE
,
FVP_TRUSTED_DRAM_SIZE
,
MT_MEMORY
|
MT_RW
|
MT_SECURE
},
{
FLASH0_BASE
,
FLASH0_BASE
,
FLASH0_SIZE
,
MT_MEMORY
|
MT_RO
|
MT_SECURE
},
{
FLASH1_BASE
,
FLASH1_BASE
,
FLASH1_SIZE
,
MT_MEMORY
|
MT_RO
|
MT_SECURE
},
{
VRAM_BASE
,
VRAM_BASE
,
VRAM_SIZE
,
MT_MEMORY
|
MT_RW
|
MT_SECURE
},
{
DEVICE0_BASE
,
DEVICE0_BASE
,
DEVICE0_SIZE
,
MT_DEVICE
|
MT_RW
|
MT_SECURE
},
{
DEVICE1_BASE
,
DEVICE1_BASE
,
DEVICE1_SIZE
,
MT_DEVICE
|
MT_RW
|
MT_SECURE
},
/* 2nd GB as device for now...*/
{
0x40000000
,
0x40000000
,
0x40000000
,
MT_DEVICE
|
MT_RW
|
MT_SECURE
},
{
DRAM1_BASE
,
DRAM1_BASE
,
DRAM1_SIZE
,
MT_MEMORY
|
MT_RW
|
MT_NS
},
{
0
}
{
0
}
};
};
#endif
/* Array of secure interrupts to be configured by the gic driver */
/* Array of secure interrupts to be configured by the gic driver */
const
unsigned
int
irq_sec_array
[]
=
{
const
unsigned
int
irq_sec_array
[]
=
{
...
...
plat/juno/aarch64/juno_common.c
View file @
7e998c42
...
@@ -38,23 +38,74 @@
...
@@ -38,23 +38,74 @@
#include <xlat_tables.h>
#include <xlat_tables.h>
#include "../juno_def.h"
#include "../juno_def.h"
#define MAP_MHU_SECURE MAP_REGION_FLAT(MHU_SECURE_BASE, \
MHU_SECURE_SIZE, \
(MHU_PAYLOAD_CACHED ? \
MT_MEMORY : MT_DEVICE) \
| MT_RW | MT_SECURE)
#define MAP_FLASH MAP_REGION_FLAT(FLASH_BASE, \
FLASH_SIZE, \
MT_MEMORY | MT_RO | MT_SECURE)
#define MAP_IOFPGA MAP_REGION_FLAT(IOFPGA_BASE, \
IOFPGA_SIZE, \
MT_DEVICE | MT_RW | MT_SECURE)
#define MAP_DEVICE0 MAP_REGION_FLAT(DEVICE0_BASE, \
DEVICE0_SIZE, \
MT_DEVICE | MT_RW | MT_SECURE)
#define MAP_DEVICE1 MAP_REGION_FLAT(DEVICE1_BASE, \
DEVICE1_SIZE, \
MT_DEVICE | MT_RW | MT_SECURE)
#define MAP_DRAM MAP_REGION_FLAT(DRAM_BASE, \
DRAM_SIZE, \
MT_MEMORY | MT_RW | MT_NS)
/*
/*
* Table of regions to map using the MMU.
* Table of regions
for different BL stages
to map using the MMU.
* This doesn't include Trusted RAM as the 'mem_layout' argument passed to
* This doesn't include Trusted RAM as the 'mem_layout' argument passed to
* configure_mmu_elx() will give the available subset of that,
* configure_mmu_elx() will give the available subset of that,
*/
*/
#if IMAGE_BL1
static
const
mmap_region_t
juno_mmap
[]
=
{
MAP_MHU_SECURE
,
MAP_FLASH
,
MAP_IOFPGA
,
MAP_DEVICE0
,
MAP_DEVICE1
,
{
0
}
};
#endif
#if IMAGE_BL2
static
const
mmap_region_t
juno_mmap
[]
=
{
MAP_MHU_SECURE
,
MAP_FLASH
,
MAP_IOFPGA
,
MAP_DEVICE0
,
MAP_DEVICE1
,
MAP_DRAM
,
{
0
}
};
#endif
#if IMAGE_BL31
static
const
mmap_region_t
juno_mmap
[]
=
{
MAP_MHU_SECURE
,
MAP_IOFPGA
,
MAP_DEVICE0
,
MAP_DEVICE1
,
{
0
}
};
#endif
#if IMAGE_BL32
static
const
mmap_region_t
juno_mmap
[]
=
{
static
const
mmap_region_t
juno_mmap
[]
=
{
{
TZROM_BASE
,
TZROM_BASE
,
TZROM_SIZE
,
MT_MEMORY
|
MT_RO
|
MT_SECURE
},
MAP_IOFPGA
,
{
MHU_SECURE_BASE
,
MHU_SECURE_BASE
,
MHU_SECURE_SIZE
,
(
MHU_PAYLOAD_CACHED
?
MT_MEMORY
:
MT_DEVICE
)
|
MT_RW
|
MT_SECURE
},
MAP_DEVICE0
,
{
FLASH_BASE
,
FLASH_BASE
,
FLASH_SIZE
,
MT_MEMORY
|
MT_RO
|
MT_SECURE
},
MAP_DEVICE1
,
{
EMMC_BASE
,
EMMC_BASE
,
EMMC_SIZE
,
MT_MEMORY
|
MT_RO
|
MT_SECURE
},
{
PSRAM_BASE
,
PSRAM_BASE
,
PSRAM_SIZE
,
MT_MEMORY
|
MT_RW
|
MT_SECURE
},
/* Used for 'TZDRAM' */
{
IOFPGA_BASE
,
IOFPGA_BASE
,
IOFPGA_SIZE
,
MT_DEVICE
|
MT_RW
|
MT_SECURE
},
{
DEVICE0_BASE
,
DEVICE0_BASE
,
DEVICE0_SIZE
,
MT_DEVICE
|
MT_RW
|
MT_SECURE
},
{
DEVICE1_BASE
,
DEVICE1_BASE
,
DEVICE1_SIZE
,
MT_DEVICE
|
MT_RW
|
MT_SECURE
},
{
DRAM_BASE
,
DRAM_BASE
,
DRAM_SIZE
,
MT_MEMORY
|
MT_RW
|
MT_NS
},
{
0
}
{
0
}
};
};
#endif
/*******************************************************************************
/*******************************************************************************
* Macro generating the code for the function setting up the pagetables as per
* Macro generating the code for the function setting up the pagetables as per
...
...
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