hcall.s revision d64e89e7a834c2c403a48d72dea4ba04f3c2c0ba
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*
fa9e4066f08beec538e775443c5be79dd423fcabahrens * CDDL HEADER START
fa9e4066f08beec538e775443c5be79dd423fcabahrens *
fa9e4066f08beec538e775443c5be79dd423fcabahrens * The contents of this file are subject to the terms of the
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock * Common Development and Distribution License (the "License").
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock * You may not use this file except in compliance with the License.
fa9e4066f08beec538e775443c5be79dd423fcabahrens *
fa9e4066f08beec538e775443c5be79dd423fcabahrens * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
fa9e4066f08beec538e775443c5be79dd423fcabahrens * or http://www.opensolaris.org/os/licensing.
fa9e4066f08beec538e775443c5be79dd423fcabahrens * See the License for the specific language governing permissions
fa9e4066f08beec538e775443c5be79dd423fcabahrens * and limitations under the License.
fa9e4066f08beec538e775443c5be79dd423fcabahrens *
fa9e4066f08beec538e775443c5be79dd423fcabahrens * When distributing Covered Code, include this CDDL HEADER in each
fa9e4066f08beec538e775443c5be79dd423fcabahrens * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
fa9e4066f08beec538e775443c5be79dd423fcabahrens * If applicable, add the following below this CDDL HEADER, with the
fa9e4066f08beec538e775443c5be79dd423fcabahrens * fields enclosed by brackets "[]" replaced with your own identifying
fa9e4066f08beec538e775443c5be79dd423fcabahrens * information: Portions Copyright [yyyy] [name of copyright owner]
fa9e4066f08beec538e775443c5be79dd423fcabahrens *
fa9e4066f08beec538e775443c5be79dd423fcabahrens * CDDL HEADER END
fa9e4066f08beec538e775443c5be79dd423fcabahrens */
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*
379c004d1f26b343f034bba8a350290691d00d38Eric Schrock * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Use is subject to license terms.
fa9e4066f08beec538e775443c5be79dd423fcabahrens */
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens#pragma ident "%Z%%M% %I% %E% SMI"
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Hypervisor calls
fa9e4066f08beec538e775443c5be79dd423fcabahrens */
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens#include <sys/asm_linkage.h>
fa9e4066f08beec538e775443c5be79dd423fcabahrens#include <sys/machasi.h>
fa9e4066f08beec538e775443c5be79dd423fcabahrens#include <sys/machparam.h>
fa9e4066f08beec538e775443c5be79dd423fcabahrens#include <sys/hypervisor_api.h>
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens#if defined(lint) || defined(__lint)
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_cnputchar(uint8_t ch)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensint64_t
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwickhv_cngetchar(uint8_t *ch)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick{ return (0); }
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa94a07fd0519b8abfd871ad8fe60e6bebe1e2bbbrendanuint64_t
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwickhv_tod_get(uint64_t *seconds)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_tod_set(uint64_t seconds)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0);}
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_mmu_map_perm_addr(void *vaddr, int ctx, uint64_t tte, int flags)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_mmu_unmap_perm_addr(void *vaddr, int ctx, int flags)
5ad820458efd0fdb914baff9c1447c22b819fa23nd{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
5ad820458efd0fdb914baff9c1447c22b819fa23nd/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_set_ctx0(uint64_t ntsb_descriptor, uint64_t desc_ra)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_set_ctxnon0(uint64_t ntsb_descriptor, uint64_t desc_ra)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens#ifdef SET_MMU_STATS
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_mmu_set_stat_area(uint64_t rstatarea, uint64_t size)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens#endif /* SET_MMU_STATS */
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_cpu_qconf(int queue, uint64_t paddr, int size)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
f7991ba49ef5aba7b9cb3c356205d10b753dbbc8Tim Haleyhvio_intr_devino_to_sysino(uint64_t dev_hdl, uint32_t devino, uint64_t *sysino)
f7991ba49ef5aba7b9cb3c356205d10b753dbbc8Tim Haley{ return (0); }
f7991ba49ef5aba7b9cb3c356205d10b753dbbc8Tim Haley
f7991ba49ef5aba7b9cb3c356205d10b753dbbc8Tim Haley/*ARGSUSED*/
f7991ba49ef5aba7b9cb3c356205d10b753dbbc8Tim Haleyuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshvio_intr_getvalid(uint64_t sysino, int *intr_valid_state)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshvio_intr_setvalid(uint64_t sysino, int intr_valid_state)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshvio_intr_getstate(uint64_t sysino, int *intr_state)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshvio_intr_setstate(uint64_t sysino, int intr_state)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshvio_intr_gettarget(uint64_t sysino, uint32_t *cpuid)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshvio_intr_settarget(uint64_t sysino, uint32_t cpuid)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_cpu_yield(void)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_service_recv(uint64_t s_id, uint64_t buf_pa, uint64_t size,
fa9e4066f08beec538e775443c5be79dd423fcabahrens uint64_t *recv_bytes)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_service_send(uint64_t s_id, uint64_t buf_pa, uint64_t size,
fa9e4066f08beec538e775443c5be79dd423fcabahrens uint64_t *send_bytes)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_service_getstatus(uint64_t s_id, uint64_t *vreg)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwickuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_service_setstatus(uint64_t s_id, uint64_t bits)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_service_clrstatus(uint64_t s_id, uint64_t bits)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_cpu_state(uint64_t cpuid, uint64_t *cpu_state)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_dump_buf_update(uint64_t paddr, uint64_t size, uint64_t *minsize)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_mem_scrub(uint64_t real_addr, uint64_t length, uint64_t *scrubbed_len)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwickhv_mem_sync(uint64_t real_addr, uint64_t length, uint64_t *flushed_len)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick{ return (0); }
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwickuint64_t
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwickhv_ttrace_buf_conf(uint64_t paddr, uint64_t size, uint64_t *size1)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_ttrace_buf_info(uint64_t *paddr, uint64_t *size)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick/*ARGSUSED*/
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwickuint64_t
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwickhv_ttrace_enable(uint64_t enable, uint64_t *prev_enable)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick{ return (0); }
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick/*ARGSUSED*/
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwickuint64_t
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwickhv_ttrace_freeze(uint64_t freeze, uint64_t *prev_freeze)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick{ return (0); }
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_mach_desc(uint64_t buffer_ra, uint64_t *buffer_sizep)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_ra2pa(uint64_t ra)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens/*ARGSUSED*/
fa9e4066f08beec538e775443c5be79dd423fcabahrensuint64_t
fa9e4066f08beec538e775443c5be79dd423fcabahrenshv_hpriv(void *func, uint64_t arg1, uint64_t arg2, uint64_t arg3)
fa9e4066f08beec538e775443c5be79dd423fcabahrens{ return (0); }
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens#else /* lint || __lint */
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens /*
fa9e4066f08beec538e775443c5be79dd423fcabahrens * %o0 - character
fa9e4066f08beec538e775443c5be79dd423fcabahrens */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ENTRY(hv_cnputchar)
fa9e4066f08beec538e775443c5be79dd423fcabahrens mov CONS_WRITE, %o5
fa9e4066f08beec538e775443c5be79dd423fcabahrens ta FAST_TRAP
975c32a05c38c6fa808592dd35fa6dba183ca077Neil Perrin tst %o0
fa9e4066f08beec538e775443c5be79dd423fcabahrens retl
fa9e4066f08beec538e775443c5be79dd423fcabahrens movnz %xcc, -1, %o0
fa9e4066f08beec538e775443c5be79dd423fcabahrens SET_SIZE(hv_cnputchar)
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens /*
fa9e4066f08beec538e775443c5be79dd423fcabahrens * %o0 pointer to character buffer
fa9e4066f08beec538e775443c5be79dd423fcabahrens * return values:
fa9e4066f08beec538e775443c5be79dd423fcabahrens * 0 success
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * hv_errno failure
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick */
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick ENTRY(hv_cngetchar)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov %o0, %o2
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov CONS_READ, %o5
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick ta FAST_TRAP
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick brnz,a %o0, 1f ! failure, just return error
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov 1, %o0
fa9e4066f08beec538e775443c5be79dd423fcabahrens
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick cmp %o1, H_BREAK
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick be 1f
fa9e4066f08beec538e775443c5be79dd423fcabahrens mov %o1, %o0
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick cmp %o1, H_HUP
fa9e4066f08beec538e775443c5be79dd423fcabahrens be 1f
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov %o1, %o0
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick
fa9e4066f08beec538e775443c5be79dd423fcabahrens stb %o1, [%o2] ! success, save character and return 0
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov 0, %o0
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick1:
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick retl
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick nop
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick SET_SIZE(hv_cngetchar)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick ENTRY(hv_tod_get)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov %o0, %o4
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov TOD_GET, %o5
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick ta FAST_TRAP
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick retl
fa9e4066f08beec538e775443c5be79dd423fcabahrens stx %o1, [%o4]
fa9e4066f08beec538e775443c5be79dd423fcabahrens SET_SIZE(hv_tod_get)
fa9e4066f08beec538e775443c5be79dd423fcabahrens
99653d4ee642c6528e88224f12409a5f23060994eschrock ENTRY(hv_tod_set)
99653d4ee642c6528e88224f12409a5f23060994eschrock mov TOD_SET, %o5
99653d4ee642c6528e88224f12409a5f23060994eschrock ta FAST_TRAP
99653d4ee642c6528e88224f12409a5f23060994eschrock retl
99653d4ee642c6528e88224f12409a5f23060994eschrock nop
fa9e4066f08beec538e775443c5be79dd423fcabahrens SET_SIZE(hv_tod_set)
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm /*
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm * Map permanent address
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm * arg0 vaddr (%o0)
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm * arg1 context (%o1)
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm * arg2 tte (%o2)
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm * arg3 flags (%o3) 0x1=d 0x2=i
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm */
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm ENTRY(hv_mmu_map_perm_addr)
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm mov MAP_PERM_ADDR, %o5
fa9e4066f08beec538e775443c5be79dd423fcabahrens ta FAST_TRAP
fa9e4066f08beec538e775443c5be79dd423fcabahrens retl
fa9e4066f08beec538e775443c5be79dd423fcabahrens nop
fa9e4066f08beec538e775443c5be79dd423fcabahrens SET_SIZE(hv_mmu_map_perm_addr)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick /*
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * Unmap permanent address
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * arg0 vaddr (%o0)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * arg1 context (%o1)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * arg2 flags (%o2) 0x1=d 0x2=i
6b4acc8bd9d480535a4d057e291dc7c049f664d9ahrens */
6b4acc8bd9d480535a4d057e291dc7c049f664d9ahrens ENTRY(hv_mmu_unmap_perm_addr)
6b4acc8bd9d480535a4d057e291dc7c049f664d9ahrens mov UNMAP_PERM_ADDR, %o5
6b4acc8bd9d480535a4d057e291dc7c049f664d9ahrens ta FAST_TRAP
6b4acc8bd9d480535a4d057e291dc7c049f664d9ahrens retl
6b4acc8bd9d480535a4d057e291dc7c049f664d9ahrens nop
fa9e4066f08beec538e775443c5be79dd423fcabahrens SET_SIZE(hv_mmu_unmap_perm_addr)
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens /*
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Set TSB for context 0
fa9e4066f08beec538e775443c5be79dd423fcabahrens * arg0 ntsb_descriptor (%o0)
fa9e4066f08beec538e775443c5be79dd423fcabahrens * arg1 desc_ra (%o1)
fa9e4066f08beec538e775443c5be79dd423fcabahrens */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ENTRY(hv_set_ctx0)
fa9e4066f08beec538e775443c5be79dd423fcabahrens mov MMU_TSB_CTX0, %o5
fa9e4066f08beec538e775443c5be79dd423fcabahrens ta FAST_TRAP
fa9e4066f08beec538e775443c5be79dd423fcabahrens retl
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm nop
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm SET_SIZE(hv_set_ctx0)
fa9e4066f08beec538e775443c5be79dd423fcabahrens
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick /*
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Set TSB for context non0
fa9e4066f08beec538e775443c5be79dd423fcabahrens * arg0 ntsb_descriptor (%o0)
fa9e4066f08beec538e775443c5be79dd423fcabahrens * arg1 desc_ra (%o1)
fa9e4066f08beec538e775443c5be79dd423fcabahrens */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ENTRY(hv_set_ctxnon0)
fa9e4066f08beec538e775443c5be79dd423fcabahrens mov MMU_TSB_CTXNON0, %o5
fa9e4066f08beec538e775443c5be79dd423fcabahrens ta FAST_TRAP
fa9e4066f08beec538e775443c5be79dd423fcabahrens retl
fa9e4066f08beec538e775443c5be79dd423fcabahrens nop
fa9e4066f08beec538e775443c5be79dd423fcabahrens SET_SIZE(hv_set_ctxnon0)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick#ifdef SET_MMU_STATS
fa9e4066f08beec538e775443c5be79dd423fcabahrens /*
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Returns old stat area on success
fa9e4066f08beec538e775443c5be79dd423fcabahrens */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ENTRY(hv_mmu_set_stat_area)
fa9e4066f08beec538e775443c5be79dd423fcabahrens mov MMU_STAT_AREA, %o5
fa9e4066f08beec538e775443c5be79dd423fcabahrens ta FAST_TRAP
fa9e4066f08beec538e775443c5be79dd423fcabahrens retl
fa9e4066f08beec538e775443c5be79dd423fcabahrens nop
fa9e4066f08beec538e775443c5be79dd423fcabahrens SET_SIZE(hv_mmu_set_stat_area)
fa9e4066f08beec538e775443c5be79dd423fcabahrens#endif /* SET_MMU_STATS */
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens /*
fa9e4066f08beec538e775443c5be79dd423fcabahrens * CPU Q Configure
fa9e4066f08beec538e775443c5be79dd423fcabahrens * arg0 queue (%o0)
fa9e4066f08beec538e775443c5be79dd423fcabahrens * arg1 Base address RA (%o1)
fa9e4066f08beec538e775443c5be79dd423fcabahrens * arg2 Size (%o2)
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm */
fbabab8faf7439009737ccefe9d50152b38c26d1maybee ENTRY(hv_cpu_qconf)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov CPU_QCONF, %o5
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick ta FAST_TRAP
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick retl
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick nop
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick SET_SIZE(hv_cpu_qconf)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick /*
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * arg0 - devhandle
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * arg1 - devino
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick *
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * ret0 - status
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * ret1 - sysino
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick */
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick ENTRY(hvio_intr_devino_to_sysino)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov HVIO_INTR_DEVINO2SYSINO, %o5
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick ta FAST_TRAP
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick brz,a %o0, 1f
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick stx %o1, [%o2]
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick1: retl
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick nop
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick SET_SIZE(hvio_intr_devino_to_sysino)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick /*
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * arg0 - sysino
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick *
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * ret0 - status
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * ret1 - intr_valid_state
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick */
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick ENTRY(hvio_intr_getvalid)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov %o1, %o2
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov HVIO_INTR_GETVALID, %o5
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick ta FAST_TRAP
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick brz,a %o0, 1f
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick stuw %o1, [%o2]
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick1: retl
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick nop
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick SET_SIZE(hvio_intr_getvalid)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick /*
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * arg0 - sysino
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * arg1 - intr_valid_state
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick *
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * ret0 - status
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick */
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick ENTRY(hvio_intr_setvalid)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov HVIO_INTR_SETVALID, %o5
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick ta FAST_TRAP
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick retl
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick nop
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick SET_SIZE(hvio_intr_setvalid)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick /*
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * arg0 - sysino
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick *
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * ret0 - status
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * ret1 - intr_state
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick */
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick ENTRY(hvio_intr_getstate)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov %o1, %o2
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov HVIO_INTR_GETSTATE, %o5
fa9e4066f08beec538e775443c5be79dd423fcabahrens ta FAST_TRAP
fa9e4066f08beec538e775443c5be79dd423fcabahrens brz,a %o0, 1f
ad23a2db4cfc94c0ed1d58554479ce8d2e7e5768johansen stuw %o1, [%o2]
ad23a2db4cfc94c0ed1d58554479ce8d2e7e5768johansen1: retl
ad23a2db4cfc94c0ed1d58554479ce8d2e7e5768johansen nop
fa9e4066f08beec538e775443c5be79dd423fcabahrens SET_SIZE(hvio_intr_getstate)
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens /*
468c413a79615e77179e8d98f22a7e513a8135bdTim Haley * arg0 - sysino
468c413a79615e77179e8d98f22a7e513a8135bdTim Haley * arg1 - intr_state
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock *
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock * ret0 - status
990b4856d0eaada6f8140335733a1b1771ed2746lling */
0a48a24e663a04e34e2ed4e55390ad96f178dbeatimh ENTRY(hvio_intr_setstate)
051aabe6136ff13e81542a427e9693ffe1503525taylor mov HVIO_INTR_SETSTATE, %o5
990b4856d0eaada6f8140335733a1b1771ed2746lling ta FAST_TRAP
6809eb4e2a4a94bcc76229c7b5108b96134537b6Eric Schrock retl
fa9e4066f08beec538e775443c5be79dd423fcabahrens nop
fa9e4066f08beec538e775443c5be79dd423fcabahrens SET_SIZE(hvio_intr_setstate)
394ab0cbe9de0b3be5bf232d9224a9d050999ae5George Wilson
394ab0cbe9de0b3be5bf232d9224a9d050999ae5George Wilson /*
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock * arg0 - sysino
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock *
088f389458728c464569a5506b58070254fa4f7dahrens * ret0 - status
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock * ret1 - cpu_id
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock */
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock ENTRY(hvio_intr_gettarget)
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock mov %o1, %o2
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock mov HVIO_INTR_GETTARGET, %o5
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick ta FAST_TRAP
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick brz,a %o0, 1f
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick stuw %o1, [%o2]
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick1: retl
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick nop
573ca77e53dd31dcaebef023e7eb41969e6896c1George Wilson SET_SIZE(hvio_intr_gettarget)
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens /*
fa9e4066f08beec538e775443c5be79dd423fcabahrens * arg0 - sysino
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock * arg1 - cpu_id
fa9e4066f08beec538e775443c5be79dd423fcabahrens *
8ad4d6dd86f5bc65fb3afa566c8133f3bac21648Jeff Bonwick * ret0 - status
8ad4d6dd86f5bc65fb3afa566c8133f3bac21648Jeff Bonwick */
99653d4ee642c6528e88224f12409a5f23060994eschrock ENTRY(hvio_intr_settarget)
c67d9675bbc8392fe45f3a7dfbda1ad4daa1eb07eschrock mov HVIO_INTR_SETTARGET, %o5
6809eb4e2a4a94bcc76229c7b5108b96134537b6Eric Schrock ta FAST_TRAP
fa9e4066f08beec538e775443c5be79dd423fcabahrens retl
99653d4ee642c6528e88224f12409a5f23060994eschrock nop
39c23413b8df94a95f67b34cfd4a4dfc3fd0b48deschrock SET_SIZE(hvio_intr_settarget)
39c23413b8df94a95f67b34cfd4a4dfc3fd0b48deschrock
89a89ebfd7c3b4056afe2c03e959e22824df777dlling /*
39c23413b8df94a95f67b34cfd4a4dfc3fd0b48deschrock * hv_cpu_yield(void)
99653d4ee642c6528e88224f12409a5f23060994eschrock */
fa94a07fd0519b8abfd871ad8fe60e6bebe1e2bbbrendan ENTRY(hv_cpu_yield)
fa94a07fd0519b8abfd871ad8fe60e6bebe1e2bbbrendan mov HV_CPU_YIELD, %o5
fa94a07fd0519b8abfd871ad8fe60e6bebe1e2bbbrendan ta FAST_TRAP
fa94a07fd0519b8abfd871ad8fe60e6bebe1e2bbbrendan retl
fa94a07fd0519b8abfd871ad8fe60e6bebe1e2bbbrendan nop
fa94a07fd0519b8abfd871ad8fe60e6bebe1e2bbbrendan SET_SIZE(hv_cpu_yield)
fa94a07fd0519b8abfd871ad8fe60e6bebe1e2bbbrendan
fa9e4066f08beec538e775443c5be79dd423fcabahrens /*
088f389458728c464569a5506b58070254fa4f7dahrens * hv_service_recv(uint64_t s_id, uint64_t buf_pa,
fa9e4066f08beec538e775443c5be79dd423fcabahrens * uint64_t size, uint64_t *recv_bytes);
fa9e4066f08beec538e775443c5be79dd423fcabahrens */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ENTRY(hv_service_recv)
fa9e4066f08beec538e775443c5be79dd423fcabahrens save %sp, -SA(MINFRAME), %sp
fa9e4066f08beec538e775443c5be79dd423fcabahrens mov %i0, %o0
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov %i1, %o1
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov %i2, %o2
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov %i3, %o3
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov SVC_RECV, %o5
3a737e0dbe1535527c59ef625c9a252897b0b12abrendan ta FAST_TRAP
3a737e0dbe1535527c59ef625c9a252897b0b12abrendan brnz %o0, 1f
3a737e0dbe1535527c59ef625c9a252897b0b12abrendan mov %o0, %i0
fa9e4066f08beec538e775443c5be79dd423fcabahrens stx %o1, [%i3]
fa9e4066f08beec538e775443c5be79dd423fcabahrens1:
fa9e4066f08beec538e775443c5be79dd423fcabahrens ret
0373e76b3c3643df49ef3483e0f293fdea61d8c6bonwick restore
0373e76b3c3643df49ef3483e0f293fdea61d8c6bonwick SET_SIZE(hv_service_recv)
0373e76b3c3643df49ef3483e0f293fdea61d8c6bonwick
0373e76b3c3643df49ef3483e0f293fdea61d8c6bonwick /*
c5904d138f3bdf0762dbf452a43d5a5c387ea6a8eschrock * hv_service_send(uint64_t s_id, uint64_t buf_pa,
fa9e4066f08beec538e775443c5be79dd423fcabahrens * uint64_t size, uint64_t *recv_bytes);
fa9e4066f08beec538e775443c5be79dd423fcabahrens */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ENTRY(hv_service_send)
fa9e4066f08beec538e775443c5be79dd423fcabahrens save %sp, -SA(MINFRAME), %sp
fa9e4066f08beec538e775443c5be79dd423fcabahrens mov %i0, %o0
0373e76b3c3643df49ef3483e0f293fdea61d8c6bonwick mov %i1, %o1
fa9e4066f08beec538e775443c5be79dd423fcabahrens mov %i2, %o2
fa9e4066f08beec538e775443c5be79dd423fcabahrens mov %i3, %o3
fa9e4066f08beec538e775443c5be79dd423fcabahrens mov SVC_SEND, %o5
fa9e4066f08beec538e775443c5be79dd423fcabahrens ta FAST_TRAP
fa9e4066f08beec538e775443c5be79dd423fcabahrens brnz %o0, 1f
fa9e4066f08beec538e775443c5be79dd423fcabahrens mov %o0, %i0
fa9e4066f08beec538e775443c5be79dd423fcabahrens stx %o1, [%i3]
468c413a79615e77179e8d98f22a7e513a8135bdTim Haley1:
fa9e4066f08beec538e775443c5be79dd423fcabahrens ret
fa9e4066f08beec538e775443c5be79dd423fcabahrens restore
fa9e4066f08beec538e775443c5be79dd423fcabahrens SET_SIZE(hv_service_send)
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens /*
fa9e4066f08beec538e775443c5be79dd423fcabahrens * hv_service_getstatus(uint64_t s_id, uint64_t *vreg);
fa9e4066f08beec538e775443c5be79dd423fcabahrens */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ENTRY(hv_service_getstatus)
8f18d1fadf6a0c20fac9ff7259a5368faa3c3bfbGeorge Wilson mov %o1, %o4 ! save datap
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick mov SVC_GETSTATUS, %o5
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick ta FAST_TRAP
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick brz,a %o0, 1f
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick stx %o1, [%o4]
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick1:
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick retl
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick nop
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick SET_SIZE(hv_service_getstatus)
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick /*
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick * hv_service_setstatus(uint64_t s_id, uint64_t bits);
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick */
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick ENTRY(hv_service_setstatus)
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick mov SVC_SETSTATUS, %o5
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick ta FAST_TRAP
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick retl
fa9e4066f08beec538e775443c5be79dd423fcabahrens nop
fa9e4066f08beec538e775443c5be79dd423fcabahrens SET_SIZE(hv_service_setstatus)
fa9e4066f08beec538e775443c5be79dd423fcabahrens
88ecc943b4eb72f7c4fbbd8435997b85ef171fc3George Wilson /*
88ecc943b4eb72f7c4fbbd8435997b85ef171fc3George Wilson * hv_service_clrstatus(uint64_t s_id, uint64_t bits);
88ecc943b4eb72f7c4fbbd8435997b85ef171fc3George Wilson */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ENTRY(hv_service_clrstatus)
fa9e4066f08beec538e775443c5be79dd423fcabahrens mov SVC_CLRSTATUS, %o5
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick ta FAST_TRAP
8f18d1fadf6a0c20fac9ff7259a5368faa3c3bfbGeorge Wilson retl
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick nop
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick SET_SIZE(hv_service_clrstatus)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick /*
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * int hv_cpu_state(uint64_t cpuid, uint64_t *cpu_state);
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick */
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick ENTRY(hv_cpu_state)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov %o1, %o4 ! save datap
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov HV_CPU_STATE, %o5
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick ta FAST_TRAP
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick brz,a %o0, 1f
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick stx %o1, [%o4]
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick1:
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick retl
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick nop
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick SET_SIZE(hv_cpu_state)
fa9e4066f08beec538e775443c5be79dd423fcabahrens
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens /*
fa9e4066f08beec538e775443c5be79dd423fcabahrens * HV state dump zone Configure
fa9e4066f08beec538e775443c5be79dd423fcabahrens * arg0 real adrs of dump buffer (%o0)
fa9e4066f08beec538e775443c5be79dd423fcabahrens * arg1 size of dump buffer (%o1)
fa9e4066f08beec538e775443c5be79dd423fcabahrens * ret0 status (%o0)
fa9e4066f08beec538e775443c5be79dd423fcabahrens * ret1 size of buffer on success and min size on EINVAL (%o1)
fa9e4066f08beec538e775443c5be79dd423fcabahrens * hv_dump_buf_update(uint64_t paddr, uint64_t size, uint64_t *ret_size)
fa9e4066f08beec538e775443c5be79dd423fcabahrens */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ENTRY(hv_dump_buf_update)
fa9e4066f08beec538e775443c5be79dd423fcabahrens mov DUMP_BUF_UPDATE, %o5
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick ta FAST_TRAP
99653d4ee642c6528e88224f12409a5f23060994eschrock retl
88b7b0f29b20b808b9e06071885b1d6a3ddb6328Matthew Ahrens stx %o1, [%o2]
b16da2e29e074fb6eaeadc4fd7d17ae7340ba240George Wilson SET_SIZE(hv_dump_buf_update)
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens
485bbbf5450c6645352388d798251c1a89ef4c9cGeorge Wilson /*
485bbbf5450c6645352388d798251c1a89ef4c9cGeorge Wilson * For memory scrub
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm * int hv_mem_scrub(uint64_t real_addr, uint64_t length,
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * uint64_t *scrubbed_len);
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * Retun %o0 -- status
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick * %o1 -- bytes scrubbed
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ENTRY(hv_mem_scrub)
0a4e9518a44f226be6d39383330b5b1792d2f184gw mov %o2, %o4
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick mov HV_MEM_SCRUB, %o5
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick ta FAST_TRAP
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick retl
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick stx %o1, [%o4]
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick SET_SIZE(hv_mem_scrub)
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens /*
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Flush ecache
fa9e4066f08beec538e775443c5be79dd423fcabahrens * int hv_mem_sync(uint64_t real_addr, uint64_t length,
fa9e4066f08beec538e775443c5be79dd423fcabahrens * uint64_t *flushed_len);
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Retun %o0 -- status
fa9e4066f08beec538e775443c5be79dd423fcabahrens * %o1 -- bytes flushed
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ENTRY(hv_mem_sync)
990b4856d0eaada6f8140335733a1b1771ed2746lling mov %o2, %o4
fa9e4066f08beec538e775443c5be79dd423fcabahrens mov HV_MEM_SYNC, %o5
c5904d138f3bdf0762dbf452a43d5a5c387ea6a8eschrock ta FAST_TRAP
c5904d138f3bdf0762dbf452a43d5a5c387ea6a8eschrock retl
99653d4ee642c6528e88224f12409a5f23060994eschrock stx %o1, [%o4]
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick SET_SIZE(hv_mem_sync)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick /*
6ce0521ac291be36119f359237066c4fb8088683perrin * TTRACE_BUF_CONF Configure
bf82a41b568b2bd31bf9814587eb25ee2e7b05ffeschrock * arg0 RA base of buffer (%o0)
8ad4d6dd86f5bc65fb3afa566c8133f3bac21648Jeff Bonwick * arg1 buf size in no. of entries (%o1)
468c413a79615e77179e8d98f22a7e513a8135bdTim Haley * ret0 status (%o0)
468c413a79615e77179e8d98f22a7e513a8135bdTim Haley * ret1 minimum size in no. of entries on failure,
8ad4d6dd86f5bc65fb3afa566c8133f3bac21648Jeff Bonwick * actual size in no. of entries on success (%o1)
ca45db4129beff691dc46576c328149443788af2Chris Kirby */
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock ENTRY(hv_ttrace_buf_conf)
06eeb2ad640ce72d394ac521094bed7681044408ek mov TTRACE_BUF_CONF, %o5
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks ta FAST_TRAP
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks retl
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks stx %o1, [%o2]
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks SET_SIZE(hv_ttrace_buf_conf)
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks /*
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks * TTRACE_BUF_INFO
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks * ret0 status (%o0)
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks * ret1 RA base of buffer (%o1)
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks * ret2 size in no. of entries (%o2)
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks */
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks ENTRY(hv_ttrace_buf_info)
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks mov %o0, %o3
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks mov %o1, %o4
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks mov TTRACE_BUF_INFO, %o5
06eeb2ad640ce72d394ac521094bed7681044408ek ta FAST_TRAP
06eeb2ad640ce72d394ac521094bed7681044408ek stx %o1, [%o3]
06eeb2ad640ce72d394ac521094bed7681044408ek retl
06eeb2ad640ce72d394ac521094bed7681044408ek stx %o2, [%o4]
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarks SET_SIZE(hv_ttrace_buf_info)
c8e1f6d2e1adb3a8cc413859aaa8c61813665ac6Mark J Musante
c8e1f6d2e1adb3a8cc413859aaa8c61813665ac6Mark J Musante /*
c8e1f6d2e1adb3a8cc413859aaa8c61813665ac6Mark J Musante * TTRACE_ENABLE
06eeb2ad640ce72d394ac521094bed7681044408ek * arg0 enable/ disable (%o0)
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock * ret0 status (%o0)
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock * ret1 previous enable state (%o1)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick */
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock ENTRY(hv_ttrace_enable)
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick mov %o1, %o2
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock mov TTRACE_ENABLE, %o5
069f55e237020c4a4907b235fc38fafc6442ce94Eric Schrock ta FAST_TRAP
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock retl
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock stx %o1, [%o2]
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock SET_SIZE(hv_ttrace_enable)
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock /*
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock * TTRACE_FREEZE
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock * arg0 enable/ freeze (%o0)
fa9e4066f08beec538e775443c5be79dd423fcabahrens * ret0 status (%o0)
87db74c14be24ab4c463ce6ddb7127e271c647bfek * ret1 previous freeze state (%o1)
87db74c14be24ab4c463ce6ddb7127e271c647bfek */
87db74c14be24ab4c463ce6ddb7127e271c647bfek ENTRY(hv_ttrace_freeze)
87db74c14be24ab4c463ce6ddb7127e271c647bfek mov %o1, %o2
fa9e4066f08beec538e775443c5be79dd423fcabahrens mov TTRACE_FREEZE, %o5
fa9e4066f08beec538e775443c5be79dd423fcabahrens ta FAST_TRAP
fa9e4066f08beec538e775443c5be79dd423fcabahrens retl
e7cbe64f7a72dae5cb44f100db60ca88f3313c65gw stx %o1, [%o2]
fa9e4066f08beec538e775443c5be79dd423fcabahrens SET_SIZE(hv_ttrace_freeze)
b1b8ab34de515a5e83206da22c3d7e563241b021lling
990b4856d0eaada6f8140335733a1b1771ed2746lling /*
990b4856d0eaada6f8140335733a1b1771ed2746lling * MACH_DESC
990b4856d0eaada6f8140335733a1b1771ed2746lling * arg0 buffer real address
379c004d1f26b343f034bba8a350290691d00d38Eric Schrock * arg1 pointer to uint64_t for size of buffer
b1b8ab34de515a5e83206da22c3d7e563241b021lling * ret0 status
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * ret1 return required size of buffer / returned data size
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock */
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock ENTRY(hv_mach_desc)
fa9e4066f08beec538e775443c5be79dd423fcabahrens mov %o1, %o4 ! save datap
c0a81264b59ba24de8701436570c3aae5689dc89ek ldx [%o1], %o1
c0a81264b59ba24de8701436570c3aae5689dc89ek mov HV_MACH_DESC, %o5
c0a81264b59ba24de8701436570c3aae5689dc89ek ta FAST_TRAP
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick retl
c0a81264b59ba24de8701436570c3aae5689dc89ek stx %o1, [%o4]
c0a81264b59ba24de8701436570c3aae5689dc89ek SET_SIZE(hv_mach_desc)
fa9e4066f08beec538e775443c5be79dd423fcabahrens
fa9e4066f08beec538e775443c5be79dd423fcabahrens /*
fa9e4066f08beec538e775443c5be79dd423fcabahrens * hv_ra2pa(uint64_t ra)
fa9e4066f08beec538e775443c5be79dd423fcabahrens *
fa9e4066f08beec538e775443c5be79dd423fcabahrens * MACH_DESC
fa9e4066f08beec538e775443c5be79dd423fcabahrens * arg0 Real address to convert
8ad4d6dd86f5bc65fb3afa566c8133f3bac21648Jeff Bonwick * ret0 Returned physical address or -1 on error
fa9e4066f08beec538e775443c5be79dd423fcabahrens */
fa9e4066f08beec538e775443c5be79dd423fcabahrens ENTRY(hv_ra2pa)
fa9e4066f08beec538e775443c5be79dd423fcabahrens mov HV_RA2PA, %o5
fa9e4066f08beec538e775443c5be79dd423fcabahrens ta FAST_TRAP
fa9e4066f08beec538e775443c5be79dd423fcabahrens cmp %o0, 0
fa9e4066f08beec538e775443c5be79dd423fcabahrens move %xcc, %o1, %o0
movne %xcc, -1, %o0
retl
nop
SET_SIZE(hv_ra2pa)
/*
* hv_hpriv(void *func, uint64_t arg1, uint64_t arg2, uint64_t arg3)
*
* MACH_DESC
* arg0 OS function to call
* arg1 First arg to OS function
* arg2 Second arg to OS function
* arg3 Third arg to OS function
* ret0 Returned value from function
*/
ENTRY(hv_hpriv)
mov HV_HPRIV, %o5
ta FAST_TRAP
retl
nop
SET_SIZE(hv_hpriv)
#endif /* lint || __lint */