Commit graph

9 commits

Author SHA1 Message Date
cinap_lenrek cf74c80e7b 6l: fix vlong byte order when running on big endian machine (thanks erik quanstro) 2015-08-16 13:41:14 +02:00
cinap_lenrek 8210f857f1 6l: no need to emit rex.w prefix for MOVBQZX and MOVWQZX
as with 32 bit operand size, the upper bits 63:32 are
automatically zeroed in 64bit mode. this gives a shoter
instruction encoding.
2015-02-17 22:25:55 +01:00
cinap_lenrek 03feba8cc1 [125678kqv][cl]: fix sprint() and strcpy() buffer overflows 2015-02-17 22:13:35 +01:00
Aram Hăvărneanu bf0d5c8abb 6a, 6c, 6l: fix copy propagation
Without an explicit signal for a truncation, copy propagation will
sometimes propagate a 32-bit truncation and end up overwriting uses of
the original 64-bit value.

This was independently discovered and fixed in Go. See:
	http://golang.org/issue/1315
	https://codereview.appspot.com/6002043/

Thanks Charles Forsyth for tips and advice.
2014-05-30 12:28:01 +02:00
cinap_lenrek 010af9ba12 6l: fix warning, setmalloctag declaration, missing header type cases 2014-02-01 09:52:06 +01:00
cinap_lenrek 0b268440b9 6l: eleminate NOP X0 instructions (from eriks 6l-nop-x0 patch)
erik found that -N left NOPs in that 6l couldn't ignore.
add Xn to the NOP table.

bonanza; cat > fp.c
#include <u.h>
#include <libc.h>
#include <stdio.h>

void
main(void)
{
        double g;

        g = -0.;

        print("%g\n", g);
        printf("%g\n", g);
        exits("");
}
bonanza; 6c -N -FVTw fp.c
bonanza; 6l -o 6.fp fp.6
main: doasm: notfound from=6f to=34 (939)       NOP     ,X0
main: doasm: notfound from=6f to=34 (939)       NOP     ,X0
main: doasm: notfound from=6f to=34 (939)       NOP     ,X0
2013-02-01 00:15:02 +01:00
cinap_lenrek b1b2a4ac9c 6l: fix wrong opcode for MOVLQZX (import from sources) 2012-12-10 10:53:27 +01:00
cinap_lenrek 3ba213a9d7 6c: extern register fix (import from patch/6c-extreg)
to make it easy to use normal libraries (such as libdraw, libsec, and libmp)
with the kernel, which uses extern register, don't stray into the external
register set when allocating values to registers.
2012-09-18 18:18:43 +02:00
cinap_lenrek 4f33c88a51 import updated compilers from sources 2012-07-30 19:11:16 +02:00