adr.xml */
| 413 | |
| 414 | /* adr.xml */ |
| 415 | int ADR(context *ctx, Instruction *instr) |
| 416 | { |
| 417 | int rc = DECODE_STATUS_UNMATCHED; |
| 418 | /* class iclass_literal */ |
| 419 | /* op=0|immlo=xx|10000|immhi=xxxxxxxxxxxxxxxxxxx|Rd=xxxxx */ |
| 420 | if((INSWORD & 0x9F000000)==0x10000000) { |
| 421 | decode_fields32(ENC_ADR_ONLY_PCRELADDR, ctx, instr); |
| 422 | ctx->d = UINT(ctx->Rd); |
| 423 | ctx->page = (ctx->op==1); |
| 424 | if(ctx->page) { |
| 425 | ctx->imm = SignExtend(((ctx->immhi<<14)|(ctx->immlo<<12)|0),33); |
| 426 | } |
| 427 | else { |
| 428 | ctx->imm = SignExtend(((ctx->immhi<<2)|ctx->immlo),21); |
| 429 | } |
| 430 | OK(ENC_ADR_ONLY_PCRELADDR); |
| 431 | } |
| 432 | return rc; |
| 433 | } |
| 434 | |
| 435 | /* adrp.xml */ |
| 436 | int ADRP(context *ctx, Instruction *instr) |
no test coverage detected