Microsoft Takes $1 Billion Charge for Warranty