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