Hello everyone,

I have trouble running the baremetal UART driver example (from source). My problem happens when I try to map the UART's base to a virtual page.

After looking a bit further, I saw that the range checking on on the pager's physical memory mapping capability fails: the default capability allows the pager to map physical pages from 0x1000000 to 0xe000000, while the UART's base is at 0x101f2000 for the pb926 platform. When I change the capability to allow to map up to 0x20000000, qemu fails with the following error message: qemu: fatal: Trying to execute code outside RAM or ROM at 0x20000000.

For me, capabilities are nothing more than permissions, so why can't I extend the pager's capability to map physical pages to 0x20000000? What does that induce which causes this error?

I saw in the changelogs that a lot of flags previously provided for the cap_control syscall where removed, such as the CAP_SHARE_ALL_SPACES used in the baremetal example. Why have they been removed and is the fact that they are missing somehow related with my problem?

I would greatly appreciate any feedback on this as I obviously must be missing something.

Best regards,

François Goichon


_______________________________________________
codezero-devel mailing list
[email protected]
http://lists.l4dev.org/mailman/listinfo/codezero-devel_lists.l4dev.org

Reply via email to