From: Lunaixsky Date: Thu, 28 Nov 2024 01:12:37 +0000 (+0000) Subject: Merge branch 'master' into isa/arm64 X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/commitdiff_plain/7e13988c1113d38bec17bd79b71757d78d977e76?ds=sidebyside;hp=-c Merge branch 'master' into isa/arm64 --- 7e13988c1113d38bec17bd79b71757d78d977e76 diff --combined lunaix-os/arch/generic/includes/asm-generic/isrm.h index b766afb,0d4a15a..ed38c1e --- a/lunaix-os/arch/generic/includes/asm-generic/isrm.h +++ b/lunaix-os/arch/generic/includes/asm-generic/isrm.h @@@ -27,8 -27,6 +27,8 @@@ typedef struct #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; @@@ -96,7 -94,7 +96,7 @@@ isrm_msi_alloc_simple(struct device* de * @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 diff --combined lunaix-os/hal/devtree/devtree.h index e117472,1bfe891..eb7815d --- a/lunaix-os/hal/devtree/devtree.h +++ b/lunaix-os/hal/devtree/devtree.h @@@ -2,45 -2,29 +2,28 @@@ #define __LUNAIX_DEVTREE_INTERNAL_H #include - #include 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 */ diff --combined lunaix-os/includes/lunaix/compiler.h index 32129af,a41c741..b03b8e8 --- a/lunaix-os/includes/lunaix/compiler.h +++ b/lunaix-os/includes/lunaix/compiler.h @@@ -13,22 -13,21 +13,25 @@@ #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) @@@ -36,8 -35,6 +39,8 @@@ #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) @@@ -64,9 -61,4 +67,9 @@@ spin( unreachable; } +#ifdef CONFIG_ARCH_X86_32 +#undef asmlinkage +#define asmlinkage __attribute__((regparm(0))) +#endif + #endif /* __LUNAIX_COMPILER_H */