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
rewrite the gic implementation, some other fix ups
[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 cc8e5836c28049aaef56bdb63c8648082a0ae15b..f95abf2faff7362248c8deb34cdf3220e3aa84fe 100644
(file)
--- a/
lunaix-os/includes/hal/devtree.h
+++ b/
lunaix-os/includes/hal/devtree.h
@@
-693,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*