Index: /trunk/include/iprt/asm-amd64-x86-watcom-16.h
===================================================================
--- /trunk/include/iprt/asm-amd64-x86-watcom-16.h	(revision 58748)
+++ /trunk/include/iprt/asm-amd64-x86-watcom-16.h	(revision 58749)
@@ -38,6 +38,13 @@
  * seems to insists on loading the DGROUP segment into 'ds' before calling
  * stuff when using -ecc.  Using 'es' instead as this seems to work fine.
+ *
+ * Note! The #undef that preceds the #pragma aux statements is for undoing
+ *       the mangling, because the symbol in #pragma aux [symbol] statements
+ *       doesn't get subjected to preprocessing.  This is also why we include
+ *       the watcom header at the top rather than at the bottom of the
+ *       asm-amd64-x86.h file.
  */
 
+#undef      ASMGetIDTR
 #pragma aux ASMGetIDTR = \
     "sidt fword ptr es:[bx]" \
@@ -45,4 +52,5 @@
     modify exact [];
 
+#undef      ASMGetIdtrLimit
 #pragma aux ASMGetIdtrLimit = \
     "sub  sp, 8" \
@@ -55,4 +63,5 @@
     modify exact [bx];
 
+#undef      ASMSetIDTR
 #pragma aux ASMSetIDTR = \
     "lidt fword ptr es:[bx]" \
@@ -60,4 +69,5 @@
     modify nomemory;
 
+#undef      ASMGetGDTR
 #pragma aux ASMGetGDTR = \
     "sgdt fword ptr es:[bx]" \
@@ -65,4 +75,5 @@
     modify exact [];
 
+#undef      ASMSetGDTR
 #pragma aux ASMSetGDTR = \
     "lgdt fword ptr es:[bx]" \
@@ -70,4 +81,5 @@
     modify exact [] nomemory;
 
+#undef      ASMGetCS
 #pragma aux ASMGetCS = \
     "mov ax, cs" \
@@ -76,4 +88,5 @@
     modify exact [ax] nomemory;
 
+#undef      ASMGetDS
 #pragma aux ASMGetDS = \
     "mov ax, ds" \
@@ -82,4 +95,5 @@
     modify exact [ax] nomemory;
 
+#undef      ASMGetES
 #pragma aux ASMGetES = \
     "mov ax, es" \
@@ -88,4 +102,5 @@
     modify exact [ax] nomemory;
 
+#undef      ASMGetFS
 #pragma aux ASMGetFS = \
     "mov ax, fs" \
@@ -94,4 +109,5 @@
     modify exact [ax] nomemory;
 
+#undef      ASMGetGS
 #pragma aux ASMGetGS = \
     "mov ax, gs" \
@@ -100,4 +116,5 @@
     modify exact [ax] nomemory;
 
+#undef      ASMGetSS
 #pragma aux ASMGetSS = \
     "mov ax, ss" \
@@ -106,4 +123,5 @@
     modify exact [ax] nomemory;
 
+#undef      ASMGetTR
 #pragma aux ASMGetTR = \
     "str ax" \
@@ -112,4 +130,5 @@
     modify exact [ax] nomemory;
 
+#undef      ASMGetLDTR
 #pragma aux ASMGetLDTR = \
     "sldt ax" \
@@ -120,4 +139,5 @@
 /** @todo ASMGetSegAttr   */
 
+#undef      ASMGetFlags
 #pragma aux ASMGetFlags = \
     "pushf" \
@@ -127,4 +147,5 @@
     modify exact [ax] nomemory;
 
+#undef      ASMSetFlags
 #pragma aux ASMSetFlags = \
     "push ax" \
@@ -133,4 +154,5 @@
     modify exact [] nomemory;
 
+#undef      ASMChangeFlags
 #pragma aux ASMChangeFlags = \
     "pushf" \
@@ -144,4 +166,5 @@
     modify exact [dx] nomemory;
 
+#undef      ASMAddFlags
 #pragma aux ASMAddFlags = \
     "pushf" \
@@ -154,4 +177,5 @@
     modify exact [dx] nomemory;
 
+#undef      ASMClearFlags
 #pragma aux ASMClearFlags = \
     "pushf" \
@@ -166,4 +190,5 @@
 /* Note! Must use the 64-bit integer return value convension.
          The order of registers in the value [set] does not seem to mean anything. */
+#undef      ASMReadTSC
 #pragma aux ASMReadTSC = \
     ".586" \
@@ -199,4 +224,5 @@
             si:di
          This ordering seems to apply to parameter values too. */
+#undef      ASMGetCR0
 #pragma aux ASMGetCR0 = \
     "mov eax, cr0" \
@@ -207,4 +233,5 @@
     modify exact [ax dx] nomemory;
 
+#undef      ASMSetCR0
 #pragma aux ASMSetCR0 = \
     "shl edx, 16" \
@@ -214,4 +241,5 @@
     modify exact [dx] nomemory;
 
+#undef      ASMGetCR2
 #pragma aux ASMGetCR2 = \
     "mov eax, cr2" \
@@ -222,4 +250,5 @@
     modify exact [ax dx] nomemory;
 
+#undef      ASMSetCR2
 #pragma aux ASMSetCR2 = \
     "shl edx, 16" \
@@ -229,4 +258,5 @@
     modify exact [dx] nomemory;
 
+#undef      ASMGetCR3
 #pragma aux ASMGetCR3 = \
     "mov eax, cr3" \
@@ -237,4 +267,5 @@
     modify exact [ax dx] nomemory;
 
+#undef      ASMSetCR3
 #pragma aux ASMSetCR3 = \
     "shl edx, 16" \
@@ -244,4 +275,5 @@
     modify exact [dx] nomemory;
 
+#undef      ASMReloadCR3
 #pragma aux ASMReloadCR3 = \
     "mov eax, cr3" \
@@ -250,4 +282,5 @@
     modify exact [ax] nomemory;
 
+#undef      ASMGetCR4
 #pragma aux ASMGetCR4 = \
     "mov eax, cr4" \
@@ -258,4 +291,5 @@
     modify exact [ax dx] nomemory;
 
+#undef      ASMSetCR4
 #pragma aux ASMSetCR4 = \
     "shl edx, 16" \
@@ -268,4 +302,5 @@
 /* ASMSetCR8: Don't bother for 16-bit. */
 
+#undef      ASMIntEnable
 #pragma aux ASMIntEnable = \
     "sti" \
