I am suspicious of ‘Hardware Abstraction Layers’. My experience with them as I ported Keykos was that they hid features that ended up making the higher level code either less efficient or more complicated. In my experience “simpler” always dominates “uniform”.
The uscratch register is useful only if it is faster than going to memory. The 88K had four such and we used two to advantage. I presume that you can read and write it and there are no hardware ramifications. One use was to save the first register upon an interrupt. Another use was to locate the save area. An exchange instruction would reduce our requirement to one register. “uscratch” should be defined somewhere in the document. I guess it comes under αscratch for α∈{u, s, m}.
Page 22 of volume I has a satisfactory description of satisfactory instructions.
See reference to “CSR instruction” which are defined in Vol I.
I choke up when I deduce that the register is readable and writeable in user code.
I wonder about architects who worry about adding features to make their architecture virtualizable. Seldom addressed is the question as to whether the virtual machines are also to have the feature. What advantages do they aspire to beyond the 360 model 67, or later 370’s? It is noteworthy that CP/67 hardware was designed and produced by people who had not heard of virtualization! IBM added features to improve performance for VM/370 and early light hacks to achieve that seemed to be a good idea. Their later “Start Interpretive Execution” (SIE) was not a notable success as far as I know. It was, in effect, an attempt to move most of the control program into proprietary microcode. As architects improve the machine for virtualizability they usually make the control program more complex and bug prone. This may be a good tradeoff when real improved performance results. My experience with several architectures is that a modest privileged mode virtualize best.