Skip to content

Commit 0458f0b

Browse files
committed
remove comments in Chinese and keep the code style
1 parent 0471b6d commit 0458f0b

File tree

3 files changed

+36
-40
lines changed

3 files changed

+36
-40
lines changed

bsp/raspberry-pi/raspi3-64/driver/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ void idle_wfi(void)
6464
*/
6565
void rt_hw_board_init(void)
6666
{
67-
mmu_init();//初始化mmu
67+
mmu_init();
6868
armv8_map(0, 0, 0x800000, MEM_ATTR_MEMORY);
6969
armv8_map(0x3f00B000, 0x3f00B000, 0x1000, MEM_ATTR_IO);//timer
7070
armv8_map(0x3f200000, 0x3f200000, 0x16000, MEM_ATTR_IO);//uart

libcpu/aarch64/cortex-a53/mmu.c

Lines changed: 34 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
/*
2-
* Copyright (c) 2006-2019, RT-Thread Development Team
2+
* Copyright (c) 2006-2020, RT-Thread Development Team
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*
66
* Change Logs:
77
* Date Author Notes
88
* 2020-02-20 bigmagic first version
99
*/
10-
1110
#include <mmu.h>
1211
#include <stddef.h>
1312

@@ -19,21 +18,20 @@ static unsigned long main_tbl[512 * 20] __attribute__((aligned (4096)));
1918

2019
#define IS_ALIGNED(x, a) (((x) & ((typeof(x))(a) - 1)) == 0)
2120

22-
//映射方式
2321
#define PMD_TYPE_SECT (1 << 0)
2422

2523
#define PMD_TYPE_TABLE (3 << 0)
2624

2725
#define PTE_TYPE_PAGE (3 << 0)
2826

29-
#define BITS_PER_VA 39
27+
#define BITS_PER_VA 39
3028

3129
/* Granule size of 4KB is being used */
3230
#define GRANULE_SIZE_SHIFT 12
3331
#define GRANULE_SIZE (1 << GRANULE_SIZE_SHIFT)
3432
#define XLAT_ADDR_MASK ((1UL << BITS_PER_VA) - GRANULE_SIZE)
3533

36-
#define PMD_TYPE_MASK (3 << 0)
34+
#define PMD_TYPE_MASK (3 << 0)
3735

3836
int free_idx = 1;
3937

@@ -46,25 +44,26 @@ void mmu_memset(char *dst, char v, size_t len)
4644
}
4745