@@ -273,4 +308,5 @@
     modify exact [] nomemory;
 
+#undef      ASMIntDisable
 #pragma aux ASMIntDisable = \
     "cli" \
@@ -278,4 +314,5 @@
     modify exact [] nomemory;
 
+#undef      ASMIntDisableFlags
 #pragma aux ASMIntDisableFlags = \
     "pushf" \
@@ -286,4 +323,5 @@
     modify exact [] nomemory;
 
+#undef      ASMHalt
 #pragma aux ASMHalt = \
     "hlt" \
@@ -291,4 +329,5 @@
     modify exact [] nomemory;
 
+#undef      ASMRdMsr
 #pragma aux ASMRdMsr = \
     ".586" \
@@ -309,4 +348,5 @@
 /* ASMWrMsrEx: Implemented externally, lazy bird. */
 
+#undef      ASMRdMsr_Low
 #pragma aux ASMRdMsr_Low = \
     ".586" \
@@ -320,4 +360,5 @@
     modify exact [ax bx cx dx] nomemory;
 
+#undef      ASMRdMsr_High
 #pragma aux ASMRdMsr_High = \
     ".586" \
@@ -332,4 +373,5 @@
 
 
+#undef      ASMGetDR0
 #pragma aux ASMGetDR0 = \
     "mov eax, dr0" \
@@ -340,4 +382,5 @@
     modify exact [ax dx] nomemory;
 
+#undef      ASMGetDR1
 #pragma aux ASMGetDR1 = \
     "mov eax, dr1" \
@@ -348,4 +391,5 @@
     modify exact [ax dx] nomemory;
 
+#undef      ASMGetDR2
 #pragma aux ASMGetDR2 = \
     "mov eax, dr2" \
@@ -356,4 +400,5 @@
     modify exact [ax dx] nomemory;
 
+#undef      ASMGetDR3
 #pragma aux ASMGetDR3 = \
     "mov eax, dr3" \
@@ -364,4 +409,5 @@
     modify exact [ax dx] nomemory;
 
+#undef      ASMGetDR6
 #pragma aux ASMGetDR6 = \
     "mov eax, dr6" \
@@ -372,4 +418,5 @@
     modify exact [ax dx] nomemory;
 
+#undef      ASMGetAndClearDR6
 #pragma aux ASMGetAndClearDR6 = \
     "mov edx, 0ffff0ff0h" \
@@ -382,4 +429,5 @@
     modify exact [ax dx] nomemory;
 
+#undef      ASMGetDR7
 #pragma aux ASMGetDR7 = \
     "mov eax, dr7" \
@@ -390,4 +438,5 @@
     modify exact [ax dx] nomemory;
 
+#undef      ASMSetDR0
 #pragma aux ASMSetDR0 = \
     "shl edx, 16" \
@@ -397,4 +446,5 @@
     modify exact [dx] nomemory;
 
+#undef      ASMSetDR1
 #pragma aux ASMSetDR1 = \
     "shl edx, 16" \
@@ -404,4 +454,5 @@
     modify exact [dx] nomemory;
 
+#undef      ASMSetDR2
 #pragma aux ASMSetDR2 = \
     "shl edx, 16" \
@@ -411,4 +462,5 @@
     modify exact [dx] nomemory;
 
+#undef      ASMSetDR3
 #pragma aux ASMSetDR3 = \
     "shl edx, 16" \
@@ -418,4 +470,5 @@
     modify exact [dx] nomemory;
 
+#undef      ASMSetDR6
 #pragma aux ASMSetDR6 = \
     "shl edx, 16" \
@@ -425,4 +478,5 @@
     modify exact [dx] nomemory;
 
+#undef      ASMSetDR7
 #pragma aux ASMSetDR7 = \
     "shl edx, 16" \
@@ -433,4 +487,5 @@
 
 /* Yeah, could've used outp here, but this keeps the main file simpler. */
+#undef      ASMOutU8
 #pragma aux ASMOutU8 = \
     "out dx, al" \
@@ -438,4 +493,5 @@
     modify exact [] nomemory;
 
+#undef      ASMInU8
 #pragma aux ASMInU8 = \
     "in al, dx" \
@@ -444,4 +500,6 @@
     modify exact [] nomemory;
 
+#undef      ASMOutU16
+#undef      ASMOutU16
 #pragma aux ASMOutU16 = \
     "out dx, ax" \
@@ -449,4 +507,5 @@
     modify exact [] nomemory;
 
+#undef      ASMInU16
 #pragma aux ASMInU16 = \
     "in ax, dx" \
@@ -455,4 +514,5 @@
     modify exact [] nomemory;
 
+#undef      ASMOutU32
 #pragma aux ASMOutU32 = \
     "shl ecx, 16" \
@@ -463,4 +523,5 @@
     modify exact [] nomemory;
 
+#undef      ASMInU32
 #pragma aux ASMInU32 = \
     "in eax, dx" \
@@ -471,4 +532,5 @@
     modify exact [] nomemory;
 
+#undef      ASMOutStrU8
 #pragma aux ASMOutStrU8 = \
     "mov ds, bx" \
@@ -477,4 +539,5 @@
     modify exact [si cx ds] nomemory;
 
+#undef      ASMInStrU8
 #pragma aux ASMInStrU8 = \
     "rep insb" \
@@ -482,4 +545,5 @@
     modify exact [di cx];
 
+#undef      ASMOutStrU16
 #pragma aux ASMOutStrU16 = \
     "mov ds, bx" \
@@ -488,4 +552,5 @@
     modify exact [si cx ds] nomemory;
 
+#undef      ASMInStrU16
 #pragma aux ASMInStrU16 = \
     "rep insw" \
@@ -493,4 +558,5 @@
     modify exact [di cx];
 
+#undef      ASMOutStrU32
 #pragma aux ASMOutStrU32 = \
     "mov ds, bx" \
@@ -499,4 +565,5 @@
     modify exact [si cx ds] nomemory;
 
+#undef      ASMInStrU32
 #pragma aux ASMInStrU32 = \
     "rep insd" \
@@ -506,4 +573,5 @@
 /* ASMInvalidatePage: When needed. */
 
+#undef      ASMWriteBackAndInvalidateCaches
 #pragma aux ASMWriteBackAndInvalidateCaches = \
     ".486" \
@@ -512,4 +580,5 @@
     modify exact [] nomemory;
 
