btlb_slot
static int _hppa_btlb_insert(struct btlb_slot *);
_hppa_btlb_insert(struct btlb_slot *btlb_slot)
switch (btlb_slot->btlb_slot_tlbprot & TLB_AR_MASK) {
btlb_slot->btlb_slot_number,
(u_int)btlb_slot->btlb_slot_pa_frame << PGSHIFT,
btlb_slot->btlb_slot_va_space,
(u_int)btlb_slot->btlb_slot_va_frame << PGSHIFT,
(u_int)btlb_slot->btlb_slot_frames << PGSHIFT,
btlb_slot->btlb_slot_tlbprot));
if (btlb_slot->btlb_slot_pa_frame < (HPPA_IOSPACE >> PGSHIFT))
btlb_slot->btlb_slot_va_space,
btlb_slot->btlb_slot_va_frame,
btlb_slot->btlb_slot_pa_frame,
btlb_slot->btlb_slot_frames,
btlb_slot->btlb_slot_tlbprot,
btlb_slot->btlb_slot_number);
struct btlb_slot *btlb_slot, *btlb_slot_best, *btlb_slot_end;
for (btlb_slot = btlb_slots;
btlb_slot < btlb_slot_end;
btlb_slot++) {
if (btlb_slot->btlb_slot_frames != 0 ||
!(btlb_slot->btlb_slot_flags &
(btlb_slot->btlb_slot_flags & BTLB_SLOT_DBTLB))
(btlb_slot->btlb_slot_flags & BTLB_SLOT_IBTLB))
btlb_slot_best = btlb_slot;
if (btlb_slot->btlb_slot_flags & BTLB_SLOT_VARIABLE_RANGE)
btlb_slot = btlb_slot_best;
btlb_slot->btlb_slot_va_space = space;
btlb_slot->btlb_slot_va_frame = va;
btlb_slot->btlb_slot_pa_frame = pa;
btlb_slot->btlb_slot_tlbprot = tlbprot;
btlb_slot->btlb_slot_frames = slot_mapped_frames;
error = _hppa_btlb_insert(btlb_slot);
if (btlb_slot->btlb_slot_flags & BTLB_SLOT_DBTLB)
if (btlb_slot->btlb_slot_flags & BTLB_SLOT_IBTLB)
struct btlb_slot *btlb_slot, *btlb_slot_end;
btlb_slot = btlb_slots;
while (error == 0 && btlb_slot < btlb_slot_end) {
if (btlb_slot->btlb_slot_frames != 0)
error = _hppa_btlb_insert(btlb_slot);
btlb_slot++;
struct btlb_slot *btlb_slot, *btlb_slot_end;
for (btlb_slot = btlb_slots;
btlb_slot < btlb_slot_end;
btlb_slot++) {
if (btlb_slot->btlb_slot_frames != 0 &&
btlb_slot->btlb_slot_va_space == space &&
btlb_slot->btlb_slot_va_frame == va) {
btlb_slot->btlb_slot_va_space,
btlb_slot->btlb_slot_va_frame,
btlb_slot->btlb_slot_number,
btlb_slot->btlb_slot_frames);
*sizep = (btlb_slot->btlb_slot_frames << PGSHIFT);
btlb_slot->btlb_slot_frames = 0;
struct btlb_slot *btlb_slot;
btlb_slots = (struct btlb_slot *) ALIGN(vstart);
btlb_slot = btlb_slots;
btlb_slot->btlb_slot_number = (btlb_slot - btlb_slots); \
btlb_slot->btlb_slot_flags = flags; \
btlb_slot->btlb_slot_frames = 0; \
btlb_slot++; \
btlb_slots_count = (btlb_slot - btlb_slots);
vstart = round_page((vaddr_t) btlb_slot);