Add support for .p2align asm directive.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
master
Reimar Döffinger 2015-01-20 08:49:49 +01:00
parent fb6331e0fa
commit ff783b94c7
2 changed files with 9 additions and 0 deletions

View File

@ -335,11 +335,19 @@ static void asm_parse_directive(TCCState *s1)
sec = cur_text_section;
switch(tok) {
case TOK_ASM_align:
case TOK_ASM_p2align:
case TOK_ASM_skip:
case TOK_ASM_space:
tok1 = tok;
next();
n = asm_int_expr(s1);
if (tok1 == TOK_ASM_p2align)
{
if (n < 0 || n > 30)
tcc_error("invalid p2align, must be between 0 and 30");
n = 1 << n;
tok1 = TOK_ASM_align;
}
if (tok1 == TOK_ASM_align) {
if (n < 0 || (n & (n-1)) != 0)
tcc_error("alignment must be a positive power of two");

View File

@ -258,6 +258,7 @@
DEF_ASM(byte)
DEF_ASM(word)
DEF_ASM(align)
DEF_ASM(p2align)
DEF_ASM(skip)
DEF_ASM(space)
DEF_ASM(string)