bce: Disable RX max BDs based interrupt moderation
[dragonfly.git] / test / sysperf / upcall.S
... / ...
CommitLineData
1 /*
2 * $DragonFly: src/test/sysperf/upcall.S,v 1.2 2003/11/21 08:32:45 dillon Exp $
3 */
4 .text
5 .globl callused_wrapper
6
7#define CRIT_COUNT 4 /* not a good idea to hardwire this XXX */
8#define PENDING 8 /* not a good idea to hardwire this XXX */
9
10 /*
11 * On entry: %eax contains function
12 * %ecx contains data
13 * Stack: [eax,ecx,eflags,oldip]
14 */
15callused_wrapper:
16 pushl %edx /* save %edx (upcall pointer) */
17 pushl %ecx /* func(data) */
18 call *%eax
19 addl $4,%esp
20 popl %edx /* upcall pointer */
21 incl PENDING(%edx) /* set pending bit (prevents upcalls) */
22 subl $32,CRIT_COUNT(%edx) /* cleanup critical section count */
23 pushl %esp /* sp pointing to os supplied frame */
24 pushl $-1 /* upcid */
25 pushl $2 /* FETCH next */
26 call upc_control
27 popl %eax
28 popl %ecx
29 popl %edx
30 popfl
31 ret
32