Index: /trunk/src/VBox/Devices/BiosCommonCode/support.asm
===================================================================
--- /trunk/src/VBox/Devices/BiosCommonCode/support.asm	(revision 58722)
+++ /trunk/src/VBox/Devices/BiosCommonCode/support.asm	(revision 58723)
@@ -22,4 +22,6 @@
 public          __U4D
 public          __U4M
+public          __U8LS
+public          __U8RS
 ifndef          VBOX_PC_BIOS
 public          __I4D
@@ -43,5 +45,5 @@
 ; @param    cx:bx   Divisor.
 ; @returns  dx:ax   Quotient.
-;           cx:bx   Reminder.
+;           cx:bx   Remainder.
 ;
 __U4D:
@@ -59,5 +61,5 @@
                 mov     cx, bx
 
-                div     ecx                 ; eax:edx / ecx -> eax=quotient, edx=reminder.
+                div     ecx                 ; eax:edx / ecx -> eax=quotient, edx=remainder.
 
                 mov     bx, dx
@@ -84,5 +86,5 @@
 ; @param    cx:bx   Divisor.
 ; @returns  dx:ax   Quotient.
-;           cx:bx   Reminder.
+;           cx:bx   Remainder.
 ;
 __I4D:
@@ -100,5 +102,5 @@
                 mov     cx, bx
 
-                idiv    ecx                 ; eax:edx / ecx -> eax=quotient, edx=reminder.
+                idiv    ecx                 ; eax:edx / ecx -> eax=quotient, edx=remainder.
 
                 mov     bx, dx
@@ -157,6 +159,5 @@
 ifndef          VBOX_PC_BIOS
 ;;
-; 32-bit unsigned multiplication.
-; memset taking a far pointer.
+; 32-bit signed multiplication.
 ;
 ; @param    dx:ax   Factor 1.
@@ -198,4 +199,50 @@
 
 ;;
+; 64-bit left shift.
+;
+; @param    ax:bx:cx:dx Value.
+; @param    si          Shift count.
+; @returns  ax:bx:cx:dx Shifted value.
+; si is zeroed
+;
+__U8LS:
+
+                test    si, si
+                jz      u8ls_quit
+u8ls_rot:
+                shl     dx, 1
+                rcl     cx, 1
+                rcl     bx, 1
+                rcl     ax, 1
+                dec     si
+                jnz     u8ls_rot
+u8ls_quit:
+                ret
+
+
+;;
+; 64-bit unsigned right shift.
+;
+; @param    ax:bx:cx:dx Value.
+; @param    si          Shift count.
+; @returns  ax:bx:cx:dx Shifted value.
+; si is zeroed
+;
+__U8RS:
+
+                test    si, si
+                jz      u8rs_quit
+u8rs_rot:
+                shr     ax, 1
+                rcr     bx, 1
+                rcr     cx, 1
+                rcr     dx, 1
+                dec     si
+                jnz     u8rs_rot
+u8rs_quit:
+                ret
+
+
+;;
 ; memset taking a far pointer.
 ;
@@ -221,5 +268,5 @@
 
 ;;
-; memset taking far pointers.
+; memcpy taking far pointers.
 ;
 ; cx, es may be modified; si, di are preserved
