📄 xlli_lowlev_mac.mac
字号:
@*********************************************************************************@@ COPYRIGHT (c) 2002 Intel Corporation@@ The information in this file is furnished for informational use only,@ is subject to change without notice, and should not be construed as@ a commitment by Intel Corporation. Intel Corporation assumes no@ responsibility or liability for any errors or inaccuracies that may appear@ in this document or any software that may be provided in association with@ this document.@@*********************************************************************************@@ xlli_LowLev_mac.mac@ MainStone Platform Low Level Macros@@ Copyright (c) 2002 by Intel Corp. Hudson MA@@ List of macros in this file:@@@ xlli_mapSECTIONS (Macro) Generates page table entries for MMU@@*********************************************************************************@ This macro will map a region using 1MB sections@ Notes: @ 1)You must call xlli_initPageTable before this macro is valid.@ 2) This version of the macro is used when NAMED values are passed to the macro .macro xlli_mapSECTIONS w1,w2,w3,w4,size,virtual,physical,access,Level1tab @ $size = size of region to be mapped@ $virtual = starting virtual address of region@ $physical = starting physical address of region@ $access = access bits for this region@ $tabl = physical (base) address of page tables@ $Level1tab = offset from page table base to level 1 entries @ get the page table base address from cp15 mrc p15, 0, \w4, c2, c0, 0 mov \w4, \w4, LSR #14 @ Clear the low order 14 bits because cp15... mov \w4, \w4, LSL #14 @ ...read of these bits are unpredictable ldr \w3, =\size @ get size of bank cmp \w3, #0 beq 2 @ if size=0, skip ldr \w2, =\Level1tab + (\virtual:SHR:(20-2)) @ generate table index add \w2, \w2, \w4 @ offset into page table mov \w3, \w3, LSR #20 @ no. of 1MB segments ldr \w1, =(\physical + \access) @ create table entry1: str \w1, [\w2], #4 @ store table entry and increment add \w1, \w1, #xlli_MemSize_1Mb @ add section number field subs \w3, \w3, #1 @ decrement loop count bne 12: .endm@*********************************************************************************@@ This macro will map a region using 1MB sections@ Notes: @ 1)You must call xlli_initPageTable before this macro is valid.@ 2) This version of the macro is used when REGISTER values are passed to the macro .macro xlli_mapSECTIONS_Var w1,w2,w3,w4,size,virtual,physical,access,Level1tab @ $size = size of region to be mapped@ $virtual = starting virtual address of region@ $physical = starting physical address of region@ $access = access bits for this region@ $tabl = physical (base) address of page tables@ $Level1tab = offset from page table base to level 1 entries @ get the page table base address from cp15 mrc p15, 0, \w4, c2, c0, 0 mov \w4, \w4, LSR #14 @ Clear the low order 14 bits because cp15... mov \w4, \w4, LSL #14 @ ...read of these bits are unpredictable mov \w3, \size @ get size of bank cmp \w3, #0 beq 2 @ if size=0, skip mov \w2, \virtual, LSR #(20-2) add \w2, \w2, #\Level1tab @ generate table index add \w2, \w2, \w4 @ offset into page table mov \w3, \w3, LSR #20 @ no. of 1MB segments add \w1, \physical, \access @ create table entry1: str \w1, [\w2], #4 @ store table entry and increment add \w1, \w1, #xlli_MemSize_1Mb @ add section number field subs \w3, \w3, #1 @ decrement loop count bne 12: .endm
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -