@@ -49,7 +49,7 @@ impl BootloaderConfig {
49
49
0x3D ,
50
50
] ;
51
51
#[ doc( hidden) ]
52
- pub const SERIALIZED_LEN : usize = 118 ;
52
+ pub const SERIALIZED_LEN : usize = 127 ;
53
53
54
54
/// Creates a new default configuration with the following values:
55
55
///
@@ -97,6 +97,7 @@ impl BootloaderConfig {
97
97
aslr,
98
98
dynamic_range_start,
99
99
dynamic_range_end,
100
+ ramdisk_memory,
100
101
} = mappings;
101
102
let FrameBuffer {
102
103
minimum_framebuffer_height,
@@ -145,28 +146,30 @@ impl BootloaderConfig {
145
146
} ,
146
147
) ;
147
148
148
- let buf = concat_97_9 (
149
+ let buf = concat_97_9 ( buf, ramdisk_memory. serialize ( ) ) ;
150
+
151
+ let buf = concat_106_9 (
149
152
buf,
150
153
match minimum_framebuffer_height {
151
154
Option :: None => [ 0 ; 9 ] ,
152
155
Option :: Some ( addr) => concat_1_8 ( [ 1 ] , addr. to_le_bytes ( ) ) ,
153
156
} ,
154
157
) ;
155
158
156
- let buf = concat_106_9 (
159
+ let buf = concat_115_9 (
157
160
buf,
158
161
match minimum_framebuffer_width {
159
162
Option :: None => [ 0 ; 9 ] ,
160
163
Option :: Some ( addr) => concat_1_8 ( [ 1 ] , addr. to_le_bytes ( ) ) ,
161
164
} ,
162
165
) ;
163
166
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 ( ) ) ;
165
168
166
169
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 ( ) ) ;
168
171
169
- concat_117_1 (
172
+ concat_126_1 (
170
173
frame_buffer_logger_status,
171
174
( * serial_logger_status as u8 ) . to_le_bytes ( ) ,
172
175
)
@@ -227,6 +230,7 @@ impl BootloaderConfig {
227
230
let ( & dynamic_range_start, s) = split_array_ref ( s) ;
228
231
let ( & dynamic_range_end_some, s) = split_array_ref ( s) ;
229
232
let ( & dynamic_range_end, s) = split_array_ref ( s) ;
233
+ let ( & ramdisk_memory, s) = split_array_ref ( s) ;
230
234
231
235
let mappings = Mappings {
232
236
kernel_stack : Mapping :: deserialize ( & kernel_stack) ?,
@@ -257,6 +261,7 @@ impl BootloaderConfig {
257
261
[ 1 ] => Option :: Some ( u64:: from_le_bytes ( dynamic_range_end) ) ,
258
262
_ => return Err ( "invalid dynamic range end value" ) ,
259
263
} ,
264
+ ramdisk_memory : Mapping :: deserialize ( & ramdisk_memory) ?,
260
265
} ;
261
266
( mappings, s)
262
267
} ;
@@ -439,6 +444,9 @@ pub struct Mappings {
439
444
///
440
445
/// Defaults to `0xffff_ffff_ffff_f000`.
441
446
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 ,
442
450
}
443
451
444
452
impl Mappings {
@@ -455,6 +463,7 @@ impl Mappings {
455
463
aslr : false ,
456
464
dynamic_range_start : None ,
457
465
dynamic_range_end : None ,
466
+ ramdisk_memory : Mapping :: new_default ( ) ,
458
467
}
459
468
}
460
469
@@ -487,6 +496,7 @@ impl Mappings {
487
496
} else {
488
497
Option :: None
489
498
} ,
499
+ ramdisk_memory : Mapping :: random ( ) ,
490
500
}
491
501
}
492
502
}
0 commit comments