Consider the following snippets from xv6:

# vectors.S
 1  .globl vector0
 2  vector0:
 3      pushl $0
 4      pushl $0
 5      jmp alltraps

# trapasm.S
 1  alltraps:
 2      pushal
 3      pushl %esp
 4      call trap
 5      addl $4, %esp
 6      popal
 7      addl $0x8, %esp
 8      iret