Lines Matching refs:cp

223 gp2_fc_ops(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
226 char *name = fc_cell2ptr(cp->svc_name);
234 if (fc_ops(ap, rp->next_handle, cp) == 0) {
237 return (pv->f(ap, rp, cp));
243 return (pv->f(ap, rp, cp));
254 gfc_map_in(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
264 if (fc_cell2int(cp->nargs) != 3)
265 return (fc_syntax_error(cp, "nargs must be 3"));
267 if (fc_cell2int(cp->nresults) < 1)
268 return (fc_syntax_error(cp, "nresults must be >= 1"));
270 r.regspec_size = len = fc_cell2size(fc_arg(cp, 0));
271 r.regspec_bustype = fc_cell2uint(fc_arg(cp, 1));
272 r.regspec_addr = fc_cell2uint(fc_arg(cp, 2));
289 return (fc_priv_error(cp, "gp2 map-in failed"));
294 cp->nresults = fc_int2cell(1);
295 fc_result(cp, 0) = fc_ptr2cell(virt);
307 return (fc_success_op(ap, rp, cp));
314 gfc_map_out(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
320 if (fc_cell2int(cp->nargs) != 2)
321 return (fc_syntax_error(cp, "nargs must be 2"));
323 virt = fc_cell2ptr(fc_arg(cp, 1));
325 len = fc_cell2size(fc_arg(cp, 0));
345 return (fc_priv_error(cp, "request doesn't match a "
356 cp->nresults = fc_int2cell(0);
357 return (fc_success_op(ap, rp, cp));
361 gfc_register_fetch(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
370 char *name = fc_cell2ptr(cp->svc_name);
373 if (fc_cell2int(cp->nargs) != 1)
374 return (fc_syntax_error(cp, "nargs must be 1"));
376 if (fc_cell2int(cp->nresults) < 1)
377 return (fc_syntax_error(cp, "nresults must be >= 1"));
379 virt = fc_cell2ptr(fc_arg(cp, 0));
396 return (fc_priv_error(cp, "unaligned access"));
416 return (fc_priv_error(cp, "request not within a "
454 return (fc_priv_error(cp, "access error"));
457 cp->nresults = fc_int2cell(1);
459 case sizeof (x): fc_result(cp, 0) = x; break;
460 case sizeof (l): fc_result(cp, 0) = fc_uint32_t2cell(l); break;
461 case sizeof (w): fc_result(cp, 0) = fc_uint16_t2cell(w); break;
462 case sizeof (b): fc_result(cp, 0) = fc_uint8_t2cell(b); break;
464 return (fc_success_op(ap, rp, cp));
468 gfc_register_store(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
476 char *name = fc_cell2ptr(cp->svc_name);
480 if (fc_cell2int(cp->nargs) != 2)
481 return (fc_syntax_error(cp, "nargs must be 2"));
483 virt = fc_cell2ptr(fc_arg(cp, 0));
490 case 'x': len = sizeof (x); x = fc_arg(cp, 1); break;
491 case 'l': len = sizeof (l); l = fc_cell2uint32_t(fc_arg(cp, 1)); break;
492 case 'w': len = sizeof (w); w = fc_cell2uint16_t(fc_arg(cp, 1)); break;
493 case 'b': len = sizeof (b); b = fc_cell2uint8_t(fc_arg(cp, 1)); break;
500 return (fc_priv_error(cp, "unaligned access"));
520 return (fc_priv_error(cp, "request not within a "
553 return (fc_priv_error(cp, "access error"));
556 cp->nresults = fc_int2cell(0);
557 return (fc_success_op(ap, rp, cp));
561 gfc_master_intr(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
565 if (fc_cell2int(cp->nargs) != 2)
566 return (fc_syntax_error(cp, "nargs must be 4"));
568 if (fc_cell2int(cp->nresults) < 1)
569 return (fc_syntax_error(cp, "nresults must be >= 1"));
571 xt = fc_cell2int(fc_arg(cp, 1));
572 portid = fc_cell2int(fc_arg(cp, 0));
577 cp->nresults = fc_int2cell(1);
578 fc_result(cp, 0) = 0;
580 return (fc_success_op(ap, rp, cp));
589 gfc_claim_address(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
595 if (fc_cell2int(cp->nargs) != 6)
596 return (fc_syntax_error(cp, "nargs must be 6"));
598 if (fc_cell2int(cp->nresults) < 2)
599 return (fc_syntax_error(cp, "nresults must be 2"));
601 bar = fc_cell2int(fc_arg(cp, 1));
602 portid = fc_cell2int(fc_arg(cp, 0));
639 return (fc_syntax_error(cp, "invalid argument"));
644 cp->nresults = fc_int2cell(2);
645 fc_result(cp, 0) = LOADDR(paddr);
646 fc_result(cp, 1) = HIADDR(paddr);
648 return (fc_success_op(ap, rp, cp));
657 gfc_claim_memory(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
664 if (fc_cell2int(cp->nargs) != 3)
665 return (fc_syntax_error(cp, "nargs must be 3"));
667 if (fc_cell2int(cp->nresults) < 1)
668 return (fc_syntax_error(cp, "nresults must be >= 1"));
670 vhint = fc_cell2int(fc_arg(cp, 2));
671 size = fc_cell2int(fc_arg(cp, 1));
672 align = fc_cell2int(fc_arg(cp, 0));
680 return (fc_priv_error(cp, "allocation error"));
699 return (fc_priv_error(cp, "allocation error"));
706 cp->nresults = fc_int2cell(1);
707 fc_result(cp, 0) = answer;
718 return (fc_success_op(ap, rp, cp));
727 gfc_release_memory(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
732 if (fc_cell2int(cp->nargs) != 2)
733 return (fc_syntax_error(cp, "nargs must be 2"));
735 if (fc_cell2int(cp->nresults) != 0)
736 return (fc_syntax_error(cp, "nresults must be 0"));
738 vaddr = fc_cell2int(fc_arg(cp, 1));
739 size = fc_cell2int(fc_arg(cp, 0));
758 return (fc_priv_error(cp, "request doesn't match a "
770 cp->nresults = fc_int2cell(0);
772 return (fc_success_op(ap, rp, cp));
781 gfc_vtop(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
787 if (fc_cell2int(cp->nargs) != 1)
788 return (fc_syntax_error(cp, "nargs must be 1"));
790 if (fc_cell2int(cp->nresults) >= 3)
791 return (fc_syntax_error(cp, "nresults must be less than 2"));
793 vaddr = fc_cell2int(fc_arg(cp, 0));
808 return (fc_priv_error(cp, "request doesn't match a "
817 cp->nresults = fc_int2cell(2);
819 fc_result(cp, 0) = paddr;
820 fc_result(cp, 1) = 0;
822 return (fc_success_op(ap, rp, cp));
826 gfc_config_child(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
830 if (fc_cell2int(cp->nargs) != 0)
831 return (fc_syntax_error(cp, "nargs must be 0"));
833 if (fc_cell2int(cp->nresults) < 1)
834 return (fc_syntax_error(cp, "nresults must be >= 1"));
838 cp->nresults = fc_int2cell(1);
839 fc_result(cp, 0) = fc_phandle2cell(h);
841 return (fc_success_op(ap, rp, cp));
845 gfc_get_fcode(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
851 if (fc_cell2int(cp->nargs) != 3)
852 return (fc_syntax_error(cp, "nargs must be 3"));
854 if (fc_cell2int(cp->nresults) < 1)
855 return (fc_syntax_error(cp, "nresults must be >= 1"));
857 name_virt = fc_cell2ptr(fc_arg(cp, 0));
859 fcode_virt = fc_cell2ptr(fc_arg(cp, 1));
861 fcode_len = fc_cell2int(fc_arg(cp, 2));
889 cp->nresults = fc_int2cell(1);
890 fc_result(cp, 0) = status;
892 return (fc_success_op(ap, rp, cp));
896 gfc_get_fcode_size(dev_info_t *ap, fco_handle_t rp, fc_ci_t *cp)
902 if (fc_cell2int(cp->nargs) != 1)
903 return (fc_syntax_error(cp, "nargs must be 1"));
905 if (fc_cell2int(cp->nresults) < 1)
906 return (fc_syntax_error(cp, "nresults must be >= 1"));
908 virt = fc_cell2ptr(fc_arg(cp, 0));
924 cp->nresults = fc_int2cell(1);
925 fc_result(cp, 0) = len;
927 return (fc_success_op(ap, rp, cp));