Oil prices held around four-year highs while stocks fell after Donald Trump warned the US blockade of Iranian ports could last months as peace talks remained stalled.

Brent for June delivery, which hit a peak of $122.53 a day earlier, was sitting around $120 in Asian trade, while West Texas Intermediate was around $108.

Analysts said traders were beginning to shift to the view that the crisis will not be as short as initially hoped.