On 23/11/2020 20:42, jan.som...@dlr.de wrote:

BSP_START_TEXT_SECTION static inline void
arm_cp15_start_set_translation_table_entries(
   uint32_t *ttb,
   const arm_cp15_start_section_config *config
)
{
   if (config->begin != config->end) {
     uint32_t i;
     uint32_t iend;
     uint32_t index_mask;
     uint32_t flags;
#ifdef ARM_MMU_USE_SMALL_PAGES
     uint32_t *pt;

     pt = &ttb[ARM_MMU_TRANSLATION_TABLE_ENTRY_COUNT];
     i = ARM_MMU_SMALL_PAGE_GET_INDEX(config->begin);
     iend = 
ARM_MMU_SMALL_PAGE_GET_INDEX(ARM_MMU_SECT_MVA_ALIGN_UP(config->end));
ARM_MMU_SECT_MVA_ALIGN_UP seems to round the end address up to the next MiB (e.g. 
0x40001000 -> 0x40100000).
Doesn't that mean that now all 4kiB pages until the next 1MiB will be setup according to 
"config->flags" in the loop below, i.e. the same as using 1MiB sections?
This looks like a bug. It should only round up to the next small page.

I would have expected that the address in config->end is rounded up only to the 
next 4kiB boundary, but I am not sure if I missed something.
I didn't need the 4KiB MMU for the static sections, so I didn't pay much attention to this area. I used the small pages for a specialized heap protection.

--
embedded brains GmbH
Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.hu...@embedded-brains.de
Phone: +49-89-18 94 741 - 16
Fax:   +49-89-18 94 741 - 08
PGP: Public key available on request.

embedded brains GmbH
Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier: 
https://embedded-brains.de/datenschutzerklaerung/

_______________________________________________
users mailing list
users@rtems.org
http://lists.rtems.org/mailman/listinfo/users

Reply via email to