#define msi_addr(msiv) ((msiv).msi_addr)
#define msi_data(msiv) ((msiv).msi_data)
#define msi_vect(msiv) ((msiv).mapped_iv)
+#define check_msiv_invalid(msiv) (msi_vect(msiv) == -1)
+#define invalid_msi_vector ((msi_vector_t) { (ptr_t)-1, (reg_t)-1, -1 });
typedef void* msienv_t;
* @param node
*/
int
- isrm_bind_dtn(struct dt_intr_node* node);
+ isrm_bind_dtn(struct dtn_intr* node);
/**
* @brief Get the handler associated with the given iv
#define __LUNAIX_DEVTREE_INTERNAL_H
#include <hal/devtree.h>
-
#include <klibc/string.h>
static inline bool
- propeq(struct fdt_iter* it, const char* key)
+ propeq(struct fdt_blob* fdt, fdt_loc_t loc, const char* key)
{
- return streq(fdtit_prop_key(it), key);
+ return streq(fdt_prop_key(fdt, loc), key);
}
static inline void
- __mkprop_val32(struct fdt_iter* it, struct dt_prop_val* val)
+ __mkprop_ptr(fdt_loc_t loc, struct dtp_val* val)
{
- val->u32_val = le(*(u32_t*)&it->prop[1]);
- val->size = le(it->prop->len);
- }
-
- static inline void
- __mkprop_val64(struct fdt_iter* it, struct dt_prop_val* val)
- {
- val->u64_val = le64(*(u64_t*)&it->prop[1]);
- val->size = le(it->prop->len);
- }
-
- static inline void
- __mkprop_ptr(struct fdt_iter* it, struct dt_prop_val* val)
- {
- val->ptr_val = __ptr(&it->prop[1]);
- val->size = le(it->prop->len);
+ val->ptr_val = __ptr(loc.prop->val);
+ val->size = loc.prop->len;
}
static inline u32_t
- __prop_getu32(struct fdt_iter* it)
+ __prop_getu32(fdt_loc_t loc)
{
- return le(*(u32_t*)&it->prop[1]);
+ return loc.prop->val[0];
}
bool
- parse_stdintr_prop(struct fdt_iter* it, struct dt_intr_node* node);
-
- bool
- parse_stdintr_prop(struct fdt_iter* it, struct dt_intr_node* node);
+ parse_stdintr_prop(struct fdt_blob*, fdt_loc_t, struct dtn_intr*);
#endif /* __LUNAIX_DEVTREE_H */
#define must_emit __attribute__((used))
#define unreachable __builtin_unreachable()
#define no_inline __attribute__((noinline))
+#define asmlinkage
+ #define _be __attribute__((scalar_storage_order ("big-endian")))
+ #define _le __attribute__((scalar_storage_order ("little-endian")))
+
#define _default _weak
#define msbiti (sizeof(int) * 8 - 1)
#define clz(bits) __builtin_clz(bits)
+#define ctz(bits) __builtin_ctz(bits)
#ifdef CONFIG_ARCH_BITS_64
#define msbitl (sizeof(long) * 8 - 1)
#define clzl(bits) __builtin_clzl(bits)
+#define ctzl(bits) __builtin_ctzl(bits)
#else
#define msbitl msbiti
#define clzl(bits) clz(bits)
+#define ctzl(bits) ctz(bits)
#endif
#define sadd_of(a, b, of) __builtin_sadd_overflow(a, b, of)
#define umul_of(a, b, of) __builtin_umul_overflow(a, b, of)
#define umull_of(a, b, of) __builtin_umull_overflow(a, b, of)
#define offsetof(f, m) __builtin_offsetof(f, m)
+#define select(cond, y, n) __builtin_choose_expr(cond, y, n)
+#define is_const(v) __builtin_constant_p(v)
#define prefetch_rd(ptr, ll) __builtin_prefetch((ptr), 0, ll)
#define prefetch_wr(ptr, ll) __builtin_prefetch((ptr), 1, ll)
unreachable;
}
+#ifdef CONFIG_ARCH_X86_32
+#undef asmlinkage
+#define asmlinkage __attribute__((regparm(0)))
+#endif
+
#endif /* __LUNAIX_COMPILER_H */