+#undef      ASMInvalidateInternalCaches
 #pragma aux ASMInvalidateInternalCaches = \
     ".486" \
Index: /trunk/include/iprt/asm-amd64-x86-watcom-32.h
===================================================================
--- /trunk/include/iprt/asm-amd64-x86-watcom-32.h	(revision 58748)
+++ /trunk/include/iprt/asm-amd64-x86-watcom-32.h	(revision 58749)
@@ -34,5 +34,13 @@
 #endif
 
-
+/*
+ * Note! The #undef that preceds the #pragma aux statements is for undoing
+ *       the mangling, because the symbol in #pragma aux [symbol] statements
+ *       doesn't get subjected to preprocessing.  This is also why we include
+ *       the watcom header at the top rather than at the bottom of the
+ *       asm-amd64-x86.h file.
+ */
+
+#undef      ASMGetIDTR
 #pragma aux ASMGetIDTR = \
     "sidt fword ptr [ecx]" \
@@ -40,4 +48,5 @@
     modify exact [];
 
+#undef      ASMGetIdtrLimit
 #pragma aux ASMGetIdtrLimit = \
     "sub  esp, 8" \
@@ -49,4 +58,5 @@
     modify exact [ecx];
 
+#undef      ASMSetIDTR
 #pragma aux ASMSetIDTR = \
     "lidt fword ptr [ecx]" \
@@ -54,4 +64,5 @@
     modify nomemory;
 
+#undef      ASMGetGDTR
 #pragma aux ASMGetGDTR = \
     "sgdt fword ptr [ecx]" \
@@ -59,4 +70,5 @@
     modify exact [];
 
+#undef      ASMSetGDTR
 #pragma aux ASMSetGDTR = \
     "lgdt fword ptr [ecx]" \
@@ -64,4 +76,5 @@
     modify exact [] nomemory;
 
+#undef      ASMGetCS
 #pragma aux ASMGetCS = \
     "mov ax, cs" \
@@ -70,4 +83,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMGetDS
 #pragma aux ASMGetDS = \
     "mov ax, ds" \
@@ -76,4 +90,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMGetES
 #pragma aux ASMGetES = \
     "mov ax, es" \
@@ -82,4 +97,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMGetFS
 #pragma aux ASMGetFS = \
     "mov ax, fs" \
@@ -88,4 +104,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMGetGS
 #pragma aux ASMGetGS = \
     "mov ax, gs" \
@@ -94,4 +111,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMGetSS
 #pragma aux ASMGetSS = \
     "mov ax, ss" \
@@ -100,4 +118,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMGetTR
 #pragma aux ASMGetTR = \
     "str ax" \
@@ -106,4 +125,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMGetLDTR
 #pragma aux ASMGetLDTR = \
     "sldt ax" \
@@ -114,4 +134,5 @@
 /** @todo ASMGetSegAttr   */
 
+#undef      ASMGetFlags
 #pragma aux ASMGetFlags = \
     "pushfd" \
@@ -121,4 +142,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMSetFlags
 #pragma aux ASMSetFlags = \
     "push eax" \
@@ -127,4 +149,5 @@
     modify exact [] nomemory;
 
+#undef      ASMChangeFlags
 #pragma aux ASMChangeFlags = \
     "pushfd" \
@@ -138,4 +161,5 @@
     modify exact [edx] nomemory;
 
+#undef      ASMAddFlags
 #pragma aux ASMAddFlags = \
     "pushfd" \
@@ -148,4 +172,5 @@
     modify exact [edx] nomemory;
 
+#undef      ASMClearFlags
 #pragma aux ASMClearFlags = \
     "pushfd" \
@@ -160,4 +185,5 @@
 /* Note! Must use the 64-bit integer return value convension.
          The order of registers in the value [set] does not seem to mean anything. */
+#undef      ASMReadTSC
 #pragma aux ASMReadTSC = \
     ".586" \
@@ -167,4 +193,5 @@
     modify exact [edx eax] nomemory;
 
+#undef      ASMReadTscWithAux
 #pragma aux ASMReadTscWithAux = \
     0x0f 0x01 0xf9 \
@@ -177,4 +204,5 @@
 /* ASMCpuIdExSlow: Always implemented externally. */
 
+#undef      ASMCpuId_ECX_EDX
 #pragma aux ASMCpuId_ECX_EDX = \
     "cpuid" \
@@ -184,4 +212,5 @@
     modify exact [eax ebx ecx edx];
 
+#undef      ASMCpuId_EAX
 #pragma aux ASMCpuId_EAX = \
     "cpuid" \
@@ -190,4 +219,5 @@
     modify exact [eax ebx ecx edx];
 
+#undef      ASMCpuId_EBX
 #pragma aux ASMCpuId_EBX = \
     "cpuid" \
@@ -196,4 +226,5 @@
     modify exact [eax ebx ecx edx];
 
+#undef      ASMCpuId_ECX
 #pragma aux ASMCpuId_ECX = \
     "cpuid" \
@@ -202,4 +233,5 @@
     modify exact [eax ebx ecx edx];
 
+#undef      ASMCpuId_EDX
 #pragma aux ASMCpuId_EDX = \
     "cpuid" \
@@ -211,4 +243,5 @@
 /* ASMGetApicId: Implemented externally, lazy bird. */
 
+#undef      ASMGetCR0
 #pragma aux ASMGetCR0 = \
     "mov eax, cr0" \
@@ -217,4 +250,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMSetCR0
 #pragma aux ASMSetCR0 = \
     "mov cr0, eax" \
@@ -222,4 +256,5 @@
     modify exact [] nomemory;
 
+#undef      ASMGetCR2
 #pragma aux ASMGetCR2 = \
     "mov eax, cr2" \
@@ -228,4 +263,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMSetCR2
 #pragma aux ASMSetCR2 = \
     "mov cr2, eax" \
@@ -233,4 +269,5 @@
     modify exact [] nomemory;
 
+#undef      ASMGetCR3
 #pragma aux ASMGetCR3 = \
     "mov eax, cr3" \
@@ -239,4 +276,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMSetCR3
 #pragma aux ASMSetCR3 = \
     "mov cr3, eax" \
@@ -244,4 +282,5 @@
     modify exact [] nomemory;
 
+#undef      ASMReloadCR3
 #pragma aux ASMReloadCR3 = \
     "mov eax, cr3" \
