diff --git a/winsup/mingw/ChangeLog b/winsup/mingw/ChangeLog
index 732471f6b..f4bc63f59 100644
--- a/winsup/mingw/ChangeLog
+++ b/winsup/mingw/ChangeLog
@@ -1,3 +1,18 @@
+2007-11-26  Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
+
+	* Makefile.in: Add libmsvcr90.a and libmsvcr90d.a targets.
+	* msvcrt.def.in: Add support for __msvcr90__ and __msvcr90d__ defines.
+	* mingwex/math/log10f.S: Correct issue with comments.
+	* mingwex/math/log10l.S: Ditto.
+	* mingwex/math/log1p.S: Ditto.
+	* mingwex/math/log1pf.S: Ditto.
+	* mingwex/math/log1pl.S: Ditto.
+	* mingwex/math/log2.S: Ditto.
+	* mingwex/math/log2f.S: Ditto.
+	* mingwex/math/log2l.S: Ditto.
+	* mingwex/math/logf.S: Ditto.
+	* mingwex/math/logl.S: Ditto.
+
 2007-10-03  Danny Smith  <dannysmith@users.sourceforge.net>
 
 	* mingwex/gdtoa/mingw_snprintf.c: fixed warning during compile.
diff --git a/winsup/mingw/Makefile.in b/winsup/mingw/Makefile.in
index 60ecbb564..51c3336d5 100644
--- a/winsup/mingw/Makefile.in
+++ b/winsup/mingw/Makefile.in
@@ -184,6 +184,7 @@ LIBS = libcrtdll.a \
        libmsvcr70.a libmsvcr70d.a \
        libmsvcr71.a libmsvcr71d.a \
        libmsvcr80.a libmsvcr80d.a \
+       libmsvcr90.a libmsvcr90d.a \
        libmingw32.a \
        libcoldname.a \
        libmoldname.a libmoldnamed.a \
@@ -273,6 +274,7 @@ msvcrt.def msvcrtd.def \
 msvcr70.def msvcr70d.def \
 msvcr71.def msvcr71d.def \
 msvcr80.def msvcr80d.def \
+msvcr90.def msvcr90d.def \
 : msvcrt.def.in
 	$(CC) -DRUNTIME=$(basename $(notdir $@)) \
 		-D__$(basename $(notdir $@))__=1 \
diff --git a/winsup/mingw/mingwex/math/log10f.S b/winsup/mingw/mingwex/math/log10f.S
index 90fc9af92..64838143a 100644
--- a/winsup/mingw/mingwex/math/log10f.S
+++ b/winsup/mingw/mingwex/math/log10f.S
@@ -20,29 +20,29 @@ limit:	.double 0.29
 .globl _log10f
 	.def	_log10f;	.scl	2;	.type	32;	.endef
 _log10f:
-	fldlg2			// log10(2)
-	flds	4(%esp)		// x : log10(2)
+	fldlg2			/* log10(2) */
+	flds	4(%esp)		/* x : log10(2) */
 	fxam
 	fnstsw
-	fld	%st		// x : x : log10(2)
+	fld	%st		/* x : x : log10(2) */
 	sahf
-	jc	3f		// in case x is NaN or �Inf
-4:	fsubl	one		// x-1 : x : log10(2)
-	fld	%st		// x-1 : x-1 : x : log10(2)
-	fabs			// |x-1| : x-1 : x : log10(2)
-	fcompl	limit		// x-1 : x : log10(2)
-	fnstsw			// x-1 : x : log10(2)
+	jc	3f		/* in case x is NaN or �Inf */
+4:	fsubl	one		/* x-1 : x : log10(2) */
+	fld	%st		/* x-1 : x-1 : x : log10(2) */
+	fabs			/* |x-1| : x-1 : x : log10(2) */
+	fcompl	limit		/* x-1 : x : log10(2) */
+	fnstsw			/* x-1 : x : log10(2) */
 	andb	$0x45, %ah
 	jz	2f
-	fstp	%st(1)		// x-1 : log10(2)
-	fyl2xp1			// log10(x)
+	fstp	%st(1)		/* x-1 : log10(2) */
+	fyl2xp1			/* log10(x) */
 	ret
 
-2:	fstp	%st(0)		// x : log10(2)
-	fyl2x			// log10(x)
+2:	fstp	%st(0)		/* x : log10(2) */
+	fyl2x			/* log10(x) */
 	ret
 
