Commit 2a357e5
arch: arm: core: aarch32: Fix the syscall design for Cortex-R
When calling a syscall, the SVC routine will now elevate the thread to
privileged mode and exit the SVC setting the return address to the
syscall handler. When the thread is swapped back in, it will be running
z_do_arm_syscall in system mode. That function will run the syscall
then automatically return the thread to usr mode.
This allows running the syscall in sys mode on a thread so that we can
use syscalls that sleep without doing unnatural things. The previous
implementation would enable interrupts while still in the SVC call and
do weird things with the nesting count. An interrupt could happen
during this time when the syscall was still in the exception state, but
the nested count had been decremented too soon. Correctness of the
nested count is important for future floating point unit work.
The Cortex-R behavior now matches that of Cortex-M.
Signed-off-by: Bradley Bolen <[email protected]>1 parent 771c177 commit 2a357e5
2 files changed
+56
-137
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
646 | 646 | | |
647 | 647 | | |
648 | 648 | | |
| 649 | + | |
649 | 650 | | |
650 | 651 | | |
651 | 652 | | |
| |||
723 | 724 | | |
724 | 725 | | |
725 | 726 | | |
726 | | - | |
| 727 | + | |
727 | 728 | | |
728 | 729 | | |
729 | 730 | | |
730 | 731 | | |
731 | 732 | | |
732 | 733 | | |
733 | | - | |
734 | | - | |
735 | | - | |
736 | | - | |
737 | | - | |
738 | | - | |
739 | | - | |
| 734 | + | |
740 | 735 | | |
741 | 736 | | |
742 | 737 | | |
| |||
749 | 744 | | |
750 | 745 | | |
751 | 746 | | |
| 747 | + | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
| 761 | + | |
| 762 | + | |
| 763 | + | |
| 764 | + | |
| 765 | + | |
| 766 | + | |
752 | 767 | | |
753 | 768 | | |
754 | 769 | | |
| |||
761 | 776 | | |
762 | 777 | | |
763 | 778 | | |
764 | | - | |
765 | 779 | | |
766 | 780 | | |
767 | 781 | | |
| |||
776 | 790 | | |
777 | 791 | | |
778 | 792 | | |
779 | | - | |
780 | | - | |
781 | | - | |
782 | | - | |
783 | | - | |
784 | | - | |
785 | | - | |
786 | | - | |
787 | | - | |
788 | | - | |
789 | | - | |
790 | | - | |
791 | | - | |
792 | | - | |
793 | | - | |
794 | | - | |
795 | | - | |
796 | | - | |
797 | | - | |
798 | | - | |
799 | | - | |
800 | | - | |
801 | | - | |
802 | | - | |
803 | | - | |
804 | | - | |
805 | | - | |
806 | | - | |
807 | | - | |
808 | | - | |
809 | | - | |
810 | | - | |
811 | | - | |
812 | | - | |
813 | | - | |
814 | | - | |
815 | | - | |
816 | | - | |
817 | | - | |
818 | | - | |
819 | | - | |
820 | | - | |
821 | | - | |
822 | | - | |
823 | | - | |
824 | | - | |
825 | | - | |
826 | | - | |
827 | | - | |
828 | | - | |
| 793 | + | |
| 794 | + | |
829 | 795 | | |
830 | 796 | | |
831 | 797 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
351 | 351 | | |
352 | 352 | | |
353 | 353 | | |
354 | | - | |
| 354 | + | |
355 | 355 | | |
356 | 356 | | |
357 | 357 | | |
| |||
362 | 362 | | |
363 | 363 | | |
364 | 364 | | |
365 | | - | |
366 | | - | |
367 | | - | |
368 | | - | |
369 | | - | |
370 | | - | |
| 365 | + | |
371 | 366 | | |
372 | | - | |
373 | | - | |
| 367 | + | |
| 368 | + | |
374 | 369 | | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
375 | 378 | | |
376 | 379 | | |
377 | 380 | | |
| |||
446 | 449 | | |
447 | 450 | | |
448 | 451 | | |
449 | | - | |
| 452 | + | |
450 | 453 | | |
451 | 454 | | |
452 | 455 | | |
453 | 456 | | |
454 | 457 | | |
455 | 458 | | |
456 | 459 | | |
457 | | - | |
458 | | - | |
459 | | - | |
460 | 460 | | |
461 | | - | |
462 | 461 | | |
463 | 462 | | |
464 | 463 | | |
| |||
472 | 471 | | |
473 | 472 | | |
474 | 473 | | |
475 | | - | |
476 | | - | |
477 | | - | |
478 | | - | |
479 | | - | |
480 | | - | |
481 | | - | |
482 | | - | |
483 | | - | |
484 | | - | |
485 | | - | |
486 | | - | |
487 | 474 | | |
488 | 475 | | |
489 | 476 | | |
490 | | - | |
491 | | - | |
492 | | - | |
493 | | - | |
494 | | - | |
495 | | - | |
496 | | - | |
497 | | - | |
498 | | - | |
499 | 477 | | |
500 | 478 | | |
501 | 479 | | |
502 | 480 | | |
503 | | - | |
504 | | - | |
505 | 481 | | |
506 | 482 | | |
507 | 483 | | |
| |||
545 | 521 | | |
546 | 522 | | |
547 | 523 | | |
548 | | - | |
| 524 | + | |
549 | 525 | | |
550 | 526 | | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
551 | 530 | | |
552 | 531 | | |
553 | 532 | | |
| |||
574 | 553 | | |
575 | 554 | | |
576 | 555 | | |
577 | | - | |
| 556 | + | |
| 557 | + | |
578 | 558 | | |
579 | 559 | | |
580 | 560 | | |
581 | 561 | | |
582 | 562 | | |
583 | 563 | | |
584 | 564 | | |
| 565 | + | |
585 | 566 | | |
586 | 567 | | |
587 | 568 | | |
588 | 569 | | |
| 570 | + | |
589 | 571 | | |
590 | 572 | | |
591 | 573 | | |
| |||
636 | 618 | | |
637 | 619 | | |
638 | 620 | | |
639 | | - | |
640 | | - | |
641 | | - | |
642 | | - | |
643 | | - | |
644 | | - | |
645 | | - | |
646 | | - | |
647 | | - | |
648 | | - | |
649 | | - | |
650 | | - | |
651 | | - | |
652 | | - | |
653 | | - | |
654 | | - | |
655 | | - | |
656 | | - | |
657 | | - | |
658 | | - | |
659 | | - | |
660 | | - | |
661 | | - | |
662 | | - | |
663 | | - | |
664 | | - | |
665 | | - | |
666 | | - | |
667 | | - | |
668 | | - | |
| 621 | + | |
669 | 622 | | |
670 | | - | |
671 | | - | |
672 | | - | |
673 | | - | |
674 | | - | |
| 623 | + | |
| 624 | + | |
675 | 625 | | |
676 | 626 | | |
677 | 627 | | |
| |||
681 | 631 | | |
682 | 632 | | |
683 | 633 | | |
684 | | - | |
685 | | - | |
686 | | - | |
687 | | - | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
688 | 639 | | |
689 | 640 | | |
| 641 | + | |
| 642 | + | |
690 | 643 | | |
691 | 644 | | |
692 | 645 | | |
| |||
0 commit comments