Swiss voters have voted in favour of a deal extending the right of European Union citizens to live and work in Switzerland, despite fears of immigrant labour and job losses in the deepening recession.

Official results showed 59.6% of voters backed the deal, renewing an existing agreement allowing migrant workers into Switzerland and extending it to new EU members Bulgaria and Romania.

Swiss workers also have access to EU countries.

The Swiss vote contrasts with an upsurge in protectionist sentiment in other European countries, with workers in Britain striking last week over a decision to bring in Italian and Portuguese workers to work on an oil refinery, and strikes in France to demand pay rises and job protection.

Some 21% of Switzerland's 7.6 million residents are foreign nationals.