-3:	jp	4b		// in case x is �Inf
+3:	jp	4b		/* in case x is �Inf */
 	fstp	%st(1)
 	fstp	%st(1)
 	ret
diff --git a/winsup/mingw/mingwex/math/log10l.S b/winsup/mingw/mingwex/math/log10l.S
index 8c046a09d..46f6b980c 100644
--- a/winsup/mingw/mingwex/math/log10l.S
+++ b/winsup/mingw/mingwex/math/log10l.S
@@ -24,29 +24,29 @@ limit:	.double 0.29
 .globl _log10l
 	.def	_log10l;	.scl	2;	.type	32;	.endef
 _log10l:
-	fldlg2			// log10(2)
-	fldt	4(%esp)		// x : log10(2)
+	fldlg2			/* log10(2) */
+	fldt	4(%esp)		/* x : log10(2) */
 	fxam
 	fnstsw
-	fld	%st		// x : x : log10(2)
+	fld	%st		/* x : x : log10(2) */
 	sahf
-	jc	3f		// in case x is NaN or �Inf
-4:	fsubl	one		// x-1 : x : log10(2)
-	fld	%st		// x-1 : x-1 : x : log10(2)
-	fabs			// |x-1| : x-1 : x : log10(2)
-	fcompl	limit		// x-1 : x : log10(2)
-	fnstsw			// x-1 : x : log10(2)
+	jc	3f		/* in case x is NaN or �Inf */
+4:	fsubl	one		/* x-1 : x : log10(2) */
+	fld	%st		/* x-1 : x-1 : x : log10(2) */
+	fabs			/* |x-1| : x-1 : x : log10(2) */
+	fcompl	limit		/* x-1 : x : log10(2) */
+	fnstsw			/* x-1 : x : log10(2) */
 	andb	$0x45, %ah
 	jz	2f
-	fstp	%st(1)		// x-1 : log10(2)
-	fyl2xp1			// log10(x)
+	fstp	%st(1)		/* x-1 : log10(2) */
+	fyl2xp1			/* log10(x) */
 	ret
 
-2:	fstp	%st(0)		// x : log10(2)
-	fyl2x			// log10(x)
+2:	fstp	%st(0)		/* x : log10(2) */
+	fyl2x			/* log10(x) */
 	ret
 
-3:	jp	4b		// in case x is �Inf
+3:	jp	4b		/* in case x is �Inf */
 	fstp	%st(1)
 	fstp	%st(1)
 	ret
diff --git a/winsup/mingw/mingwex/math/log1p.S b/winsup/mingw/mingwex/math/log1p.S
index a38816cb3..12e223c8c 100644
--- a/winsup/mingw/mingwex/math/log1p.S
+++ b/winsup/mingw/mingwex/math/log1p.S
@@ -27,7 +27,7 @@ _log1p:
 	fnstsw
 	fld	%st
 	sahf
-	jc	3f	// in case x is NaN or �Inf
+	jc	3f	/* in case x is NaN or �Inf */
 
 4:	fabs
 	fcompl	limit
@@ -41,7 +41,7 @@ _log1p:
 2:	fyl2xp1
 	ret
 
-3:	jp	4b	// in case x is �Inf
+3:	jp	4b	/* in case x is �Inf */
 	fstp	%st(1)
 	fstp	%st(1)
 	ret
diff --git a/winsup/mingw/mingwex/math/log1pf.S b/winsup/mingw/mingwex/math/log1pf.S
index 1d9949f2a..b5b1acb7e 100644
--- a/winsup/mingw/mingwex/math/log1pf.S
+++ b/winsup/mingw/mingwex/math/log1pf.S
@@ -27,7 +27,7 @@ _log1pf:
 	fnstsw
 	fld	%st
 	sahf
-	jc	3f		// in case x is NaN or �Inf
+	jc	3f		/* in case x is NaN or �Inf */
 
 4:	fabs
 	fcomps	limit
@@ -41,7 +41,7 @@ _log1pf:
 2:	fyl2xp1
 	ret
 
-3:	jp	4b		// in case x is �Inf
+3:	jp	4b		/* in case x is �Inf */
 	fstp	%st(1)
 	fstp	%st(1)
 	ret
diff --git a/winsup/mingw/mingwex/math/log1pl.S b/winsup/mingw/mingwex/math/log1pl.S
index 5ce4fbaaa..158d8ae58 100644
--- a/winsup/mingw/mingwex/math/log1pl.S
+++ b/winsup/mingw/mingwex/math/log1pl.S
@@ -33,7 +33,7 @@ _log1pl:
 	fnstsw
 	fld	%st
 	sahf
