@@ -49,7 +49,7 @@ impl BootloaderConfig {
4949 0x3D ,
5050 ] ;
5151 #[ doc( hidden) ]
52- pub const SERIALIZED_LEN : usize = 118 ;
52+ pub const SERIALIZED_LEN : usize = 127 ;
5353
5454 /// Creates a new default configuration with the following values:
5555 ///
@@ -97,6 +97,7 @@ impl BootloaderConfig {
9797 aslr,
9898 dynamic_range_start,
9999 dynamic_range_end,
100+ ramdisk_memory,
100101 } = mappings;
101102 let FrameBuffer {
102103 minimum_framebuffer_height,
@@ -145,28 +146,30 @@ impl BootloaderConfig {
145146 } ,
146147 ) ;
147148
148- let buf = concat_97_9 (
149+ let buf = concat_97_9 ( buf, ramdisk_memory. serialize ( ) ) ;
150+
151+ let buf = concat_106_9 (
149152 buf,
150153 match minimum_framebuffer_height {
151154 Option :: None => [ 0 ; 9 ] ,
152155 Option :: Some ( addr) => concat_1_8 ( [ 1 ] , addr. to_le_bytes ( ) ) ,
153156 } ,
154157 ) ;
155158
156- let buf = concat_106_9 (
159+ let buf = concat_115_9 (
157160 buf,
158161 match minimum_framebuffer_width {
159162 Option :: None => [ 0 ; 9 ] ,
160163 Option :: Some ( addr) => concat_1_8 ( [ 1 ] , addr. to_le_bytes ( ) ) ,
161164 } ,
162165 ) ;
163166
164- let log_level = concat_115_1 ( buf, ( * log_level as u8 ) . to_le_bytes ( ) ) ;
167+ let log_level = concat_124_1 ( buf, ( * log_level as u8 ) . to_le_bytes ( ) ) ;
165168
166169 let frame_buffer_logger_status =
167- concat_116_1 ( log_level, ( * frame_buffer_logger_status as u8 ) . to_le_bytes ( ) ) ;
170+ concat_125_1 ( log_level, ( * frame_buffer_logger_status as u8 ) . to_le_bytes ( ) ) ;
168171
169- concat_117_1 (
172+ concat_126_1 (
170173 frame_buffer_logger_status,
171174 ( * serial_logger_status as u8 ) . to_le_bytes ( ) ,
172175 )
@@ -227,6 +230,7 @@ impl BootloaderConfig {
227230 let ( & dynamic_range_start, s) = split_array_ref ( s) ;
228231 let ( & dynamic_range_end_some, s) = split_array_ref ( s) ;
229232 let ( & dynamic_range_end, s) = split_array_ref ( s) ;
233+ let ( & ramdisk_memory, s) = split_array_ref ( s) ;
230234
231235 let mappings = Mappings {
232236 kernel_stack : Mapping :: deserialize ( & kernel_stack) ?,
@@ -257,6 +261,7 @@ impl BootloaderConfig {
257261 [ 1 ] => Option :: Some ( u64:: from_le_bytes ( dynamic_range_end) ) ,
258262 _ => return Err ( "invalid dynamic range end value" ) ,
259263 } ,
264+ ramdisk_memory : Mapping :: deserialize ( & ramdisk_memory) ?,
260265 } ;
261266 ( mappings, s)
262267 } ;
@@ -439,6 +444,9 @@ pub struct Mappings {
439444 ///
440445 /// Defaults to `0xffff_ffff_ffff_f000`.
441446 pub dynamic_range_end : Option < u64 > ,
447+ /// Virtual address to map ramdisk image, if present on disk
448+ /// Defaults to dynamic
449+ pub ramdisk_memory : Mapping ,
442450}
443451
444452impl Mappings {
@@ -455,6 +463,7 @@ impl Mappings {
455463 aslr : false ,
456464 dynamic_range_start : None ,
457465 dynamic_range_end : None ,
466+ ramdisk_memory : Mapping :: new_default ( ) ,
458467 }
459468 }
460469
@@ -487,6 +496,7 @@ impl Mappings {
487496 } else {
488497 Option :: None
489498 } ,
499+ ramdisk_memory : Mapping :: random ( ) ,
490500 }
491501 }
492502}
0 commit comments