4846
static unsigned long __page_off = 0;
49-
static unsigned long get_free_page(void) {
47+
static unsigned long get_free_page(void)
48+
{
5049
__page_off += 512;
5150
return (unsigned long)(main_tbl + __page_off);
5251
}
5352

5453
void mmu_init(void)
5554
{
5655
unsigned long val64;
57-
unsigned long val32; //val32不是uint32_t,val32只是表示相关的那个寄存器是32位的
56+
unsigned long val32;
5857

5958
val64 = 0x007f6eUL;
6059
__asm__ volatile("msr MAIR_EL1, %0\n dsb sy\n"::"r"(val64));
6160
__asm__ volatile("mrs %0, MAIR_EL1\n dsb sy\n":"=r"(val64));
6261

6362
//TCR_EL1
64-
val32 = (16UL << 0)//48 位
65-
| (0x0UL << 6)//没有用到
66-
| (0x0UL << 7)//使能enable lower half
67-
| (0x3UL << 8)//写回模式,没有cahce访问
63+
val32 = (16UL << 0)//48bit
64+
| (0x0UL << 6)
65+
| (0x0UL << 7)
66+
| (0x3UL << 8)
6867
| (0x3UL << 10)//Inner Shareable
6968
| (0x2UL << 12)
7069
| (0x0UL << 14)//4K
@@ -91,14 +90,11 @@ void mmu_enable(void)
9190
unsigned long val64;
9291
unsigned long val32;
9392

94-
//关闭指令cache
9593
__asm__ volatile("mrs %0, SCTLR_EL1\n":"=r"(val64));
9694
val64 &= ~0x1000; //disable I
9795
__asm__ volatile("dmb sy\n msr SCTLR_EL1, %0\n isb sy\n"::"r"(val64));
9896

99-
//清除指令cache
10097
__asm__ volatile("IC IALLUIS\n dsb sy\n isb sy\n");
101-
//清除tlb
10298
__asm__ volatile("tlbi vmalle1\n dsb sy\n isb sy\n");
10399

104100
//SCTLR_EL1, turn on mmu
@@ -107,32 +103,39 @@ void mmu_enable(void)
107103
__asm__ volatile("dmb sy\n msr SCTLR_EL1, %0\nisb sy\n"::"r"(val32));
108104
}
109105

110-
static int map_single_page_2M(unsigned long* lv0_tbl, unsigned long va, unsigned long pa, unsigned long attr) {
106+
static int map_single_page_2M(unsigned long* lv0_tbl, unsigned long va, unsigned long pa, unsigned long attr)
107+
{
111108
int level;
112109
unsigned long* cur_lv_tbl = lv0_tbl;
113110
unsigned long page;
114111
unsigned long off;
115112
int level_shift = 39;
116113

117-
if (va & (0x200000UL - 1)) {
114+
if (va & (0x200000UL - 1))
115+
{
118116
return MMU_MAP_ERROR_VANOTALIGN;
119117
}
120-
if (pa & (0x200000UL - 1)) {
118+
if (pa & (0x200000UL - 1))
119+
{
121120
return MMU_MAP_ERROR_PANOTALIGN;
122121
}
123-
for (level = 0; level < 2; level++) {
122+
for (level = 0; level < 2; level++)
123+
{
124124
off = (va >> level_shift);
125125
off &= MMU_LEVEL_MASK;
126-
if ((cur_lv_tbl[off] & 1) == 0) {
126+
if ((cur_lv_tbl[off] & 1) == 0)
127+
{
127128
page = get_free_page();
128-
if (!page) {
129+
if (!page)
130+
{
129131
return MMU_MAP_ERROR_NOPAGE;
130132
}
131133
mmu_memset((char *)page, 0, 4096);
132134
cur_lv_tbl[off] = page | 0x3UL;
133135
}
134136
page = cur_lv_tbl[off];
135-
if (!(page & 0x2)) {
137+
if (!(page & 0x2))
138+
{
136139
//is block! error!
137140
return MMU_MAP_ERROR_CONFLICT;
138141
}
@@ -173,13 +176,10 @@ int armv8_map_2M(unsigned long va, unsigned long pa, int count, unsigned long at
173176
return 0;
174177
}
175178

176-
//将表的地址映射到其他的地方去
177179
static void set_table(uint64_t *pt, uint64_t *table_addr)
178180
{
179181
uint64_t val;
180-
//0x607
181-
182-
val = (0x3UL | (uint64_t)table_addr);//(0x3UL | (uint64_t)table_addr);
182+
val = (0x3UL | (uint64_t)table_addr);
183183
*pt = val;
184184
}
185185

@@ -208,28 +208,21 @@ static int pte_type(uint64_t *pte)
208208
static int level2shift(int level)
209209
{
210210
/* Page is 12 bits wide, every level translates 9 bits */
211-
//
212211
return (12 + 9 * (3 - level));
213212
}
214213

215-
216-
uint64_t *test_table = 0;
217-
218-
219-
220-
//根据表映射
221214
static uint64_t *get_level_table(uint64_t *pte)
222215
{
223216
uint64_t *table = (uint64_t *)(*pte & XLAT_ADDR_MASK);
224217

225-
if (pte_type(pte) != PMD_TYPE_TABLE) {
218+
if (pte_type(pte) != PMD_TYPE_TABLE)
219+
{
226220
table = create_table();
227221
set_table(pte, table);
228222
}
229223
return table;
230224
}
231225

232-
233226
static void map_region(uint64_t virt, uint64_t phys, uint64_t size, uint64_t attr)
234227
{
235228
uint64_t block_size = 0;
@@ -241,16 +234,19 @@ static void map_region(uint64_t virt, uint64_t phys, uint64_t size, uint64_t att
241234
int level = 0;
242235

243236
addr = virt;
244-
while (size) {
245-
table = &main_tbl[0];//将一级页表的地址赋值
246-
for (level = 0; level < 4; level++) {
237+
while (size)
238+
{
239+
table = &main_tbl[0];
240+
for (level = 0; level < 4; level++)
241+
{
247242
block_shift = level2shift(level);
248243
idx = addr >> block_shift;
249244
idx = idx%512;
250245
block_size = (uint64_t)(1L << block_shift);
251246
pte = table + idx;
252247

253-
if (size >= block_size && IS_ALIGNED(addr, block_size)) {
248+
if (size >= block_size && IS_ALIGNED(addr, block_size))
249+
{
254250
attr &= 0xfff0000000000ffcUL;
255251
if(level != 3)
256252
{

libcpu/aarch64/cortex-a53/mmu.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2006-2019, RT-Thread Development Team
2+
* Copyright (c) 2006-2020, RT-Thread Development Team
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*

0 commit comments

Comments
 (0)