1*4882a593Smuzhiyun/* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun/* n2-asm.S: Niagara2 RNG hypervisor call assembler. 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (C) 2008 David S. Miller <davem@davemloft.net> 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun#include <linux/linkage.h> 7*4882a593Smuzhiyun#include <asm/hypervisor.h> 8*4882a593Smuzhiyun#include "n2rng.h" 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun .text 11*4882a593Smuzhiyun 12*4882a593SmuzhiyunENTRY(sun4v_rng_get_diag_ctl) 13*4882a593Smuzhiyun mov HV_FAST_RNG_GET_DIAG_CTL, %o5 14*4882a593Smuzhiyun ta HV_FAST_TRAP 15*4882a593Smuzhiyun retl 16*4882a593Smuzhiyun nop 17*4882a593SmuzhiyunENDPROC(sun4v_rng_get_diag_ctl) 18*4882a593Smuzhiyun 19*4882a593SmuzhiyunENTRY(sun4v_rng_ctl_read_v1) 20*4882a593Smuzhiyun mov %o1, %o3 21*4882a593Smuzhiyun mov %o2, %o4 22*4882a593Smuzhiyun mov HV_FAST_RNG_CTL_READ, %o5 23*4882a593Smuzhiyun ta HV_FAST_TRAP 24*4882a593Smuzhiyun stx %o1, [%o3] 25*4882a593Smuzhiyun retl 26*4882a593Smuzhiyun stx %o2, [%o4] 27*4882a593SmuzhiyunENDPROC(sun4v_rng_ctl_read_v1) 28*4882a593Smuzhiyun 29*4882a593SmuzhiyunENTRY(sun4v_rng_ctl_read_v2) 30*4882a593Smuzhiyun save %sp, -192, %sp 31*4882a593Smuzhiyun mov %i0, %o0 32*4882a593Smuzhiyun mov %i1, %o1 33*4882a593Smuzhiyun mov HV_FAST_RNG_CTL_READ, %o5 34*4882a593Smuzhiyun ta HV_FAST_TRAP 35*4882a593Smuzhiyun stx %o1, [%i2] 36*4882a593Smuzhiyun stx %o2, [%i3] 37*4882a593Smuzhiyun stx %o3, [%i4] 38*4882a593Smuzhiyun stx %o4, [%i5] 39*4882a593Smuzhiyun ret 40*4882a593Smuzhiyun restore %g0, %o0, %o0 41*4882a593SmuzhiyunENDPROC(sun4v_rng_ctl_read_v2) 42*4882a593Smuzhiyun 43*4882a593SmuzhiyunENTRY(sun4v_rng_ctl_write_v1) 44*4882a593Smuzhiyun mov %o3, %o4 45*4882a593Smuzhiyun mov HV_FAST_RNG_CTL_WRITE, %o5 46*4882a593Smuzhiyun ta HV_FAST_TRAP 47*4882a593Smuzhiyun retl 48*4882a593Smuzhiyun stx %o1, [%o4] 49*4882a593SmuzhiyunENDPROC(sun4v_rng_ctl_write_v1) 50*4882a593Smuzhiyun 51*4882a593SmuzhiyunENTRY(sun4v_rng_ctl_write_v2) 52*4882a593Smuzhiyun mov HV_FAST_RNG_CTL_WRITE, %o5 53*4882a593Smuzhiyun ta HV_FAST_TRAP 54*4882a593Smuzhiyun retl 55*4882a593Smuzhiyun nop 56*4882a593SmuzhiyunENDPROC(sun4v_rng_ctl_write_v2) 57*4882a593Smuzhiyun 58*4882a593SmuzhiyunENTRY(sun4v_rng_data_read_diag_v1) 59*4882a593Smuzhiyun mov %o2, %o4 60*4882a593Smuzhiyun mov HV_FAST_RNG_DATA_READ_DIAG, %o5 61*4882a593Smuzhiyun ta HV_FAST_TRAP 62*4882a593Smuzhiyun retl 63*4882a593Smuzhiyun stx %o1, [%o4] 64*4882a593SmuzhiyunENDPROC(sun4v_rng_data_read_diag_v1) 65*4882a593Smuzhiyun 66*4882a593SmuzhiyunENTRY(sun4v_rng_data_read_diag_v2) 67*4882a593Smuzhiyun mov %o3, %o4 68*4882a593Smuzhiyun mov HV_FAST_RNG_DATA_READ_DIAG, %o5 69*4882a593Smuzhiyun ta HV_FAST_TRAP 70*4882a593Smuzhiyun retl 71*4882a593Smuzhiyun stx %o1, [%o4] 72*4882a593SmuzhiyunENDPROC(sun4v_rng_data_read_diag_v2) 73*4882a593Smuzhiyun 74*4882a593SmuzhiyunENTRY(sun4v_rng_data_read) 75*4882a593Smuzhiyun mov %o1, %o4 76*4882a593Smuzhiyun mov HV_FAST_RNG_DATA_READ, %o5 77*4882a593Smuzhiyun ta HV_FAST_TRAP 78*4882a593Smuzhiyun retl 79*4882a593Smuzhiyun stx %o1, [%o4] 80*4882a593SmuzhiyunENDPROC(sun4v_rng_data_read) 81