示例#1
0
static inline unsigned int beat_read_mask(unsigned hpte_group)
{
    unsigned long rmask = 0;
    u64 hpte_v[5];

    beat_read_htab_entries(0, hpte_group + 0, hpte_v);
    if (!(hpte_v[0] & HPTE_V_BOLTED))
        rmask |= 0x8000;
    if (!(hpte_v[1] & HPTE_V_BOLTED))
        rmask |= 0x4000;
    if (!(hpte_v[2] & HPTE_V_BOLTED))
        rmask |= 0x2000;
    if (!(hpte_v[3] & HPTE_V_BOLTED))
        rmask |= 0x1000;
    beat_read_htab_entries(0, hpte_group + 4, hpte_v);
    if (!(hpte_v[0] & HPTE_V_BOLTED))
        rmask |= 0x0800;
    if (!(hpte_v[1] & HPTE_V_BOLTED))
        rmask |= 0x0400;
    if (!(hpte_v[2] & HPTE_V_BOLTED))
        rmask |= 0x0200;
    if (!(hpte_v[3] & HPTE_V_BOLTED))
        rmask |= 0x0100;
    hpte_group = ~hpte_group & (htab_hash_mask * HPTES_PER_GROUP);
    beat_read_htab_entries(0, hpte_group + 0, hpte_v);
    if (!(hpte_v[0] & HPTE_V_BOLTED))
        rmask |= 0x80;
    if (!(hpte_v[1] & HPTE_V_BOLTED))
        rmask |= 0x40;
    if (!(hpte_v[2] & HPTE_V_BOLTED))
        rmask |= 0x20;
    if (!(hpte_v[3] & HPTE_V_BOLTED))
        rmask |= 0x10;
    beat_read_htab_entries(0, hpte_group + 4, hpte_v);
    if (!(hpte_v[0] & HPTE_V_BOLTED))
        rmask |= 0x08;
    if (!(hpte_v[1] & HPTE_V_BOLTED))
        rmask |= 0x04;
    if (!(hpte_v[2] & HPTE_V_BOLTED))
        rmask |= 0x02;
    if (!(hpte_v[3] & HPTE_V_BOLTED))
        rmask |= 0x01;
    return rmask;
}
示例#2
0
文件: beat_htab.c 项目: 274914765/C
static unsigned long beat_lpar_hpte_getword0(unsigned long slot)
{
    unsigned long dword0, dword[5];
    unsigned long lpar_rc;

    lpar_rc = beat_read_htab_entries(0, slot & ~3UL, dword);

    dword0 = dword[slot&3];

    BUG_ON(lpar_rc != 0);

    return dword0;
}