This paper proposes a new algorithm for solving convex quadratic programs (QP) subject to linear inequality and equality constraints. The method extends an approach recently proposed by the author for solving strictly convex QP's using nonnegative least squares, by making it numerically more robust and able to handle also the nonstrictly convex case, equality constraints, and warm starting from an initial guess. Robustness is achieved by introducing an outer proximal-point iteration scheme that regularizes the problem without altering the solution, and by adaptively weighting the least squares problems encountered while solving the problem. The performance of the resulting QP solver in terms of speed and robustness in the single precision arithmetic is assessed against other optimization algorithms tailored to embedded model predictive control applications.