Changeset 12086 in vbox for trunk/include/iprt
- Timestamp:
- Sep 4, 2008 12:04:41 PM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 36024
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/iprt/asm.h
r11173 r12086 1729 1729 #endif 1730 1730 1731 /** 1732 * Gets dr0. 1733 * 1734 * @returns dr0. 1735 */ 1736 #if RT_INLINE_ASM_EXTERNAL 1737 DECLASM(RTCCUINTREG) ASMGetDR0(void); 1738 #else 1739 DECLINLINE(RTCCUINTREG) ASMGetDR0(void) 1740 { 1741 RTCCUINTREG uDR0; 1742 # if RT_INLINE_ASM_GNU_STYLE 1743 # ifdef RT_ARCH_AMD64 1744 __asm__ __volatile__("movq %%dr0, %0\n\t" : "=r" (uDR0)); 1745 # else 1746 __asm__ __volatile__("movl %%dr0, %0\n\t" : "=r" (uDR0)); 1747 # endif 1748 # else 1749 __asm 1750 { 1751 # ifdef RT_ARCH_AMD64 1752 mov rax, dr0 1753 mov [uDR0], rax 1754 # else 1755 mov eax, dr0 1756 mov [uDR0], eax 1757 # endif 1758 } 1759 # endif 1760 return uDR0; 1761 } 1762 #endif 1763 1764 1765 /** 1766 * Gets dr1. 1767 * 1768 * @returns dr1. 1769 */ 1770 #if RT_INLINE_ASM_EXTERNAL 1771 DECLASM(RTCCUINTREG) ASMGetDR1(void); 1772 #else 1773 DECLINLINE(RTCCUINTREG) ASMGetDR1(void) 1774 { 1775 RTCCUINTREG uDR1; 1776 # if RT_INLINE_ASM_GNU_STYLE 1777 # ifdef RT_ARCH_AMD64 1778 __asm__ __volatile__("movq %%dr1, %0\n\t" : "=r" (uDR1)); 1779 # else 1780 __asm__ __volatile__("movl %%dr1, %0\n\t" : "=r" (uDR1)); 1781 # endif 1782 # else 1783 __asm 1784 { 1785 # ifdef RT_ARCH_AMD64 1786 mov rax, dr1 1787 mov [uDR1], rax 1788 # else 1789 mov eax, dr1 1790 mov [uDR1], eax 1791 # endif 1792 } 1793 # endif 1794 return uDR1; 1795 } 1796 #endif 1797 1798 /** 1799 * Gets dr2. 1800 * 1801 * @returns dr2. 1802 */ 1803 #if RT_INLINE_ASM_EXTERNAL 1804 DECLASM(RTCCUINTREG) ASMGetDR2(void); 1805 #else 1806 DECLINLINE(RTCCUINTREG) ASMGetDR2(void) 1807 { 1808 RTCCUINTREG uDR2; 1809 # if RT_INLINE_ASM_GNU_STYLE 1810 # ifdef RT_ARCH_AMD64 1811 __asm__ __volatile__("movq %%dr2, %0\n\t" : "=r" (uDR2)); 1812 # else 1813 __asm__ __volatile__("movl %%dr2, %0\n\t" : "=r" (uDR2)); 1814 # endif 1815 # else 1816 __asm 1817 { 1818 # ifdef RT_ARCH_AMD64 1819 mov rax, dr2 1820 mov [uDR2], rax 1821 # else 1822 mov eax, dr2 1823 mov [uDR2], eax 1824 # endif 1825 } 1826 # endif 1827 return uDR2; 1828 } 1829 #endif 1830 1831 /** 1832 * Gets dr3. 1833 * 1834 * @returns dr3. 1835 */ 1836 #if RT_INLINE_ASM_EXTERNAL 1837 DECLASM(RTCCUINTREG) ASMGetDR3(void); 1838 #else 1839 DECLINLINE(RTCCUINTREG) ASMGetDR3(void) 1840 { 1841 RTCCUINTREG uDR3; 1842 # if RT_INLINE_ASM_GNU_STYLE 1843 # ifdef RT_ARCH_AMD64 1844 __asm__ __volatile__("movq %%dr3, %0\n\t" : "=r" (uDR3)); 1845 # else 1846 __asm__ __volatile__("movl %%dr3, %0\n\t" : "=r" (uDR3)); 1847 # endif 1848 # else 1849 __asm 1850 { 1851 # ifdef RT_ARCH_AMD64 1852 mov rax, dr3 1853 mov [uDR3], rax 1854 # else 1855 mov eax, dr3 1856 mov [uDR3], eax 1857 # endif 1858 } 1859 # endif 1860 return uDR3; 1861 } 1862 #endif 1731 1863 1732 1864 /**
Note:
See TracChangeset
for help on using the changeset viewer.