BNX2X: IO funcs spatched
[akaros.git] / kern / drivers / net / bnx2x / akaros_compat.h
1 /* Copyright (c) 2015 Google Inc.
2  *
3  * Dumping ground for converting between Akaros and other OSs. */
4
5 #ifndef ROS_KERN_AKAROS_COMPAT_H
6 #define ROS_KERN_AKAROS_COMPAT_H
7
8 /* Common headers that most driver files will need */
9
10 #include <assert.h>
11 #include <error.h>
12 #include <ip.h>
13 #include <kmalloc.h>
14 #include <kref.h>
15 #include <pmap.h>
16 #include <slab.h>
17 #include <smp.h>
18 #include <stdio.h>
19 #include <string.h>
20 #include <bitmap.h>
21 #include <mii.h>
22 #include <umem.h>
23 #include <mmio.h>
24
25 #define __rcu
26 typedef unsigned long dma_addr_t;
27 typedef int pci_power_t;
28
29 #define DEFINE_SEMAPHORE(name)  \
30     struct semaphore name = SEMAPHORE_INITIALIZER_IRQSAVE(name, 1)
31 #define sema_init(sem, val) sem_init_irqsave(sem, val)
32 #define up(sem) sem_up(sem)
33 #define down(sem) sem_down(sem)
34 #define down_trylock(sem) ({!sem_trydown(sem);})
35 /* In lieu of spatching, I wanted to keep the distinction between down and
36  * down_interruptible/down_timeout.  Akaros doesn't have the latter. */
37 #define down_interruptible(sem) ({sem_down(sem); 0;})
38 #define down_timeout(sem, timeout) ({sem_down(sem); 0;})
39
40
41 /* I'd like to spatch all of the pci methods, but I don't know how to do the
42  * reads.  Since we're not doing the reads, then no sense doing the writes. */
43 static inline int pci_read_config_byte(struct pci_device *dev, uint32_t off,
44                                        uint8_t *val)
45 {
46         *val = pcidev_read8(dev, off);
47         return 0;
48 }
49                                        
50 static inline int pci_read_config_word(struct pci_device *dev, uint32_t off,
51                                        uint16_t *val)
52 {
53         *val = pcidev_read16(dev, off);
54         return 0;
55 }
56                                        
57 static inline int pci_read_config_dword(struct pci_device *dev, uint32_t off,
58                                         uint32_t *val)
59 {
60         *val = pcidev_read32(dev, off);
61         return 0;
62 }
63                                        
64 static inline int pci_write_config_byte(struct pci_device *dev, uint32_t off,
65                                         uint8_t val)
66 {
67         pcidev_write8(dev, off, val);
68         return 0;
69 }
70
71 static inline int pci_write_config_word(struct pci_device *dev, uint32_t off,
72                                         uint16_t val)
73 {
74         pcidev_write16(dev, off, val);
75         return 0;
76 }
77
78 static inline int pci_write_config_dword(struct pci_device *dev, uint32_t off,
79                                          uint32_t val)
80 {
81         pcidev_write32(dev, off, val);
82         return 0;
83 }
84
85 #endif /* ROS_KERN_AKAROS_COMPAT_H */