-	jc	3f		// in case x is NaN or �Inf
+	jc	3f		/* in case x is NaN or �Inf */
 4:
 	fabs
 	fldt	limit
@@ -48,7 +48,7 @@ _log1pl:
 2:	fyl2xp1
 	ret
 
-3:	jp	4b		// in case x is �Inf
+3:	jp	4b		/* in case x is �Inf */
 	fstp	%st(1)
 	fstp	%st(1)
 	ret
diff --git a/winsup/mingw/mingwex/math/log2.S b/winsup/mingw/mingwex/math/log2.S
index 08f008310..68e7fc7f5 100644
--- a/winsup/mingw/mingwex/math/log2.S
+++ b/winsup/mingw/mingwex/math/log2.S
@@ -24,28 +24,28 @@ limit:	.double 0.29
 	.def	_log2;	.scl	2;	.type	32;	.endef
 _log2:
 	fldl	one
-	fldl	4(%esp)		// x : 1
+	fldl	4(%esp)		/* x : 1 */
 	fxam
 	fnstsw
-	fld	%st		// x : x : 1
+	fld	%st		/* x : x : 1 */
 	sahf
-	jc	3f		// in case x is NaN or �Inf
-4:	fsub	%st(2), %st	// x-1 : x : 1
-	fld	%st		// x-1 : x-1 : x : 1
-	fabs			// |x-1| : x-1 : x : 1
-	fcompl	limit		// x-1 : x : 1
-	fnstsw			// x-1 : x : 1
+	jc	3f		/* in case x is NaN or �Inf */
+4:	fsub	%st(2), %st	/* x-1 : x : 1 */
+	fld	%st		/* x-1 : x-1 : x : 1 */
+	fabs			/* |x-1| : x-1 : x : 1 */
+	fcompl	limit		/* x-1 : x : 1 */
+	fnstsw			/* x-1 : x : 1 */
 	andb	$0x45, %ah
 	jz	2f
-	fstp	%st(1)		// x-1 : 1
-	fyl2xp1			// log(x)
+	fstp	%st(1)		/* x-1 : 1 */
+	fyl2xp1			/* log(x) */
 	ret
 
-2:	fstp	%st(0)		// x : 1
-	fyl2x			// log(x)
+2:	fstp	%st(0)		/* x : 1 */
+	fyl2x			/* log(x) */
 	ret
 
-3:	jp	4b		// in case x is �Inf
+3:	jp	4b		/* in case x is �Inf */
 	fstp	%st(1)
 	fstp	%st(1)
 	ret
diff --git a/winsup/mingw/mingwex/math/log2f.S b/winsup/mingw/mingwex/math/log2f.S
index 211abba3d..900e26ded 100644
--- a/winsup/mingw/mingwex/math/log2f.S
+++ b/winsup/mingw/mingwex/math/log2f.S
@@ -24,28 +24,28 @@ limit:	.double 0.29
 	.def	_log2f;	.scl	2;	.type	32;	.endef
 _log2f:
 	fldl	one
-	flds	4(%esp)		// x : 1
+	flds	4(%esp)		/* x : 1 */
 	fxam
 	fnstsw
-	fld	%st		// x : x : 1
+	fld	%st		/* x : x : 1 */
 	sahf
-	jc	3f		// in case x is NaN or �Inf
-4:	fsub	%st(2), %st	// x-1 : x : 1
-	fld	%st		// x-1 : x-1 : x : 1
-	fabs			// |x-1| : x-1 : x : 1
-	fcompl	limit		// x-1 : x : 1
-	fnstsw			// x-1 : x : 1
+	jc	3f		/* in case x is NaN or �Inf */
+4:	fsub	%st(2), %st	/* x-1 : x : 1 */
+	fld	%st		/* x-1 : x-1 : x : 1 */
+	fabs			/* |x-1| : x-1 : x : 1 */
+	fcompl	limit		/* x-1 : x : 1 */
+	fnstsw			/* x-1 : x : 1 */
 	andb	$0x45, %ah
 	jz	2f
-	fstp	%st(1)		// x-1 : 1
-	fyl2xp1			// log(x)
+	fstp	%st(1)		/* x-1 : 1 */
+	fyl2xp1			/* log(x) */
 	ret
 