@@ -250,4 +289,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMGetCR4
 #pragma aux ASMGetCR4 = \
     "mov eax, cr4" \
@@ -256,4 +296,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMSetCR4
 #pragma aux ASMSetCR4 = \
     "mov cr4, eax" \
@@ -264,4 +305,5 @@
 /* ASMSetCR8: Don't bother for 32-bit. */
 
+#undef      ASMIntEnable
 #pragma aux ASMIntEnable = \
     "sti" \
@@ -269,4 +311,5 @@
     modify exact [] nomemory;
 
+#undef      ASMIntDisable
 #pragma aux ASMIntDisable = \
     "cli" \
@@ -274,4 +317,5 @@
     modify exact [] nomemory;
 
+#undef      ASMIntDisableFlags
 #pragma aux ASMIntDisableFlags = \
     "pushfd" \
@@ -282,4 +326,5 @@
     modify exact [] nomemory;
 
+#undef      ASMHalt
 #pragma aux ASMHalt = \
     "hlt" \
@@ -287,4 +332,5 @@
     modify exact [] nomemory;
 
+#undef      ASMRdMsr
 #pragma aux ASMRdMsr = \
     ".586" \
@@ -294,4 +340,5 @@
     modify exact [eax edx] nomemory;
 
+#undef      ASMWrMsr
 #pragma aux ASMWrMsr = \
     ".586" \
@@ -300,4 +347,5 @@
     modify exact [] nomemory;
 
+#undef      ASMRdMsrEx
 #pragma aux ASMRdMsrEx = \
     ".586" \
@@ -307,4 +355,5 @@
     modify exact [eax edx] nomemory;
 
+#undef      ASMWrMsrEx
 #pragma aux ASMWrMsrEx = \
     ".586" \
@@ -313,4 +362,5 @@
     modify exact [] nomemory;
 
+#undef      ASMRdMsr_Low
 #pragma aux ASMRdMsr_Low = \
     ".586" \
@@ -320,4 +370,5 @@
     modify exact [eax edx] nomemory;
 
+#undef      ASMRdMsr_High
 #pragma aux ASMRdMsr_High = \
     ".586" \
@@ -328,4 +379,5 @@
 
 
+#undef      ASMGetDR0
 #pragma aux ASMGetDR0 = \
     "mov eax, dr0" \
@@ -334,4 +386,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMGetDR1
 #pragma aux ASMGetDR1 = \
     "mov eax, dr1" \
@@ -340,4 +393,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMGetDR2
 #pragma aux ASMGetDR2 = \
     "mov eax, dr2" \
@@ -346,4 +400,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMGetDR3
 #pragma aux ASMGetDR3 = \
     "mov eax, dr3" \
@@ -352,4 +407,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMGetDR6
 #pragma aux ASMGetDR6 = \
     "mov eax, dr6" \
@@ -358,4 +414,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMGetAndClearDR6
 #pragma aux ASMGetAndClearDR6 = \
     "mov edx, 0ffff0ff0h" \
@@ -366,4 +423,5 @@
     modify exact [eax edx] nomemory;
 
+#undef      ASMGetDR7
 #pragma aux ASMGetDR7 = \
     "mov eax, dr7" \
@@ -372,4 +430,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMSetDR0
 #pragma aux ASMSetDR0 = \
     "mov dr0, eax" \
@@ -377,4 +436,5 @@
     modify exact [] nomemory;
 
+#undef      ASMSetDR1
 #pragma aux ASMSetDR1 = \
     "mov dr1, eax" \
@@ -382,4 +442,5 @@
     modify exact [] nomemory;
 
+#undef      ASMSetDR2
 #pragma aux ASMSetDR2 = \
     "mov dr2, eax" \
@@ -387,4 +448,5 @@
     modify exact [] nomemory;
 
+#undef      ASMSetDR3
 #pragma aux ASMSetDR3 = \
     "mov dr3, eax" \
@@ -392,4 +454,5 @@
     modify exact [] nomemory;
 
+#undef      ASMSetDR6
 #pragma aux ASMSetDR6 = \
     "mov dr6, eax" \
@@ -397,4 +460,5 @@
     modify exact [] nomemory;
 
+#undef      ASMSetDR7
 #pragma aux ASMSetDR7 = \
     "mov dr7, eax" \
@@ -403,4 +467,5 @@
 
 /* Yeah, could've used outp here, but this keeps the main file simpler. */
+#undef      ASMOutU8
 #pragma aux ASMOutU8 = \
     "out dx, al" \
@@ -408,4 +473,5 @@
     modify exact [] nomemory;
 
+#undef      ASMInU8
 #pragma aux ASMInU8 = \
     "in al, dx" \
@@ -414,4 +480,5 @@
     modify exact [] nomemory;
 
+#undef      ASMOutU16
 #pragma aux ASMOutU16 = \
     "out dx, ax" \
@@ -419,4 +486,5 @@
     modify exact [] nomemory;
 
+#undef      ASMInU16
 #pragma aux ASMInU16 = \
     "in ax, dx" \
@@ -425,4 +493,5 @@
     modify exact [] nomemory;
 
+#undef      ASMOutU32
 #pragma aux ASMOutU32 = \
     "out dx, eax" \
@@ -430,4 +499,5 @@
     modify exact [] nomemory;
 
+#undef      ASMInU32
 #pragma aux ASMInU32 = \
     "in eax, dx" \
@@ -436,4 +506,5 @@
     modify exact [] nomemory;
 
+#undef      ASMOutStrU8
 #pragma aux ASMOutStrU8 = \
     "rep outsb" \
@@ -441,4 +512,5 @@
     modify exact [esi ecx] nomemory;
 
+#undef      ASMInStrU8
 #pragma aux ASMInStrU8 = \
     "rep insb" \
@@ -446,4 +518,5 @@
     modify exact [edi ecx];
 
+#undef      ASMOutStrU16
 #pragma aux ASMOutStrU16 = \
     "rep outsw" \
@@ -451,4 +524,5 @@
     modify exact [esi ecx] nomemory;
 
+#undef      ASMInStrU16
 #pragma aux ASMInStrU16 = \
     "rep insw" \
@@ -456,4 +530,5 @@
     modify exact [edi ecx];
 
+#undef      ASMOutStrU32
 #pragma aux ASMOutStrU32 = \
     "rep outsd" \
@@ -461,4 +536,5 @@
     modify exact [esi ecx] nomemory;
 
