| | 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 |
|---|