Lines Matching refs:ea

37 extern void slb_allocate(unsigned long ea);
42 static inline unsigned long mk_esid_data(unsigned long ea, int ssize, in mk_esid_data() argument
45 return (ea & slb_esid_mask(ssize)) | SLB_ESID_V | index; in mk_esid_data()
48 static inline unsigned long mk_vsid_data(unsigned long ea, int ssize, in mk_vsid_data() argument
51 return (get_kernel_vsid(ea, ssize) << slb_vsid_shift(ssize)) | flags | in mk_vsid_data()
55 static inline void slb_shadow_update(unsigned long ea, int ssize, in slb_shadow_update() argument
67 WRITE_ONCE(p->save_area[index].vsid, cpu_to_be64(mk_vsid_data(ea, ssize, flags))); in slb_shadow_update()
68 WRITE_ONCE(p->save_area[index].esid, cpu_to_be64(mk_esid_data(ea, ssize, index))); in slb_shadow_update()
76 static inline void create_shadowed_slbe(unsigned long ea, int ssize, in create_shadowed_slbe() argument
85 slb_shadow_update(ea, ssize, flags, index); in create_shadowed_slbe()
88 : "r" (mk_vsid_data(ea, ssize, flags)), in create_shadowed_slbe()
89 "r" (mk_esid_data(ea, ssize, index)) in create_shadowed_slbe()
384 static void insert_slb_entry(unsigned long vsid, unsigned long ea, in insert_slb_entry() argument
417 esid_data = mk_esid_data(ea, ssize, index); in insert_slb_entry()
448 static void handle_multi_context_slb_miss(int context_id, unsigned long ea) in handle_multi_context_slb_miss() argument
457 vsid = get_vsid(context_id, ea, mmu_highuser_ssize); in handle_multi_context_slb_miss()
458 bpsize = get_slice_psize(mm, ea); in handle_multi_context_slb_miss()
459 insert_slb_entry(vsid, ea, bpsize, mmu_highuser_ssize); in handle_multi_context_slb_miss()
465 unsigned long ea = regs->dar; in slb_miss_large_addr() local
468 if (REGION_ID(ea) != USER_REGION_ID) in slb_miss_large_addr()
474 if ((ea & ~REGION_MASK) >= H_PGTABLE_RANGE) in slb_miss_large_addr()
478 if (ea < (1UL << MAX_EA_BITS_PER_CONTEXT)) in slb_miss_large_addr()
485 if (ea >= current->mm->context.slb_addr_limit) in slb_miss_large_addr()
488 context = get_ea_context(&current->mm->context, ea); in slb_miss_large_addr()
492 handle_multi_context_slb_miss(context, ea); in slb_miss_large_addr()
498 _exception(SIGSEGV, regs, SEGV_BNDERR, ea); in slb_miss_large_addr()
500 bad_page_fault(regs, ea, SIGSEGV); in slb_miss_large_addr()