@@ -1276,6 +1276,15 @@ macro_rules! set_general_handler_entry {
1276
1276
}
1277
1277
$idt. machine_check. set_handler_fn( handler) ;
1278
1278
} } ;
1279
+ ( $idt: expr, $handler: ident, $idx: ident, 0 , 0 , 0 , 1 , 1 , 1 , 0 , 1 ) => {
1280
+ extern "x86-interrupt" fn handler(
1281
+ frame: $crate:: structures:: idt:: InterruptStackFrame ,
1282
+ error_code: u64 ,
1283
+ ) {
1284
+ $handler( frame, $idx. into( ) , Some ( error_code) ) ;
1285
+ }
1286
+ $idt. vmm_communication_exception. set_handler_fn( handler) ;
1287
+ } ;
1279
1288
( $idt: expr, $handler: ident, $idx: ident, 0 , 0 , 0 , 1 , 1 , 1 , 1 , 0 ) => { {
1280
1289
extern "x86-interrupt" fn handler(
1281
1290
frame: $crate:: structures:: idt:: InterruptStackFrame ,
@@ -1286,8 +1295,9 @@ macro_rules! set_general_handler_entry {
1286
1295
$idt. security_exception. set_handler_fn( handler) ;
1287
1296
} } ;
1288
1297
1289
- // reserved
1298
+ // reserved_1
1290
1299
( $idt: expr, $handler: ident, $idx: ident, 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 ) => { } ;
1300
+ // reserved_2
1291
1301
( $idt: expr, $handler: ident, $idx: ident, 0 , 0 , 0 , 1 , 0 , 1 , 0 , 1 ) => { } ;
1292
1302
( $idt: expr, $handler: ident, $idx: ident, 0 , 0 , 0 , 1 , 0 , 1 , 1 , 0 ) => { } ;
1293
1303
( $idt: expr, $handler: ident, $idx: ident, 0 , 0 , 0 , 1 , 0 , 1 , 1 , 1 ) => { } ;
@@ -1296,8 +1306,7 @@ macro_rules! set_general_handler_entry {
1296
1306
( $idt: expr, $handler: ident, $idx: ident, 0 , 0 , 0 , 1 , 1 , 0 , 1 , 0 ) => { } ;
1297
1307
( $idt: expr, $handler: ident, $idx: ident, 0 , 0 , 0 , 1 , 1 , 0 , 1 , 1 ) => { } ;
1298
1308
( $idt: expr, $handler: ident, $idx: ident, 0 , 0 , 0 , 1 , 1 , 1 , 0 , 0 ) => { } ;
1299
- ( $idt: expr, $handler: ident, $idx: ident, 0 , 0 , 0 , 1 , 1 , 1 , 0 , 1 ) => { } ;
1300
- ( $idt: expr, $handler: ident, $idx: ident, 0 , 0 , 0 , 1 , 1 , 1 , 1 , 0 ) => { } ;
1309
+ // reserved_3
1301
1310
( $idt: expr, $handler: ident, $idx: ident, 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 ) => { } ;
1302
1311
1303
1312
// set entries with `HandlerFunc` signature
@@ -1377,7 +1386,7 @@ mod test {
1377
1386
}
1378
1387
set_general_handler ! ( & mut idt, general_handler) ;
1379
1388
for i in 0 ..256 {
1380
- if i == 15 || i == 31 || ( i >= 21 && i <= 29 ) {
1389
+ if i == 15 || i == 31 || ( i >= 21 && i <= 28 ) {
1381
1390
// reserved entries should not be set
1382
1391
assert ! ( !entry_present( & idt, i) ) ;
1383
1392
} else {
0 commit comments