Changeset c4267b1 in rtems
- Timestamp:
- 04/10/18 07:06:18 (5 years ago)
- Branches:
- 5, master
- Children:
- 8073f95e
- Parents:
- 85d1769
- git-author:
- David Gibson <david@…> (04/10/18 07:06:18)
- git-committer:
- Sebastian Huber <sebastian.huber@…> (07/19/18 05:01:11)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cpukit/dtc/libfdt/fdt_sw.c
r85d1769 rc4267b1 58 58 static int fdt_sw_probe_(void *fdt) 59 59 { 60 if (fdt_magic(fdt) != FDT_SW_MAGIC) 60 if (fdt_magic(fdt) == FDT_MAGIC) 61 return -FDT_ERR_BADSTATE; 62 else if (fdt_magic(fdt) != FDT_SW_MAGIC) 61 63 return -FDT_ERR_BADMAGIC; 62 /* FIXME: should check more details about the header state */63 64 return 0; 64 65 } … … 71 72 } 72 73 74 /* 'memrsv' state: Initial state after fdt_create() 75 * 76 * Allowed functions: 77 * fdt_add_reservmap_entry() 78 * fdt_finish_reservemap() [moves to 'struct' state] 79 */ 80 static int fdt_sw_probe_memrsv_(void *fdt) 81 { 82 int err = fdt_sw_probe_(fdt); 83 if (err) 84 return err; 85 86 if (fdt_off_dt_strings(fdt) != 0) 87 return -FDT_ERR_BADSTATE; 88 return 0; 89 } 90 91 #define FDT_SW_PROBE_MEMRSV(fdt) \ 92 { \ 93 int err; \ 94 if ((err = fdt_sw_probe_memrsv_(fdt)) != 0) \ 95 return err; \ 96 } 97 98 /* 'struct' state: Enter this state after fdt_finish_reservemap() 99 * 100 * Allowed functions: 101 * fdt_begin_node() 102 * fdt_end_node() 103 * fdt_property*() 104 * fdt_finish() [moves to 'complete' state] 105 */ 106 static int fdt_sw_probe_struct_(void *fdt) 107 { 108 int err = fdt_sw_probe_(fdt); 109 if (err) 110 return err; 111 112 if (fdt_off_dt_strings(fdt) != fdt_totalsize(fdt)) 113 return -FDT_ERR_BADSTATE; 114 return 0; 115 } 116 117 #define FDT_SW_PROBE_STRUCT(fdt) \ 118 { \ 119 int err; \ 120 if ((err = fdt_sw_probe_struct_(fdt)) != 0) \ 121 return err; \ 122 } 123 124 /* 'complete' state: Enter this state after fdt_finish() 125 * 126 * Allowed functions: none 127 */ 128 73 129 static void *fdt_grab_space_(void *fdt, size_t len) 74 130 { … … 103 159 sizeof(struct fdt_reserve_entry))); 104 160 fdt_set_off_dt_struct(fdt, fdt_off_mem_rsvmap(fdt)); 105 fdt_set_off_dt_strings(fdt, bufsize);161 fdt_set_off_dt_strings(fdt, 0); 106 162 107 163 return 0; … … 134 190 } 135 191 136 fdt_set_off_dt_strings(buf, bufsize);137 192 fdt_set_totalsize(buf, bufsize); 193 if (fdt_off_dt_strings(buf)) 194 fdt_set_off_dt_strings(buf, bufsize); 138 195 139 196 return 0; … … 145 202 int offset; 146 203 147 FDT_SW_PROBE(fdt); 148 149 if (fdt_size_dt_struct(fdt)) 150 return -FDT_ERR_BADSTATE; 204 FDT_SW_PROBE_MEMRSV(fdt); 151 205 152 206 offset = fdt_off_dt_struct(fdt); … … 165 219 int fdt_finish_reservemap(void *fdt) 166 220 { 167 return fdt_add_reservemap_entry(fdt, 0, 0); 221 int err = fdt_add_reservemap_entry(fdt, 0, 0); 222 223 if (err) 224 return err; 225 226 fdt_set_off_dt_strings(fdt, fdt_totalsize(fdt)); 227 return 0; 168 228 } 169 229 … … 171 231 { 172 232 struct fdt_node_header *nh; 173 int namelen = strlen(name) + 1; 174 175 FDT_SW_PROBE(fdt); 176 233 int namelen; 234 235 FDT_SW_PROBE_STRUCT(fdt); 236 237 namelen = strlen(name) + 1; 177 238 nh = fdt_grab_space_(fdt, sizeof(*nh) + FDT_TAGALIGN(namelen)); 178 239 if (! nh) … … 188 249 fdt32_t *en; 189 250 190 FDT_SW_PROBE (fdt);251 FDT_SW_PROBE_STRUCT(fdt); 191 252 192 253 en = fdt_grab_space_(fdt, FDT_TAGSIZE); … … 226 287 int nameoff; 227 288 228 FDT_SW_PROBE (fdt);289 FDT_SW_PROBE_STRUCT(fdt); 229 290 230 291 nameoff = fdt_find_add_string_(fdt, name); … … 263 324 int offset, nextoffset; 264 325 265 FDT_SW_PROBE (fdt);326 FDT_SW_PROBE_STRUCT(fdt); 266 327 267 328 /* Add terminator */
Note: See TracChangeset
for help on using the changeset viewer.