Hello,

I have a question for armv7_icache_sync_range function in
sys/arch/arm/arm/cpufunc_asm_armv7.S

ENTRY(armv7_icache_sync_range)
        ldr     ip, .Larmv7_line_size
        cmp     r1, #0x8000
        movcs   r1, #0x8000

The register r1 is the size of range to sync.
My question is, why it is limited to 0x8000 (32K bytes) ?

Similar limitation also existed in following functions:
armv7_dcache_wb_range
armv7_idcache_wbinv_range
armv7_dcache_wbinv_range
armv7_dcache_inv_range

It's so strange!

The function armv5_ec_icache_sync_range in
sys/arch/arm/arm/cpufunc_asm_armv5_ec.S

ENTRY_NP(armv5_ec_icache_sync_range)
        ldr     ip, .Larmv5_ec_line_size
        cmp     r1, #0x4000
        bcs     .Larmv5_ec_icache_sync_all

It will use icache_sync_all function if size greater than 0x4000,
is this logic suitable for armv7_icache_sync_range function?
Is there any performance consideration?

Any comment?

BRs,
Joey

Reply via email to