Quantcast
Channel: Active questions tagged gcc - Stack Overflow
Viewing all articles
Browse latest Browse all 22133

RISC-V Toolchain Error: unknown pseudo-op: `.insn'

$
0
0

I added my own instruction for spike RISC-V like this tutorial. It said that I need to rebuild the toolchain which takes too long for me.

So I tried to find out how to use my instruction without rebuild the toolchain, and found from here that this can be used:

This directive permits the numeric representation of an instructions and makes the assembler insert the operands according to one of the instruction formats for ‘.insn’ (RISC-V-Formats). For example, the instruction ‘add a0, a1, a2’ could be written as ‘.insn r 0x33, 0, 0, a0, a1, a2’.

However, I tried the example to call add a0, a1, a2 using .insn r 0x33, 0, 0, a0, a1, a2 and it comes to an error message:

riscv64-unknown-elf-gcc hello.c myasm.S -o hellomyasm.S: Assembler messages:myasm.S:8: Error: unknown pseudo-op: `.insn'

My assembler version

riscv64-unknown-elf-as --versionGNU assembler (GNU Binutils) 2.29Copyright (C) 2017 Free Software Foundation, Inc.This program is free software; you may redistribute it under the terms ofthe GNU General Public License version 3 or later.This program has absolutely no warranty.This assembler was configured for a target of `riscv64-unknown-elf'.

Is this because my toolchain? Or am I using the directive wrong?

Any help would be appreciated.

Hello.c

#include <stdio.h>extern int aw(int x, int y);int main() { int result = 0; result = aw(0xC0, 0x0B); //0xAB printf("Result 0x%x\n",result); return result;}

myasm.S

.section .text.global aw.type aw, @functionaw:    .insn r 0x33, 0, 0, a0, a0, a1    ret

Viewing all articles
Browse latest Browse all 22133

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>