mmu

what is the right way to update MMU translation table

孤街浪徒 提交于 2019-11-27 21:44:43
I enabled MMU on my s3c2440 board (3G - 4G memory :: the fault attribute),everything was just fine when I didn't read/write 3G - 4G memory .So to test the page fault vector ,I wrote to a 0xFF to the 3G address,as I expected ,I got the right value from FSR ,So I did this in _do_page_fault (), the step was like this : ..... // set new page to translation table ..... invlidate_icache (); // clear icache clr_dcache (); // wb is used ,clear dcache invalidate_ttb (); // invalidate translation table and then ISR_dataabort returned ,I read the 3G address to get the 0xFF which I wote before .

How does ARM Linux emulate the dirty, accessed, and file bits of a PTE?

我是研究僧i 提交于 2019-11-27 05:22:25
As per pgtable-2-level.h , ARM Linux has two version of PTE; The Linux PTE and H/W PTE. Linux PTE are stored on below a offset of 1024 bytes. When handling page fault in handle_pte_fault various function like pte_file , pte_mkdirty , pte_mkyoung , get invoke with the version H/W PTE. But actually ARM H/W does not support the dirty, accessed and file bit in its PTE. My question is how does it check the dirty, accessed, file bit of a page on H/W PTE? Ideally it should check those bit on Linux PTE which are stored below an offset of 1024 bytes? artless noise My question is how does it check the

Difference between logical addresses, and physical addresses?

白昼怎懂夜的黑 提交于 2019-11-27 05:04:42
问题 I am reading Operating Systems Concept and I am on the 8th chapter! However I could use some clarification, or reassurance that my understanding is correct. Logical Addresses: Logical addresses are generated by the CPU, according to the book. What exactly does this mean? (In an execute-generated address system..) I assume when code is compiled for a program, the program has no idea where the code will be loaded in memory. All the compiler does is set up a general sketch of the program layout

what is the right way to update MMU translation table

冷暖自知 提交于 2019-11-26 20:46:55
问题 I enabled MMU on my s3c2440 board (3G - 4G memory :: the fault attribute),everything was just fine when I didn't read/write 3G - 4G memory .So to test the page fault vector ,I wrote to a 0xFF to the 3G address,as I expected ,I got the right value from FSR ,So I did this in _do_page_fault (), the step was like this : ..... // set new page to translation table ..... invlidate_icache (); // clear icache clr_dcache (); // wb is used ,clear dcache invalidate_ttb (); // invalidate translation table

How does ARM Linux emulate the dirty, accessed, and file bits of a PTE?

强颜欢笑 提交于 2019-11-26 11:27:57
问题 As per pgtable-2-level.h, ARM Linux has two version of PTE; The Linux PTE and H/W PTE. Linux PTE are stored on below a offset of 1024 bytes. When handling page fault in handle_pte_fault various function like pte_file , pte_mkdirty , pte_mkyoung , get invoke with the version H/W PTE. But actually ARM H/W does not support the dirty, accessed and file bit in its PTE. My question is how does it check the dirty, accessed, file bit of a page on H/W PTE? Ideally it should check those bit on Linux

Why in 64bit the virtual address are 4 bits short (48bit long) compared with the physical address (52 bit long)?

北战南征 提交于 2019-11-26 08:38:58
In the book "Low-Level Programming: C, Assembly, and Program Execution on Intel® 64 Architecture" I read: Each virtual 64-bit address (e.g., ones we are using in our programs) consists of several fields. The address itself is in fact only 48 bits wide; it is sign-extended to a 64-bit canonical address. Its characteristic is that its 17 left bits are equal. If the condition is not satisfied, the address gets rejected immediately when used. Then 48 bits of virtual address are transformed into 52 bits of physical address with the help of special tables. Why is the difference in 4 bits between the

Why in 64bit the virtual address are 4 bits short (48bit long) compared with the physical address (52 bit long)?

那年仲夏 提交于 2019-11-26 02:00:38
问题 In the book \"Low-Level Programming: C, Assembly, and Program Execution on Intel® 64 Architecture\" I read: Each virtual 64-bit address (e.g., ones we are using in our programs) consists of several fields. The address itself is in fact only 48 bits wide; it is sign-extended to a 64-bit canonical address. Its characteristic is that its 17 left bits are equal. If the condition is not satisfied, the address gets rejected immediately when used. Then 48 bits of virtual address are transformed into