Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / SLOF / lib / libe1k / e1k.code
1 /******************************************************************************
2  * Copyright (c) 2013 IBM Corporation
3  * All rights reserved.
4  * This program and the accompanying materials
5  * are made available under the terms of the BSD License
6  * which accompanies this distribution, and is available at
7  * http://www.opensource.org/licenses/bsd-license.php
8  *
9  * Contributors:
10  *     IBM Corporation - initial implementation
11  *****************************************************************************/
12
13 /*
14  * libe1k Forth wrapper
15  */
16
17 #include <e1k.h>
18
19 // : e1k-open  ( baseaddr -- false | [ driver true ] )
20 PRIM(E1K_X2d_OPEN)
21 {
22         uint64_t baseaddr = TOS.u; POP;
23         net_driver_t *net_driver = e1k_open(baseaddr);
24         if (net_driver) {
25                 PUSH;
26                 TOS.u = (unsigned long)net_driver; PUSH;
27                 TOS.n = -1;
28         } else {
29                 PUSH;
30                 TOS.n = 0;
31         }
32 }
33 MIRP
34
35 // : e1k-close  ( driver -- )
36 PRIM(E1K_X2d_CLOSE)
37 {
38         net_driver_t *driver = TOS.a; POP;
39         e1k_close(driver);
40 }
41 MIRP
42
43
44 // : e1k-read  ( addr len -- actual )
45 PRIM(E1K_X2d_READ)
46 {
47         int len = TOS.u; POP;
48         TOS.n = e1k_read(TOS.a, len);
49 }
50 MIRP
51
52 // : e1k-write  ( addr len -- actual )
53 PRIM(E1K_X2d_WRITE)
54 {
55         int len = TOS.u; POP;
56         TOS.n = e1k_write(TOS.a, len);
57 }
58 MIRP
59
60 // : e1k-mac-setup  ( vendor-id device-id baseaddr addr -- false | [ mac-addr len true ] )
61 PRIM(E1K_X2d_MAC_X2d_SETUP)
62 {
63         char *mac_addr = TOS.a; POP;
64         uint64_t baseaddr = TOS.u; POP;
65         unsigned int device_id = TOS.u; POP;
66
67         int ret = e1k_mac_setup(TOS.u, device_id, baseaddr, mac_addr);
68         if (!ret) {
69                 TOS.a = mac_addr; PUSH;
70                 TOS.n = 6; PUSH;
71                 TOS.n = -1;
72         } else
73                 TOS.n = 0;
74 }
75 MIRP