On Thu Feb 12, 2026 at 5:26 PM JST, Alexandre Courbot wrote:
> +        let dmem_desc = {
> +            let imem_sec = 
> FalconDmaLoadable::imem_sec_load_params(&firmware);
> +            let imem_ns = 
> FalconDmaLoadable::imem_ns_load_params(&firmware).ok_or(EINVAL)?;
> +            let dmem = FalconDmaLoadable::dmem_load_params(&firmware);
> +
> +            BootloaderDmemDescV2 {
> +                reserved: [0; 4],
> +                signature: [0; 4],
> +                ctx_dma: 4, // FALCON_DMAIDX_PHYS_SYS_NCOH
> +                code_dma_base: firmware.dma_handle(),
> +                non_sec_code_off: imem_ns.dst_start,
> +                non_sec_code_size: imem_ns.len,
> +                sec_code_off: imem_sec.dst_start,
> +                sec_code_size: imem_sec.len,
> +                code_entry_point: 0,
> +                data_dma_base: firmware.dma_handle() + 
> u64::from(dmem.src_start),
> +                data_size: dmem.len,
> +                argc: 0,
> +                argv: 0,
> +            }
> +        };
> +
> +        // The bootloader's code must be loaded in the area right below the 
> first 64K of IMEM.
> +        const BOOTLOADER_LOAD_CEILING: u32 = num::usize_into_u32::<{ 
> sizes::SZ_64K }>();
> +        let imem_dst_start = BOOTLOADER_LOAD_CEILING
> +            .checked_sub(desc.code_size)
> +            .ok_or(EOVERFLOW)?;

Are there any alignment requirements for `imem_dst_start`? Or maybe
`code_size` is always such that the alignment will be fine?

Reply via email to