diff --git a/scripts/build-qemu b/scripts/build-qemu
index 4f77eb88167..5c69457647e 100755
--- a/scripts/build-qemu
+++ b/scripts/build-qemu
@@ -9,7 +9,7 @@ It assumes that
   board config
 - your OS images are in ${imagedir}/{distroname}/
 
-So far the script supports only ARM and x86
+So far the script supports ARM, RISC-V and x86
 """
 
 import argparse
@@ -122,6 +122,8 @@ class BuildQemu:
         elif args.use_tianocore:
             if args.arch == 'arm':
                 bios_override = Path(self.tiano, 'OVMF-pure-efi.aarch64.fd.64m')
+            elif args.arch == 'riscv':
+                bios_override = Path(self.tiano, 'RISCV_VIRT_CODE.fd')
             else:
                 bios_override = Path(self.tiano, 'OVMF-pure-efi.x64.fd')
             if not bios_override.exists():
@@ -156,6 +158,23 @@ class BuildQemu:
                     self.board = 'qemu_arm64'
                 self.helper.qemu = 'qemu-system-aarch64'
                 self.qemu_extra.extend(['-cpu', 'cortex-a57'])
+        elif args.arch == 'riscv':
+            if args.xpl:
+                self.board = 'qemu-riscv64_spl'
+                default_bios = 'u-boot.bin'
+            else:
+                self.board = 'qemu-riscv64'
+                default_bios = 'u-boot.bin'
+            self.helper.qemu = 'qemu-system-riscv64'
+            self.qemu_extra.extend(['-machine', 'virt'])
+            if not args.kvm:
+                self.qemu_extra.extend(['-accel', 'tcg'])
+            if self.helper.bitness == 32:
+                if args.xpl:
+                    self.board = 'qemu-riscv32_spl'
+                else:
+                    self.board = 'qemu-riscv32'
+                self.helper.qemu = 'qemu-system-riscv32'
         elif args.arch == 'x86':
             self.board = 'qemu-x86'
             default_bios = 'u-boot.rom'
@@ -291,7 +310,7 @@ class BuildQemu:
         # SCT usually runs headlessly
         if self.args.serial_only or self.args.sct_seq:
             qemu_cmd.extend(['-display', 'none'])
-        elif self.args.arch == 'arm':
+        elif self.args.arch in ('arm', 'riscv'):
             qemu_cmd.extend(['-device', 'virtio-gpu-pci'])
             qemu_cmd.extend(['-device', 'qemu-xhci', '-device', 'usb-kbd',
                              '-device', 'usb-tablet', '-device', 'usb-mouse'])
