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