+#undef      ASMInStrU32
 #pragma aux ASMInStrU32 = \
     "rep insd" \
@@ -466,4 +542,5 @@
     modify exact [edi ecx];
 
+#undef      ASMInvalidatePage
 #pragma aux ASMInvalidatePage = \
     "invlpg [eax]" \
@@ -471,4 +548,5 @@
     modify exact [];
 
+#undef      ASMWriteBackAndInvalidateCaches
 #pragma aux ASMWriteBackAndInvalidateCaches = \
     ".486" \
@@ -477,4 +555,5 @@
     modify exact [] nomemory;
 
+#undef      ASMInvalidateInternalCaches
 #pragma aux ASMInvalidateInternalCaches = \
     ".486" \
Index: /trunk/include/iprt/asm-amd64-x86.h
===================================================================
--- /trunk/include/iprt/asm-amd64-x86.h	(revision 58748)
+++ /trunk/include/iprt/asm-amd64-x86.h	(revision 58749)
@@ -78,4 +78,13 @@
 
 
+/*
+ * Include #pragma aux definitions for Watcom C/C++.
+ */
+#if defined(__WATCOMC__) && ARCH_BITS == 16
+# include "asm-amd64-x86-watcom-16.h"
+#elif defined(__WATCOMC__) && ARCH_BITS == 32
+# include "asm-amd64-x86-watcom-32.h"
+#endif
+
 
 /** @defgroup grp_rt_asm_amd64_x86  AMD64 and x86 Specific ASM Routines
@@ -3322,13 +3331,4 @@
 #endif /* !_MSC_VER) || !RT_ARCH_AMD64 */
 
-/*
- * Include #pragma aux definitions for Watcom C/C++.
- */
-#if defined(__WATCOMC__) && ARCH_BITS == 16
-# include "asm-amd64-x86-watcom-16.h"
-#elif defined(__WATCOMC__) && ARCH_BITS == 32
-# include "asm-amd64-x86-watcom-32.h"
-#endif
-
 /** @} */
 #endif
Index: /trunk/include/iprt/asm-watcom-x86-16.h
===================================================================
--- /trunk/include/iprt/asm-watcom-x86-16.h	(revision 58748)
+++ /trunk/include/iprt/asm-watcom-x86-16.h	(revision 58749)
@@ -38,6 +38,13 @@
  * seems to insists on loading the DGROUP segment into 'ds' before calling
  * stuff when using -ecc.  Using 'es' instead as this seems to work fine.
+ *
+ * Note! The #undef that preceds the #pragma aux statements is for undoing
+ *       the mangling, because the symbol in #pragma aux [symbol] statements
+ *       doesn't get subjected to preprocessing.  This is also why we include
+ *       the watcom header at the top rather than at the bottom of the
+ *       asm-amd64-x86.h file.
  */
 
+#undef       ASMCompilerBarrier
 #if 0 /* overkill version. */
 # pragma aux ASMCompilerBarrier = \
@@ -52,4 +59,5 @@
 #endif
 
+#undef      ASMNopPause
 #pragma aux ASMNopPause = \
     ".686p" \
@@ -59,4 +67,5 @@
     modify exact [] nomemory;
 
+#undef      ASMAtomicXchgU8
 #pragma aux ASMAtomicXchgU8 = \
     "xchg es:[bx], al" \
@@ -65,4 +74,5 @@
     modify exact [al];
 
+#undef      ASMAtomicXchgU16
 #pragma aux ASMAtomicXchgU16 = \
     "xchg es:[bx], ax" \
@@ -71,4 +81,5 @@
     modify exact [ax];
 
+#undef      ASMAtomicXchgU32
 #pragma aux ASMAtomicXchgU32 = \
     "shl  ecx, 16" \
@@ -81,4 +92,5 @@
     modify exact [ax cx];
 
+#undef      ASMAtomicXchgU64
 #pragma aux ASMAtomicXchgU64 = \
     ".586" \
@@ -101,4 +113,5 @@
     modify exact [dx cx bx ax];
 
+#undef      ASMAtomicCmpXchgU8
 #pragma aux ASMAtomicCmpXchgU8 = \
     ".486" \
@@ -109,4 +122,5 @@
     modify exact [al];
 
+#undef      ASMAtomicCmpXchgU16
 #pragma aux ASMAtomicCmpXchgU16 = \
     ".486" \
@@ -117,4 +131,5 @@
     modify exact [ax];
 
+#undef      ASMAtomicCmpXchgU32
 #pragma aux ASMAtomicCmpXchgU32 = \
     ".486" \
@@ -134,4 +149,5 @@
 /* ASMAtomicCmpXchgExU64: External assembly implementation, too few registers for parameters.  */
 
+#undef      ASMSerializeInstruction
 #pragma aux ASMSerializeInstruction = \
     ".586" \
@@ -141,4 +157,5 @@
     modify exact [ax bx cx dx];
 
+#undef      ASMAtomicReadU64
 #pragma aux ASMAtomicReadU64 = \
     ".586" \
@@ -157,4 +174,5 @@
     modify exact [dx cx bx ax];
 
+#undef      ASMAtomicUoReadU64
 #pragma aux ASMAtomicUoReadU64 = \
     ".586" \
@@ -173,4 +191,5 @@
     modify exact [dx cx bx ax];
 
+#undef      ASMAtomicAddU16
 #pragma aux ASMAtomicAddU16 = \
     ".486" \
@@ -180,4 +199,5 @@
     modify exact [ax];
 
+#undef      ASMAtomicAddU32
 #pragma aux ASMAtomicAddU32 = \
     ".486" \
@@ -191,4 +211,5 @@
     modify exact [ax dx];
 
+#undef      ASMAtomicIncU16
 #pragma aux ASMAtomicIncU16 = \
     ".486" \
@@ -200,4 +221,5 @@
     modify exact [ax];
 
+#undef      ASMAtomicIncU32
 #pragma aux ASMAtomicIncU32 = \
     ".486" \
@@ -213,4 +235,5 @@
 /* ASMAtomicIncU64: Should be done by C inline or in external file. */
 
+#undef      ASMAtomicDecU16
 #pragma aux ASMAtomicDecU16 = \
     ".486" \
@@ -222,4 +245,5 @@
     modify exact [ax];
 
+#undef      ASMAtomicDecU32
 #pragma aux ASMAtomicDecU32 = \
     ".486" \