-2:	fstp	%st(0)		// x : 1
-	fyl2x			// log(x)
+2:	fstp	%st(0)		/* x : 1 */
+	fyl2x			/* log(x) */
 	ret
 
-3:	jp	4b		// in case x is �Inf
+3:	jp	4b		/* in case x is �Inf */
 	fstp	%st(1)
 	fstp	%st(1)
 	ret
diff --git a/winsup/mingw/mingwex/math/log2l.S b/winsup/mingw/mingwex/math/log2l.S
index 52503fc52..0ad56966e 100644
--- a/winsup/mingw/mingwex/math/log2l.S
+++ b/winsup/mingw/mingwex/math/log2l.S
@@ -21,28 +21,28 @@ limit:	.double 0.29
 	.def	_log2l;	.scl	2;	.type	32;	.endef
 _log2l:
 	fldl	one
-	fldt	4(%esp)		// x : 1
+	fldt	4(%esp)		/* x : 1 */
 	fxam
 	fnstsw
-	fld	%st		// x : x : 1
+	fld	%st		/* x : x : 1 */
 	sahf
-	jc	3f		// in case x is NaN or �Inf
-4:	fsub	%st(2), %st	// x-1 : x : 1
-	fld	%st		// x-1 : x-1 : x : 1
-	fabs			// |x-1| : x-1 : x : 1
-	fcompl	limit		// x-1 : x : 1
-	fnstsw			// x-1 : x : 1
+	jc	3f		/* in case x is NaN or �Inf */
+4:	fsub	%st(2), %st	/* x-1 : x : 1 */
+	fld	%st		/* x-1 : x-1 : x : 1 */
+	fabs			/* |x-1| : x-1 : x : 1 */
+	fcompl	limit		/* x-1 : x : 1 */
+	fnstsw			/* x-1 : x : 1 */
 	andb	$0x45, %ah
 	jz	2f
-	fstp	%st(1)		// x-1 : 1
-	fyl2xp1			// log(x)
+	fstp	%st(1)		/* x-1 : 1 */
+	fyl2xp1			/* log(x) */
 	ret
 
-2:	fstp	%st(0)		// x : 1
-	fyl2x			// log(x)
+2:	fstp	%st(0)		/* x : 1 */
+	fyl2x			/* log(x) */
 	ret
 
-3:	jp	4b		// in case x is �Inf
+3:	jp	4b		/* in case x is �Inf */
 	fstp	%st(1)
 	fstp	%st(1)
 	ret
diff --git a/winsup/mingw/mingwex/math/logf.S b/winsup/mingw/mingwex/math/logf.S
index 32119ecde..d59fe580d 100644
--- a/winsup/mingw/mingwex/math/logf.S
+++ b/winsup/mingw/mingwex/math/logf.S
@@ -20,20 +20,20 @@ limit:	.double 0.29
 .globl _logf
 	.def	_logf;	.scl	2;	.type	32;	.endef
 _logf:
-	fldln2			// log(2)
-	flds	4(%esp)		// x : log(2)
-	fld	%st		// x : x : log(2)
-	fsubl	one		// x-1 : x : log(2)
-	fld	%st		// x-1 : x-1 : x : log(2)
-	fabs			// |x-1| : x-1 : x : log(2)
-	fcompl	limit		// x-1 : x : log(2)
-	fnstsw			// x-1 : x : log(2)
+	fldln2			/* log(2) */
+	flds	4(%esp)		/* x : log(2) */
+	fld	%st		/* x : x : log(2) */
+	fsubl	one		/* x-1 : x : log(2) */
+	fld	%st		/* x-1 : x-1 : x : log(2) */
+	fabs			/* |x-1| : x-1 : x : log(2) */
+	fcompl	limit		/* x-1 : x : log(2) */
+	fnstsw			/* x-1 : x : log(2) */
 	andb	$0x45, %ah
 	jz	2f
-	fstp	%st(1)		// x-1 : log(2)
-	fyl2xp1			// log(x)
+	fstp	%st(1)		/* x-1 : log(2) */
+	fyl2xp1			/* log(x) */
 	ret
 
-2:	fstp	%st(0)		// x : log(2)
-	fyl2x			// log(x)
+2:	fstp	%st(0)		/* x : log(2) */
+	fyl2x			/* log(x) */
 	ret
