vdso code needs to be all inlined because the vdso runs in ring 3 and cannot
access other kernel code.
It was opencoded it to have more control over the code (vdso requirements
are a bit peculiar).
vdso effectively only supports TSC and HPET (the other clock sources are not accessible
from ring 3)
TSC doesn't need a mask, but many HPETs need a 32bit mask; good point.
Does adding the mask to vgetns make the clock problems go away?