This shows how UML's architecture dependencies are handled. There's a small piece of code which needs to be reimplemented for each new architecture that UML is ported to.
It deals primarily with ptrace, which uses different register names, pt_regs struct, and register offsets on different architectures. Also, there are differences in the sigcontext structures, where UML stores process state while in the kernel, and which contains other pieces of information such as page fault date and the process signal mask.
Any architecture port also needs to provide some information about the format of the host's signal frame.