Loading arch/sparc/kernel/prom.c +35 −18 Original line number Diff line number Diff line Loading @@ -407,7 +407,9 @@ static char * __init build_full_name(struct device_node *dp) return n; } static struct property * __init build_one_prop(phandle node, char *prev) static unsigned int unique_id; static struct property * __init build_one_prop(phandle node, char *prev, char *special_name, void *special_val, int special_len) { static struct property *tmp = NULL; struct property *p; Loading @@ -417,10 +419,17 @@ static struct property * __init build_one_prop(phandle node, char *prev) p = tmp; memset(p, 0, sizeof(*p) + 32); tmp = NULL; } else } else { p = prom_early_alloc(sizeof(struct property) + 32); p->unique_id = unique_id++; } p->name = (char *) (p + 1); if (special_name) { p->length = special_len; p->value = prom_early_alloc(special_len); memcpy(p->value, special_val, special_len); } else { if (prev == NULL) { prom_firstprop(node, p->name); } else { Loading @@ -434,8 +443,10 @@ static struct property * __init build_one_prop(phandle node, char *prev) if (p->length <= 0) { p->length = 0; } else { p->value = prom_early_alloc(p->length); len = prom_getproperty(node, p->name, p->value, p->length); p->value = prom_early_alloc(p->length + 1); prom_getproperty(node, p->name, p->value, p->length); ((unsigned char *)p->value)[p->length] = '\0'; } } return p; } Loading @@ -444,9 +455,14 @@ static struct property * __init build_prop_list(phandle node) { struct property *head, *tail; head = tail = build_one_prop(node, NULL); head = tail = build_one_prop(node, NULL, ".node", &node, sizeof(node)); tail->next = build_one_prop(node, NULL, NULL, NULL, 0); tail = tail->next; while(tail) { tail->next = build_one_prop(node, tail->name); tail->next = build_one_prop(node, tail->name, NULL, NULL, 0); tail = tail->next; } Loading Loading @@ -475,6 +491,7 @@ static struct device_node * __init create_node(phandle node) return NULL; dp = prom_early_alloc(sizeof(*dp)); dp->unique_id = unique_id++; kref_init(&dp->kref); Loading arch/sparc64/kernel/prom.c +36 −18 Original line number Diff line number Diff line Loading @@ -584,7 +584,9 @@ static char * __init build_full_name(struct device_node *dp) return n; } static struct property * __init build_one_prop(phandle node, char *prev) static unsigned int unique_id; static struct property * __init build_one_prop(phandle node, char *prev, char *special_name, void *special_val, int special_len) { static struct property *tmp = NULL; struct property *p; Loading @@ -593,10 +595,18 @@ static struct property * __init build_one_prop(phandle node, char *prev) p = tmp; memset(p, 0, sizeof(*p) + 32); tmp = NULL; } else } else { p = prom_early_alloc(sizeof(struct property) + 32); p->unique_id = unique_id++; } p->name = (char *) (p + 1); if (special_name) { strcpy(p->name, special_name); p->length = special_len; p->value = prom_early_alloc(special_len); memcpy(p->value, special_val, special_len); } else { if (prev == NULL) { prom_firstprop(node, p->name); } else { Loading @@ -610,8 +620,10 @@ static struct property * __init build_one_prop(phandle node, char *prev) if (p->length <= 0) { p->length = 0; } else { p->value = prom_early_alloc(p->length); p->value = prom_early_alloc(p->length + 1); prom_getproperty(node, p->name, p->value, p->length); ((unsigned char *)p->value)[p->length] = '\0'; } } return p; } Loading @@ -620,9 +632,14 @@ static struct property * __init build_prop_list(phandle node) { struct property *head, *tail; head = tail = build_one_prop(node, NULL); head = tail = build_one_prop(node, NULL, ".node", &node, sizeof(node)); tail->next = build_one_prop(node, NULL, NULL, NULL, 0); tail = tail->next; while(tail) { tail->next = build_one_prop(node, tail->name); tail->next = build_one_prop(node, tail->name, NULL, NULL, 0); tail = tail->next; } Loading Loading @@ -651,6 +668,7 @@ static struct device_node * __init create_node(phandle node) return NULL; dp = prom_early_alloc(sizeof(*dp)); dp->unique_id = unique_id++; kref_init(&dp->kref); Loading include/asm-sparc/prom.h +2 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ struct property { void *value; struct property *next; unsigned long _flags; unsigned int unique_id; }; struct device_node { Loading @@ -59,6 +60,7 @@ struct device_node { struct kref kref; unsigned long _flags; void *data; unsigned int unique_id; }; /* flag descriptions */ Loading include/asm-sparc64/prom.h +2 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ struct property { void *value; struct property *next; unsigned long _flags; unsigned int unique_id; }; struct device_node { Loading @@ -59,6 +60,7 @@ struct device_node { struct kref kref; unsigned long _flags; void *data; unsigned int unique_id; }; /* flag descriptions */ Loading Loading
arch/sparc/kernel/prom.c +35 −18 Original line number Diff line number Diff line Loading @@ -407,7 +407,9 @@ static char * __init build_full_name(struct device_node *dp) return n; } static struct property * __init build_one_prop(phandle node, char *prev) static unsigned int unique_id; static struct property * __init build_one_prop(phandle node, char *prev, char *special_name, void *special_val, int special_len) { static struct property *tmp = NULL; struct property *p; Loading @@ -417,10 +419,17 @@ static struct property * __init build_one_prop(phandle node, char *prev) p = tmp; memset(p, 0, sizeof(*p) + 32); tmp = NULL; } else } else { p = prom_early_alloc(sizeof(struct property) + 32); p->unique_id = unique_id++; } p->name = (char *) (p + 1); if (special_name) { p->length = special_len; p->value = prom_early_alloc(special_len); memcpy(p->value, special_val, special_len); } else { if (prev == NULL) { prom_firstprop(node, p->name); } else { Loading @@ -434,8 +443,10 @@ static struct property * __init build_one_prop(phandle node, char *prev) if (p->length <= 0) { p->length = 0; } else { p->value = prom_early_alloc(p->length); len = prom_getproperty(node, p->name, p->value, p->length); p->value = prom_early_alloc(p->length + 1); prom_getproperty(node, p->name, p->value, p->length); ((unsigned char *)p->value)[p->length] = '\0'; } } return p; } Loading @@ -444,9 +455,14 @@ static struct property * __init build_prop_list(phandle node) { struct property *head, *tail; head = tail = build_one_prop(node, NULL); head = tail = build_one_prop(node, NULL, ".node", &node, sizeof(node)); tail->next = build_one_prop(node, NULL, NULL, NULL, 0); tail = tail->next; while(tail) { tail->next = build_one_prop(node, tail->name); tail->next = build_one_prop(node, tail->name, NULL, NULL, 0); tail = tail->next; } Loading Loading @@ -475,6 +491,7 @@ static struct device_node * __init create_node(phandle node) return NULL; dp = prom_early_alloc(sizeof(*dp)); dp->unique_id = unique_id++; kref_init(&dp->kref); Loading
arch/sparc64/kernel/prom.c +36 −18 Original line number Diff line number Diff line Loading @@ -584,7 +584,9 @@ static char * __init build_full_name(struct device_node *dp) return n; } static struct property * __init build_one_prop(phandle node, char *prev) static unsigned int unique_id; static struct property * __init build_one_prop(phandle node, char *prev, char *special_name, void *special_val, int special_len) { static struct property *tmp = NULL; struct property *p; Loading @@ -593,10 +595,18 @@ static struct property * __init build_one_prop(phandle node, char *prev) p = tmp; memset(p, 0, sizeof(*p) + 32); tmp = NULL; } else } else { p = prom_early_alloc(sizeof(struct property) + 32); p->unique_id = unique_id++; } p->name = (char *) (p + 1); if (special_name) { strcpy(p->name, special_name); p->length = special_len; p->value = prom_early_alloc(special_len); memcpy(p->value, special_val, special_len); } else { if (prev == NULL) { prom_firstprop(node, p->name); } else { Loading @@ -610,8 +620,10 @@ static struct property * __init build_one_prop(phandle node, char *prev) if (p->length <= 0) { p->length = 0; } else { p->value = prom_early_alloc(p->length); p->value = prom_early_alloc(p->length + 1); prom_getproperty(node, p->name, p->value, p->length); ((unsigned char *)p->value)[p->length] = '\0'; } } return p; } Loading @@ -620,9 +632,14 @@ static struct property * __init build_prop_list(phandle node) { struct property *head, *tail; head = tail = build_one_prop(node, NULL); head = tail = build_one_prop(node, NULL, ".node", &node, sizeof(node)); tail->next = build_one_prop(node, NULL, NULL, NULL, 0); tail = tail->next; while(tail) { tail->next = build_one_prop(node, tail->name); tail->next = build_one_prop(node, tail->name, NULL, NULL, 0); tail = tail->next; } Loading Loading @@ -651,6 +668,7 @@ static struct device_node * __init create_node(phandle node) return NULL; dp = prom_early_alloc(sizeof(*dp)); dp->unique_id = unique_id++; kref_init(&dp->kref); Loading
include/asm-sparc/prom.h +2 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ struct property { void *value; struct property *next; unsigned long _flags; unsigned int unique_id; }; struct device_node { Loading @@ -59,6 +60,7 @@ struct device_node { struct kref kref; unsigned long _flags; void *data; unsigned int unique_id; }; /* flag descriptions */ Loading
include/asm-sparc64/prom.h +2 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ struct property { void *value; struct property *next; unsigned long _flags; unsigned int unique_id; }; struct device_node { Loading @@ -59,6 +60,7 @@ struct device_node { struct kref kref; unsigned long _flags; void *data; unsigned int unique_id; }; /* flag descriptions */ Loading