 0a625fd2ab
			
		
	
	
	0a625fd2ab
	
	
	
		
			
			Current deficiencies: 1) No HMAC hash support yet. 2) Although the algs are registered as ASYNC they always run synchronously. Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
		
			
				
	
	
		
			95 lines
		
	
	
	
		
			1.7 KiB
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
	
		
			1.7 KiB
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* n2_asm.S: Hypervisor calls for NCS support.
 | |
|  *
 | |
|  * Copyright (C) 2009 David S. Miller <davem@davemloft.net>
 | |
|  */
 | |
| 
 | |
| #include <linux/linkage.h>
 | |
| #include <asm/hypervisor.h>
 | |
| #include "n2_core.h"
 | |
| 
 | |
| 	/* o0: queue type
 | |
| 	 * o1: RA of queue
 | |
| 	 * o2: num entries in queue
 | |
| 	 * o3: address of queue handle return
 | |
| 	 */
 | |
| ENTRY(sun4v_ncs_qconf)
 | |
| 	mov	HV_FAST_NCS_QCONF, %o5
 | |
| 	ta	HV_FAST_TRAP
 | |
| 	stx	%o1, [%o3]
 | |
| 	retl
 | |
| 	 nop
 | |
| ENDPROC(sun4v_ncs_qconf)
 | |
| 
 | |
| 	/* %o0: queue handle
 | |
| 	 * %o1: address of queue type return
 | |
| 	 * %o2: address of queue base address return
 | |
| 	 * %o3: address of queue num entries return
 | |
| 	 */
 | |
| ENTRY(sun4v_ncs_qinfo)
 | |
| 	mov	%o1, %g1
 | |
| 	mov	%o2, %g2
 | |
| 	mov	%o3, %g3
 | |
| 	mov	HV_FAST_NCS_QINFO, %o5
 | |
| 	ta	HV_FAST_TRAP
 | |
| 	stx	%o1, [%g1]
 | |
| 	stx	%o2, [%g2]
 | |
| 	stx	%o3, [%g3]
 | |
| 	retl
 | |
| 	 nop
 | |
| ENDPROC(sun4v_ncs_qinfo)
 | |
| 
 | |
| 	/* %o0: queue handle
 | |
| 	 * %o1: address of head offset return
 | |
| 	 */
 | |
| ENTRY(sun4v_ncs_gethead)
 | |
| 	mov	%o1, %o2
 | |
| 	mov	HV_FAST_NCS_GETHEAD, %o5
 | |
| 	ta	HV_FAST_TRAP
 | |
| 	stx	%o1, [%o2]
 | |
| 	retl
 | |
| 	 nop
 | |
| ENDPROC(sun4v_ncs_gethead)
 | |
| 
 | |
| 	/* %o0: queue handle
 | |
| 	 * %o1: address of tail offset return
 | |
| 	 */
 | |
| ENTRY(sun4v_ncs_gettail)
 | |
| 	mov	%o1, %o2
 | |
| 	mov	HV_FAST_NCS_GETTAIL, %o5
 | |
| 	ta	HV_FAST_TRAP
 | |
| 	stx	%o1, [%o2]
 | |
| 	retl
 | |
| 	 nop
 | |
| ENDPROC(sun4v_ncs_gettail)
 | |
| 
 | |
| 	/* %o0: queue handle
 | |
| 	 * %o1: new tail offset
 | |
| 	 */
 | |
| ENTRY(sun4v_ncs_settail)
 | |
| 	mov	HV_FAST_NCS_SETTAIL, %o5
 | |
| 	ta	HV_FAST_TRAP
 | |
| 	retl
 | |
| 	 nop
 | |
| ENDPROC(sun4v_ncs_settail)
 | |
| 
 | |
| 	/* %o0: queue handle
 | |
| 	 * %o1: address of devino return
 | |
| 	 */
 | |
| ENTRY(sun4v_ncs_qhandle_to_devino)
 | |
| 	mov	%o1, %o2
 | |
| 	mov	HV_FAST_NCS_QHANDLE_TO_DEVINO, %o5
 | |
| 	ta	HV_FAST_TRAP
 | |
| 	stx	%o1, [%o2]
 | |
| 	retl
 | |
| 	 nop
 | |
| ENDPROC(sun4v_ncs_qhandle_to_devino)
 | |
| 
 | |
| 	/* %o0: queue handle
 | |
| 	 * %o1: new head offset
 | |
| 	 */
 | |
| ENTRY(sun4v_ncs_sethead_marker)
 | |
| 	mov	HV_FAST_NCS_SETHEAD_MARKER, %o5
 | |
| 	ta	HV_FAST_TRAP
 | |
| 	retl
 | |
| 	 nop
 | |
| ENDPROC(sun4v_ncs_sethead_marker)
 |