http://d.puremagic.com/issues/show_bug.cgi?id=9025
--- Comment #2 from Walter Bright <[email protected]> 2012-11-15 00:01:38 PST --- (In reply to comment #1) > qword means 4 bytes, and you can't push 4 bytes in 64 bit mode. Only 8 bytes. Aggh, that's wrong. The source code is in src/core/thread.d, and looks like: ---------------------------------------------- // save current stack state push RBP; mov RBP, RSP; push RBX; push R12; push R13; push R14; push R15; push qword ptr GS:[0]; push qword ptr GS:[8]; push qword ptr GS:[16]; // store oldp mov [RDI], RSP; // load newp to begin context switch mov RSP, RSI; // load saved state from new stack pop qword ptr GS:[16]; pop qword ptr GS:[8]; pop qword ptr GS:[0]; pop R15; pop R14; pop R13; pop R12; pop RBX; pop RBP; // 'return' to complete switch pop RCX; jmp RCX; ---------------------------------------- So, if you could disassemble the code, it should be GS:[0], but I suspect the assembler made it an offset from the program counter. To fix, xor RAX,RAX push qword ptr GS:[RAX] push qwork ptr GS:8[RAX] ... etc. ... -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
