Unified · Split
| @@ -411,4 +411,15 @@ · 410 unmodified lines | |||
| 411 | DEF_ASM(snez) | 411 | DEF_ASM(snez) |
| 412 | DEF_ASM(tail) | 412 | DEF_ASM(tail) |
| 413 | 413 | ||
| 414 | /* Possible values for .option directive */ | ||
| 415 | DEF_ASM(arch) | ||
| 416 | DEF_ASM(rvc) | ||
| 417 | DEF_ASM(norvc) | ||
| 418 | DEF_ASM(pic) | ||
| 419 | DEF_ASM(nopic) | ||
| 420 | DEF_ASM(relax) | ||
| 421 | DEF_ASM(norelax) | ||
| 422 | DEF_ASM(push) | ||
| 423 | DEF_ASM(pop) | ||
| 424 | |||
| 414 | #undef DEF_ASM_WITH_SUFFIX | 425 | #undef DEF_ASM_WITH_SUFFIX |
| @@ -922,6 +922,29 @@ static void asm_parse_directive(TCCState *s1, int global) · 921 unmodified lines | |||
| 922 | case TOK_ASMDIR_code64: | 922 | case TOK_ASMDIR_code64: |
| 923 | next(); | 923 | next(); |
| 924 | break; | 924 | break; |
| 925 | #endif | ||
| 926 | #ifdef TCC_TARGET_RISCV64 | ||
| 927 | case TOK_ASMDIR_option: | ||
| 928 | next(); | ||
| 929 | switch(tok){ | ||
| 930 | case TOK_ASM_pic: | ||
| 931 | case TOK_ASM_nopic: | ||
| 932 | case TOK_ASM_relax: | ||
| 933 | case TOK_ASM_norelax: | ||
| 934 | case TOK_ASM_push: | ||
| 935 | case TOK_ASM_pop: | ||
| 936 | /* TODO: unimplemented */ | ||
| 937 | next(); | ||
| 938 | break; | ||
| 939 | case TOK_ASM_arch: | ||
| 940 | /* TODO: unimplemented, requires extra parsing */ | ||
| 941 | tcc_error("unimp .option '.%s'", get_tok_str(tok, NULL)); | ||
| 942 | break; | ||
| 943 | default: | ||
| 944 | tcc_error("unknown .option '.%s'", get_tok_str(tok, NULL)); | ||
| 945 | break; | ||
| 946 | } | ||
| 947 | break; | ||
| 925 | #endif | 948 | #endif |
| 926 | default: | 949 | default: |
| 927 | tcc_error("unknown assembler directive '.%s'", get_tok_str(tok, NULL)); | 950 | tcc_error("unknown assembler directive '.%s'", get_tok_str(tok, NULL)); |
| @@ -202,7 +202,8 @@ · 201 unmodified lines | |||
| 202 | /* pragma */ | 202 | /* pragma */ |
| 203 | DEF(TOK_pack, "pack") | 203 | DEF(TOK_pack, "pack") |
| 204 | #if !defined(TCC_TARGET_I386) && !defined(TCC_TARGET_X86_64) && \ | 204 | #if !defined(TCC_TARGET_I386) && !defined(TCC_TARGET_X86_64) && \ |
| 205 | !defined(TCC_TARGET_ARM) && !defined(TCC_TARGET_ARM64) | 205 | !defined(TCC_TARGET_ARM) && !defined(TCC_TARGET_ARM64) && \ |
| 206 | !defined(TCC_TARGET_RISCV64) | ||
| 206 | /* already defined for assembler */ | 207 | /* already defined for assembler */ |
| 207 | DEF(TOK_ASM_push, "push") | 208 | DEF(TOK_ASM_push, "push") |
| 208 | DEF(TOK_ASM_pop, "pop") | 209 | DEF(TOK_ASM_pop, "pop") |
| @@ -401,6 +402,8 @@ · 192 unmodified lines | |||
| 401 | DEF_ASMDIR(code32) | 402 | DEF_ASMDIR(code32) |
| 402 | #elif defined(TCC_TARGET_X86_64) | 403 | #elif defined(TCC_TARGET_X86_64) |
| 403 | DEF_ASMDIR(code64) | 404 | DEF_ASMDIR(code64) |
| 405 | #elif defined(TCC_TARGET_RISCV64) | ||
| 406 | DEF_ASMDIR(option) | ||
| 404 | #endif | 407 | #endif |
| 405 | DEF_ASMDIR(short) | 408 | DEF_ASMDIR(short) |
| 406 | DEF_ASMDIR(long) | 409 | DEF_ASMDIR(long) |