git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
aa64: finalise context switch, page fault handler and syscall
[lunaix-os.git]
/
lunaix-os
/
includes
/
hal
/
devtree.h
diff --git
a/lunaix-os/includes/hal/devtree.h
b/lunaix-os/includes/hal/devtree.h
index 111617e7626c786e3afa5c4af5780ab0da90b7b5..f95abf2faff7362248c8deb34cdf3220e3aa84fe 100644
(file)
--- a/
lunaix-os/includes/hal/devtree.h
+++ b/
lunaix-os/includes/hal/devtree.h
@@
-260,7
+260,7
@@
struct dtn_base
struct dtp_table *props;
struct dtp_table *props;
- morph_t *binded_
dev
;
+ morph_t *binded_
obj
;
};
struct dtspec_key
};
struct dtspec_key
@@
-443,6
+443,12
@@
dtp_val_set(struct dtp_val* val, dt_enc_t raw, unsigned cells)
val->size = cells * sizeof(u32_t);
}
val->size = cells * sizeof(u32_t);
}
+static inline void
+dtn_bind_object(struct dtn* node, morph_t* mobj)
+{
+ node->base.binded_obj = changeling_ref(mobj);
+}
+
//////////////////////////////////////
/// DT Methods: Specifier Map
//////////////////////////////////////
/// DT Methods: Specifier Map
@@
-590,11
+596,11
@@
struct dtpropx
#define dtprop_reglike(base) \
({ \
dt_proplet p = { \
#define dtprop_reglike(base) \
({ \
dt_proplet p = { \
- dtprop_compx(
base->addr_c),
\
- dtprop_compx(
base->sz_c),
\
+ dtprop_compx(
(base)->addr_c),
\
+ dtprop_compx(
(base)->sz_c),
\
dtprop_end \
}; \
dtprop_end \
}; \
-
dt_proplet
; \
+
p
; \
})
#define dtprop_rangelike(node) \
})
#define dtprop_rangelike(node) \
@@
-605,7
+611,7
@@
struct dtpropx
dtprop_compx(base->sz_c), \
dtprop_end \
}; \
dtprop_compx(base->sz_c), \
dtprop_end \
}; \
-
dt_proplet
; \
+
p
; \
})
#define dtprop_strlst_foreach(pos, prop) \
})
#define dtprop_strlst_foreach(pos, prop) \
@@
-687,23
+693,27
@@
dtpi_has_next(struct dtpropi* dtpi)
return dtpi->loc < dtpi->prop.size / sizeof(u32_t);
}
return dtpi->loc < dtpi->prop.size / sizeof(u32_t);
}
-static inline u
32
_t
-dtpi_next_
u32(struct dtpropi* dtpi
)
+static inline u
64
_t
+dtpi_next_
integer(struct dtpropi* dtpi, int int_cells
)
{
union dtp_baseval* val;
{
union dtp_baseval* val;
- val = (union dtp_baseval*)&dtpi->prop.encoded[dtpi->loc++];
- return val->u32_val;
+ off_t loc = dtpi->loc;
+ dtpi->loc += int_cells;
+ val = (union dtp_baseval*)&dtpi->prop.encoded[loc];
+
+ return int_cells == 1 ? val->u32_val : val->u64_val;
}
static inline u64_t
dtpi_next_u64(struct dtpropi* dtpi)
{
}
static inline u64_t
dtpi_next_u64(struct dtpropi* dtpi)
{
- union dtp_baseval* val;
- off_t loc = dtpi->loc;
- dtpi->loc += 2;
- val = (union dtp_baseval*)&dtpi->prop.encoded[loc];
-
- return val->u64_val;
+ return dtpi_next_integer(dtpi, 2);
+}
+
+static inline u32_t
+dtpi_next_u32(struct dtpropi* dtpi)
+{
+ return (u32_t)dtpi_next_integer(dtpi, 1);
}
static inline struct dtn*
}
static inline struct dtn*