|
@@ -268,20 +268,29 @@ debug_trap:
|
|
|
* Syscall #: R3
|
|
|
* Arguments #0 to #3: R4--R7
|
|
|
* Arguments #4 to #6: R0, R1, R2
|
|
|
- * TRA: (number of arguments + ABI revision) x 4
|
|
|
+ * TRA: See following table.
|
|
|
*
|
|
|
- * This code also handles delegating other traps to the BIOS/gdb stub
|
|
|
- * according to:
|
|
|
- *
|
|
|
- * Trap number
|
|
|
* (TRA>>2) Purpose
|
|
|
* -------- -------
|
|
|
* 0x00-0x0f original SH-3/4 syscall ABI (not in general use).
|
|
|
* 0x10-0x1f general SH-3/4 syscall ABI.
|
|
|
- * 0x20-0x2f syscall ABI for SH-2 parts.
|
|
|
+ * 0x1f unified SH-2/3/4 syscall ABI (preferred).
|
|
|
+ * 0x20-0x2f original SH-2 syscall ABI.
|
|
|
* 0x30-0x3f debug traps used by the kernel.
|
|
|
* 0x40-0xff Not supported by all parts, so left unhandled.
|
|
|
*
|
|
|
+ * For making system calls, any trap number in the range for the
|
|
|
+ * given cpu model may be used, but the unified trap number 0x1f is
|
|
|
+ * preferred for compatibility with all models.
|
|
|
+ *
|
|
|
+ * The low bits of the trap number were once documented as matching
|
|
|
+ * the number of arguments, but they were never actually used as such
|
|
|
+ * by the kernel. SH-2 originally used its own separate trap range
|
|
|
+ * because several hardware exceptions fell in the range used for the
|
|
|
+ * SH-3/4 syscall ABI.
|
|
|
+ *
|
|
|
+ * This code also handles delegating other traps to the BIOS/gdb stub.
|
|
|
+ *
|
|
|
* Note: When we're first called, the TRA value must be shifted
|
|
|
* right 2 bits in order to get the value that was used as the "trapa"
|
|
|
* argument.
|