@@ -235,4 +259,5 @@
 /* ASMAtomicDecU64: Should be done by C inline or in external file. */
 
+#undef      ASMAtomicOrU32
 #pragma aux ASMAtomicOrU32 = \
     "shl edx, 16" \
@@ -244,4 +269,5 @@
 /* ASMAtomicOrU64: Should be done by C inline or in external file. */
 
+#undef      ASMAtomicAndU32
 #pragma aux ASMAtomicAndU32 = \
     "shl edx, 16" \
@@ -253,4 +279,5 @@
 /* ASMAtomicAndU64: Should be done by C inline or in external file. */
 
+#undef      ASMAtomicUoOrU32
 #pragma aux ASMAtomicUoOrU32 = \
     "shl edx, 16" \
@@ -262,4 +289,5 @@
 /* ASMAtomicUoOrU64: Should be done by C inline or in external file. */
 
+#undef      ASMAtomicUoAndU32
 #pragma aux ASMAtomicUoAndU32 = \
     "shl edx, 16" \
@@ -271,4 +299,5 @@
 /* ASMAtomicUoAndU64: Should be done by C inline or in external file. */
 
+#undef      ASMAtomicUoIncU32
 #pragma aux ASMAtomicUoIncU32 = \
     ".486" \
@@ -282,4 +311,5 @@
     modify exact [ax dx];
 
+#undef      ASMAtomicUoDecU32
 #pragma aux ASMAtomicUoDecU32 = \
     ".486" \
@@ -293,4 +323,5 @@
     modify exact [ax dx];
 
+#undef      ASMMemZeroPage
 #pragma aux ASMMemZeroPage = \
     "mov ecx, 1024" \
@@ -300,4 +331,5 @@
     modify exact [ax cx di];
 
+#undef      ASMMemZero32
 #pragma aux ASMMemZero32 = \
     "and ecx, 0ffffh" /* probably not necessary, lazy bird should check... */ \
@@ -308,4 +340,5 @@
     modify exact [ax cx di];
 
+#undef      ASMMemZero32
 #pragma aux ASMMemZero32 = \
     "and ecx, 0ffffh" /* probably not necessary, lazy bird should check... */ \
@@ -318,4 +351,5 @@
     modify exact [ax cx di];
 
+#undef      ASMProbeReadByte
 #pragma aux ASMProbeReadByte = \
     "mov al, es:[bx]" \
@@ -324,4 +358,5 @@
     modify exact [al];
 
+#undef      ASMBitSet
 #pragma aux ASMBitSet = \
     "shl edx, 16" \
@@ -331,4 +366,5 @@
     modify exact [dx];
 
+#undef      ASMAtomicBitSet
 #pragma aux ASMAtomicBitSet = \
     "shl edx, 16" \
@@ -338,4 +374,5 @@
     modify exact [dx];
 
+#undef      ASMBitClear
 #pragma aux ASMBitClear = \
     "shl edx, 16" \
@@ -345,4 +382,5 @@
     modify exact [dx];
 
+#undef      ASMAtomicBitClear
 #pragma aux ASMAtomicBitClear = \
     "shl edx, 16" \
@@ -352,4 +390,5 @@
     modify exact [dx];
 
+#undef      ASMBitToggle
 #pragma aux ASMBitToggle = \
     "shl edx, 16" \
@@ -359,4 +398,5 @@
     modify exact [dx];
 
+#undef      ASMAtomicBitToggle
 #pragma aux ASMAtomicBitToggle = \
     "shl edx, 16" \
@@ -365,6 +405,6 @@
     parm [es bx] [ax dx] \
     modify exact [dx];
-///
-///
+
+#undef      ASMBitTestAndSet
 #pragma aux ASMBitTestAndSet = \
     "shl edx, 16" \
@@ -376,4 +416,5 @@
     modify exact [ax dx];
 
+#undef      ASMAtomicBitTestAndSet
 #pragma aux ASMAtomicBitTestAndSet = \
     "shl edx, 16" \
@@ -385,4 +426,5 @@
     modify exact [ax dx];
 
+#undef      ASMBitTestAndClear
 #pragma aux ASMBitTestAndClear = \
     "shl edx, 16" \
@@ -394,4 +436,5 @@
     modify exact [ax dx];
 
+#undef      ASMAtomicBitTestAndClear
 #pragma aux ASMAtomicBitTestAndClear = \
     "shl edx, 16" \
@@ -403,4 +446,5 @@
     modify exact [ax dx];
 
+#undef      ASMBitTestAndToggle
 #pragma aux ASMBitTestAndToggle = \
     "shl edx, 16" \
@@ -412,4 +456,5 @@
     modify exact [ax dx];
 
+#undef      ASMAtomicBitTestAndToggle
 #pragma aux ASMAtomicBitTestAndToggle = \
     "shl edx, 16" \
@@ -422,4 +467,5 @@
 
 /** @todo this is way to much inline assembly, better off in an external function. */
+#undef      ASMBitFirstClear
 #pragma aux ASMBitFirstClear = \
     "mov bx, di" /* save start of bitmap for later */ \
@@ -449,4 +495,5 @@
 
 /** @todo this is way to much inline assembly, better off in an external function. */
+#undef      ASMBitFirstSet
 #pragma aux ASMBitFirstSet = \
     "mov bx, di" /* save start of bitmap for later */ \
@@ -475,4 +522,5 @@
 /* ASMBitNextSet: Too much work, do when needed. */
 
+#undef      ASMBitFirstSetU32
 #pragma aux ASMBitFirstSetU32 = \
     "shl edx, 16" \
@@ -489,4 +537,5 @@
     modify exact [ax dx] nomemory;
 
+#undef      ASMBitLastSetU32
 #pragma aux ASMBitLastSetU32 = \
     "shl edx, 16" \
@@ -503,4 +552,5 @@
     modify exact [ax dx] nomemory;
 
+#undef      ASMByteSwapU16
 #pragma aux ASMByteSwapU16 = \
     "ror ax, 8" \
@@ -509,4 +559,5 @@
     modify exact [ax] nomemory;
 
+#undef      ASMByteSwapU32
 #pragma aux ASMByteSwapU32 = \
     "xchg ax, dx" \
@@ -515,4 +566,5 @@
     modify exact [ax dx] nomemory;
 
+#undef      ASMRotateLeftU32
 #pragma aux ASMRotateLeftU32 = \
     "shl    edx, 16" \
