In the link script, the starting address is 0xffffffff00000000. I can then load my own bare metal kernel (for aarch64) in an arbitrary (physical) address and use relative addressing. So when I turn on MMU, how do I know memory won't be written at where kernel is loaded? I mean, if I loaded kernel at 0x01000000, and map physical memory from 0xffffffff00000000 to 0xffffffffffffffff, it seems to me I will still be running into problems if I combine relative with absolute addressing. And it seems like the only solution is to ensure the kernel is loaded always at the same physical address, and then to map that to 0xffffffff00000000... But somehow this beats the purpose of an MMU. Am I correct in my thinking?
mmu in arm: how to map kernel code (bare metal)
396 Views Asked by samuzu.pazael At
1
There are 1 best solutions below
Related Questions in ARM64
- an app supporting arm64 and armv7 running on arm64 and ios 7 ipad air
- Rustc/LLVM generates faulty code for aarch64 with opt-level=0
- iOS (Xcode 6.2) Paypal (2.11.0) integration - 64 duplicate symbols for architecture arm64
- ARM conditional instruction setting flags
- iOS app displays messy when adding arm64 in Valid Architectures
- Assembler on 64-bit iOS (A64)
- Unity vuforia xcode (iOS: armv7, arm64)
- Range of immediate values in ARMv8 A64 assembly
- openFrameworks / freeimage.a cause error with ios arm 64
- UnsatisfiedLinkError on Samsung S6
- UITableview cell Overlap on each with arm64
- armv7 not included in build
- Why does ARM assign addresses to registers like this?
- PHP7 does not compile on arm64 (OrangePI PC2)
- Using .reloc from assembly
Related Questions in BARE-METAL
- Reserve memory space in m_text memory region of FLASH on embedded target
- Issues with ARMv7-A bare metal call stack
- on reboot revert back to original state
- TFTP boot of a bare-metal program on imx53-QSB
- How to check where a function is referenced from
- Bare metal without global operator new
- U-boot, Qemu and baremetal
- Beaglebone packet sniffer using LWIP and StarterWare
- How to write a bare-metal hello world program for PowerPC
- Where is the root device?
- Set up fast (DMTimer-) Interrupt on BeagleBone Black
- How to build a Lego MindStorm EV3 binary?
- Bare Metal Arm (AM1808) - Read from Kick Registers
- Do MPI library need an OS for heterogeneous multicore system?
- Programming embedded without interrupts
Related Questions in MMU
- ARM: Disabling MMU and updating PC
- Does context switch between processes invalidate the MMU(memory control unit)?
- Using MMU to implement resizable arrays
- What does DMA Channel virtualization mean?
- What is PDE cache?
- Why does access to an unmapped location not generate a hardware exception (Microblaze)
- In ARMv7, is the address used in TTBR0 and TTBR1 physical or virtual
- how does kernel code access memory at the assembly level
- Linux /proc/pid/smaps proportional swap (like Pss but for swap)
- What is the downside of updating ARM TTBR(Translate Table Base Register)?
- Problems enabling MMU on ARM Cortex-A8. CPU is S5PV210
- How does MMU deal with Memory mapped registers?
- What is (special in) the elf format for static-pie? And what preforms the fixups to the GOT?
- Why does it take so long for cpu to write memory after it has obtained the physical address?
- Linker : how to place a block of data at a specific address boundary
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Actually the realization that ADR instruction on Aarch64 returns physical address helped me achieve what I wanted. I hope I am right in my thinking, though:
So I don't really need to know the physical address (at which the kernel was loaded) at compile time to set a boundary around kernel to set MMU up properly.