The current Alpha chips don't provide hardware for integer division. The C compiler expects the functions __divqu: 64-bit unsigned long divide __remqu: 64-bit unsigned long remainder __divq/__remq: signed 64-bit __divlu/__remlu: unsigned 32-bit __divl/__reml: signed 32-bit These are not normal C functions: instead of the normal calling sequence, these expect their arguments in registers t10 and t11, and return the result in t12 (aka pv). Register AT may be clobbered (assembly temporary), anything else must be saved. Furthermore, the return address is in t9 instead of ra. Normal function Divide functions --------------- ---------------- v0 ($0) t12/pv ($27) a0 ($16) t10 ($24) a1 ($17) t11 ($25) ra ($26) t9 ($23)