|
284 | 284 | #![deny(warnings)]
|
285 | 285 | #![feature(asm)]
|
286 | 286 | #![feature(compiler_builtins_lib)]
|
| 287 | +#![feature(global_asm)] |
287 | 288 | #![feature(lang_items)]
|
288 | 289 | #![feature(linkage)]
|
289 | 290 | #![feature(naked_functions)]
|
@@ -371,108 +372,41 @@ unsafe extern "C" fn reset_handler() -> ! {
|
371 | 372 | }
|
372 | 373 | }
|
373 | 374 |
|
374 |
| -#[allow(non_snake_case)] |
375 |
| -#[allow(private_no_mangle_fns)] |
376 |
| -#[cfg(target_arch = "arm")] |
377 |
| -#[linkage = "weak"] |
378 |
| -#[naked] |
379 |
| -#[no_mangle] |
380 |
| -extern "C" fn NMI() { |
381 |
| - unsafe { |
382 |
| - asm!("b DEFAULT_HANDLER" :::: "volatile"); |
383 |
| - intrinsics::unreachable(); |
384 |
| - } |
385 |
| -} |
| 375 | +global_asm!(r#" |
| 376 | +.weak NMI |
| 377 | +NMI = DEFAULT_HANDLER |
386 | 378 |
|
387 |
| -#[allow(non_snake_case)] |
388 |
| -#[allow(private_no_mangle_fns)] |
389 |
| -#[cfg(target_arch = "arm")] |
390 |
| -#[linkage = "weak"] |
391 |
| -#[naked] |
392 |
| -#[no_mangle] |
393 |
| -extern "C" fn HARD_FAULT() { |
394 |
| - unsafe { |
395 |
| - asm!("b DEFAULT_HANDLER" :::: "volatile"); |
396 |
| - intrinsics::unreachable(); |
397 |
| - } |
398 |
| -} |
| 379 | +.weak HARD_FAULT |
| 380 | +HARD_FAULT = DEFAULT_HANDLER |
399 | 381 |
|
400 |
| -#[allow(non_snake_case)] |
401 |
| -#[allow(private_no_mangle_fns)] |
402 |
| -#[cfg(target_arch = "arm")] |
403 |
| -#[linkage = "weak"] |
404 |
| -#[naked] |
405 |
| -#[no_mangle] |
406 |
| -extern "C" fn MEM_MANAGE() { |
407 |
| - unsafe { |
408 |
| - asm!("b DEFAULT_HANDLER" :::: "volatile"); |
409 |
| - intrinsics::unreachable(); |
410 |
| - } |
411 |
| -} |
| 382 | +.weak MEM_MANAGE |
| 383 | +MEM_MANAGE = DEFAULT_HANDLER |
412 | 384 |
|
413 |
| -#[allow(non_snake_case)] |
414 |
| -#[allow(private_no_mangle_fns)] |
415 |
| -#[cfg(target_arch = "arm")] |
416 |
| -#[linkage = "weak"] |
417 |
| -#[naked] |
418 |
| -#[no_mangle] |
419 |
| -extern "C" fn BUS_FAULT() { |
420 |
| - unsafe { |
421 |
| - asm!("b DEFAULT_HANDLER" :::: "volatile"); |
422 |
| - intrinsics::unreachable(); |
423 |
| - } |
424 |
| -} |
| 385 | +.weak BUS_FAULT |
| 386 | +BUS_FAULT = DEFAULT_HANDLER |
425 | 387 |
|
426 |
| -#[allow(non_snake_case)] |
427 |
| -#[allow(private_no_mangle_fns)] |
428 |
| -#[cfg(target_arch = "arm")] |
429 |
| -#[linkage = "weak"] |
430 |
| -#[naked] |
431 |
| -#[no_mangle] |
432 |
| -extern "C" fn USAGE_FAULT() { |
433 |
| - unsafe { |
434 |
| - asm!("b DEFAULT_HANDLER" :::: "volatile"); |
435 |
| - intrinsics::unreachable(); |
436 |
| - } |
437 |
| -} |
| 388 | +.weak USAGE_FAULT |
| 389 | +USAGE_FAULT = DEFAULT_HANDLER |
438 | 390 |
|
439 |
| -#[allow(non_snake_case)] |
440 |
| -#[allow(private_no_mangle_fns)] |
441 |
| -#[cfg(target_arch = "arm")] |
442 |
| -#[linkage = "weak"] |
443 |
| -#[naked] |
444 |
| -#[no_mangle] |
445 |
| -extern "C" fn SVCALL() { |
446 |
| - unsafe { |
447 |
| - asm!("b DEFAULT_HANDLER" :::: "volatile"); |
448 |
| - intrinsics::unreachable(); |
449 |
| - } |
450 |
| -} |
| 391 | +.weak SVCALL |
| 392 | +SVCALL = DEFAULT_HANDLER |
451 | 393 |
|
452 |
| -#[allow(non_snake_case)] |
453 |
| -#[allow(private_no_mangle_fns)] |
454 |
| -#[cfg(target_arch = "arm")] |
455 |
| -#[linkage = "weak"] |
456 |
| -#[naked] |
457 |
| -#[no_mangle] |
458 |
| -extern "C" fn PENDSV() { |
459 |
| - unsafe { |
460 |
| - asm!("b DEFAULT_HANDLER" :::: "volatile"); |
461 |
| - intrinsics::unreachable(); |
462 |
| - } |
463 |
| -} |
| 394 | +.weak PENDSV |
| 395 | +PENDSV = DEFAULT_HANDLER |
464 | 396 |
|
465 |
| -#[allow(non_snake_case)] |
466 |
| -#[allow(private_no_mangle_fns)] |
467 |
| -#[cfg(target_arch = "arm")] |
468 |
| -#[linkage = "weak"] |
469 |
| -#[naked] |
470 |
| -#[no_mangle] |
471 |
| -extern "C" fn SYS_TICK() { |
472 |
| - unsafe { |
473 |
| - asm!("b DEFAULT_HANDLER" :::: "volatile"); |
474 |
| - intrinsics::unreachable(); |
475 |
| - } |
| 397 | +.weak SYS_TICK |
| 398 | +SYS_TICK = DEFAULT_HANDLER |
| 399 | +"#); |
| 400 | + |
| 401 | +extern "C" { |
| 402 | + fn NMI(); |
| 403 | + fn HARD_FAULT(); |
| 404 | + fn MEM_MANAGE(); |
| 405 | + fn BUS_FAULT(); |
| 406 | + fn USAGE_FAULT(); |
| 407 | + fn SVCALL(); |
| 408 | + fn PENDSV(); |
| 409 | + fn SYS_TICK(); |
476 | 410 | }
|
477 | 411 |
|
478 | 412 | #[cfg(target_arch = "arm")]
|
|
0 commit comments