@@ -525,4 +577,5 @@
     modify exact [ax dx] nomemory;
 
+#undef      ASMRotateRightU32
 #pragma aux ASMRotateRightU32 = \
     "shl    edx, 16" \
Index: /trunk/include/iprt/asm-watcom-x86-32.h
===================================================================
--- /trunk/include/iprt/asm-watcom-x86-32.h	(revision 58748)
+++ /trunk/include/iprt/asm-watcom-x86-32.h	(revision 58749)
@@ -35,9 +35,12 @@
 
 /*
- * Turns out we cannot use 'ds' for segment stuff here because the compiler
- * seems to insists on loading the DGROUP segment into 'ds' before calling
- * stuff when using -ecc.  Using 'es' instead as this seems to work fine.
+ * Note! The #undef that preceds the #pragma aux statements is for undoing
+ *       the mangling, because the symbol in #pragma aux [symbol] statements
+ *       doesn't get subjected to preprocessing.  This is also why we include
+ *       the watcom header at the top rather than at the bottom of the
+ *       asm-amd64-x86.h file.
  */
 
+#undef       ASMCompilerBarrier
 #if 0 /* overkill version. */
 # pragma aux ASMCompilerBarrier = \
@@ -52,4 +55,5 @@
 #endif
 
+#undef      ASMNopPause
 #pragma aux ASMNopPause = \
     ".686p" \
@@ -59,4 +63,5 @@
     modify exact [] nomemory;
 
+#undef      ASMAtomicXchgU8
 #pragma aux ASMAtomicXchgU8 = \
     "xchg [ecx], al" \
@@ -65,4 +70,5 @@
     modify exact [al];
 
+#undef      ASMAtomicXchgU16
 #pragma aux ASMAtomicXchgU16 = \
     "xchg [ecx], ax" \
@@ -71,4 +77,5 @@
     modify exact [ax];
 
+#undef      ASMAtomicXchgU32
 #pragma aux ASMAtomicXchgU32 = \
     "xchg [ecx], eax" \
@@ -77,4 +84,5 @@
     modify exact [eax];
 
+#undef      ASMAtomicXchgU64
 #pragma aux ASMAtomicXchgU64 = \
     ".586" \
@@ -86,4 +94,5 @@
     modify exact [edx ecx ebx eax];
 
+#undef      ASMAtomicCmpXchgU8
 #pragma aux ASMAtomicCmpXchgU8 = \
     ".486" \
@@ -94,4 +103,5 @@
     modify exact [al];
 
+#undef      ASMAtomicCmpXchgU16
 #pragma aux ASMAtomicCmpXchgU16 = \
     ".486" \
@@ -102,4 +112,5 @@
     modify exact [ax];
 
+#undef      ASMAtomicCmpXchgU32
 #pragma aux ASMAtomicCmpXchgU32 = \
     ".486" \
@@ -110,4 +121,5 @@
     modify exact [eax];
 
+#undef      ASMAtomicCmpXchgU64
 #pragma aux ASMAtomicCmpXchgU64 = \
     ".586" \
@@ -118,4 +130,5 @@
     modify exact [eax edx];
 
+#undef      ASMAtomicCmpXchgExU32
 #pragma aux ASMAtomicCmpXchgExU32 = \
     ".586" \
@@ -127,4 +140,5 @@
     modify exact [eax];
 
+#undef      ASMAtomicCmpXchgExU64
 #pragma aux ASMAtomicCmpXchgExU64 = \
     ".586" \
@@ -137,4 +151,5 @@
     modify exact [eax edx];
 
+#undef      ASMSerializeInstruction
 #pragma aux ASMSerializeInstruction = \
     ".586" \
@@ -144,4 +159,5 @@
     modify exact [eax ebx ecx edx];
 
+#undef      ASMAtomicReadU64
 #pragma aux ASMAtomicReadU64 = \
     ".586" \
@@ -155,4 +171,5 @@
     modify exact [eax ebx ecx edx];
 
+#undef      ASMAtomicUoReadU64
 #pragma aux ASMAtomicUoReadU64 = \
     ".586" \
@@ -166,4 +183,5 @@
     modify exact [eax ebx ecx edx];
 
+#undef      ASMAtomicAddU16
 #pragma aux ASMAtomicAddU16 = \
     ".486" \
@@ -173,4 +191,5 @@
     modify exact [ax];
 
+#undef      ASMAtomicAddU32
 #pragma aux ASMAtomicAddU32 = \
     ".486" \
@@ -180,4 +199,5 @@
     modify exact [eax];
 
+#undef      ASMAtomicIncU16
 #pragma aux ASMAtomicIncU16 = \
     ".486" \
@@ -189,4 +209,5 @@
     modify exact [ax];
 
+#undef      ASMAtomicIncU32
 #pragma aux ASMAtomicIncU32 = \
     ".486" \
@@ -200,4 +221,5 @@
 /* ASMAtomicIncU64: Should be done by C inline or in external file. */
 
+#undef      ASMAtomicDecU16
 #pragma aux ASMAtomicDecU16 = \
     ".486" \
@@ -209,4 +231,5 @@
     modify exact [ax];
 
+#undef      ASMAtomicDecU32
 #pragma aux ASMAtomicDecU32 = \
     ".486" \
@@ -220,4 +243,5 @@
 /* ASMAtomicDecU64: Should be done by C inline or in external file. */
 
+#undef      ASMAtomicOrU32
 #pragma aux ASMAtomicOrU32 = \
     "lock or [ecx], eax" \
@@ -227,4 +251,5 @@
 /* ASMAtomicOrU64: Should be done by C inline or in external file. */
 
+#undef      ASMAtomicAndU32
 #pragma aux ASMAtomicAndU32 = \
     "lock and [ecx], eax" \
@@ -234,4 +259,5 @@
 /* ASMAtomicAndU64: Should be done by C inline or in external file. */
 
+#undef      ASMAtomicUoOrU32
 #pragma aux ASMAtomicUoOrU32 = \
     "or [ecx], eax" \
@@ -241,4 +267,5 @@
 /* ASMAtomicUoOrU64: Should be done by C inline or in external file. */
 
+#undef      ASMAtomicUoAndU32
 #pragma aux ASMAtomicUoAndU32 = \
     "and [ecx], eax" \
@@ -248,4 +275,5 @@
 /* ASMAtomicUoAndU64: Should be done by C inline or in external file. */
 
