scall

RISC-V scall Pseudo-Instruction Details

Assembler pseudo-instruction

Older system-call pseudo-instruction name, expanding to ecall. It preserves compatibility with earlier assembly spelling; modern code typically writes ECALL directly.

What You Write
scall
Typical Real Expansion
ecall

What This Pseudo Instruction Is Saving You From Writing

Earlier RISC-V assembly and teaching material used the scall name; keeping the alias helps old code, while the modern official name is ECALL.

scall primarily means "Older alias for ECALL". It is assembler-level shorthand; when debugging, auditing, or reading machine code, reason from the real expansion and relocation semantics listed on this page.

Official Semantics Checklist

The official assembly manual treats scall as an assembler-level pseudo-instruction or alias; hardware executes the expanded real instruction sequence.
The real semantics come from the ISA definitions of ECALL and the other expanded instructions, not from a separate scall hardware opcode.

How To Read The Expansion

Step 1
Assembler encodes the old name scall as ECALL.

What You May See In objdump / Disassembly

Disassembly may show either the pseudo-instruction or the expanded real instruction, depending on tool options and context.

Official References And Reading Order

This page treats pseudo-instructions as assembler-level aliases or macros: first read what real instructions they expand to, then use the official ISA manual for the behavior of those real instructions. ABI, relocation, and linker-relaxation details follow the psABI document.

When To Think Of It First

Read or port old RISC-V assembly
Preserve old teaching examples for system calls
Confirm that scall in old code actually corresponds to ecall

Pitfalls / Common Confusions

This is an older alias; prefer ecall in new code
ECALL only raises an environment-call exception; the actual syscall ABI is defined by the OS or execution environment
Do not confuse scall with breakpoint ebreak/sbreak

FAQ

Is scall a real RISC-V instruction?

scall is an assembler pseudo-instruction or alias, not a separate hardware opcode. The “Typical Real Expansion” section lists the official expansion, and behavior is defined by the expanded ISA instructions.

What is the main trap when using scall?

This is an older alias; prefer ecall in new code