how does linux avoid cache alias on mips platform

2006/5/6 11:54:11
1. initialize cache sets and cache line size in probe_pcache()
2.initialize 
        shm_align_mask = max_t( unsigned long,
                                c->dcache.sets * c->dcache.linesz - 1,
                                PAGE_SIZE - 1); in r4k_cache_init()
        caculate the size of pcache , and minus 1, got cache mask
 
3.let's look at how does linux avoid cache alias.
do_mmap_pgoff --->get_unmapped_area-->get_unmapped_area(arch_get_unmapped_area)

the first place:
        if (flags & MAP_FIXED) {
                /*
                 * We do not accept a shared mapping if it would violate
                 * cache aliasing constraints.
                 */
                if ((flags & MAP_SHARED) && ( addr & shm_align_mask))
                        return -EINVAL;
                return addr;
        }
the second place:
                        ........
                        if (do_color_align)
                        addr =  COLOUR_ALIGN(addr, pgoff);
                        .......
 
 
got it ? :)

转载于:https://www.cnblogs.com/simBCM/archive/2011/04/05/2005766.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值