+out:
+ if (addr != 0 && ret != (void *)addr) {
+ SysMessage("psxMap: warning: wanted to map @%08x, got %p\n",
+ addr, ret);
+
+ if (ret != NULL && ((addr ^ (long)ret) & 0x00ffffff)
+ && !tried_to_align)
+ {
+ psxUnmap(ret, size, tag);
+
+ // try to use similarly aligned memory instead
+ // (recompiler needs this)
+ mask = (addr - 1) & ~addr & 0x07ffffff;
+ addr = (unsigned long)(ret + mask) & ~mask;
+ tried_to_align = 1;
+ goto retry;
+ }
+ }