diff --git a/winsup/mingw/mingwex/math/logl.S b/winsup/mingw/mingwex/math/logl.S
index 8dc144915..75a282fea 100644
--- a/winsup/mingw/mingwex/math/logl.S
+++ b/winsup/mingw/mingwex/math/logl.S
@@ -21,20 +21,20 @@ limit:	.double 0.29
 .globl _logl
 	.def	_logl;	.scl	2;	.type	32;	.endef
 _logl:
-	fldln2			// log(2)
-	fldt	4(%esp)		// x : log(2)
-	fld	%st		// x : x : log(2)
-	fsubl	one		// x-1 : x : log(2)
-	fld	%st		// x-1 : x-1 : x : log(2)
-	fabs			// |x-1| : x-1 : x : log(2)
-	fcompl	limit		// x-1 : x : log(2)
-	fnstsw			// x-1 : x : log(2)
+	fldln2			/* log(2) */
+	fldt	4(%esp)		/* x : log(2) */
+	fld	%st		/* x : x : log(2) */
+	fsubl	one		/* x-1 : x : log(2) */
+	fld	%st		/* x-1 : x-1 : x : log(2) */
+	fabs			/* |x-1| : x-1 : x : log(2) */
+	fcompl	limit		/* x-1 : x : log(2) */
+	fnstsw			/* x-1 : x : log(2) */
 	andb	$0x45, %ah
 	jz	2f
-	fstp	%st(1)		// x-1 : log(2)
-	fyl2xp1			// log(x)
+	fstp	%st(1)		/* x-1 : log(2) */
+	fyl2xp1			/* log(x) */
 	ret
 
-2:	fstp	%st(0)		// x : log(2)
-	fyl2x			// log(x)
+2:	fstp	%st(0)		/* x : log(2) */
+	fyl2x			/* log(x) */
 	ret
diff --git a/winsup/mingw/msvcrt.def.in b/winsup/mingw/msvcrt.def.in
index edac44534..f541dfae1 100644
--- a/winsup/mingw/msvcrt.def.in
+++ b/winsup/mingw/msvcrt.def.in
@@ -5,7 +5,7 @@
 ;* This file is a part of the mingw-runtime package.
 ;* No warranty is given; refer to the file DISCLAIMER within the package.
 ;
-; Exports from msvcrt.dll, msvcr70.dll, msvcr71.dll and msvcr80.dll
+; Exports from msvcrt.dll, msvcr70.dll, msvcr71.dll, msvcr80.dll and msvcr90.dll
 ;
 ; NOTE: All exports, except for what appeared to be C++ mangled names,
 ;       are included. Not all functions have prototypes in the headers
@@ -148,7 +148,7 @@ _cprintf
 _cputs
 _creat
 _cscanf
-#if  !(__msvcr71__ || __msvcr71d__ || __msvcr80__ || __msvcr80d__)
+#if  !(__msvcr71__ || __msvcr71d__ || __msvcr80__ || __msvcr80d__ || __msvcr90__ || msvcr90d__)
 _ctype DATA
 #endif
 _cwait
@@ -743,7 +743,7 @@ _wfindfirst64
 _wfindnext64
 _wstat64
 _wutime64
-#if ( __msvcr70__ || __msvcr70d__ ||  __msvcr71__ || __msvcr71d__ || __msvcr80__ || __msvcr80d__)
+#if ( __msvcr70__ || __msvcr70d__ ||  __msvcr71__ || __msvcr71d__ || __msvcr80__ || __msvcr80d__ || __msvcr90__ || __msvcr90d__)
 ; msvcr70.dll amd later
 __buffer_overrun
 __CxxDetectRethrow
@@ -787,7 +787,7 @@ _wcstoui64
 _wctype
 _wtof
 #endif  /* 7.0 */
-#if  (__msvcr71__ || __msvcr71d__ || __msvcr80__ || __msvcr80d__)
+#if  (__msvcr71__ || __msvcr71d__ || __msvcr80__ || __msvcr80d__ || __msvcr90__ || __msvcr90d__)
 ; msvcr71.dll
 ___lc_codepage_func
 ___lc_collate_cp_func
@@ -808,7 +808,7 @@ _get_heap_handle
 _set_purecall_handler
 _set_SSE2_enable
 #endif /* 7.1  */
-#if ( __msvcr80__ || __msvcr80d__)
+#if ( __msvcr80__ || __msvcr80d__ || __msvcr90__ || __msvcr90d__)
 ; msvcr80.dll
 _get_printf_count_output
 _set_printf_count_output