• Aneesh Kumar K.V's avatar
    powerpc/mm: use _raw variant of page table accessors · 66c570f5
    Aneesh Kumar K.V authored
    This switch few of the page table accessor to use the __raw variant
    and does the cpu to big endian conversion of constants. This helps in
    generating better code.
    
    For ex: a pgd_none(pgd) check with and without fix is listed below
    
    Without fix:
    ------------
       2240:	20 00 61 eb 	ld      r27,32(r1)
    /* PGD level */
    typedef struct { __be64 pgd; } pgd_t;
    static inline unsigned long pgd_val(pgd_t x)
    {
    	return be64_to_cpu(x.pgd);
    
        2244:	22 00 66 78 	rldicl  r6,r3,32,32
        2248:	3e 40 7d 54 	rotlwi  r29,r3,8
        224c:	0e c0 7d 50 	rlwimi  r29,r3,24,0,7
        2250:	3e 40 c5 54 	rotlwi  r5,r6,8
        2254:	2e c4 7d 50 	rlwimi  r29,r3,24,16,23
        2258:	0e c0 c5 50 	rlwimi  r5,r6,24,0,7
        225c:	2e c4 c5 50 	rlwimi  r5,r6,24,16,23
        2260:	c6 07 bd 7b 	rldicr  r29,r29,32,31
        2264:	78 2b bd 7f 	or      r29,r29,r5
    		if (pgd_none(pgd))
        2268:	00 00 bd 2f 	cmpdi   cr7,r29,0
        226c:	54 03 9e 41 	beq     cr7,25c0 <__get_user_pages_fast+0x500>
    
    With fix:
    ---------
        2370:	20 00 61 eb 	ld      r27,32(r1)
    		if (pgd_none(pgd))
        2374:	00 00 bd 2f 	cmpdi   cr7,r29,0
        2378:	a8 03 9e 41 	beq     cr7,2720 <__get_user_pages_fast+0x530>
    			break;
    Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
    Acked-by: default avatarBalbir Singh <bsingharora@gmail.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    66c570f5
pgtable.h 29.3 KB