+static boolean_t
+kdp_writemem64(
+ kdp_pkt_t *pkt,
+ int *len,
+ unsigned short *reply_port
+)
+{
+ kdp_writemem64_req_t *rq = &pkt->writemem64_req;
+ size_t plen = *len;
+ kdp_writemem64_reply_t *rp = &pkt->writemem64_reply;
+ mach_vm_size_t cnt;
+
+ if (plen < sizeof (*rq))
+ return (FALSE);
+
+ if (rq->nbytes > MAX_KDP_DATA_SIZE)
+ rp->error = KDPERR_BAD_NBYTES;
+ else {
+ dprintf(("kdp_writemem64 addr %llx size %d\n", rq->address, rq->nbytes));
+ cnt = kdp_machine_vm_write((caddr_t)rq->data, (mach_vm_address_t)rq->address, (mach_vm_size_t)rq->nbytes);
+ rp->error = KDPERR_ACCESS(rq->nbytes, cnt);
+ dprintf((" cnt %lld error %d\n", cnt, rp->error));
+ }
+
+ rp->hdr.is_reply = 1;
+ rp->hdr.len = sizeof (*rp);
+
+ *reply_port = kdp.reply_port;
+ *len = rp->hdr.len;
+
+ return (TRUE);
+}
+
+static boolean_t
+kdp_writephysmem64(
+ kdp_pkt_t *pkt,
+ int *len,
+ unsigned short *reply_port
+)
+{
+ kdp_writephysmem64_req_t *rq = &pkt->writephysmem64_req;
+ size_t plen = *len;
+ kdp_writephysmem64_reply_t *rp = &pkt->writephysmem64_reply;
+ mach_vm_size_t cnt;
+ unsigned int size;
+
+ if (plen < sizeof (*rq))
+ return (FALSE);
+
+ size = rq->nbytes;
+ if (size > MAX_KDP_DATA_SIZE)
+ rp->error = KDPERR_BAD_NBYTES;
+ else {
+ dprintf(("kdp_writephysmem64 addr %llx size %d\n", rq->address, size));
+ cnt = kdp_machine_phys_write(rq, rq->data, rq->lcpu);
+ rp->error = KDPERR_ACCESS(size, cnt);
+ dprintf((" cnt %lld error %d\n", cnt, rp->error));
+ }
+
+ rp->hdr.is_reply = 1;
+ rp->hdr.len = sizeof (*rp);
+
+ *reply_port = kdp.reply_port;
+ *len = rp->hdr.len;
+
+ return (TRUE);
+}
+