📄 core_cm3.lst
字号:
514 return(result);
515 }
516
517 /**
518 * @brief Set the Base Priority value
519 *
520 * @param basePri BasePriority
521 *
522 * Set the base priority register
523 */
524 void __set_BASEPRI(uint32_t value)
525 {
526 __ASM volatile ("MSR basepri, %0" : : "r" (value) );
527 }
528
529 /**
530 * @brief Return the Priority Mask value
531 *
532 * @return PriMask
533 *
534 * Return state of the priority mask bit from the priority mask register
535 */
536 uint32_t __get_PRIMASK(void)
537 {
538 uint32_t result=0;
539
540 __ASM volatile ("MRS %0, primask" : "=r" (result) );
541 return(result);
542 }
543
544 /**
545 * @brief Set the Priority Mask value
546 *
547 * @param priMask PriMask
548 *
549 * Set the priority mask bit in the priority mask register
550 */
551 void __set_PRIMASK(uint32_t priMask)
552 {
553 __ASM volatile ("MSR primask, %0" : : "r" (priMask) );
554 }
555
556 /**
557 * @brief Return the Fault Mask value
558 *
559 * @return FaultMask
560 *
561 * Return the content of the fault mask register
562 */
563 uint32_t __get_FAULTMASK(void)
564 {
565 uint32_t result=0;
566
567 __ASM volatile ("MRS %0, faultmask" : "=r" (result) );
568 return(result);
569 }
570
571 /**
572 * @brief Set the Fault Mask value
573 *
574 * @param faultMask faultMask value
575 *
576 * Set the fault mask register
577 */
578 void __set_FAULTMASK(uint32_t faultMask)
579 {
580 __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) );
581 }
582
583 /**
584 * @brief Return the Control Register value
585 *
586 * @return Control value
587 *
588 * Return the content of the control register
589 */
590 uint32_t __get_CONTROL(void)
591 {
592 uint32_t result=0;
593
594 __ASM volatile ("MRS %0, control" : "=r" (result) );
595 return(result);
596 }
597
598 /**
599 * @brief Set the Control Register value
600 *
601 * @param control Control value
602 *
603 * Set the control register
604 */
605 void __set_CONTROL(uint32_t control)
606 {
607 __ASM volatile ("MSR control, %0" : : "r" (control) );
608 }
609
610
611 /**
612 * @brief Reverse byte order in integer value
613 *
614 * @param value value to reverse
615 * @return reversed value
616 *
617 * Reverse byte order in integer value
618 */
619 uint32_t __REV(uint32_t value)
620 {
621 uint32_t result=0;
622
623 __ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) );
624 return(result);
625 }
626
627 /**
628 * @brief Reverse byte order in unsigned short value
629 *
630 * @param value value to reverse
631 * @return reversed value
632 *
633 * Reverse byte order in unsigned short value
634 */
635 uint32_t __REV16(uint16_t value)
636 {
637 uint32_t result=0;
638
639 __ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) );
640 return(result);
641 }
642
643 /**
644 * @brief Reverse byte order in signed short value with sign extension to integer
645 *
646 * @param value value to reverse
647 * @return reversed value
648 *
649 * Reverse byte order in signed short value with sign extension to integer
650 */
651 int32_t __REVSH(int16_t value)
652 {
653 uint32_t result=0;
654
655 __ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) );
656 return(result);
657 }
658
659 /**
660 * @brief Reverse bit order of value
661 *
662 * @param value value to reverse
663 * @return reversed value
664 *
665 * Reverse bit order of value
666 */
667 uint32_t __RBIT(uint32_t value)
668 {
669 uint32_t result=0;
670
671 __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) );
672 return(result);
673 }
674
675 /**
676 * @brief LDR Exclusive (8 bit)
677 *
678 * @param *addr address pointer
679 * @return value of (*address)
680 *
681 * Exclusive LDR command for 8 bit value
682 */
683 uint8_t __LDREXB(uint8_t *addr)
684 {
685 uint8_t result=0;
686
687 __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) );
688 return(result);
689 }
690
691 /**
692 * @brief LDR Exclusive (16 bit)
693 *
694 * @param *addr address pointer
695 * @return value of (*address)
696 *
697 * Exclusive LDR command for 16 bit values
698 */
699 uint16_t __LDREXH(uint16_t *addr)
700 {
701 uint16_t result=0;
702
703 __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) );
704 return(result);
705 }
706
707 /**
708 * @brief LDR Exclusive (32 bit)
709 *
710 * @param *addr address pointer
711 * @return value of (*address)
712 *
713 * Exclusive LDR command for 32 bit values
714 */
715 uint32_t __LDREXW(uint32_t *addr)
716 {
717 uint32_t result=0;
718
719 __ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) );
720 return(result);
721 }
722
723 /**
724 * @brief STR Exclusive (8 bit)
725 *
726 * @param value value to store
727 * @param *addr address pointer
728 * @return successful / failed
729 *
730 * Exclusive STR command for 8 bit values
731 */
732 uint32_t __STREXB(uint8_t value, uint8_t *addr)
733 {
734 uint32_t result=0;
735
736 __ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
737 return(result);
738 }
739
740 /**
741 * @brief STR Exclusive (16 bit)
742 *
743 * @param value value to store
744 * @param *addr address pointer
745 * @return successful / failed
746 *
747 * Exclusive STR command for 16 bit values
748 */
749 uint32_t __STREXH(uint16_t value, uint16_t *addr)
750 {
751 uint32_t result=0;
752
753 __ASM volatile ("strexh %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
754 return(result);
755 }
756
757 /**
758 * @brief STR Exclusive (32 bit)
759 *
760 * @param value value to store
761 * @param *addr address pointer
762 * @return successful / failed
763 *
764 * Exclusive STR command for 32 bit values
765 */
766 uint32_t __STREXW(uint32_t value, uint32_t *addr)
767 {
768 uint32_t result=0;
769
770 __ASM volatile ("strex %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
771 return(result);
772 }
773
774
775 #elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/
776 /* TASKING carm specific functions */
777
778 /*
779 * The CMSIS functions have been implemented as intrinsics in the compiler.
780 * Please use "carm -?i" to get an up to date list of all instrinsics,
781 * Including the CMSIS ones.
782 */
783
784 #endif
Maximum stack usage in bytes:
Function .cstack
-------- -------
__LDREXB 0
__LDREXH 0
__LDREXW 0
__RBIT 0
__REV16 0
__STREXB 0
__STREXH 0
__STREXW 0
__get_MSP 0
__get_PSP 0
__set_MSP 0
__set_PSP 0
Section sizes:
Function/Label Bytes
-------------- -----
__get_PSP 8
__set_PSP 8
__get_MSP 8
__set_MSP 8
__REV16 6
__RBIT 8
__LDREXB 8
__LDREXH 8
__LDREXW 8
__STREXB 8
__STREXH 8
__STREXW 8
94 bytes in section .text
94 bytes of CODE memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -