Browse Source

Add a "count" field to struct memory_map.

tags/v0.9.3
Michael Brown 18 years ago
parent
commit
e4f8d6eed7
2 changed files with 11 additions and 6 deletions
  1. 8
    6
      src/arch/i386/firmware/pcbios/memmap.c
  2. 3
    0
      src/arch/i386/include/memmap.h

+ 8
- 6
src/arch/i386/firmware/pcbios/memmap.c View File

138
  * @ret rc		Return status code
138
  * @ret rc		Return status code
139
  */
139
  */
140
 static int meme820 ( struct memory_map *memmap ) {
140
 static int meme820 ( struct memory_map *memmap ) {
141
-	unsigned int index = 0;
141
+	struct memory_region *region = memmap->regions;
142
 	uint32_t next = 0;
142
 	uint32_t next = 0;
143
 	uint32_t smap;
143
 	uint32_t smap;
144
 	unsigned int flags;
144
 	unsigned int flags;
169
 		if ( e820buf.type != E820_TYPE_RAM )
169
 		if ( e820buf.type != E820_TYPE_RAM )
170
 			continue;
170
 			continue;
171
 
171
 
172
-		memmap->regions[index].start = e820buf.start;
173
-		memmap->regions[index].end = e820buf.start + e820buf.len;
174
-		index++;
172
+		region->start = e820buf.start;
173
+		region->end = e820buf.start + e820buf.len;
174
+		region++;
175
+		memmap->count++;
175
 	} while ( ( next != 0 ) && 
176
 	} while ( ( next != 0 ) && 
176
-		  ( index < ( sizeof ( memmap->regions ) /
177
-			      sizeof ( memmap->regions[0] ) ) ) );
177
+		  ( memmap->count < ( sizeof ( memmap->regions ) /
178
+				      sizeof ( memmap->regions[0] ) ) ) );
178
 	return 0;
179
 	return 0;
179
 }
180
 }
180
 
181
 
202
 	memmap->regions[0].end = ( basemem * 1024 );
203
 	memmap->regions[0].end = ( basemem * 1024 );
203
 	memmap->regions[1].start = 0x100000;
204
 	memmap->regions[1].start = 0x100000;
204
 	memmap->regions[1].end = 0x100000 + ( extmem * 1024 );
205
 	memmap->regions[1].end = 0x100000 + ( extmem * 1024 );
206
+	memmap->count = 2;
205
 }
207
 }

+ 3
- 0
src/arch/i386/include/memmap.h View File

23
 
23
 
24
 /** A memory map */
24
 /** A memory map */
25
 struct memory_map {
25
 struct memory_map {
26
+	/** Memory regions */
26
 	struct memory_region regions[MAX_MEMORY_REGIONS];
27
 	struct memory_region regions[MAX_MEMORY_REGIONS];
28
+	/** Number of used regions */
29
+	unsigned int count;
27
 };
30
 };
28
 
31
 
29
 extern void get_memmap ( struct memory_map *memmap );
32
 extern void get_memmap ( struct memory_map *memmap );

Loading…
Cancel
Save