+#else // _WIN32
+
+#define host_arg2reg(rd, arg) \
+ switch (arg) { \
+ case 0: rd = xCX; break; \
+ case 1: rd = xDX; break; \
+ case 2: rd = 8; break; \
+ }
+
+#define emith_sh2_drc_entry() { \
+ emith_push(xBX); \
+ emith_push(xBP); \
+ emith_push(xSI); \
+ emith_push(xDI); \
+ emith_add_r_r_ptr_imm(xSP, xSP, -8*5); \
+}
+
+#define emith_sh2_drc_exit() { \
+ emith_add_r_r_ptr_imm(xSP, xSP, 8*5); \
+ emith_pop(xDI); \
+ emith_pop(xSI); \
+ emith_pop(xBP); \
+ emith_pop(xBX); \
+ emith_ret(); \
+}
+
+#endif // _WIN32
+
+#else // !__x86_64__