[PATCH 1/8] Add support for multiple memory resources.
Sichen Zhao
1473996754 at qq.com
Wed Jul 5 02:56:23 UTC 2017
From: Hans Petter Selasky <hps at selasky.org>
---
rtemsbsd/rtems/rtems-kernel-nexus.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/rtemsbsd/rtems/rtems-kernel-nexus.c b/rtemsbsd/rtems/rtems-kernel-nexus.c
index 008e4b2..1a5a9ef 100644
--- a/rtemsbsd/rtems/rtems-kernel-nexus.c
+++ b/rtemsbsd/rtems/rtems-kernel-nexus.c
@@ -131,7 +131,7 @@ nexus_probe(device_t dev)
}
static bool
-nexus_get_start(const rtems_bsd_device *nd, int type, rman_res_t *start)
+nexus_get_start(const rtems_bsd_device *nd, int type, int rid, rman_res_t *start)
{
u_long sr = (u_long)*start;
size_t i;
@@ -140,6 +140,8 @@ nexus_get_start(const rtems_bsd_device *nd, int type, rman_res_t *start)
const rtems_bsd_device_resource *dr = &nd->resources[i];
if (dr->type == type && dr->start_request == sr) {
+ if(rid--)
+ continue;
*start = dr->start_actual;
return (true);
@@ -176,7 +178,7 @@ nexus_alloc_resource(device_t bus, device_t child, int type, int *rid,
SET_FOREACH(nd, nexus) {
if (strcmp(device_get_name(child), nd->name) == 0
&& device_get_unit(child) == nd->unit) {
- if (nexus_get_start(nd, type, &start)) {
+ if (nexus_get_start(nd, type, *rid, &start)) {
res = rman_reserve_resource(rm, start, end,
count, flags, child);
if (res != NULL) {
--
2.7.4
More information about the devel
mailing list