+
+
+/*
+ * Allows direct control of alignment handling.
+ *
+ * The bottom two bits of the parameter are used to set the two control bits:
+ * 0b00 - !trapUnalignbit - !notifyUnalignbit - default - instruction is emulated
+ * 0b01 - !trapUnalignbit - notifyUnalignbit - emulation is done, but traps afterwards
+ * 0b10 - trapUnalignbit - !notifyUnalignbit - no emulation - causes exception
+ * 0b11 - trapUnalignbit - notifyUnalignbit - no emulation - causes exception
+ */
+ case dgAlign:
+
+ temp = current_act()->mact.specFlags; /* Save the old values */
+
+ temp = ((current_act()->mact.specFlags >> (31 - trapUnalignbit - 1)) /* Reformat them to pass back */
+ | (current_act()->mact.specFlags >> (31 - notifyUnalignbit))) & 3;
+
+ temp2 = ((save->save_r4 << (31 - trapUnalignbit - 1)) & trapUnalign) /* Move parms into flag format */
+ | ((save->save_r4 << (31 - notifyUnalignbit)) & notifyUnalign);
+
+ current_act()->mact.specFlags &= ~(trapUnalign | notifyUnalign); /* Clean the old ones */
+ current_act()->mact.specFlags |= temp2; /* Set the new ones */
+
+ per_proc_info[cpu_number()].spcFlags = current_act()->mact.specFlags;
+
+ save->save_r3 = temp;
+
+ return 1; /* Return and check for ASTs... */