int cch_interrupt_sync(struct gru_context_configuration_handle *cch) { cch->opc = CCHOP_INTERRUPT_SYNC; start_instruction(cch); return wait_instruction_complete(cch, cchop_interrupt_sync); }
void tfh_write_only(struct gru_tlb_fault_handle *tfh, unsigned long pfn, unsigned long vaddr, int asid, int dirty, int pagesize) { tfh->fillasid = asid; tfh->fillvaddr = vaddr; tfh->pfn = pfn; tfh->dirty = dirty; tfh->pagesize = pagesize; tfh->opc = TFHOP_WRITE_ONLY; start_instruction(tfh); }
void tfh_write_restart(struct gru_tlb_fault_handle *tfh, unsigned long paddr, int gaa, unsigned long vaddr, int asid, int dirty, int pagesize) { tfh->fillasid = asid; tfh->fillvaddr = vaddr; tfh->pfn = paddr >> GRU_PADDR_SHIFT; tfh->gaa = gaa; tfh->dirty = dirty; tfh->pagesize = pagesize; tfh->opc = TFHOP_WRITE_RESTART; start_instruction(tfh); }
int cch_allocate(struct gru_context_configuration_handle *cch) { int ret; cch->opc = CCHOP_ALLOCATE; start_instruction(cch); ret = wait_instruction_complete(cch, cchop_allocate); /* * Stop speculation into the GSEG being mapped by the previous ALLOCATE. * The GSEG memory does not exist until the ALLOCATE completes. */ sync_core(); return ret; }
int tfh_write_only(struct gru_tlb_fault_handle *tfh, unsigned long paddr, int gaa, unsigned long vaddr, int asid, int dirty, int pagesize) { tfh->fillasid = asid; tfh->fillvaddr = vaddr; tfh->pfn = paddr >> GRU_PADDR_SHIFT; tfh->gaa = gaa; tfh->dirty = dirty; tfh->pagesize = pagesize; tfh->opc = TFHOP_WRITE_ONLY; start_instruction(tfh); return wait_instruction_complete(tfh, tfhop_write_only); }
int cch_deallocate(struct gru_context_configuration_handle *cch) { int ret; cch->opc = CCHOP_DEALLOCATE; start_instruction(cch); ret = wait_instruction_complete(cch, cchop_deallocate); /* * Stop speculation into the GSEG being unmapped by the previous * DEALLOCATE. */ sync_core(); return ret; }
int cch_allocate(struct gru_context_configuration_handle *cch) { int ret; cch->opc = CCHOP_ALLOCATE; start_instruction(cch); ret = wait_instruction_complete(cch, cchop_allocate); /* */ sync_core(); return ret; }
int cch_allocate(struct gru_context_configuration_handle *cch, int asidval, int sizeavail, unsigned long cbrmap, unsigned long dsrmap) { int i; for (i = 0; i < 8; i++) { cch->asid[i] = (asidval++); cch->sizeavail[i] = sizeavail; } cch->dsr_allocation_map = dsrmap; cch->cbr_allocation_map = cbrmap; cch->opc = CCHOP_ALLOCATE; start_instruction(cch); return wait_instruction_complete(cch, cchop_allocate); }
int tgh_invalidate(struct gru_tlb_global_handle *tgh, unsigned long vaddr, unsigned long vaddrmask, int asid, int pagesize, int global, int n, unsigned short ctxbitmap) { tgh->vaddr = vaddr; tgh->asid = asid; tgh->pagesize = pagesize; tgh->n = n; tgh->global = global; tgh->vaddrmask = vaddrmask; tgh->ctxbitmap = ctxbitmap; tgh->opc = TGHOP_TLBINV; start_instruction(tgh); return wait_instruction_complete(tgh, tghop_invalidate); }
int cch_start(struct gru_context_configuration_handle *cch) { cch->opc = CCHOP_START; start_instruction(cch); return wait_instruction_complete(cch, cchop_start); }
void tfh_exception(struct gru_tlb_fault_handle *tfh) { tfh->opc = TFHOP_EXCEPTION; start_instruction(tfh); }
void tfh_user_polling_mode(struct gru_tlb_fault_handle *tfh) { tfh->opc = TFHOP_USER_POLLING_MODE; start_instruction(tfh); }
void tfh_restart(struct gru_tlb_fault_handle *tfh) { tfh->opc = TFHOP_RESTART; start_instruction(tfh); }
int cch_deallocate(struct gru_context_configuration_handle *cch) { cch->opc = CCHOP_DEALLOCATE; start_instruction(cch); return wait_instruction_complete(cch, cchop_deallocate); }