MCPcopy Create free account
hub / github.com/coreboot/coreboot / lpae_map_phys_addr

Function lpae_map_phys_addr

payloads/libpayload/arch/arm/virtual.c:120–147  ·  view source on GitHub ↗

* Maps a 2MB designated block to a requested physical address, and returns * the address to the block or NULL on error. * * pa_mb: Physical address in MB. Has to be on a 2MB boundary. * policy: Data chache policy */

Source from the content-addressed store, hash-verified

118 * policy: Data chache policy
119 */
120void *lpae_map_phys_addr(unsigned long pa_mb, enum dcache_policy policy)
121{
122 pmd_t attr;
123
124 if (!ttb_buff)
125 lpae_map_init();
126
127 switch(policy) {
128 case DCACHE_OFF:
129 attr = ATTR_NC;
130 break;
131 case DCACHE_WRITEBACK:
132 attr = ATTR_WB;
133 break;
134 case DCACHE_WRITETHROUGH:
135 attr = ATTR_WT;
136 break;
137 default:
138 return NULL;
139 }
140
141 ttb_buff[work_block >> BLOCK_SHIFT] =
142 ((pmd_t)pa_mb/2 << BLOCK_SHIFT) | attr;
143
144 lpae_flush_work_block();
145
146 return (void *)work_block;
147}
148
149void lpae_restore_map(void)
150{

Callers

nothing calls this directly

Calls 2

lpae_map_initFunction · 0.85
lpae_flush_work_blockFunction · 0.85

Tested by

no test coverage detected