+#undef      ASMAtomicUoIncU32
 #pragma aux ASMAtomicUoIncU32 = \
     ".486" \
@@ -256,4 +284,5 @@
     modify exact [eax];
 
+#undef      ASMAtomicUoDecU32
 #pragma aux ASMAtomicUoDecU32 = \
     ".486" \
@@ -265,4 +294,5 @@
     modify exact [eax];
 
+#undef      ASMMemZeroPage
 #pragma aux ASMMemZeroPage = \
     "mov ecx, 1024" \
@@ -272,4 +302,5 @@
     modify exact [eax ecx edi];
 
+#undef      ASMMemZero32
 #pragma aux ASMMemZero32 = \
     "shr ecx, 2" \
@@ -279,4 +310,5 @@
     modify exact [eax ecx edi];
 
+#undef      ASMMemZero32
 #pragma aux ASMMemZero32 = \
     "shr ecx, 2" \
@@ -285,4 +317,5 @@
     modify exact [ecx edi];
 
+#undef      ASMProbeReadByte
 #pragma aux ASMProbeReadByte = \
     "mov al, [ecx]" \
@@ -291,4 +324,5 @@
     modify exact [al];
 
+#undef      ASMBitSet
 #pragma aux ASMBitSet = \
     "bts [ecx], eax" \
@@ -296,4 +330,5 @@
     modify exact [];
 
+#undef      ASMAtomicBitSet
 #pragma aux ASMAtomicBitSet = \
     "lock bts [ecx], eax" \
@@ -301,4 +336,5 @@
     modify exact [];
 
+#undef      ASMBitClear
 #pragma aux ASMBitClear = \
     "btr [ecx], eax" \
@@ -306,4 +342,5 @@
     modify exact [];
 
+#undef      ASMAtomicBitClear
 #pragma aux ASMAtomicBitClear = \
     "lock btr [ecx], eax" \
@@ -311,4 +348,5 @@
     modify exact [];
 
+#undef      ASMBitToggle
 #pragma aux ASMBitToggle = \
     "btc [ecx], eax" \
@@ -316,4 +354,5 @@
     modify exact [];
 
+#undef      ASMAtomicBitToggle
 #pragma aux ASMAtomicBitToggle = \
     "lock btc [ecx], eax" \
@@ -322,4 +361,5 @@
 
 
+#undef      ASMBitTestAndSet
 #pragma aux ASMBitTestAndSet = \
     "bts [ecx], eax" \
@@ -329,4 +369,5 @@
     modify exact [eax];
 
+#undef      ASMAtomicBitTestAndSet
 #pragma aux ASMAtomicBitTestAndSet = \
     "lock bts [ecx], eax" \
@@ -336,4 +377,5 @@
     modify exact [eax];
 
+#undef      ASMBitTestAndClear
 #pragma aux ASMBitTestAndClear = \
     "btr [ecx], eax" \
@@ -343,4 +385,5 @@
     modify exact [eax];
 
+#undef      ASMAtomicBitTestAndClear
 #pragma aux ASMAtomicBitTestAndClear = \
     "lock btr [ecx], eax" \
@@ -350,4 +393,5 @@
     modify exact [eax];
 
+#undef      ASMBitTestAndToggle
 #pragma aux ASMBitTestAndToggle = \
     "btc [ecx], eax" \
@@ -357,4 +401,5 @@
     modify exact [eax];
 
+#undef      ASMAtomicBitTestAndToggle
 #pragma aux ASMAtomicBitTestAndToggle = \
     "lock btc [ecx], eax" \
@@ -365,4 +410,5 @@
 
 /** @todo this is way to much inline assembly, better off in an external function. */
+#undef      ASMBitFirstClear
 #pragma aux ASMBitFirstClear = \
     "mov edx, edi" /* save start of bitmap for later */ \
@@ -387,4 +433,5 @@
 
 /** @todo this is way to much inline assembly, better off in an external function. */
+#undef      ASMBitFirstSet
 #pragma aux ASMBitFirstSet = \
     "mov edx, edi" /* save start of bitmap for later */ \
@@ -408,4 +455,5 @@
 /* ASMBitNextSet: Too much work, do when needed. */
 
+#undef      ASMBitFirstSetU32
 #pragma aux ASMBitFirstSetU32 = \
     "bsf eax, eax" \
@@ -420,4 +468,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMBitLastSetU32
 #pragma aux ASMBitLastSetU32 = \
     "bsr eax, eax" \
@@ -432,4 +481,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMByteSwapU16
 #pragma aux ASMByteSwapU16 = \
     "ror ax, 8" \
@@ -438,4 +488,5 @@
     modify exact [ax] nomemory;
 
+#undef      ASMByteSwapU32
 #pragma aux ASMByteSwapU32 = \
     "bswap eax" \
@@ -444,4 +495,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMRotateLeftU32
 #pragma aux ASMRotateLeftU32 = \
     "rol    eax, cl" \
@@ -450,4 +502,5 @@
     modify exact [eax] nomemory;
 
+#undef      ASMRotateRightU32
 #pragma aux ASMRotateRightU32 = \
     "ror    eax, cl" \
Index: /trunk/include/iprt/asm.h
===================================================================
--- /trunk/include/iprt/asm.h	(revision 58748)
+++ /trunk/include/iprt/asm.h	(revision 58749)
@@ -82,4 +82,14 @@
 #endif
 
+/*
+ * Include #pragma aux definitions for Watcom C/C++.
+ */
+#if defined(__WATCOMC__) && ARCH_BITS == 16 && defined(RT_ARCH_X86)
+# include "asm-watcom-x86-16.h"
+#elif defined(__WATCOMC__) && ARCH_BITS == 32 && defined(RT_ARCH_X86)
+# include "asm-watcom-x86-32.h"
+#endif
+
+
 
 /** @defgroup grp_rt_asm    ASM - Assembly Routines
@@ -5109,14 +5119,4 @@
 
 
-/*
- * Include #pragma aux definitions for Watcom C/C++.
- */
-#if defined(__WATCOMC__) && ARCH_BITS == 16 && defined(RT_ARCH_X86)
-# include "asm-watcom-x86-16.h"
-#elif defined(__WATCOMC__) && ARCH_BITS == 32 && defined(RT_ARCH_X86)
-# include "asm-watcom-x86-32.h"
-#endif
-
-
 /** @} */
 
