linux/drivers/crypto/n2_asm.S
<<
>>
Prefs
   1/* n2_asm.S: Hypervisor calls for NCS support.
   2 *
   3 * Copyright (C) 2009 David S. Miller <davem@davemloft.net>
   4 */
   5
   6#include <linux/linkage.h>
   7#include <asm/hypervisor.h>
   8#include "n2_core.h"
   9
  10        /* o0: queue type
  11         * o1: RA of queue
  12         * o2: num entries in queue
  13         * o3: address of queue handle return
  14         */
  15ENTRY(sun4v_ncs_qconf)
  16        mov     HV_FAST_NCS_QCONF, %o5
  17        ta      HV_FAST_TRAP
  18        stx     %o1, [%o3]
  19        retl
  20         nop
  21ENDPROC(sun4v_ncs_qconf)
  22
  23        /* %o0: queue handle
  24         * %o1: address of queue type return
  25         * %o2: address of queue base address return
  26         * %o3: address of queue num entries return
  27         */
  28ENTRY(sun4v_ncs_qinfo)
  29        mov     %o1, %g1
  30        mov     %o2, %g2
  31        mov     %o3, %g3
  32        mov     HV_FAST_NCS_QINFO, %o5
  33        ta      HV_FAST_TRAP
  34        stx     %o1, [%g1]
  35        stx     %o2, [%g2]
  36        stx     %o3, [%g3]
  37        retl
  38         nop
  39ENDPROC(sun4v_ncs_qinfo)
  40
  41        /* %o0: queue handle
  42         * %o1: address of head offset return
  43         */
  44ENTRY(sun4v_ncs_gethead)
  45        mov     %o1, %o2
  46        mov     HV_FAST_NCS_GETHEAD, %o5
  47        ta      HV_FAST_TRAP
  48        stx     %o1, [%o2]
  49        retl
  50         nop
  51ENDPROC(sun4v_ncs_gethead)
  52
  53        /* %o0: queue handle
  54         * %o1: address of tail offset return
  55         */
  56ENTRY(sun4v_ncs_gettail)
  57        mov     %o1, %o2
  58        mov     HV_FAST_NCS_GETTAIL, %o5
  59        ta      HV_FAST_TRAP
  60        stx     %o1, [%o2]
  61        retl
  62         nop
  63ENDPROC(sun4v_ncs_gettail)
  64
  65        /* %o0: queue handle
  66         * %o1: new tail offset
  67         */
  68ENTRY(sun4v_ncs_settail)
  69        mov     HV_FAST_NCS_SETTAIL, %o5
  70        ta      HV_FAST_TRAP
  71        retl
  72         nop
  73ENDPROC(sun4v_ncs_settail)
  74
  75        /* %o0: queue handle
  76         * %o1: address of devino return
  77         */
  78ENTRY(sun4v_ncs_qhandle_to_devino)
  79        mov     %o1, %o2
  80        mov     HV_FAST_NCS_QHANDLE_TO_DEVINO, %o5
  81        ta      HV_FAST_TRAP
  82        stx     %o1, [%o2]
  83        retl
  84         nop
  85ENDPROC(sun4v_ncs_qhandle_to_devino)
  86
  87        /* %o0: queue handle
  88         * %o1: new head offset
  89         */
  90ENTRY(sun4v_ncs_sethead_marker)
  91        mov     HV_FAST_NCS_SETHEAD_MARKER, %o5
  92        ta      HV_FAST_TRAP
  93        retl
  94         nop
  95ENDPROC(sun4v_ncs_sethead_marker)
  96