Unified · Split
| @@ -411,4 +411,15 @@ · 410 unmodified lines | ||
| 411 | 411 | DEF_ASM(snez) |
| 412 | 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 | 425 | #undef DEF_ASM_WITH_SUFFIX |
| @@ -922,6 +922,29 @@ static void asm_parse_directive(TCCState *s1, int global) · 921 unmodified lines | ||
| 922 | 922 | case TOK_ASMDIR_code64: |
| 923 | 923 | next(); |
| 924 | 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 | 948 | #endif |
| 926 | 949 | default: |
| 927 | 950 | tcc_error("unknown assembler directive '.%s'", get_tok_str(tok, NULL)); |
| @@ -202,7 +202,8 @@ · 201 unmodified lines | ||
| 202 | 202 | /* pragma */ |
| 203 | 203 | DEF(TOK_pack, "pack") |
| 204 | 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 | 207 | /* already defined for assembler */ |
| 207 | 208 | DEF(TOK_ASM_push, "push") |
| 208 | 209 | DEF(TOK_ASM_pop, "pop") |
| @@ -401,6 +402,8 @@ · 192 unmodified lines | ||
| 401 | 402 | DEF_ASMDIR(code32) |
| 402 | 403 | #elif defined(TCC_TARGET_X86_64) |
| 403 | 404 | DEF_ASMDIR(code64) |
| 405 | +#elif defined(TCC_TARGET_RISCV64) | |
| 406 | + DEF_ASMDIR(option) | |
| 404 | 407 | #endif |
| 405 | 408 | DEF_ASMDIR(short) |
| 406 | 409 | DEF_ASMDIR(long) |