diff --git a/docs/syscalls/bti_create.md b/docs/syscalls/bti_create.md
index 8a63b3a..3d496be 100644
--- a/docs/syscalls/bti_create.md
+++ b/docs/syscalls/bti_create.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**bti_create**() creates a new [bus transaction initiator](../objects/bus_transaction_initiator.md)
+`zx_bti_create()` creates a new [bus transaction initiator](../objects/bus_transaction_initiator.md)
 given a handle to an IOMMU and a hardware transaction identifier for a device
 downstream of that IOMMU.
 
@@ -39,7 +39,7 @@
 
 ## RETURN VALUE
 
-**bti_create**() returns **ZX_OK** and a handle to the new BTI
+`zx_bti_create()` returns **ZX_OK** and a handle to the new BTI
 (via *out*) on success.  In the event of failure, a negative error value
 is returned.
 
diff --git a/docs/syscalls/bti_pin.md b/docs/syscalls/bti_pin.md
index 49230c8..d49960f 100644
--- a/docs/syscalls/bti_pin.md
+++ b/docs/syscalls/bti_pin.md
@@ -25,7 +25,7 @@
 
 ## DESCRIPTION
 
-**bti_pin**() pins pages of a VMO (i.e. prevents them from being decommitted
+`zx_bti_pin()` pins pages of a VMO (i.e. prevents them from being decommitted
 with **[vmo_op_range](vmo_op_range.md)**()) and grants the hardware
 transaction ID represented by the BTI the ability to access these pages,
 with the permissions specified in *options*.
@@ -38,7 +38,7 @@
 READ/WRITE rights corresponding to the permissions flags set in *options*.
 (Note: *ZX_BTI_PERM_EXECUTE* requires *ZX_RIGHT_READ*, not *ZX_RIGHT_EXECUTE*.)
 *ZX_BTI_CONTIGUOUS* is only allowed if *vmo* was allocated via
-**zx_vmo_create_contiguous**() or **zx_vmo_create_physical**().
+[`zx_vmo_create_contiguous()`] or [`zx_vmo_create_physical()`].
 *ZX_BTI_COMPRESS* and *ZX_BTI_CONTIGUOUS* are mutually exclusive.
 
 If the range in *vmo* specified by *offset* and *size* contains non-committed
@@ -86,7 +86,7 @@
 
 ## RETURN VALUE
 
-On success, **bti_pin**() returns *ZX_OK*.  The device-physical addresses of the
+On success, `zx_bti_pin()` returns *ZX_OK*.  The device-physical addresses of the
 requested VMO pages will be written in *addrs*.  A handle to the created Pinned
 Memory Token is returned via *pmt*.  When the PMT is no longer needed,
 *pmt_unpin*() should be invoked.
@@ -120,3 +120,8 @@
 [bti_create](bti_create.md),
 [pmt_unpin](pmt_unpin.md),
 [object_get_info](object_get_info.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_vmo_create_contiguous()`]: vmo_create_contiguous.md
+[`zx_vmo_create_physical()`]: vmo_create_physical.md
diff --git a/docs/syscalls/bti_release_quarantine.md b/docs/syscalls/bti_release_quarantine.md
index c663cea..b490fb2 100644
--- a/docs/syscalls/bti_release_quarantine.md
+++ b/docs/syscalls/bti_release_quarantine.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**bti_release_quarantine**() releases all quarantined PMTs for the given BTI.
+`zx_bti_release_quarantine()` releases all quarantined PMTs for the given BTI.
 This will release the PMTs' underlying references to VMOs and physical page
 pins.  The underlying physical pages may be eligible to be reallocated
 afterwards.
@@ -31,7 +31,7 @@
 
 ## RETURN VALUE
 
-**bti_release_quarantine**() returns **ZX_OK** on success.
+`zx_bti_release_quarantine()` returns **ZX_OK** on success.
 In the event of failure, a negative error value is returned.
 
 ## ERRORS
diff --git a/docs/syscalls/cache_flush.md b/docs/syscalls/cache_flush.md
index f58d464..34aa450 100644
--- a/docs/syscalls/cache_flush.md
+++ b/docs/syscalls/cache_flush.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**zx_cache_flush**() flushes CPU caches covering memory in the given
+`zx_cache_flush()` flushes CPU caches covering memory in the given
 virtual address range.  If that range of memory is not readable, then
 the thread may fault as it would for a data read.
 
@@ -54,7 +54,7 @@
 
 ## RETURN VALUE
 
-**zx_cache_flush**() returns **ZX_OK** on success, or an error code on failure.
+`zx_cache_flush()` returns **ZX_OK** on success, or an error code on failure.
 
 ## ERRORS
 
diff --git a/docs/syscalls/channel_call.md b/docs/syscalls/channel_call.md
index 2550b16..6844415 100644
--- a/docs/syscalls/channel_call.md
+++ b/docs/syscalls/channel_call.md
@@ -23,21 +23,21 @@
 
 ## DESCRIPTION
 
-**channel_call**() is like a combined **channel_write**(), **object_wait_one**(),
-and **channel_read**(), with the addition of a feature where a transaction id at
+`zx_channel_call()` is like a combined [`zx_channel_write()`], [`zx_object_wait_one()`],
+and [`zx_channel_read()`], with the addition of a feature where a transaction id at
 the front of the message payload *bytes* is used to match reply messages with send
 messages, enabling multiple calling threads to share a channel without any additional
 userspace bookkeeping.
 
-The write and read phases of this operation behave like **channel_write**() and
-**channel_read**() with the difference that their parameters are provided via the
+The write and read phases of this operation behave like [`zx_channel_write()`] and
+[`zx_channel_read()`] with the difference that their parameters are provided via the
 *zx_channel_call_args_t* structure.
 
 The first four bytes of the written and read back messages are treated as a
 transaction ID of type **zx_txid_t**.  The kernel generates a txid for the
 written message, replacing that part of the message as read from userspace.
 The kernel generated txid will be between 0x80000000 and 0xFFFFFFFF, and will
-not collide with any txid from any other **channel_call**() in progress against
+not collide with any txid from any other `zx_channel_call()` in progress against
 this channel endpoint.  If the written message has a length of fewer than four
 bytes, an error is reported.
 
@@ -46,7 +46,7 @@
 
 While *deadline* has not passed, if an inbound message arrives with a matching txid,
 instead of being added to the tail of the general inbound message queue, it is delivered
-directly to the thread waiting in **zx_channel_call**().
+directly to the thread waiting in `zx_channel_call()`.
 
 If such a reply arrives after *deadline* has passed, it will arrive in the general
 inbound message queue, cause **ZX_CHANNEL_READABLE** to be signaled, etc.
@@ -54,8 +54,8 @@
 Inbound messages that are too large to fit in *rd_num_bytes* and *rd_num_handles*
 are discarded and **ZX_ERR_BUFFER_TOO_SMALL** is returned in that case.
 
-As with **zx_channel_write**(), the handles in *handles* are always consumed by
-**zx_channel_call**() and no longer exist in the calling process.
+As with [`zx_channel_write()`], the handles in *handles* are always consumed by
+`zx_channel_call()` and no longer exist in the calling process.
 
 ## RIGHTS
 
@@ -67,7 +67,7 @@
 
 ## RETURN VALUE
 
-**channel_call**() returns **ZX_OK** on success and the number of bytes and
+`zx_channel_call()` returns **ZX_OK** on success and the number of bytes and
 count of handles in the reply message are returned via *actual_bytes* and
 *actual_handles*, respectively.
 
@@ -105,21 +105,21 @@
 
 ## NOTES
 
-The facilities provided by **channel_call**() can interoperate with message dispatchers
-using **channel_read**() and **channel_write**() directly, provided the following rules
+The facilities provided by `zx_channel_call()` can interoperate with message dispatchers
+using [`zx_channel_read()`] and [`zx_channel_write()`] directly, provided the following rules
 are observed:
 
-1. A server receiving synchronous messages via **channel_read**() should ensure that the
-txid of incoming messages is reflected back in outgoing responses via **channel_write**()
-so that clients using **channel_call**() can correctly route the replies.
+1. A server receiving synchronous messages via [`zx_channel_read()`] should ensure that the
+txid of incoming messages is reflected back in outgoing responses via [`zx_channel_write()`]
+so that clients using `zx_channel_call()` can correctly route the replies.
 
-2. A client sending messages via **channel_write**() that will be replied to should ensure
+2. A client sending messages via [`zx_channel_write()`] that will be replied to should ensure
 that it uses txids between 0 and 0x7FFFFFFF only, to avoid colliding with other threads
-communicating via **channel_call**().
+communicating via `zx_channel_call()`.
 
-If a **channel_call**() returns due to **ZX_ERR_TIMED_OUT**, if the server eventually replies,
+If a `zx_channel_call()` returns due to **ZX_ERR_TIMED_OUT**, if the server eventually replies,
 at some point in the future, the reply *could* match another outbound request (provided about
-2^31 **channel_call**()s have happened since the original request.  This syscall is designed
+2^31 `zx_channel_call()`s have happened since the original request.  This syscall is designed
 around the expectation that timeouts are generally fatal and clients do not expect to continue
 communications on a channel that is timing out.
 
@@ -134,3 +134,9 @@
 [channel_create](channel_create.md),
 [channel_read](channel_read.md),
 [channel_write](channel_write.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_channel_read()`]: channel_read.md
+[`zx_channel_write()`]: channel_write.md
+[`zx_object_wait_one()`]: object_wait_one.md
diff --git a/docs/syscalls/channel_create.md b/docs/syscalls/channel_create.md
index a9dcffd..fd8263e 100644
--- a/docs/syscalls/channel_create.md
+++ b/docs/syscalls/channel_create.md
@@ -20,7 +20,7 @@
 
 ## DESCRIPTION
 
-**channel_create**() creates a channel, a bi-directional
+`zx_channel_create()` creates a channel, a bi-directional
 datagram-style message transport capable of sending raw data bytes
 as well as handles from one side to the other.
 
@@ -42,7 +42,7 @@
 
 ## RETURN VALUE
 
-**channel_create**() returns **ZX_OK** on success. In the event
+`zx_channel_create()` returns **ZX_OK** on success. In the event
 of failure, a negative error value is returned.
 
 ## ERRORS
diff --git a/docs/syscalls/channel_read.md b/docs/syscalls/channel_read.md
index 6c80a97..3021f07 100644
--- a/docs/syscalls/channel_read.md
+++ b/docs/syscalls/channel_read.md
@@ -25,7 +25,7 @@
 
 ## DESCRIPTION
 
-**channel_read**() attempts to read the first message from the channel
+`zx_channel_read()` attempts to read the first message from the channel
 specified by *handle* into the provided *bytes* and/or *handles* buffers.
 
 The parameters *num_bytes* and *num_handles* are used to specify the
diff --git a/docs/syscalls/channel_read_etc.md b/docs/syscalls/channel_read_etc.md
index 0fa1e85..0f85e21 100644
--- a/docs/syscalls/channel_read_etc.md
+++ b/docs/syscalls/channel_read_etc.md
@@ -27,8 +27,8 @@
 
 See [channel_read](channel_read.md) for a full description.
 
-Both forms of read behave the same except that **channel_read**() returns an
-array of raw ``zx_handle_t`` handle values while **channel_read_etc**() returns
+Both forms of read behave the same except that [`zx_channel_read()`] returns an
+array of raw ``zx_handle_t`` handle values while `zx_channel_read_etc()` returns
 an array of ``zx_handle_info_t`` structures of the form:
 
 ```
@@ -41,7 +41,7 @@
 ```
 
 When communicating to an untrusted party over a channel, it is recommended
-that the **channel_read_etc**() form is used and each handle type and rights
+that the `zx_channel_read_etc()` form is used and each handle type and rights
 are validated against the expected values.
 
 ## RIGHTS
@@ -98,3 +98,7 @@
 [channel_create](channel_create.md),
 [channel_read](channel_read.md),
 [channel_write](channel_write.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_channel_read()`]: channel_read.md
diff --git a/docs/syscalls/channel_write.md b/docs/syscalls/channel_write.md
index d91ff29..d3472d6 100644
--- a/docs/syscalls/channel_write.md
+++ b/docs/syscalls/channel_write.md
@@ -23,7 +23,7 @@
 
 ## DESCRIPTION
 
-**channel_write**() attempts to write a message of *num_bytes*
+`zx_channel_write()` attempts to write a message of *num_bytes*
 bytes and *num_handles* handles to the channel specified by
 *handle*.  The pointers *handles* and *bytes* may be NULL if their
 respective sizes are zero.
@@ -54,7 +54,7 @@
 
 ## RETURN VALUE
 
-**channel_write**() returns **ZX_OK** on success.
+`zx_channel_write()` returns **ZX_OK** on success.
 
 ## ERRORS
 
diff --git a/docs/syscalls/clock_get.md b/docs/syscalls/clock_get.md
index 69127a8..6512e75 100644
--- a/docs/syscalls/clock_get.md
+++ b/docs/syscalls/clock_get.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**zx_clock_get**() returns the current time of *clock_id*, or 0 if *clock_id* is
+`zx_clock_get()` returns the current time of *clock_id*, or 0 if *clock_id* is
 invalid.
 
 ## SUPPORTED CLOCK IDS
@@ -37,8 +37,8 @@
 
 ## RETURN VALUE
 
-On success, **zx_clock_get**() returns the current time according to the given clock ID.
+On success, `zx_clock_get()` returns the current time according to the given clock ID.
 
 ## ERRORS
 
-On error, **zx_clock_get**() returns 0.
+On error, `zx_clock_get()` returns 0.
diff --git a/docs/syscalls/clock_get_monotonic.md b/docs/syscalls/clock_get_monotonic.md
index 9c7f0c6..e16b23d 100644
--- a/docs/syscalls/clock_get_monotonic.md
+++ b/docs/syscalls/clock_get_monotonic.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**zx_clock_get_monotonic**() returns the current time in the system
+`zx_clock_get_monotonic()` returns the current time in the system
 monotonic clock. This is the number of nanoseconds since the system was
 powered on.
 
@@ -30,8 +30,12 @@
 
 ## RETURN VALUE
 
-**zx_clock_get**() returns the current monotonic time.
+[`zx_clock_get()`] returns the current monotonic time.
 
 ## ERRORS
 
-**zx_clock_get_monotonic**() cannot fail.
+`zx_clock_get_monotonic()` cannot fail.
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_clock_get()`]: clock_get.md
diff --git a/docs/syscalls/clock_get_new.md b/docs/syscalls/clock_get_new.md
index e2dbf77..b1ae7f9 100644
--- a/docs/syscalls/clock_get_new.md
+++ b/docs/syscalls/clock_get_new.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**zx_clock_get_new** returns the current time of *clock_id* via
+`zx_clock_get_new()` returns the current time of *clock_id* via
   *out*, and returns whether *clock_id* was valid.
 
 ## SUPPORTED CLOCK IDS
@@ -37,7 +37,7 @@
 
 ## RETURN VALUE
 
-On success, **zx_clock_get_new**() returns *ZX_OK*.
+On success, `zx_clock_get_new()` returns *ZX_OK*.
 
 ## ERRORS
 
diff --git a/docs/syscalls/cprng_add_entropy.md b/docs/syscalls/cprng_add_entropy.md
index 575891c..e4cfc32 100644
--- a/docs/syscalls/cprng_add_entropy.md
+++ b/docs/syscalls/cprng_add_entropy.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**zx_cprng_add_entropy**() mixes the given entropy into the kernel CPRNG.
+`zx_cprng_add_entropy()` mixes the given entropy into the kernel CPRNG.
 a privileged operation.  It will accept at most **ZX_CPRNG_ADD_ENTROPY_MAX_LEN**
 bytes of entropy at a time.
 
@@ -30,7 +30,7 @@
 
 ## RETURN VALUE
 
-**zx_cprng_add_entropy**() returns **ZX_OK** on success.
+`zx_cprng_add_entropy()` returns **ZX_OK** on success.
 
 ## ERRORS
 
diff --git a/docs/syscalls/cprng_draw.md b/docs/syscalls/cprng_draw.md
index 46835e4..5dcf44b 100644
--- a/docs/syscalls/cprng_draw.md
+++ b/docs/syscalls/cprng_draw.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**zx_cprng_draw**() draws random bytes from the kernel CPRNG.  This data should
+`zx_cprng_draw()` draws random bytes from the kernel CPRNG.  This data should
 be suitable for cryptographic applications.
 
 Clients that require a large volume of randomness should consider using these
@@ -32,8 +32,8 @@
 
 ## NOTES
 
-**zx_cprng_draw**() triggers terminates the calling process if **buffer** is not
+`zx_cprng_draw()` triggers terminates the calling process if **buffer** is not
 a valid userspace pointer.
 
 There are no other error conditions.  If its arguments are valid,
-**zx_cprng_draw**() will succeed.
+`zx_cprng_draw()` will succeed.
diff --git a/docs/syscalls/deadline_after.md b/docs/syscalls/deadline_after.md
index 205558b..e80fd19 100644
--- a/docs/syscalls/deadline_after.md
+++ b/docs/syscalls/deadline_after.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**zx_deadline_after**() is a utility for converting from now-relative durations
+`zx_deadline_after()` is a utility for converting from now-relative durations
 to absolute deadlines. If *nanoseconds* plus the current time is bigger than the
 maximum value for ``zx_time_t``, the output is clamped to **ZX_TIME_INFINITE**.
 
@@ -30,12 +30,12 @@
 
 ## RETURN VALUE
 
-**zx_deadline_after**() returns the absolute time (with respect to **CLOCK_MONOTONIC**)
+`zx_deadline_after()` returns the absolute time (with respect to **CLOCK_MONOTONIC**)
 that is *nanoseconds* nanoseconds from now.
 
 ## ERRORS
 
-**zx_deadline_after**() does not report any error conditions.
+`zx_deadline_after()` does not report any error conditions.
 
 ## EXAMPLES
 
diff --git a/docs/syscalls/event_create.md b/docs/syscalls/event_create.md
index 8f17995..89dc065 100644
--- a/docs/syscalls/event_create.md
+++ b/docs/syscalls/event_create.md
@@ -18,9 +18,9 @@
 
 ## DESCRIPTION
 
-**event_create**() creates an event, which is an object that is signalable. That
+`zx_event_create()` creates an event, which is an object that is signalable. That
 is, its *ZX_USER_SIGNAL_n* (where *n* is 0 through 7) signals can be
-manipulated using **object_signal**().
+manipulated using [`zx_object_signal()`].
 
 The newly-created handle will have the [basic
 rights](../rights.md#zx_rights_basic) plus *ZX_RIGHT_SIGNAL*.
@@ -33,7 +33,7 @@
 
 ## RETURN VALUE
 
-**event_create**() returns ZX_OK and a valid event handle (via *out*) on success.
+`zx_event_create()` returns ZX_OK and a valid event handle (via *out*) on success.
 On failure, an error value is returned.
 
 ## ERRORS
@@ -54,3 +54,7 @@
 [object_wait_many](object_wait_many.md),
 [handle_replace](handle_replace.md),
 [object_signal](object_signal.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_object_signal()`]: object_signal.md
diff --git a/docs/syscalls/eventpair_create.md b/docs/syscalls/eventpair_create.md
index 86f93a0..6a95824 100644
--- a/docs/syscalls/eventpair_create.md
+++ b/docs/syscalls/eventpair_create.md
@@ -20,12 +20,12 @@
 
 ## DESCRIPTION
 
-**eventpair_create**() creates an event pair, which is a pair of objects that
+`zx_eventpair_create()` creates an event pair, which is a pair of objects that
 are mutually signalable.
 
 The signals *ZX_EVENTPAIR_SIGNALED* and *ZX_USER_SIGNAL_n* (where *n* is 0 through 7)
-may be set or cleared using **object_signal**() (modifying the signals on the
-object itself), or **object_signal_peer**() (modifying the signals on its
+may be set or cleared using [`zx_object_signal()`] (modifying the signals on the
+object itself), or [`zx_object_signal_peer()`] (modifying the signals on its
 counterpart).
 
 When all the handles to one of the objects have been closed, the
@@ -46,7 +46,7 @@
 
 ## RETURN VALUE
 
-**eventpair_create**() returns **ZX_OK** on success. On failure, a (negative)
+`zx_eventpair_create()` returns **ZX_OK** on success. On failure, a (negative)
 error code is returned.
 
 
@@ -72,3 +72,8 @@
 [handle_replace](handle_replace.md),
 [object_signal](object_signal.md),
 [object_signal_peer](object_signal.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_object_signal()`]: object_signal.md
+[`zx_object_signal_peer()`]: object_signal_peer.md
diff --git a/docs/syscalls/fifo_create.md b/docs/syscalls/fifo_create.md
index d2d81a7..24df7fc 100644
--- a/docs/syscalls/fifo_create.md
+++ b/docs/syscalls/fifo_create.md
@@ -22,7 +22,7 @@
 
 ## DESCRIPTION
 
-**fifo_create**() creates a fifo, which is actually a pair of fifos
+`zx_fifo_create()` creates a fifo, which is actually a pair of fifos
 of *elem_count* entries of *elem_size* bytes.  Two endpoints are
 returned.  Writing to one endpoint enqueues an element into the fifo
 that the opposing endpoint reads from.
@@ -45,7 +45,7 @@
 
 ## RETURN VALUE
 
-**fifo_create**() returns **ZX_OK** on success. In the event of
+`zx_fifo_create()` returns **ZX_OK** on success. In the event of
 failure, one of the following values is returned.
 
 ## ERRORS
diff --git a/docs/syscalls/fifo_read.md b/docs/syscalls/fifo_read.md
index edce806..ac4d789 100644
--- a/docs/syscalls/fifo_read.md
+++ b/docs/syscalls/fifo_read.md
@@ -22,7 +22,7 @@
 
 ## DESCRIPTION
 
-**fifo_read**() attempts to read up to *count* elements from the fifo
+`zx_fifo_read()` attempts to read up to *count* elements from the fifo
 *handle* into *data*.
 
 Fewer elements may be read than requested if there are insufficient
@@ -30,12 +30,12 @@
 elements actually read is returned via *actual_count*.
 
 The element size specified by *elem_size* must match the element size
-that was passed into **fifo_create**().
+that was passed into [`zx_fifo_create()`].
 
 *data* must have a size of at least *count * elem_size* bytes.
 
 *actual_count* is allowed to be NULL. This is useful when reading
-a single element: if *count* is 1 and **fifo_read**() returns **ZX_OK**,
+a single element: if *count* is 1 and `zx_fifo_read()` returns **ZX_OK**,
 *actual_count* is guaranteed to be 1 and thus can be safely ignored.
 
 It is not legal to read zero elements.
@@ -48,7 +48,7 @@
 
 ## RETURN VALUE
 
-**fifo_read**() returns **ZX_OK** on success, and returns
+`zx_fifo_read()` returns **ZX_OK** on success, and returns
 the number of elements read (at least one) via *actual_count*.
 
 ## ERRORS
@@ -74,3 +74,7 @@
 
 [fifo_create](fifo_create.md),
 [fifo_write](fifo_write.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_fifo_create()`]: fifo_create.md
diff --git a/docs/syscalls/fifo_write.md b/docs/syscalls/fifo_write.md
index 885369a..bb345c5 100644
--- a/docs/syscalls/fifo_write.md
+++ b/docs/syscalls/fifo_write.md
@@ -22,7 +22,7 @@
 
 ## DESCRIPTION
 
-**fifo_write**() attempts to write up to *count* elements
+`zx_fifo_write()` attempts to write up to *count* elements
 (*count * elem_size* bytes) from *data* to the fifo specified by *handle*.
 
 Fewer elements may be written than requested if there is insufficient
@@ -30,10 +30,10 @@
 elements actually written is returned via *actual_count*.
 
 The element size specified by *elem_size* must match the element size
-that was passed into **fifo_create**().
+that was passed into [`zx_fifo_create()`].
 
 *actual_count* is allowed to be NULL. This is useful when writing
-a single element: if *count* is 1 and **fifo_write**() returns **ZX_OK**,
+a single element: if *count* is 1 and `zx_fifo_write()` returns **ZX_OK**,
 *actual_count* is guaranteed to be 1 and thus can be safely ignored.
 
 It is not legal to write zero elements.
@@ -46,7 +46,7 @@
 
 ## RETURN VALUE
 
-**fifo_write**() returns **ZX_OK** on success, and returns
+`zx_fifo_write()` returns **ZX_OK** on success, and returns
 the number of elements written (at least one) via *actual_count*.
 
 ## ERRORS
@@ -72,3 +72,7 @@
 
 [fifo_create](fifo_create.md),
 [fifo_read](fifo_read.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_fifo_create()`]: fifo_create.md
diff --git a/docs/syscalls/futex_get_owner.md b/docs/syscalls/futex_get_owner.md
index b4d9e96..16ef0a3 100644
--- a/docs/syscalls/futex_get_owner.md
+++ b/docs/syscalls/futex_get_owner.md
@@ -34,7 +34,7 @@
 
 ## RETURN VALUE
 
-**futex_get_owner**() returns **ZX_OK** on success, and koids hold the owner of
+`zx_futex_get_owner()` returns **ZX_OK** on success, and koids hold the owner of
 the futex at the time of the syscall, or **ZX_KOID_INVALID** if there was no
 owner.
 
diff --git a/docs/syscalls/futex_requeue.md b/docs/syscalls/futex_requeue.md
index 8bcfa4f..4521a71 100644
--- a/docs/syscalls/futex_requeue.md
+++ b/docs/syscalls/futex_requeue.md
@@ -44,17 +44,17 @@
 
 ### Effects on the _wake futex_ target
 
-A successful call to **futex_requeue**() results in the owner of the futex being
+A successful call to `zx_futex_requeue()` results in the owner of the futex being
 set to nothing, regardless of the wake count.  In order to transfer ownership of
-a futex, use the **futex_requeue_single_owner**() variant instead.
-**futex_requeue_single_owner**() will attempt to wake exactly one thread from the
+a futex, use the [`zx_futex_requeue_single_owner()`] variant instead.
+[`zx_futex_requeue_single_owner()`] will attempt to wake exactly one thread from the
 futex wait queue.  If there is at least one thread to wake, the owner of the futex will be
 set to the thread which was woken.  Otherwise, the futex
 will have no owner.
 
 ### Effects on the _requeue futex_ target
 
-A successful call to **futex_requeue**() or **futex_requeue_single_owner**()
+A successful call to `zx_futex_requeue()` or [`zx_futex_requeue_single_owner()`]
 results in the owner of the futex being set to the thread referenced by the
 `new_requeue_owner` handle, or to nothing if `new_requeue_owner` is
 **ZX_HANDLE_INVALID**.
@@ -67,7 +67,7 @@
 
 ## RETURN VALUE
 
-**futex_requeue**() returns **ZX_OK** on success.
+`zx_futex_requeue()` returns **ZX_OK** on success.
 
 ## ERRORS
 
@@ -87,3 +87,7 @@
 [futex_requeue_single_owner](futex_requeue_single_owner.md),
 [futex_wait](futex_wait.md),
 [futex_wake](futex_wake.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_futex_requeue_single_owner()`]: futex_requeue_single_owner.md
diff --git a/docs/syscalls/futex_requeue_single_owner.md b/docs/syscalls/futex_requeue_single_owner.md
index 4773283..cdddc19 100644
--- a/docs/syscalls/futex_requeue_single_owner.md
+++ b/docs/syscalls/futex_requeue_single_owner.md
@@ -32,7 +32,7 @@
 
 ## RETURN VALUE
 
-**futex_requeue_single_owner**() returns **ZX_OK** on success.
+`zx_futex_requeue_single_owner()` returns **ZX_OK** on success.
 
 ## ERRORS
 
diff --git a/docs/syscalls/futex_wait.md b/docs/syscalls/futex_wait.md
index 1da93b3..7fae329 100644
--- a/docs/syscalls/futex_wait.md
+++ b/docs/syscalls/futex_wait.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**futex_wait**() atomically verifies that *value_ptr* still contains the value
+`zx_futex_wait()` atomically verifies that *value_ptr* still contains the value
 *current_value* and sleeps until the futex is made available by a call to
 `zx_futex_wake`. Optionally, the thread can also be woken up after the
 *deadline* (with respect to **ZX_CLOCK_MONOTONIC**) passes.
@@ -29,20 +29,20 @@
 ## SPURIOUS WAKEUPS
 
 A component that uses futexes should be prepared to handle spurious
-wakeups.  A spurious wakeup is a situation where **futex_wait**()
+wakeups.  A spurious wakeup is a situation where `zx_futex_wait()`
 returns successfully even though the component did not wake the waiter
-by calling **futex_wake**().
+by calling [`zx_futex_wake()`].
 
 Zircon's implementation of futexes currently does not generate
 spurious wakeups itself.  However, commonly-used algorithms that use
 futexes can sometimes generate spurious wakeups.  For example, the
 usual implementation of `mutex_unlock` can potentially produce a
-**futex_wake**() call on a memory location after the location has been
+[`zx_futex_wake()`] call on a memory location after the location has been
 freed and reused for unrelated purposes.
 
 ## OWNERSHIP
 
-A successful call to **futex_wait**() results in the owner of the futex being
+A successful call to `zx_futex_wait()` results in the owner of the futex being
 set to the thread referenced by the `new_futex_owner` handle, or to nothing if
 `new_futex_owner` is **ZX_HANDLE_INVALID**.
 
@@ -57,7 +57,7 @@
 
 ## RETURN VALUE
 
-**futex_wait**() returns **ZX_OK** on success.
+`zx_futex_wait()` returns **ZX_OK** on success.
 
 ## ERRORS
 
@@ -76,3 +76,7 @@
 [futex objects](../objects/futex.md),
 [futex_requeue](futex_requeue.md),
 [futex_wake](futex_wake.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_futex_wake()`]: futex_wake.md
diff --git a/docs/syscalls/futex_wake.md b/docs/syscalls/futex_wake.md
index 21439a9..45f4db4 100644
--- a/docs/syscalls/futex_wake.md
+++ b/docs/syscalls/futex_wake.md
@@ -26,10 +26,10 @@
 
 ## OWNERSHIP
 
-A successful call to **futex_wake**() results in the owner of the futex being
+A successful call to `zx_futex_wake()` results in the owner of the futex being
 set to nothing, regardless of the wake count.  In order to transfer ownership of
-a futex, use the **futex_wake_single_owner**() variant instead.
-**futex_wake_single_owner**() will attempt to wake exactly one thread from the
+a futex, use the [`zx_futex_wake_single_owner()`] variant instead.
+[`zx_futex_wake_single_owner()`] will attempt to wake exactly one thread from the
 futex wait queue.  If there is at least one thread to wake, the owner of the
 futex will be set to the thread which was woken.  Otherwise, the futex will have
 no owner.
@@ -45,7 +45,7 @@
 
 ## RETURN VALUE
 
-**futex_wake**() returns **ZX_OK** on success.
+`zx_futex_wake()` returns **ZX_OK** on success.
 
 ## ERRORS
 
@@ -57,3 +57,7 @@
 [futex_requeue](futex_requeue.md),
 [futex_wait](futex_wait.md).
 [futex_wake_single_owner](futex_wake_single_owner.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_futex_wake_single_owner()`]: futex_wake_single_owner.md
diff --git a/docs/syscalls/futex_wake_handle_close_thread_exit.md b/docs/syscalls/futex_wake_handle_close_thread_exit.md
index 0d9fd74..5dc5b99 100644
--- a/docs/syscalls/futex_wake_handle_close_thread_exit.md
+++ b/docs/syscalls/futex_wake_handle_close_thread_exit.md
@@ -22,7 +22,7 @@
 
 ## DESCRIPTION
 
-**futex_wake_handle_close_thread_exit**() does a sequence of four operations:
+`zx_futex_wake_handle_close_thread_exit()` does a sequence of four operations:
 1. `atomic_store_explicit(value_ptr, new_value, memory_order_release);`
 2. `zx_futex_wake(value_ptr, wake_count);`
 3. `zx_handle_close(close_handle);`
@@ -43,7 +43,7 @@
 
 ## RETURN VALUE
 
-**futex_wake_handle_close_thread_exit**() does not return.
+`zx_futex_wake_handle_close_thread_exit()` does not return.
 
 ## ERRORS
 
diff --git a/docs/syscalls/futex_wake_single_owner.md b/docs/syscalls/futex_wake_single_owner.md
index 0ac452c..8cd7220 100644
--- a/docs/syscalls/futex_wake_single_owner.md
+++ b/docs/syscalls/futex_wake_single_owner.md
@@ -28,7 +28,7 @@
 
 ## RETURN VALUE
 
-**futex_wake_single_owner**() returns **ZX_OK** on success.
+`zx_futex_wake_single_owner()` returns **ZX_OK** on success.
 
 ## ERRORS
 
diff --git a/docs/syscalls/guest_create.md b/docs/syscalls/guest_create.md
index 1565e1a..f4042fe 100644
--- a/docs/syscalls/guest_create.md
+++ b/docs/syscalls/guest_create.md
@@ -21,15 +21,15 @@
 
 ## DESCRIPTION
 
-**guest_create**() creates a guest, which is a virtual machine that can be run
+`zx_guest_create()` creates a guest, which is a virtual machine that can be run
 within the hypervisor, with *vmar_handle* used to represent the physical address
 space of the guest.
 
 To create a guest, a *resource* of *ZX_RSRC_KIND_HYPERVISOR* must be supplied.
 
 In order to begin execution within the guest, a VMO should be mapped into
-*vmar_handle* using **vmar_map**(), and a VCPU must be created using
-**vcpu_create**(), and then run using **vcpu_resume**().
+*vmar_handle* using [`zx_vmar_map()`], and a VCPU must be created using
+[`zx_vcpu_create()`], and then run using [`zx_vcpu_resume()`].
 
 Additionally, a VMO should be mapped into *vmar_handle* to provide a guest with
 physical memory.
@@ -40,9 +40,9 @@
 
 **ZX_RIGHT_DUPLICATE** &mdash; *guest_handle* may be duplicated.
 
-**ZX_RIGHT_WRITE** &mdash; A trap to be may be set using **guest_set_trap**().
+**ZX_RIGHT_WRITE** &mdash; A trap to be may be set using [`zx_guest_set_trap()`].
 
-**ZX_RIGHT_MANAGE_PROCESS** &mdash; A VCPU may be created using **vcpu_create**().
+**ZX_RIGHT_MANAGE_PROCESS** &mdash; A VCPU may be created using [`zx_vcpu_create()`].
 
 See [vmar_create](vmar_create.md) for the set of rights applied to
 *vmar_handle*.
@@ -55,7 +55,7 @@
 
 ## RETURN VALUE
 
-**guest_create**() returns ZX_OK on success. On failure, an error value is
+`zx_guest_create()` returns ZX_OK on success. On failure, an error value is
 returned.
 
 ## ERRORS
@@ -81,3 +81,10 @@
 [vcpu_write_state](vcpu_write_state.md),
 [vmar_map](vmar_map.md),
 [vmo_create](vmo_create.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_guest_set_trap()`]: guest_set_trap.md
+[`zx_vcpu_create()`]: vcpu_create.md
+[`zx_vcpu_resume()`]: vcpu_resume.md
+[`zx_vmar_map()`]: vmar_map.md
diff --git a/docs/syscalls/guest_set_trap.md b/docs/syscalls/guest_set_trap.md
index 2b61b23..f703f5c 100644
--- a/docs/syscalls/guest_set_trap.md
+++ b/docs/syscalls/guest_set_trap.md
@@ -23,20 +23,20 @@
 
 ## DESCRIPTION
 
-**guest_set_trap**() sets a trap within a guest, which generates a packet when
+`zx_guest_set_trap()` sets a trap within a guest, which generates a packet when
 there is an access by a VCPU within the address range defined by *addr* and
 *size*, within the address space defined by *kind*.
 
 If *port_handle* is specified, a packet for the trap will be delivered through
 *port_handle* each time the trap is triggered, otherwise if *ZX_HANDLE_INVALID*
-is given, a packet will be delivered through **vcpu_resume**(). This provides
+is given, a packet will be delivered through [`zx_vcpu_resume()`]. This provides
 control over whether the packet is delivered asynchronously or synchronously.
 
 When *port_handle* is specified, a fixed number of packets are pre-allocated
 per trap. If all the packets are exhausted, execution of the VCPU that caused
 the trap will be paused. When at least one packet is dequeued, execution of the
-VCPU will resume. To dequeue a packet from *port_handle*, use **port_wait**().
-Multiple threads may use **port_wait**() to dequeue packets, enabling the use
+VCPU will resume. To dequeue a packet from *port_handle*, use [`zx_port_wait()`].
+Multiple threads may use [`zx_port_wait()`] to dequeue packets, enabling the use
 of a thread pool to handle traps.
 
 *key* is used to set the key field within *zx_port_packet_t*, and can be used to
@@ -69,7 +69,7 @@
 
 ## RETURN VALUE
 
-**guest_set_trap**() returns ZX_OK on success. On failure, an error value is
+`zx_guest_set_trap()` returns ZX_OK on success. On failure, an error value is
 returned.
 
 ## ERRORS
@@ -116,3 +116,8 @@
 [vcpu_interrupt](vcpu_interrupt.md),
 [vcpu_read_state](vcpu_read_state.md),
 [vcpu_write_state](vcpu_write_state.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_port_wait()`]: port_wait.md
+[`zx_vcpu_resume()`]: vcpu_resume.md
diff --git a/docs/syscalls/handle_close.md b/docs/syscalls/handle_close.md
index 00f8259..8493759 100644
--- a/docs/syscalls/handle_close.md
+++ b/docs/syscalls/handle_close.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**handle_close**() closes a *handle*, causing the underlying object to be
+`zx_handle_close()` closes a *handle*, causing the underlying object to be
 reclaimed by the kernel if no other handles to it exist.
 
 If the *handle* was used in a pending [object_wait_one](object_wait_one.md) or a
@@ -35,7 +35,7 @@
 
 ## RETURN VALUE
 
-**handle_close**() returns **ZX_OK** on success.
+`zx_handle_close()` returns **ZX_OK** on success.
 
 ## ERRORS
 
diff --git a/docs/syscalls/handle_close_many.md b/docs/syscalls/handle_close_many.md
index 13c50c1..79336fe 100644
--- a/docs/syscalls/handle_close_many.md
+++ b/docs/syscalls/handle_close_many.md
@@ -19,7 +19,7 @@
 
 ## DESCRIPTION
 
-**handle_close_many**() closes a number of handles, causing each
+`zx_handle_close_many()` closes a number of handles, causing each
 underlying object to be reclaimed by the kernel if no other handles to
 it exist.
 
@@ -40,7 +40,7 @@
 
 ## RETURN VALUE
 
-**handle_close_many**() returns **ZX_OK** on success.
+`zx_handle_close_many()` returns **ZX_OK** on success.
 
 ## ERRORS
 
diff --git a/docs/syscalls/handle_duplicate.md b/docs/syscalls/handle_duplicate.md
index b91bdaf..4e87d22 100644
--- a/docs/syscalls/handle_duplicate.md
+++ b/docs/syscalls/handle_duplicate.md
@@ -20,7 +20,7 @@
 
 ## DESCRIPTION
 
-**handle_duplicate**() creates a duplicate of *handle*, referring
+`zx_handle_duplicate()` creates a duplicate of *handle*, referring
 to the same underlying object, with new access rights *rights*.
 
 To duplicate the handle with the same rights use **ZX_RIGHT_SAME_RIGHTS**. If different
@@ -35,7 +35,7 @@
 
 ## RETURN VALUE
 
-**handle_duplicate**() returns ZX_OK and the duplicate handle via *out* on success.
+`zx_handle_duplicate()` returns ZX_OK and the duplicate handle via *out* on success.
 
 ## ERRORS
 
diff --git a/docs/syscalls/handle_replace.md b/docs/syscalls/handle_replace.md
index a003a80..bb03c3b 100644
--- a/docs/syscalls/handle_replace.md
+++ b/docs/syscalls/handle_replace.md
@@ -20,7 +20,7 @@
 
 ## DESCRIPTION
 
-**handle_replace**() creates a replacement for *handle*, referring to
+`zx_handle_replace()` creates a replacement for *handle*, referring to
 the same underlying object, with new access rights *rights*.
 
 *handle* is always invalidated.
@@ -37,7 +37,7 @@
 
 ## RETURN VALUE
 
-**handle_replace**() returns **ZX_OK** and the replacement handle (via *out*)
+`zx_handle_replace()` returns **ZX_OK** and the replacement handle (via *out*)
 on success.
 
 ## ERRORS
diff --git a/docs/syscalls/interrupt_ack.md b/docs/syscalls/interrupt_ack.md
index c23e8bb..e6db74a 100644
--- a/docs/syscalls/interrupt_ack.md
+++ b/docs/syscalls/interrupt_ack.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**interrupt_ack**() acknowledges an interrupt object, causing it to be eligible
+`zx_interrupt_ack()` acknowledges an interrupt object, causing it to be eligible
 to trigger again (and delivering a packet to the port it is bound to).
 
 If the interrupt object is a physical interrupt, if it is a level interrupt and
@@ -29,8 +29,8 @@
 Virtual interrupts behave as edge interrupts.
 
 This syscall only operates on interrupts which are bound to a port.  Interrupts
-being waited upon with **interrupt_wait**() do not need to be re-armed with this
-call -- it happens automatically when **interrupt_wait**() is called.
+being waited upon with [`zx_interrupt_wait()`] do not need to be re-armed with this
+call -- it happens automatically when [`zx_interrupt_wait()`] is called.
 
 ## RIGHTS
 
@@ -40,7 +40,7 @@
 
 ## RETURN VALUE
 
-**interrupt_ack**() returns **ZX_OK** on success. In the event
+`zx_interrupt_ack()` returns **ZX_OK** on success. In the event
 of failure, a negative error value is returned.
 
 ## ERRORS
@@ -51,7 +51,7 @@
 
 **ZX_ERR_BAD_STATE** *handle* is not bound to a port.
 
-**ZX_ERR_CANCELED**  **zx_interrupt_destroy**() was called on *handle*.
+**ZX_ERR_CANCELED**  [`zx_interrupt_destroy()`] was called on *handle*.
 
 **ZX_ERR_ACCESS_DENIED** *handle* lacks **ZX_RIGHT_WRITE**.
 
@@ -64,3 +64,8 @@
 [interrupt_wait](interrupt_wait.md),
 [port_wait](port_wait.md),
 [handle_close](handle_close.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_interrupt_destroy()`]: interrupt_destroy.md
+[`zx_interrupt_wait()`]: interrupt_wait.md
diff --git a/docs/syscalls/interrupt_bind.md b/docs/syscalls/interrupt_bind.md
index 3668600..6b28374 100644
--- a/docs/syscalls/interrupt_bind.md
+++ b/docs/syscalls/interrupt_bind.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**interrupt_bind**() binds an interrupt object to a port.
+`zx_interrupt_bind()` binds an interrupt object to a port.
 
 An interrupt object may only be bound to a single port and may only be bound once.
 The interrupt can only bind to a port which is created with **ZX_PORT_BIND_TO_INTERRUPT**
@@ -33,7 +33,7 @@
 when binding the interrupt will be present in the `key` field of the `zx_port_packet_t`.
 
 Before another packet may be delivered, the bound interrupt must be re-armed using the
-**interrupt_ack**() syscall.  This is (in almost all cases) best done after the interrupt
+[`zx_interrupt_ack()`] syscall.  This is (in almost all cases) best done after the interrupt
 packet has been fully processed.  Especially in the case of multiple threads reading
 packets from a port, if the processing thread re-arms the interrupt and it has triggered,
 a packet will immediately be delivered to a waiting thread.
@@ -51,7 +51,7 @@
 
 ## RETURN VALUE
 
-**interrupt_bind**() returns **ZX_OK** on success. In the event
+`zx_interrupt_bind()` returns **ZX_OK** on success. In the event
 of failure, a negative error value is returned.
 
 ## ERRORS
@@ -60,9 +60,9 @@
 
 **ZX_ERR_WRONG_TYPE** *handle* is not an interrupt object or *port_handle* is not a port object.
 
-**ZX_ERR_CANCELED**  **zx_interrupt_destroy**() was called on *handle*.
+**ZX_ERR_CANCELED**  [`zx_interrupt_destroy()`] was called on *handle*.
 
-**ZX_ERR_BAD_STATE**  A thread is waiting on the interrupt using **zx_interrupt_wait**()
+**ZX_ERR_BAD_STATE**  A thread is waiting on the interrupt using [`zx_interrupt_wait()`]
 
 **ZX_ERR_ACCESS_DENIED** the *handle* handle lacks **ZX_RIGHT_READ** or the *port_handle* handle
 lacks **ZX_RIGHT_WRITE**
@@ -80,3 +80,9 @@
 [interrupt_wait](interrupt_wait.md),
 [port_wait](port_wait.md),
 [handle_close](handle_close.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_interrupt_ack()`]: interrupt_ack.md
+[`zx_interrupt_destroy()`]: interrupt_destroy.md
+[`zx_interrupt_wait()`]: interrupt_wait.md
diff --git a/docs/syscalls/interrupt_bind_vcpu.md b/docs/syscalls/interrupt_bind_vcpu.md
index d0f6eff..6af37e0 100644
--- a/docs/syscalls/interrupt_bind_vcpu.md
+++ b/docs/syscalls/interrupt_bind_vcpu.md
@@ -20,12 +20,12 @@
 
 ## DESCRIPTION
 
-**interrupt_bind_vcpu**() binds an interrupt object to a VCPU. When the
+`zx_interrupt_bind_vcpu()` binds an interrupt object to a VCPU. When the
 interrupt object is triggered, the interrupt is redirected to the VCPU, in order
 to be processed by a guest with no host intervention.
 
 An interrupt object may be bound to multiple VCPUs, in order to distribute the
-interrupt. Simply invoke **interrupt_bind_vcpu**() with the same *handle*, but
+interrupt. Simply invoke `zx_interrupt_bind_vcpu()` with the same *handle*, but
 different *vcpu*s. However, all VCPUs must belong to a single guest.
 
 ## RIGHTS
@@ -38,7 +38,7 @@
 
 ## RETURN VALUE
 
-**interrupt_bind_vcpu**() returns *ZX_OK* on success. On failure, an error value
+`zx_interrupt_bind_vcpu()` returns *ZX_OK* on success. On failure, an error value
 is returned.
 
 ## ERRORS
@@ -48,10 +48,10 @@
 **ZX_ERR_WRONG_TYPE** *handle* is not an interrupt object or *vcpu* is not a
 VCPU.
 
-**ZX_ERR_CANCELED** **interrupt_destroy**() was called on *handle*.
+**ZX_ERR_CANCELED** [`zx_interrupt_destroy()`] was called on *handle*.
 
 **ZX_ERR_BAD_STATE**  a thread is waiting on the interrupt using
-**interrupt_wait**().
+[`zx_interrupt_wait()`].
 
 **ZX_ERR_ACCESS_DENIED** *handle* lacks *ZX_RIGHT_READ* or *vcpu* lacks
 *ZX_RIGHT_WRITE*.
@@ -67,3 +67,8 @@
 [guest_create](guest_create.md),
 [interrupt_create](interrupt_create.md),
 [vcpu_create](vcpu_create.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_interrupt_destroy()`]: interrupt_destroy.md
+[`zx_interrupt_wait()`]: interrupt_wait.md
diff --git a/docs/syscalls/interrupt_create.md b/docs/syscalls/interrupt_create.md
index 0c9d5b0..a357629 100644
--- a/docs/syscalls/interrupt_create.md
+++ b/docs/syscalls/interrupt_create.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**interrupt_create**() creates an interrupt object which represents a physical
+`zx_interrupt_create()` creates an interrupt object which represents a physical
 or virtual interrupt.
 
 If *options* is **ZX_INTERRUPT_VIRTUAL**, *src_obj* and *src_num* are ignored and
@@ -37,14 +37,14 @@
 
 The handles will have *ZX_RIGHT_INSPECT*, *ZX_RIGHT_DUPLICATE*, *ZX_RIGHT_TRANSFER*
 (allowing them to be sent to another process via channel write), *ZX_RIGHT_READ*,
-*ZX_RIGHT_WRITE* (required for **interrupt_ack**()), *ZX_RIGHT_WAIT* (required for
-**interrupt_wait**(), and *ZX_RIGHT_SIGNAL* (required for **interrupt_trigger**()).
+*ZX_RIGHT_WRITE* (required for [`zx_interrupt_ack()`]), *ZX_RIGHT_WAIT* (required for
+[`zx_interrupt_wait()`], and *ZX_RIGHT_SIGNAL* (required for [`zx_interrupt_trigger()`]).
 
 Interrupts are said to be "triggered" when the underlying physical interrupt occurs
-or when **interrupt_trigger**() is called on a virtual interrupt.  A triggered interrupt,
-when bound to a port with **interrupt_bind**(), causes a packet to be delivered to the port.
+or when [`zx_interrupt_trigger()`] is called on a virtual interrupt.  A triggered interrupt,
+when bound to a port with [`zx_interrupt_bind()`], causes a packet to be delivered to the port.
 
-If not bound to a port, an interrupt object may be waited on with **interrupt_wait**().
+If not bound to a port, an interrupt object may be waited on with [`zx_interrupt_wait()`].
 
 Interrupts cannot be waited on with the **object_wait_** family of calls.
 
@@ -56,7 +56,7 @@
 
 ## RETURN VALUE
 
-**interrupt_create**() returns **ZX_OK** on success. In the event
+`zx_interrupt_create()` returns **ZX_OK** on success. In the event
 of failure, a negative error value is returned.
 
 ## ERRORS
@@ -82,3 +82,10 @@
 [interrupt_wait](interrupt_wait.md),
 [port_wait](port_wait.md),
 [handle_close](handle_close.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_interrupt_ack()`]: interrupt_ack.md
+[`zx_interrupt_bind()`]: interrupt_bind.md
+[`zx_interrupt_trigger()`]: interrupt_trigger.md
+[`zx_interrupt_wait()`]: interrupt_wait.md
diff --git a/docs/syscalls/interrupt_destroy.md b/docs/syscalls/interrupt_destroy.md
index 288bf79..8b3c26e 100644
--- a/docs/syscalls/interrupt_destroy.md
+++ b/docs/syscalls/interrupt_destroy.md
@@ -18,8 +18,8 @@
 
 ## DESCRIPTION
 
-**interrupt_destroy**() "destroys" an interrupt object, putting it in a state
-where any **interrupt_wait**() operations on it will return ZX_ERR_CANCELED,
+`zx_interrupt_destroy()` "destroys" an interrupt object, putting it in a state
+where any [`zx_interrupt_wait()`] operations on it will return ZX_ERR_CANCELED,
 and it is unbound from any ports it was bound to.
 
 This provides a clean shut down mechanism.  Closing the last handle to the
@@ -28,10 +28,10 @@
 
 If the interrupt object is bound to a port when cancellation happens, if it
 has not yet triggered, or it has triggered but the packet has not yet been
-received by a caller of **port_wait**(), success is returned and any packets
+received by a caller of [`zx_port_wait()`], success is returned and any packets
 in flight are removed.  Otherwise, **ZX_ERR_NOT_FOUND** is returned, indicating
 that the packet has been read but the interrupt has not been re-armed by calling
-**zx_interrupt_ack**().
+[`zx_interrupt_ack()`].
 
 ## RIGHTS
 
@@ -41,7 +41,7 @@
 
 ## RETURN VALUE
 
-**interrupt_destroy**() returns **ZX_OK** on success. In the event
+`zx_interrupt_destroy()` returns **ZX_OK** on success. In the event
 of failure, a negative error value is returned.
 
 ## ERRORS
@@ -64,3 +64,9 @@
 [interrupt_wait](interrupt_wait.md),
 [port_wait](port_wait.md),
 [handle_close](handle_close.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_interrupt_ack()`]: interrupt_ack.md
+[`zx_interrupt_wait()`]: interrupt_wait.md
+[`zx_port_wait()`]: port_wait.md
diff --git a/docs/syscalls/interrupt_trigger.md b/docs/syscalls/interrupt_trigger.md
index 8d5085d..fd6dacc 100644
--- a/docs/syscalls/interrupt_trigger.md
+++ b/docs/syscalls/interrupt_trigger.md
@@ -20,9 +20,9 @@
 
 ## DESCRIPTION
 
-**interrupt_trigger**() is used to trigger a virtual interrupt interrupt object,
+`zx_interrupt_trigger()` is used to trigger a virtual interrupt interrupt object,
 causing an interrupt message packet to arrive on the bound port, if it is bound
-to a port, or **interrupt_wait**() to return if it is waiting on this interrupt.
+to a port, or [`zx_interrupt_wait()`] to return if it is waiting on this interrupt.
 
 *options* must be zero.
 
@@ -45,7 +45,7 @@
 
 **ZX_ERR_BAD_STATE** *handle* is not a virtual interrupt.
 
-**ZX_ERR_CANCELED**  **zx_interrupt_destroy**() was called on *handle*.
+**ZX_ERR_CANCELED**  [`zx_interrupt_destroy()`] was called on *handle*.
 
 **ZX_ERR_ACCESS_DENIED** *handle* lacks **ZX_RIGHT_SIGNAL**.
 
@@ -60,3 +60,8 @@
 [interrupt_wait](interrupt_wait.md),
 [port_wait](port_wait.md),
 [handle_close](handle_close.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_interrupt_destroy()`]: interrupt_destroy.md
+[`zx_interrupt_wait()`]: interrupt_wait.md
diff --git a/docs/syscalls/interrupt_wait.md b/docs/syscalls/interrupt_wait.md
index efe6aae..e83957c 100644
--- a/docs/syscalls/interrupt_wait.md
+++ b/docs/syscalls/interrupt_wait.md
@@ -18,14 +18,14 @@
 
 ## DESCRIPTION
 
-**interrupt_wait**() is a blocking syscall which causes the caller to
+`zx_interrupt_wait()` is a blocking syscall which causes the caller to
 wait until an interrupt is triggered.  It can only be used on interrupt
-objects that have not been bound to a port with **interrupt_bind**()
+objects that have not been bound to a port with [`zx_interrupt_bind()`]
 
 It also, before the waiting begins, will acknowledge the interrupt object,
-as if **zx_interrupt_ack**() were called on it.
+as if [`zx_interrupt_ack()`] were called on it.
 
-The wait may be aborted with **zx_interrupt_destroy**() or by closing the handle.
+The wait may be aborted with [`zx_interrupt_destroy()`] or by closing the handle.
 
 ## RIGHTS
 
@@ -35,7 +35,7 @@
 
 ## RETURN VALUE
 
-**interrupt_wait**() returns **ZX_OK** on success, and *out_timestamp*, if
+`zx_interrupt_wait()` returns **ZX_OK** on success, and *out_timestamp*, if
 non-NULL, returns the timestamp of when the interrupt was triggered (relative
 to **ZX_CLOCK_MONOTONIC**)
 
@@ -49,7 +49,7 @@
 
 **ZX_ERR_ACCESS_DENIED** *handle* lacks **ZX_RIGHT_WAIT**.
 
-**ZX_ERR_CANCELED**  *handle* was closed while waiting or **zx_interrupt_destroy**() was called
+**ZX_ERR_CANCELED**  *handle* was closed while waiting or [`zx_interrupt_destroy()`] was called
 on it.
 
 **ZX_ERR_INVALID_ARGS** the *out_timestamp* parameter is an invalid pointer.
@@ -63,3 +63,9 @@
 [interrupt_trigger](interrupt_trigger.md),
 [port_wait](port_wait.md),
 [handle_close](handle_close.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_interrupt_ack()`]: interrupt_ack.md
+[`zx_interrupt_bind()`]: interrupt_bind.md
+[`zx_interrupt_destroy()`]: interrupt_destroy.md
diff --git a/docs/syscalls/iommu_create.md b/docs/syscalls/iommu_create.md
index ad5bbd3..8dd16c4 100644
--- a/docs/syscalls/iommu_create.md
+++ b/docs/syscalls/iommu_create.md
@@ -22,7 +22,7 @@
 
 ## DESCRIPTION
 
-**iommu_create**() creates a new object in the kernel representing an IOMMU device.
+`zx_iommu_create()` creates a new object in the kernel representing an IOMMU device.
 
 The value of *type* determines the interpretation of *desc*.  See below for
 details about the values of *type*.
@@ -48,7 +48,7 @@
 
 ## RETURN VALUE
 
-**iommu_create**() returns ZX_OK and a handle to the new IOMMU
+`zx_iommu_create()` returns ZX_OK and a handle to the new IOMMU
 (via *out*) on success.  In the event of failure, a negative error value
 is returned.
 
diff --git a/docs/syscalls/job_create.md b/docs/syscalls/job_create.md
index d3cc82a..cccc09e 100644
--- a/docs/syscalls/job_create.md
+++ b/docs/syscalls/job_create.md
@@ -20,7 +20,7 @@
 
 ## DESCRIPTION
 
-**job_create**() creates a new child [job object](../objects/job.md) given a
+`zx_job_create()` creates a new child [job object](../objects/job.md) given a
 parent job.
 
 Upon success a handle for the new job is returned.
@@ -40,7 +40,7 @@
 
 ## RETURN VALUE
 
-**job_create**() returns ZX_OK and a handle to the new job
+`zx_job_create()` returns ZX_OK and a handle to the new job
 (via *out*) on success.  In the event of failure, a negative error value
 is returned.
 
diff --git a/docs/syscalls/job_set_policy.md b/docs/syscalls/job_set_policy.md
index c0e4094..fb1b162 100644
--- a/docs/syscalls/job_set_policy.md
+++ b/docs/syscalls/job_set_policy.md
@@ -100,7 +100,7 @@
 
 ## RETURN VALUE
 
-**zx_job_set_policy**() returns **ZX_OK** on success.  In the event of failure,
+`zx_job_set_policy()` returns **ZX_OK** on success.  In the event of failure,
 a negative error value is returned.
 
 ## NOTES
diff --git a/docs/syscalls/nanosleep.md b/docs/syscalls/nanosleep.md
index c0c1cd0..4655254 100644
--- a/docs/syscalls/nanosleep.md
+++ b/docs/syscalls/nanosleep.md
@@ -18,11 +18,11 @@
 
 ## DESCRIPTION
 
-**nanosleep**() suspends the calling thread execution until *deadline* passes on
+`zx_nanosleep()` suspends the calling thread execution until *deadline* passes on
 **ZX_CLOCK_MONOTONIC**. A *deadline* value less than or equal to **0**
 immediately yields the thread.
 
-To sleep for a duration, use [**zx_deadline_after**](deadline_after.md) and the
+To sleep for a duration, use [[`zx_deadline_after()`]](deadline_after.md) and the
 **ZX_\<time-unit\>** helpers:
 
 ```
@@ -53,7 +53,7 @@
 
 ## RETURN VALUE
 
-**nanosleep**() always returns **ZX_OK**.
+`zx_nanosleep()` always returns **ZX_OK**.
 
 ## SEE ALSO
 
@@ -61,3 +61,7 @@
 [xz_timer_create](timer_create.md),
 [timer_set](timer_set.md),
 [timer_cancel](timer_cancel.md),
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_deadline_after()`]: deadline_after.md
diff --git a/docs/syscalls/object_get_child.md b/docs/syscalls/object_get_child.md
index cb0abce..002f51a 100644
--- a/docs/syscalls/object_get_child.md
+++ b/docs/syscalls/object_get_child.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**zx_object_get_child** attempts to find a child of the object referred to
+`zx_object_get_child()` attempts to find a child of the object referred to
 by *handle* which has the kernel object id specified by *koid*.  If such an
 object exists, and the requested *rights* are not greater than those provided
 by the *handle* to the parent, a new handle to the specified child object is
diff --git a/docs/syscalls/object_get_cookie.md b/docs/syscalls/object_get_cookie.md
index 02c0bae..ce5e438 100644
--- a/docs/syscalls/object_get_cookie.md
+++ b/docs/syscalls/object_get_cookie.md
@@ -23,15 +23,15 @@
 Some objects (Events, Event pairs, Resources, VMOs) may have a cookie attached,
 which is a 64bit opaque value.  Initially the cookie is undefined and not readable.
 
-If the cookie has been set on an object, **zx_object_get_cookie**() may be
+If the cookie has been set on an object, `zx_object_get_cookie()` may be
 called, using the same object as *scope* to obtain the cookie.
 
 Event pairs are special.  If one side of the pair is closed, the other side's
 cookie is invalidated. An invalidated cookie is not get-able or set-able with any scope.
 
 Cookies are useful for objects that will be passed to another process and
-later returned.  By setting the cookie with **zx_object_set_cookie**(),
-using a *scope* that is not accessible by other processes, **zx_object_get_cookie**()
+later returned.  By setting the cookie with [`zx_object_set_cookie()`],
+using a *scope* that is not accessible by other processes, `zx_object_get_cookie()`
 may later be used to verify that a handle is referring to an object that was
 "created" by the calling process and simultaneously return an ID or pointer
 to local state for that object.
@@ -48,7 +48,7 @@
 
 ## RETURN VALUE
 
-**zx_object_get_cookie**() returns **ZX_OK** and the *cookie* value on success.
+`zx_object_get_cookie()` returns **ZX_OK** and the *cookie* value on success.
 In the event of failure, a negative error value is returned.
 
 
@@ -66,3 +66,7 @@
 ## SEE ALSO
 
 [object_set_cookie](object_set_cookie.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_object_set_cookie()`]: object_set_cookie.md
diff --git a/docs/syscalls/object_get_info.md b/docs/syscalls/object_get_info.md
index bf1fb12..739ccdc 100644
--- a/docs/syscalls/object_get_info.md
+++ b/docs/syscalls/object_get_info.md
@@ -23,7 +23,7 @@
 
 ## DESCRIPTION
 
-**object_get_info()** requests information about the provided handle (or the
+`zx_object_get_info()` requests information about the provided handle (or the
 object the handle refers to). The *topic* parameter indicates what specific
 information is desired.
 
@@ -715,7 +715,7 @@
 
 ## RETURN VALUE
 
-**zx_object_get_info**() returns **ZX_OK** on success. In the event of
+`zx_object_get_info()` returns **ZX_OK** on success. In the event of
 failure, a negative error value is returned.
 
 ## ERRORS
diff --git a/docs/syscalls/object_get_property.md b/docs/syscalls/object_get_property.md
index 9d36a2c..944eb53 100644
--- a/docs/syscalls/object_get_property.md
+++ b/docs/syscalls/object_get_property.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**zx_object_get_property()** requests the value of a kernel object's property.
+`zx_object_get_property()` requests the value of a kernel object's property.
 Getting a property requires **ZX_RIGHT_GET_PROPERTY** rights on the handle.
 
 The *handle* parameter indicates the target kernel object. Different properties
@@ -163,7 +163,7 @@
 
 ## RETURN VALUE
 
-**zx_object_get_property**() returns **ZX_OK** on success. In the event of
+`zx_object_get_property()` returns **ZX_OK** on success. In the event of
 failure, a negative error value is returned.
 
 ## ERRORS
diff --git a/docs/syscalls/object_set_cookie.md b/docs/syscalls/object_set_cookie.md
index 115d6cb..a7e12c6 100644
--- a/docs/syscalls/object_set_cookie.md
+++ b/docs/syscalls/object_set_cookie.md
@@ -23,7 +23,7 @@
 which is a 64bit opaque value.  Initially the Cookie is undefined and not
 readable.
 
-Once **zx_object_set_cookie**() is called successfully, the cookie is set,
+Once `zx_object_set_cookie()` is called successfully, the cookie is set,
 and the Object referenced by the *scope* handle becomes the key necessary
 to read the cookie or modify it.  The *scope* may never be changed for the
 lifetime of the object.
@@ -32,8 +32,8 @@
 cookie is invalidated. An invalidated cookie is not get-able or set-able with any scope.
 
 Cookies are useful for objects that will be passed to another process and
-later returned.  By setting the cookie with **zx_object_set_cookie**(),
-using a *scope* that is not accessible by other processes, **zx_object_get_cookie**()
+later returned.  By setting the cookie with `zx_object_set_cookie()`,
+using a *scope* that is not accessible by other processes, [`zx_object_get_cookie()`]
 may later be used to verify that a handle is referring to an object that was
 "created" by the calling process and simultaneously return an ID or pointer
 to local state for that object.
@@ -50,7 +50,7 @@
 
 ## RETURN VALUE
 
-**zx_object_set_cookie**() returns **ZX_OK** on success.  In the event of failure,
+`zx_object_set_cookie()` returns **ZX_OK** on success.  In the event of failure,
 a negative error value is returned.
 
 
@@ -60,10 +60,14 @@
 
 **ZX_ERR_NOT_SUPPORTED**  *handle* is not a handle to an object that may have a cookie set.
 
-**ZX_ERR_ACCESS_DENIED**  **zx_object_set_cookie**() was called previously with a different
+**ZX_ERR_ACCESS_DENIED**  `zx_object_set_cookie()` was called previously with a different
 object as the *scope*, or the cookie has not been set.
 
 
 ## SEE ALSO
 
 [object_get_cookie](object_get_cookie.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_object_get_cookie()`]: object_get_cookie.md
diff --git a/docs/syscalls/object_set_property.md b/docs/syscalls/object_set_property.md
index 0429bd0..1c3f2b7 100644
--- a/docs/syscalls/object_set_property.md
+++ b/docs/syscalls/object_set_property.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**zx_object_set_property()** modifies the value of a kernel object's property.
+`zx_object_set_property()` modifies the value of a kernel object's property.
 Setting a property requires **ZX_RIGHT_SET_PROPERTY** rights on the handle.
 
 See [object_get_property()](object_get_property.md) for a full description.
diff --git a/docs/syscalls/object_signal.md b/docs/syscalls/object_signal.md
index 540d503..2102b1a 100644
--- a/docs/syscalls/object_signal.md
+++ b/docs/syscalls/object_signal.md
@@ -20,7 +20,7 @@
 
 ## DESCRIPTION
 
-**zx_object_signal**() asserts and deasserts the userspace-accessible signal
+`zx_object_signal()` asserts and deasserts the userspace-accessible signal
 bits on an object.
 
 Most of the 32 signals are reserved for system use and are assigned to
@@ -43,7 +43,7 @@
 
 ## RETURN VALUE
 
-**zx_object_signal**() returns **ZX_OK** on success. In the event of failure, a
+`zx_object_signal()` returns **ZX_OK** on success. In the event of failure, a
 negative error value is returned.
 
 ## ERRORS
diff --git a/docs/syscalls/object_signal_peer.md b/docs/syscalls/object_signal_peer.md
index 3526923..853fa34 100644
--- a/docs/syscalls/object_signal_peer.md
+++ b/docs/syscalls/object_signal_peer.md
@@ -20,7 +20,7 @@
 
 ## DESCRIPTION
 
-**zx_object_signal_peer**() asserts and deasserts the userspace-accessible
+`zx_object_signal_peer()` asserts and deasserts the userspace-accessible
 signal bits on the object's peer. A object peer is the opposite endpoint of a
 *channel*, *socket*, *fifo*, or *eventpair*.
 
@@ -44,7 +44,7 @@
 
 ## RETURN VALUE
 
-**zx_object_signal_peer**() returns **ZX_OK** on success. In the event of
+`zx_object_signal_peer()` returns **ZX_OK** on success. In the event of
 failure, a negative error value is returned.
 
 ## ERRORS
diff --git a/docs/syscalls/object_wait_async.md b/docs/syscalls/object_wait_async.md
index 2a7c2dc..4d9f83e 100644
--- a/docs/syscalls/object_wait_async.md
+++ b/docs/syscalls/object_wait_async.md
@@ -22,9 +22,9 @@
 
 ## DESCRIPTION
 
-**object_wait_async**() is a non-blocking syscall which causes packets to be
+`zx_object_wait_async()` is a non-blocking syscall which causes packets to be
 enqueued on *port* when the specified condition is met.
-Use **port_wait**() to retrieve the packets.
+Use [`zx_port_wait()`] to retrieve the packets.
 
 *handle* points to the object that is to be watched for changes and must be a waitable object.
 
@@ -32,7 +32,7 @@
 
 In both cases, *signals* indicates which signals on the object specified by *handle*
 will cause a packet to be enqueued, and if **any** of those signals are asserted when
-**object_wait_async**() is called, or become asserted afterwards, a packet will be
+`zx_object_wait_async()` is called, or become asserted afterwards, a packet will be
 enqueued on *port* containing all of the currently-asserted signals (not just the ones
 listed in the *signals* argument).
 
@@ -45,7 +45,7 @@
 queue, the packet's *observed* field is updated to include all of the currently-asserted
 signals (without removing the existing signals).
 
-In either mode, **port_cancel**() will terminate the operation and if a packet was
+In either mode, [`zx_port_cancel()`] will terminate the operation and if a packet was
 in the queue on behalf of the operation, that packet will be removed from the queue.
 
 If the handle is closed, the operation will also be terminated, but packets already
@@ -64,7 +64,7 @@
 
 ## RETURN VALUE
 
-**object_wait_async**() returns **ZX_OK** if the subscription succeeded.
+`zx_object_wait_async()` returns **ZX_OK** if the subscription succeeded.
 
 ## ERRORS
 
@@ -95,3 +95,7 @@
 [port_queue](port_queue.md),
 [port_wait](port_wait.md).
 
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_port_cancel()`]: port_cancel.md
+[`zx_port_wait()`]: port_wait.md
diff --git a/docs/syscalls/object_wait_many.md b/docs/syscalls/object_wait_many.md
index a1b17cc..72c59b4 100644
--- a/docs/syscalls/object_wait_many.md
+++ b/docs/syscalls/object_wait_many.md
@@ -20,7 +20,7 @@
 
 ## DESCRIPTION
 
-**object_wait_many**() is a blocking syscall which causes the caller to
+`zx_object_wait_many()` is a blocking syscall which causes the caller to
 wait until either the *deadline* passes or at least one of the specified
 signals is asserted by the object to which the associated handle refers.
 If an object is already asserting at least one of the specified signals,
@@ -60,7 +60,7 @@
 
 ## RETURN VALUE
 
-**object_wait_many**() returns **ZX_OK** if any of *waitfor* signals were
+`zx_object_wait_many()` returns **ZX_OK** if any of *waitfor* signals were
 observed on their respective object before *deadline* passed.
 
 In the event of **ZX_ERR_TIMED_OUT**, *items* may reflect state changes
diff --git a/docs/syscalls/object_wait_one.md b/docs/syscalls/object_wait_one.md
index f8d7fbe..d392f3f 100644
--- a/docs/syscalls/object_wait_one.md
+++ b/docs/syscalls/object_wait_one.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**object_wait_one**() is a blocking syscall which causes the caller to
+`zx_object_wait_one()` is a blocking syscall which causes the caller to
 wait until either the *deadline* passes or the object to which *handle* refers
 asserts at least one of the specified *signals*. If the object is already
 asserting at least one of the specified *signals*, the wait ends immediately.
@@ -46,7 +46,7 @@
 
 ## RETURN VALUE
 
-**object_wait_one**() returns **ZX_OK** if any of *signals* were observed
+`zx_object_wait_one()` returns **ZX_OK** if any of *signals* were observed
 on the object before *deadline* passes.
 
 In the event of **ZX_ERR_TIMED_OUT**, *observed* may reflect state changes
diff --git a/docs/syscalls/pmt_unpin.md b/docs/syscalls/pmt_unpin.md
index d5659c7..b8864b9 100644
--- a/docs/syscalls/pmt_unpin.md
+++ b/docs/syscalls/pmt_unpin.md
@@ -18,11 +18,11 @@
 
 ## DESCRIPTION
 
-**pmt_unpin**() unpins pages that were previously pinned by **bti_pin**(),
+`zx_pmt_unpin()` unpins pages that were previously pinned by [`zx_bti_pin()`],
 and revokes the access that was granted by the pin call.
 
 Always consumes *handle*. It is invalid to use *handle* afterwards, including
-to call **handle_close**() on it.
+to call [`zx_handle_close()`] on it.
 
 ## RIGHTS
 
@@ -32,7 +32,7 @@
 
 ## RETURN VALUE
 
-On success, **pmt_unpin**() returns *ZX_OK*.
+On success, `zx_pmt_unpin()` returns *ZX_OK*.
 In the event of failure, a negative error value is returned.
 
 ## ERRORS
@@ -46,3 +46,8 @@
 [bti_create](bti_create.md),
 [bti_release_quarantine](bti_release_quarantine.md),
 [bti_pin](bti_pin.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_bti_pin()`]: bti_pin.md
+[`zx_handle_close()`]: handle_close.md
diff --git a/docs/syscalls/port_cancel.md b/docs/syscalls/port_cancel.md
index c548c1b..4b7cd23 100644
--- a/docs/syscalls/port_cancel.md
+++ b/docs/syscalls/port_cancel.md
@@ -20,8 +20,8 @@
 
 ## DESCRIPTION
 
-**port_cancel**() is a non-blocking syscall which cancels
-pending **object_wait_async**() calls done with *source* and *key*.
+`zx_port_cancel()` is a non-blocking syscall which cancels
+pending [`zx_object_wait_async()`] calls done with *source* and *key*.
 
 When this call succeeds no new packets from the object pointed by
 *source* with *key* will be delivered to *handle*, and pending queued
@@ -35,8 +35,8 @@
 
 ## RETURN VALUE
 
-**zx_port_cancel**() returns **ZX_OK** if cancellation succeeded and
-either queued packets were removed or pending **object_wait_async**() were
+`zx_port_cancel()` returns **ZX_OK** if cancellation succeeded and
+either queued packets were removed or pending [`zx_object_wait_async()`] were
 canceled.
 
 ## ERRORS
@@ -50,8 +50,12 @@
 **ZX_ERR_NOT_SUPPORTED**  *source* is a handle that cannot be waited on.
 
 **ZX_ERR_NOT_FOUND** if either no pending packets or pending
-**object_wait_async** calls with *source* and *key* were found.
+[`zx_object_wait_async()`] calls with *source* and *key* were found.
 
 ## SEE ALSO
 
 [port_wait](port_wait.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_object_wait_async()`]: object_wait_async.md
diff --git a/docs/syscalls/port_create.md b/docs/syscalls/port_create.md
index 0e54346..052c7ab 100644
--- a/docs/syscalls/port_create.md
+++ b/docs/syscalls/port_create.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**port_create**() creates a port: a waitable object that can be used to read
+`zx_port_create()` creates a port: a waitable object that can be used to read
 packets queued by kernel or by user-mode.
 
 If you need this port to be bound to an interrupt, pass **ZX_PORT_BIND_TO_INTERRUPT** to *options*,
@@ -41,7 +41,7 @@
 
 ## RETURN VALUE
 
-**port_create**() returns **ZX_OK** and a valid IO port handle via *out* on
+`zx_port_create()` returns **ZX_OK** and a valid IO port handle via *out* on
 success. In the event of failure, an error value is returned.
 
 ## ERRORS
diff --git a/docs/syscalls/port_queue.md b/docs/syscalls/port_queue.md
index ecbe556..1627f6a 100644
--- a/docs/syscalls/port_queue.md
+++ b/docs/syscalls/port_queue.md
@@ -19,7 +19,7 @@
 
 ## DESCRIPTION
 
-**port_queue**() queues a *packet* to the port specified
+`zx_port_queue()` queues a *packet* to the port specified
 by *handle*.
 
 ```
@@ -56,7 +56,7 @@
 
 ## RETURN VALUE
 
-**port_queue**() returns **ZX_OK** on successful queue of a packet.
+`zx_port_queue()` returns **ZX_OK** on successful queue of a packet.
 
 ## ERRORS
 
@@ -69,14 +69,18 @@
 **ZX_ERR_ACCESS_DENIED** *handle* does not have **ZX_RIGHT_WRITE**.
 
 **ZX_ERR_SHOULD_WAIT** the port has too many pending packets. Once a thread
-has drained some packets a new **port_queue**() call will likely succeed.
+has drained some packets a new `zx_port_queue()` call will likely succeed.
 
 ## NOTES
 
-The queue is drained by calling **port_wait**().
+The queue is drained by calling [`zx_port_wait()`].
 
 
 ## SEE ALSO
 
 [port_create](port_create.md).
 [port_wait](port_wait.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_port_wait()`]: port_wait.md
diff --git a/docs/syscalls/port_wait.md b/docs/syscalls/port_wait.md
index e826443..71769a0 100644
--- a/docs/syscalls/port_wait.md
+++ b/docs/syscalls/port_wait.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**port_wait**() is a blocking syscall which causes the caller to wait until at least
+`zx_port_wait()` is a blocking syscall which causes the caller to wait until at least
 one packet is available.
 
 Upon return, if successful *packet* will contain the earliest (in FIFO order)
@@ -33,12 +33,12 @@
 result in waiting forever.  A value in the past will result in an immediate
 timeout, unless a packet is already available for reading.
 
-Unlike **zx_object_wait_one**() and **zx_object_wait_many**() only one
+Unlike [`zx_object_wait_one()`] and [`zx_object_wait_many()`] only one
 waiting thread is released (per available packet) which makes ports
 amenable to be serviced by thread pools.
 
-There are two sources of packets: manually queued packets with **port_queue**() and packets
-generated by kernel when objects registered with **object_wait_async**() change state. In both
+There are two sources of packets: manually queued packets with [`zx_port_queue()`] and packets
+generated by kernel when objects registered with [`zx_object_wait_async()`] change state. In both
 cases the packet is always of type **zx_port_packet_t**:
 
 ```
@@ -59,7 +59,7 @@
 };
 ```
 
-In the case of packets generated via **port_queue**() *key* is the key in the
+In the case of packets generated via [`zx_port_queue()`] *key* is the key in the
 input packet, *type* is set to **ZX_PKT_TYPE_USER** and the union is of type **zx_packet_user_t**.
 
 ```
@@ -71,9 +71,9 @@
 } zx_packet_user_t;
 ```
 
-The caller of **port_queue**() controls all the values in the structure.
+The caller of [`zx_port_queue()`] controls all the values in the structure.
 
-In the case of packets generated via **object_wait_async**() *key* is the key passed to the
+In the case of packets generated via [`zx_object_wait_async()`] *key* is the key passed to the
 syscall, *type* is set to either **ZX_PKT_TYPE_SIGNAL_ONE** or **ZX_PKT_TYPE_SIGNAL_REP**
 and the union is of type **zx_packet_signal_t**:
 
@@ -86,7 +86,7 @@
 ```
 
 for **ZX_WAIT_ASYNC_ONCE** and **ZX_WAIT_ASYNC_REPEATING**: *trigger* is the signals
-used in the call to **object_wait_async**() and *count* is a per object defined count
+used in the call to [`zx_object_wait_async()`] and *count* is a per object defined count
 of pending operations. Use *key* to track what object this packet corresponds to and
 therefore match *count* with the operation.
 
@@ -102,7 +102,7 @@
 
 ## RETURN VALUE
 
-**port_wait**() returns **ZX_OK** on successful packet dequeuing.
+`zx_port_wait()` returns **ZX_OK** on successful packet dequeuing.
 
 ## ERRORS
 
@@ -120,3 +120,10 @@
 [port_create](port_create.md).
 [port_queue](port_queue.md).
 [object_wait_async](object_wait_async.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_object_wait_async()`]: object_wait_async.md
+[`zx_object_wait_many()`]: object_wait_many.md
+[`zx_object_wait_one()`]: object_wait_one.md
+[`zx_port_queue()`]: port_queue.md
diff --git a/docs/syscalls/process_create.md b/docs/syscalls/process_create.md
index 2a00821..a3b6a2b 100644
--- a/docs/syscalls/process_create.md
+++ b/docs/syscalls/process_create.md
@@ -23,7 +23,7 @@
 
 ## DESCRIPTION
 
-**process_create**() creates a new process.
+`zx_process_create()` creates a new process.
 
 Upon success, handles for the new process and the root of its address space
 are returned.  The thread will not start executing until *process_start()* is
@@ -47,7 +47,7 @@
 
 ## RETURN VALUE
 
-On success, **process_create**() returns **ZX_OK**, a handle to the new process
+On success, `zx_process_create()` returns **ZX_OK**, a handle to the new process
 (via *proc_handle*), and a handle to the root of its address space (via
 *vmar_handle*).  In the event of failure, a negative error value is returned.
 
diff --git a/docs/syscalls/process_exit.md b/docs/syscalls/process_exit.md
index 8315e9a..cbd9613 100644
--- a/docs/syscalls/process_exit.md
+++ b/docs/syscalls/process_exit.md
@@ -18,9 +18,9 @@
 
 ## DESCRIPTION
 
-The **zx_process_exit** call ends the calling process with the given
+The `zx_process_exit()` call ends the calling process with the given
 return code. The return code of a process can be queried via the
-**ZX_INFO_PROCESS** request to **zx_object_get_info**.
+**ZX_INFO_PROCESS** request to [`zx_object_get_info()`].
 
 ## RIGHTS
 
@@ -30,13 +30,17 @@
 
 ## RETURN VALUE
 
-**zx_process_exit** does not return.
+`zx_process_exit()` does not return.
 
 ## ERRORS
 
-**zx_process_exit** cannot fail.
+`zx_process_exit()` cannot fail.
 
 ## SEE ALSO
 
 [object_get_info](object_get_info.md),
 [process_create](process_create.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_object_get_info()`]: object_get_info.md
diff --git a/docs/syscalls/process_read_memory.md b/docs/syscalls/process_read_memory.md
index 5b65298..9b9f8af 100644
--- a/docs/syscalls/process_read_memory.md
+++ b/docs/syscalls/process_read_memory.md
@@ -22,7 +22,7 @@
 
 ## DESCRIPTION
 
-**zx_process_read_memory**() attempts to read memory of the specified process.
+`zx_process_read_memory()` attempts to read memory of the specified process.
 
 This function will eventually be replaced with something vmo-centric.
 
@@ -46,7 +46,7 @@
 
 ## RETURN VALUE
 
-**zx_process_read_memory**() returns **ZX_OK** on success.
+`zx_process_read_memory()` returns **ZX_OK** on success.
 In the event of failure, a negative error value is returned, and the number of
 bytes written to *buffer* is undefined.
 
diff --git a/docs/syscalls/process_start.md b/docs/syscalls/process_start.md
index 620ac64..0dd6037 100644
--- a/docs/syscalls/process_start.md
+++ b/docs/syscalls/process_start.md
@@ -23,10 +23,10 @@
 
 ## DESCRIPTION
 
-**process_start**() is similar to **thread_start**(), but is used for the
+`zx_process_start()` is similar to [`zx_thread_start()`], but is used for the
 purpose of starting the first thread in a process.
 
-**process_start**() causes a thread to begin execution at the program
+`zx_process_start()` causes a thread to begin execution at the program
 counter specified by *entry* and with the stack pointer set to *stack*.
 The arguments *arg1* and *arg2* are arranged to be in the architecture
 specific registers used for the first two arguments of a function call
@@ -35,7 +35,7 @@
 The first argument (*arg1*) is a handle, which will be transferred from
 the process of the caller to the process which is being started, and an
 appropriate handle value will be placed in arg1 for the newly started
-thread. If **process_start** returns an error, *arg1* is closed rather
+thread. If `zx_process_start()` returns an error, *arg1* is closed rather
 than transferred to the process being started.
 
 ## RIGHTS
@@ -50,7 +50,7 @@
 
 ## RETURN VALUE
 
-**process_start**() returns ZX_OK on success.
+`zx_process_start()` returns ZX_OK on success.
 In the event of failure, a negative error value is returned.
 
 ## ERRORS
@@ -77,3 +77,7 @@
 [thread_create](thread_create.md),
 [thread_exit](thread_exit.md),
 [thread_start](thread_start.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_thread_start()`]: thread_start.md
diff --git a/docs/syscalls/process_write_memory.md b/docs/syscalls/process_write_memory.md
index 47a5208..f73527a 100644
--- a/docs/syscalls/process_write_memory.md
+++ b/docs/syscalls/process_write_memory.md
@@ -22,7 +22,7 @@
 
 ## DESCRIPTION
 
-**zx_process_write_memory**() attempts to write memory of the specified process.
+`zx_process_write_memory()` attempts to write memory of the specified process.
 
 This function will eventually be replaced with something vmo-centric.
 
@@ -46,7 +46,7 @@
 
 ## RETURN VALUE
 
-**zx_process_write_memory**() returns **ZX_OK** on success.
+`zx_process_write_memory()` returns **ZX_OK** on success.
 In the event of failure, a negative error value is returned, and the number of
 bytes written to *buffer* is undefined.
 
diff --git a/docs/syscalls/resource_create.md b/docs/syscalls/resource_create.md
index d79486d..c83d806 100644
--- a/docs/syscalls/resource_create.md
+++ b/docs/syscalls/resource_create.md
@@ -24,7 +24,7 @@
 
 ## DESCRIPTION
 
-**resource_create**() creates an resource object for use with other DDK
+`zx_resource_create()` creates an resource object for use with other DDK
 syscalls. Resources are typically handed out to bus drivers and rarely need to
 be interacted with directly by drivers using driver protocols. Resource objects
 grant access to an address space range starting at *base* up to but not
@@ -55,14 +55,14 @@
 
 ## RETURN VALUE
 
-**resource_create**() returns **ZX_OK** on success. In the event of failure, a
+`zx_resource_create()` returns **ZX_OK** on success. In the event of failure, a
 negative error value is returned.
 
 The returned handle will have **ZX_RIGHT_TRANSFER** (allowing it to be sent to
 another process via channel write), **ZX_RIGHT_DUPLICATE** (allowing the handle
 to be duplicated), **ZX_RIGHT_INSPECT** (to allow inspection of the object with
 [object_get_info](object_get_info.md) and **ZX_RIGHT_WRITE** which is checked by
-**resource_create**() itself.
+`zx_resource_create()` itself.
 
 ## RIGHTS
 
@@ -93,4 +93,3 @@
 [handle_close](handle_close.md), [interrupt_create](interrupt_create.md),
 [ioports_request](ioports_request.md),
 [vmo_create_physical](vmo_create_physical.md)
-
diff --git a/docs/syscalls/smc_call.md b/docs/syscalls/smc_call.md
index 97aa77c..2576102 100644
--- a/docs/syscalls/smc_call.md
+++ b/docs/syscalls/smc_call.md
@@ -21,11 +21,11 @@
 
 ## DESCRIPTION
 
-**smc_call**() makes a Secure Monitor Call (SMC) from user space. It supports the ARM SMC Calling
+`zx_smc_call()` makes a Secure Monitor Call (SMC) from user space. It supports the ARM SMC Calling
 Convention using the *zx_smc_parameters_t* input parameter and *zx_smc_result_t* output parameter.
 The input *handle* must be a resource object with sufficient privileges in order to be executed.
 
-The majority of the parameters are opaque from **smc_call** perspective because they are
+The majority of the parameters are opaque from `zx_smc_call()` perspective because they are
 dependent upon the *func_id*. The *func_id* informs the Secure Monitor the service and function
 to be invoked. The *client_id* is an optional field intended for secure software to track and
 index the calling client OS. The *secure_os_id* is an optional field intended for use when there
@@ -44,7 +44,7 @@
 
 ## RETURN VALUE
 
-**smc_call**() returns ZX_OK if *handle* has sufficient privilege. The
+`zx_smc_call()` returns ZX_OK if *handle* has sufficient privilege. The
 return value of the smc call is returned via **out_smc_result** on success. In the event of
 failure, a negative error value is returned.
 
diff --git a/docs/syscalls/socket_accept.md b/docs/syscalls/socket_accept.md
index b883588..f51af05 100644
--- a/docs/syscalls/socket_accept.md
+++ b/docs/syscalls/socket_accept.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**socket_accept**() attempts to receive a new socket via an existing socket
+`zx_socket_accept()` attempts to receive a new socket via an existing socket
 connection.  The signal **ZX_SOCKET_ACCEPT** is asserted when there is a new
 socket available.
 
@@ -30,7 +30,7 @@
 
 ## RETURN VALUE
 
-**socket_accept**() returns **ZX_OK** on success and the received handle
+`zx_socket_accept()` returns **ZX_OK** on success and the received handle
 is returned via *out_socket*.  In the event of failure, one of the following
 values is returned.
 
diff --git a/docs/syscalls/socket_create.md b/docs/syscalls/socket_create.md
index 0c0af93..452cd70 100644
--- a/docs/syscalls/socket_create.md
+++ b/docs/syscalls/socket_create.md
@@ -20,7 +20,7 @@
 
 ## DESCRIPTION
 
-**socket_create**() creates a socket, a connected pair of
+`zx_socket_create()` creates a socket, a connected pair of
 bidirectional stream transports, that can move only data, and that
 have a maximum capacity.
 
@@ -33,7 +33,7 @@
 socket control plane.
 
 The **ZX_SOCKET_HAS_ACCEPT** flag may be set to enable transfer
-of sockets over this socket via **socket_share**() and **socket_accept**().
+of sockets over this socket via [`zx_socket_share()`] and [`zx_socket_accept()`].
 
 ## RIGHTS
 
@@ -43,7 +43,7 @@
 
 ## RETURN VALUE
 
-**socket_create**() returns **ZX_OK** on success. In the event of
+`zx_socket_create()` returns **ZX_OK** on success. In the event of
 failure, one of the following values is returned.
 
 ## ERRORS
@@ -66,3 +66,8 @@
 [socket_share](socket_share.md),
 [socket_shutdown](socket_shutdown.md),
 [socket_write](socket_write.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_socket_accept()`]: socket_accept.md
+[`zx_socket_share()`]: socket_share.md
diff --git a/docs/syscalls/socket_read.md b/docs/syscalls/socket_read.md
index 04b45bc..12af72b 100644
--- a/docs/syscalls/socket_read.md
+++ b/docs/syscalls/socket_read.md
@@ -22,7 +22,7 @@
 
 ## DESCRIPTION
 
-**socket_read**() attempts to read *buffer_size* bytes into *buffer*. If
+`zx_socket_read()` attempts to read *buffer_size* bytes into *buffer*. If
 successful, the number of bytes actually read are return via
 *actual*.
 
@@ -33,7 +33,7 @@
 If *buffer* is too small for the datagram, then the read will be
 truncated, and any remaining bytes in the datagram will be discarded.
 
-If *options* is set to **ZX_SOCKET_CONTROL**, then **socket_read**()
+If *options* is set to **ZX_SOCKET_CONTROL**, then `zx_socket_read()`
 attempts to read from the socket control plane.
 
 To determine how many bytes are available to read, use the **rx_buf_available**
@@ -48,7 +48,7 @@
 
 ## RETURN VALUE
 
-**socket_read**() returns **ZX_OK** on success, and writes into
+`zx_socket_read()` returns **ZX_OK** on success, and writes into
 *actual* (if non-NULL) the exact number of bytes read.
 
 ## ERRORS
diff --git a/docs/syscalls/socket_share.md b/docs/syscalls/socket_share.md
index cfcd6d4..3163856 100644
--- a/docs/syscalls/socket_share.md
+++ b/docs/syscalls/socket_share.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**socket_share**() attempts to send a new socket via an existing socket
+`zx_socket_share()` attempts to send a new socket via an existing socket
 connection.  The signal **ZX_SOCKET_SHARE** is asserted when it is possible
 to send a socket.
 
@@ -36,7 +36,7 @@
 
 ## RETURN VALUE
 
-**socket_share**() returns **ZX_OK** on success.  In the event of failure,
+`zx_socket_share()` returns **ZX_OK** on success.  In the event of failure,
 one of the following values is returned.
 
 ## ERRORS
diff --git a/docs/syscalls/socket_shutdown.md b/docs/syscalls/socket_shutdown.md
index 1f133e0..5c3a7d0 100644
--- a/docs/syscalls/socket_shutdown.md
+++ b/docs/syscalls/socket_shutdown.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**socket_shutdown**() attempts to prevent future reads or writes on a socket,
+`zx_socket_shutdown()` attempts to prevent future reads or writes on a socket,
 where options can be a combination of **ZX_SOCKET_SHUTDOWN_READ** and
 **ZX_SOCKET_SHUTDOWN_WRITE**:
 
@@ -41,7 +41,7 @@
 
 ## RETURN VALUE
 
-**socket_shutdown**() returns **ZX_OK** on success.
+`zx_socket_shutdown()` returns **ZX_OK** on success.
 
 ## ERRORS
 
diff --git a/docs/syscalls/socket_write.md b/docs/syscalls/socket_write.md
index 2c6f895..db7a817 100644
--- a/docs/syscalls/socket_write.md
+++ b/docs/syscalls/socket_write.md
@@ -22,10 +22,10 @@
 
 ## DESCRIPTION
 
-**socket_write**() attempts to write *buffer_size* bytes to the socket specified
+`zx_socket_write()` attempts to write *buffer_size* bytes to the socket specified
 by *handle*. The pointer to *bytes* may be NULL if *buffer_size* is zero.
 
-If **ZX_SOCKET_CONTROL** is passed to *options*, then **socket_write**()
+If **ZX_SOCKET_CONTROL** is passed to *options*, then `zx_socket_write()`
 attempts to write into the socket control plane. A write to the control plane is
 never short. If the socket control plane has insufficient space for *buffer*, it
 writes nothing and returns **ZX_ERR_OUT_OF_RANGE**.
@@ -55,7 +55,7 @@
 
 ## RETURN VALUE
 
-**socket_write**() returns **ZX_OK** on success.
+`zx_socket_write()` returns **ZX_OK** on success.
 
 ## ERRORS
 
diff --git a/docs/syscalls/system_get_features.md b/docs/syscalls/system_get_features.md
index bdbeb18..4b8fecd 100644
--- a/docs/syscalls/system_get_features.md
+++ b/docs/syscalls/system_get_features.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**system_get_features**() populates *features* with a bit mask of
+`zx_system_get_features()` populates *features* with a bit mask of
 hardware-specific features.  *kind* indicates the specific type of features
 to retrieve, e.g. *ZX_FEATURE_KIND_CPU*.  The supported kinds and the meaning
 of individual feature bits is hardware-dependent.
@@ -31,7 +31,7 @@
 
 ## RETURN VALUE
 
-**system_get_features**()  returns **ZX_OK** on success.
+`zx_system_get_features()`  returns **ZX_OK** on success.
 
 ## ERRORS
 
diff --git a/docs/syscalls/system_get_num_cpus.md b/docs/syscalls/system_get_num_cpus.md
index 9ed5594..d1954d3 100644
--- a/docs/syscalls/system_get_num_cpus.md
+++ b/docs/syscalls/system_get_num_cpus.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**system_get_num_cpus**() returns the number of CPUs (logical processors)
+`zx_system_get_num_cpus()` returns the number of CPUs (logical processors)
 that exist on the system currently running.  This number cannot change
 during a run of the system, only at boot time.
 
@@ -30,11 +30,11 @@
 
 ## RETURN VALUE
 
-**system_get_num_cpus**() returns the number of CPUs.
+`zx_system_get_num_cpus()` returns the number of CPUs.
 
 ## ERRORS
 
-**system_get_num_cpus**() cannot fail.
+`zx_system_get_num_cpus()` cannot fail.
 
 ## NOTES
 
diff --git a/docs/syscalls/system_get_physmem.md b/docs/syscalls/system_get_physmem.md
index b0991c3..8f65324 100644
--- a/docs/syscalls/system_get_physmem.md
+++ b/docs/syscalls/system_get_physmem.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**system_get_physmem**() returns the total size of physical memory on
+`zx_system_get_physmem()` returns the total size of physical memory on
 the machine, in bytes.
 
 ## RIGHTS
@@ -29,11 +29,11 @@
 
 ## RETURN VALUE
 
-**system_get_physmem**() returns a number in bytes.
+`zx_system_get_physmem()` returns a number in bytes.
 
 ## ERRORS
 
-**system_get_physmem**() cannot fail.
+`zx_system_get_physmem()` cannot fail.
 
 ## NOTES
 
diff --git a/docs/syscalls/system_get_version.md b/docs/syscalls/system_get_version.md
index eff9857..5b965b6 100644
--- a/docs/syscalls/system_get_version.md
+++ b/docs/syscalls/system_get_version.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**system_get_version**() fills in the given character array with a string
+`zx_system_get_version()` fills in the given character array with a string
 identifying the version of the Zircon system currently running.
 The provided size must be large enough for the complete string
 including its null terminator.
@@ -37,7 +37,7 @@
 
 ## RETURN VALUE
 
-**system_get_version**() returns **ZX_OK** on success.
+`zx_system_get_version()` returns **ZX_OK** on success.
 
 ## ERRORS
 
diff --git a/docs/syscalls/system_mexec.md b/docs/syscalls/system_mexec.md
index 19136df..e6e3f01 100644
--- a/docs/syscalls/system_mexec.md
+++ b/docs/syscalls/system_mexec.md
@@ -20,7 +20,7 @@
 
 ## DESCRIPTION
 
-**zx_system_mexec**() accepts two vmo handles: *kernel_vmo* should contain a
+`zx_system_mexec()` accepts two vmo handles: *kernel_vmo* should contain a
 kernel image and *bootimage_vmo* should contain an initrd whose address shall
 be passed to the new kernel as a kernel argument.
 
@@ -45,7 +45,7 @@
 
 ## RETURN VALUE
 
-**zx_system_mexec**() shall not return upon success.
+`zx_system_mexec()` shall not return upon success.
 
 ## SEE ALSO
 
diff --git a/docs/syscalls/system_mexec_payload_get.md b/docs/syscalls/system_mexec_payload_get.md
index 5cb0339..a52e5bb 100644
--- a/docs/syscalls/system_mexec_payload_get.md
+++ b/docs/syscalls/system_mexec_payload_get.md
@@ -20,7 +20,7 @@
 
 ## DESCRIPTION
 
-**zx_system_mexec_payload_get**() accepts a resource handle and a
+`zx_system_mexec_payload_get()` accepts a resource handle and a
 pointer/length corresponding to an output buffer and fills the buffer with an
 incomplete ZBI containing a sequence of entries that should be appended to a
 ZBI before passing that image to zx_system_mexec().
@@ -37,7 +37,7 @@
 
 ## RETURN VALUE
 
-**zx_system_mexec_payload_get**() returns ZX_OK on success.
+`zx_system_mexec_payload_get()` returns ZX_OK on success.
 
 ## SEE ALSO
 
diff --git a/docs/syscalls/task_bind_exception_port.md b/docs/syscalls/task_bind_exception_port.md
index 619d006..2ace05f 100644
--- a/docs/syscalls/task_bind_exception_port.md
+++ b/docs/syscalls/task_bind_exception_port.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**task_bind_exception_port**() is used to bind (or unbind) a port to
+`zx_task_bind_exception_port()` is used to bind (or unbind) a port to
 the exception port of a job, process, or thread.
 
 *port* is an IO port created by [zx_port_create](port_create.md). The same
@@ -54,7 +54,7 @@
 
 ## RETURN VALUE
 
-**task_bind_exception_port**() returns **ZX_OK** on success.
+`zx_task_bind_exception_port()` returns **ZX_OK** on success.
 In the event of failure, a negative error value is returned.
 
 ## ERRORS
diff --git a/docs/syscalls/task_kill.md b/docs/syscalls/task_kill.md
index 67876b0..63b9eb8 100644
--- a/docs/syscalls/task_kill.md
+++ b/docs/syscalls/task_kill.md
@@ -37,13 +37,13 @@
 
 ## RETURN VALUE
 
-On success, **zx_task_kill**() returns **ZX_OK**. If a process or thread uses
+On success, `zx_task_kill()` returns **ZX_OK**. If a process or thread uses
 this syscall to kill itself, this syscall does not return.
 
 ## NOTES
 
 When using this syscall on a process, the return code for the process
-is -1 as reported by **object_get_info**() via the ZX_INFO_PROCESS topic.
+is -1 as reported by [`zx_object_get_info()`] via the ZX_INFO_PROCESS topic.
 
 ## ERRORS
 
@@ -58,3 +58,7 @@
 
 [job_create](job_create.md),
 [process_create](process_create.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_object_get_info()`]: object_get_info.md
diff --git a/docs/syscalls/task_resume_from_exception.md b/docs/syscalls/task_resume_from_exception.md
index 4d63813..3dad171 100644
--- a/docs/syscalls/task_resume_from_exception.md
+++ b/docs/syscalls/task_resume_from_exception.md
@@ -20,7 +20,7 @@
 
 ## DESCRIPTION
 
-**task_resume_from_exception**() causes the requested task to resume after an
+`zx_task_resume_from_exception()` causes the requested task to resume after an
 exception has been reported to the debug exception port. The port parameter
 should identify the [exception port](task_bind_exception_port.md) to which the
 exception being resumed from was delivered.
@@ -59,7 +59,7 @@
 
 ## RETURN VALUE
 
-**task_resume_from_exception**() returns **ZX_OK** on success.
+`zx_task_resume_from_exception()` returns **ZX_OK** on success.
 In the event of failure, a negative error value is returned.
 
 ## ERRORS
diff --git a/docs/syscalls/task_suspend.md b/docs/syscalls/task_suspend.md
index cf75818..1b9d407 100644
--- a/docs/syscalls/task_suspend.md
+++ b/docs/syscalls/task_suspend.md
@@ -18,10 +18,10 @@
 
 ## DESCRIPTION
 
-**task_suspend**() causes the requested task to suspend
+`zx_task_suspend()` causes the requested task to suspend
 execution. Task suspension is not synchronous and the task might not
 be suspended before the call returns. The task will be suspended soon
-after **task_suspend**() is invoked, unless it is currently blocked in
+after `zx_task_suspend()` is invoked, unless it is currently blocked in
 the kernel, in which case it will suspend after being unblocked.
 
 Tasks can be suspended and/or resumed before they are started. If a task is
@@ -29,7 +29,7 @@
 Similarly, starting a new thread on a suspended process will suspend the thread
 before it executes any code.
 
-Invoking **task_kill**() on a task that is suspended will successfully kill
+Invoking [`zx_task_kill()`] on a task that is suspended will successfully kill
 the task.
 
 ## RESUMING
@@ -64,7 +64,7 @@
 
 ## RETURN VALUE
 
-**task_suspend**() returns **ZX_OK** on success.
+`zx_task_suspend()` returns **ZX_OK** on success.
 In the event of failure, a negative error value is returned.
 
 ## ERRORS
@@ -82,3 +82,7 @@
 ## LIMITATIONS
 
 Currently only thread and process handles are supported.
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_task_kill()`]: task_kill.md
diff --git a/docs/syscalls/task_suspend_token.md b/docs/syscalls/task_suspend_token.md
index c42804f..680446f 100644
--- a/docs/syscalls/task_suspend_token.md
+++ b/docs/syscalls/task_suspend_token.md
@@ -1,8 +1,8 @@
 # zx_task_suspend_token
 
 This function replaces [task_suspend](task_suspend.md). When all callers are
-updated, **task_suspend** will be deleted and this function will be renamed
-**task_suspend**.
+updated, [`zx_task_suspend()`] will be deleted and this function will be renamed
+[`zx_task_suspend()`].
 
 ## NAME
 
@@ -22,13 +22,13 @@
 
 ## DESCRIPTION
 
-**task_suspend_token**() causes the requested task to suspend execution. Task
+`zx_task_suspend_token()` causes the requested task to suspend execution. Task
 suspension is not synchronous and the task might not be suspended before the
-call returns. The task will be suspended soon after **task_suspend_token**() is
+call returns. The task will be suspended soon after `zx_task_suspend_token()` is
 invoked, unless it is currently blocked in the kernel, in which case it will
 suspend after being unblocked.
 
-Invoking **task_kill**() on a task that is suspended will successfully kill
+Invoking [`zx_task_kill()`] on a task that is suspended will successfully kill
 the task.
 
 ## RESUMING
@@ -47,7 +47,7 @@
 
 ## RETURN VALUE
 
-**task_suspend**() returns **ZX_OK** on success.
+[`zx_task_suspend()`] returns **ZX_OK** on success.
 In the event of failure, a negative error value is returned.
 
 ## ERRORS
@@ -63,3 +63,8 @@
 ## LIMITATIONS
 
 Currently only thread handles are supported.
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_task_kill()`]: task_kill.md
+[`zx_task_suspend()`]: task_suspend.md
diff --git a/docs/syscalls/thread_create.md b/docs/syscalls/thread_create.md
index d8e387c..9a006d7 100644
--- a/docs/syscalls/thread_create.md
+++ b/docs/syscalls/thread_create.md
@@ -22,7 +22,7 @@
 
 ## DESCRIPTION
 
-**thread_create**() creates a thread within the specified process.
+`zx_thread_create()` creates a thread within the specified process.
 
 Upon success a handle for the new thread is returned.  The thread
 will not start executing until *thread_start()* is called.
@@ -31,7 +31,7 @@
 
 Thread handles may be waited on and will assert the signal
 *ZX_THREAD_TERMINATED* when the thread stops executing (due to
-**thread_exit**() being called).
+[`zx_thread_exit()`] being called).
 
 *process* is the controlling [process object](../objects/process.md) for the
 new thread, which will become a child of that process.
@@ -46,7 +46,7 @@
 
 ## RETURN VALUE
 
-On success, **thread_create**() returns **ZX_OK** and a handle (via *out*)
+On success, `zx_thread_create()` returns **ZX_OK** and a handle (via *out*)
 to the new thread.  In the event of failure, a negative error value is
 returned.
 
@@ -74,3 +74,7 @@
 [object_wait_many](object_wait_many.md),
 [thread_exit](thread_exit.md),
 [thread_start](thread_start.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_thread_exit()`]: thread_exit.md
diff --git a/docs/syscalls/thread_exit.md b/docs/syscalls/thread_exit.md
index 325280e..7151479 100644
--- a/docs/syscalls/thread_exit.md
+++ b/docs/syscalls/thread_exit.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**thread_exit**() causes the currently running thread to cease
+`zx_thread_exit()` causes the currently running thread to cease
 running and exit.
 
 The signal *ZX_THREAD_TERMINATED* will be asserted on the thread
@@ -33,7 +33,7 @@
 
 ## RETURN VALUE
 
-**thread_exit**() does not return.
+`zx_thread_exit()` does not return.
 
 ## SEE ALSO
 
diff --git a/docs/syscalls/thread_read_state.md b/docs/syscalls/thread_read_state.md
index e7af390..f8040ed 100644
--- a/docs/syscalls/thread_read_state.md
+++ b/docs/syscalls/thread_read_state.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**thread_read_state**() reads one aspect of state of the thread. The thread
+`zx_thread_read_state()` reads one aspect of state of the thread. The thread
 state may only be read when the thread is halted for an exception or the thread
 is suspended.
 
@@ -73,7 +73,7 @@
 
 ## RETURN VALUE
 
-**thread_read_state**() returns **ZX_OK** on success.
+`zx_thread_read_state()` returns **ZX_OK** on success.
 In the event of failure, a negative error value is returned.
 
 ## ERRORS
diff --git a/docs/syscalls/thread_start.md b/docs/syscalls/thread_start.md
index bc24091..1a6a331 100644
--- a/docs/syscalls/thread_start.md
+++ b/docs/syscalls/thread_start.md
@@ -22,7 +22,7 @@
 
 ## DESCRIPTION
 
-**thread_start**() causes a thread to begin execution at the program counter
+`zx_thread_start()` causes a thread to begin execution at the program counter
 specified by *thread_entry* and with the stack pointer set to *stack*. The
 arguments *arg1* and *arg2* are arranged to be in the architecture specific
 registers used for the first two arguments of a function call before the thread
@@ -32,11 +32,11 @@
 
 Thread handles may be waited on and will assert the signal
 *ZX_THREAD_TERMINATED* when the thread stops executing (due to
-**thread_exit**() being called.
+[`zx_thread_exit()`] being called.
 
-*thread_entry* shall point to a function that must call **thread_exit**() or
-**futex_wake_handle_close_thread_exit**() or
-**vmar_unmap_handle_close_thread_exit**() before reaching the last instruction.
+*thread_entry* shall point to a function that must call [`zx_thread_exit()`] or
+[`zx_futex_wake_handle_close_thread_exit()`] or
+[`zx_vmar_unmap_handle_close_thread_exit()`] before reaching the last instruction.
 Below is an example:
 
 ```
@@ -58,7 +58,7 @@
 
 ## RETURN VALUE
 
-**thread_start**() returns ZX_OK on success.
+`zx_thread_start()` returns ZX_OK on success.
 In the event of failure, a negative error value is returned.
 
 ## ERRORS
@@ -83,3 +83,9 @@
 [thread_exit](thread_exit.md),
 [futex_wake_handle_close_thread_exit](futex_wake_handle_close_thread_exit.md),
 [vmar_unmap_handle_close_thread_exit](vmar_unmap_handle_close_thread_exit.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_futex_wake_handle_close_thread_exit()`]: futex_wake_handle_close_thread_exit.md
+[`zx_thread_exit()`]: thread_exit.md
+[`zx_vmar_unmap_handle_close_thread_exit()`]: vmar_unmap_handle_close_thread_exit.md
diff --git a/docs/syscalls/thread_write_state.md b/docs/syscalls/thread_write_state.md
index f9b03c7..57d3f7b 100644
--- a/docs/syscalls/thread_write_state.md
+++ b/docs/syscalls/thread_write_state.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**thread_write_state**() writes one aspect of state of the thread. The thread
+`zx_thread_write_state()` writes one aspect of state of the thread. The thread
 state may only be written when the thread is halted for an exception or the
 thread is suspended.
 
@@ -58,7 +58,7 @@
 
 ## RETURN VALUE
 
-**thread_write_state**() returns **ZX_OK** on success.
+`zx_thread_write_state()` returns **ZX_OK** on success.
 In the event of failure, a negative error value is returned.
 
 ## ERRORS
diff --git a/docs/syscalls/ticks_get.md b/docs/syscalls/ticks_get.md
index a5cfb45..3337439 100644
--- a/docs/syscalls/ticks_get.md
+++ b/docs/syscalls/ticks_get.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**zx_ticks_get**() returns the number of high-precision timer ticks since boot.
+`zx_ticks_get()` returns the number of high-precision timer ticks since boot.
 
 These ticks may be processor cycles, high speed timer, profiling timer, etc.
 They are not guaranteed to continue advancing when the system is asleep.
@@ -31,7 +31,7 @@
 
 ## RETURN VALUE
 
-**zx_ticks_get**() returns the number of high-precision timer ticks since boot.
+`zx_ticks_get()` returns the number of high-precision timer ticks since boot.
 
 ## ERRORS
 
diff --git a/docs/syscalls/ticks_per_second.md b/docs/syscalls/ticks_per_second.md
index ef0a75a..d1453c7 100644
--- a/docs/syscalls/ticks_per_second.md
+++ b/docs/syscalls/ticks_per_second.md
@@ -18,11 +18,11 @@
 
 ## DESCRIPTION
 
-**zx_ticks_per_second**() returns the number of high-precision timer ticks in a
+`zx_ticks_per_second()` returns the number of high-precision timer ticks in a
 second.
 
-This can be used together with **zx_ticks_get**() to calculate the amount of
-time elapsed between two subsequent calls to **zx_ticks_get**().
+This can be used together with [`zx_ticks_get()`] to calculate the amount of
+time elapsed between two subsequent calls to [`zx_ticks_get()`].
 
 This value can vary from boot to boot of a given system. Once booted,
 this value is guaranteed not to change.
@@ -35,12 +35,12 @@
 
 ## RETURN VALUE
 
-**zx_ticks_per_second**() returns the number of high-precision timer ticks in a
+`zx_ticks_per_second()` returns the number of high-precision timer ticks in a
 second.
 
 ## ERRORS
 
-**zx_ticks_per_second**() does not report any error conditions.
+`zx_ticks_per_second()` does not report any error conditions.
 
 ## EXAMPLES
 
@@ -58,3 +58,7 @@
 ## SEE ALSO
 
 [ticks_get](ticks_get.md)
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_ticks_get()`]: ticks_get.md
diff --git a/docs/syscalls/timer_cancel.md b/docs/syscalls/timer_cancel.md
index 6d53b75..fb26187 100644
--- a/docs/syscalls/timer_cancel.md
+++ b/docs/syscalls/timer_cancel.md
@@ -18,12 +18,12 @@
 
 ## DESCRIPTION
 
-**zx_timer_cancel**() cancels a pending timer that was started with
-**timer_set**().
+`zx_timer_cancel()` cancels a pending timer that was started with
+[`zx_timer_set()`].
 
 Upon success the pending timer is canceled and the **ZX_TIMER_SIGNALED**
 signal is de-asserted. If a new pending timer is immediately needed
-rather than calling **timer_cancel**() first, call **timer_set**()
+rather than calling `zx_timer_cancel()` first, call [`zx_timer_set()`]
 with the new deadline.
 
 ## RIGHTS
@@ -34,7 +34,7 @@
 
 ## RETURN VALUE
 
-**zx_timer_cancel**() returns **ZX_OK** on success.
+`zx_timer_cancel()` returns **ZX_OK** on success.
 In the event of failure, a negative error value is returned.
 
 ## ERRORS
@@ -45,9 +45,13 @@
 
 ## NOTE
 
-Calling this function before **timer_set**() has no effect.
+Calling this function before [`zx_timer_set()`] has no effect.
 
 ## SEE ALSO
 
 [timer_create](timer_create.md),
 [timer_set](timer_set.md)
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_timer_set()`]: timer_set.md
diff --git a/docs/syscalls/timer_create.md b/docs/syscalls/timer_create.md
index 65b6d8f..4429ab2 100644
--- a/docs/syscalls/timer_create.md
+++ b/docs/syscalls/timer_create.md
@@ -20,7 +20,7 @@
 
 ## DESCRIPTION
 
-**timer_create**() creates a timer, an object that can signal
+`zx_timer_create()` creates a timer, an object that can signal
 when a specified point in time has been reached. The only valid
 *clock_id* is **ZX_CLOCK_MONOTONIC**.
 
@@ -50,7 +50,7 @@
 
 ## RETURN VALUE
 
-**timer_create**() returns **ZX_OK** on success. In the event
+`zx_timer_create()` returns **ZX_OK** on success. In the event
 of failure, a negative error value is returned.
 
 ## ERRORS
diff --git a/docs/syscalls/timer_set.md b/docs/syscalls/timer_set.md
index dcd13eb..5d6cb7a 100644
--- a/docs/syscalls/timer_set.md
+++ b/docs/syscalls/timer_set.md
@@ -20,19 +20,19 @@
 
 ## DESCRIPTION
 
-**zx_timer_set**() starts a one-shot timer that will fire when
-*deadline* passes. If a previous call to **zx_timer_set**() was
+`zx_timer_set()` starts a one-shot timer that will fire when
+*deadline* passes. If a previous call to `zx_timer_set()` was
 pending, the previous timer is canceled and
 **ZX_TIMER_SIGNALED** is de-asserted as needed.
 
 The *deadline* parameter specifies a deadline with respect to
 **ZX_CLOCK_MONOTONIC**. To wait for a relative interval,
-use **zx_deadline_after**() returned value in *deadline*.
+use [`zx_deadline_after()`] returned value in *deadline*.
 
 To fire the timer immediately pass a *deadline* less than or equal to **0**.
 
 When the timer fires it asserts **ZX_TIMER_SIGNALED**. To de-assert this
-signal call **timer_cancel**() or **timer_set**() again.
+signal call [`zx_timer_cancel()`] or `zx_timer_set()` again.
 
 The *slack* parameter specifies a range from *deadline* - *slack* to
 *deadline* + *slack* during which the timer is allowed to fire. The system
@@ -54,7 +54,7 @@
 
 ## RETURN VALUE
 
-**zx_timer_set**() returns **ZX_OK** on success.
+`zx_timer_set()` returns **ZX_OK** on success.
 In the event of failure, a negative error value is returned.
 
 
@@ -71,3 +71,8 @@
 [timer_create](timer_create.md),
 [timer_cancel](timer_cancel.md),
 [deadline_after](deadline_after.md)
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_deadline_after()`]: deadline_after.md
+[`zx_timer_cancel()`]: timer_cancel.md
diff --git a/docs/syscalls/vcpu_create.md b/docs/syscalls/vcpu_create.md
index 2da788d..2d949a4 100644
--- a/docs/syscalls/vcpu_create.md
+++ b/docs/syscalls/vcpu_create.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**vcpu_create**() creates a VCPU within a guest, which allows for execution
+`zx_vcpu_create()` creates a VCPU within a guest, which allows for execution
 within the virtual machine. One or more VCPUs may be created per guest, where
 the number of VCPUs does not need to match the number of physical CPUs on the
 machine.
@@ -31,7 +31,7 @@
 
 *out* is bound to the thread that created it, and all syscalls that operate on
 it must be called from the same thread, with the exception of
-**vcpu_interrupt**().
+[`zx_vcpu_interrupt()`].
 
 N.B. VCPU is an abbreviation of virtual CPU.
 
@@ -57,7 +57,7 @@
 
 ## RETURN VALUE
 
-**vcpu_create**() returns ZX_OK on success. On failure, an error value is
+`zx_vcpu_create()` returns ZX_OK on success. On failure, an error value is
 returned.
 
 ## ERRORS
@@ -84,3 +84,7 @@
 [vcpu_interrupt](vcpu_interrupt.md),
 [vcpu_read_state](vcpu_read_state.md),
 [vcpu_write_state](vcpu_write_state.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_vcpu_interrupt()`]: vcpu_interrupt.md
diff --git a/docs/syscalls/vcpu_interrupt.md b/docs/syscalls/vcpu_interrupt.md
index ac1c118..a67b14e 100644
--- a/docs/syscalls/vcpu_interrupt.md
+++ b/docs/syscalls/vcpu_interrupt.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**vcpu_interrupt**() raises an interrupt of *vector* on *handle*, and may be
+`zx_vcpu_interrupt()` raises an interrupt of *vector* on *handle*, and may be
 called from any thread.
 
 ## RIGHTS
@@ -29,7 +29,7 @@
 
 ## RETURN VALUE
 
-**vcpu_interrupt**() returns ZX_OK on success. On failure, an error value is
+`zx_vcpu_interrupt()` returns ZX_OK on success. On failure, an error value is
 returned.
 
 ## ERRORS
diff --git a/docs/syscalls/vcpu_read_state.md b/docs/syscalls/vcpu_read_state.md
index 0c1a718..9c3626f 100644
--- a/docs/syscalls/vcpu_read_state.md
+++ b/docs/syscalls/vcpu_read_state.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**vcpu_read_state**() reads the state of *handle* as specified by *kind* into
+`zx_vcpu_read_state()` reads the state of *handle* as specified by *kind* into
 *buffer*. It is only valid to read the state of *handle* when execution has been
 paused.
 
@@ -35,7 +35,7 @@
 
 ## RETURN VALUE
 
-**vcpu_read_state**() returns ZX_OK on success. On failure, an error value is
+`zx_vcpu_read_state()` returns ZX_OK on success. On failure, an error value is
 returned.
 
 ## ERRORS
diff --git a/docs/syscalls/vcpu_resume.md b/docs/syscalls/vcpu_resume.md
index 85402f8..8947dcf 100644
--- a/docs/syscalls/vcpu_resume.md
+++ b/docs/syscalls/vcpu_resume.md
@@ -19,10 +19,10 @@
 
 ## DESCRIPTION
 
-**vcpu_resume**() begins or resumes execution of *handle*, and blocks until it has
+`zx_vcpu_resume()` begins or resumes execution of *handle*, and blocks until it has
 paused execution. On pause of execution, *packet* is populated with reason for
 the pause. After handling the reason, execution may be resumed by calling
-**vcpu_resume**() again.
+`zx_vcpu_resume()` again.
 
 N.B. Execution of a *handle* must be resumed on the same thread it was created on.
 
@@ -34,7 +34,7 @@
 
 ## RETURN VALUE
 
-**vcpu_resume**() returns *ZX_OK* on success. On failure, an error value is
+`zx_vcpu_resume()` returns *ZX_OK* on success. On failure, an error value is
 returned.
 
 ## ERRORS
diff --git a/docs/syscalls/vcpu_write_state.md b/docs/syscalls/vcpu_write_state.md
index ec27110..43189f0 100644
--- a/docs/syscalls/vcpu_write_state.md
+++ b/docs/syscalls/vcpu_write_state.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**vcpu_write_state**() writes the state of *handle* as specified by *kind* from
+`zx_vcpu_write_state()` writes the state of *handle* as specified by *kind* from
 *buffer*. It is only valid to write the state of *handle* when execution has been
 paused.
 
@@ -35,7 +35,7 @@
 
 ## RETURN VALUE
 
-**vcpu_write_state**() returns ZX_OK on success. On failure, an error value is
+`zx_vcpu_write_state()` returns ZX_OK on success. On failure, an error value is
 returned.
 
 ## ERRORS
diff --git a/docs/syscalls/vmar_allocate.md b/docs/syscalls/vmar_allocate.md
index 4d86a6d..5d0684d 100644
--- a/docs/syscalls/vmar_allocate.md
+++ b/docs/syscalls/vmar_allocate.md
@@ -57,7 +57,7 @@
 
 ## RETURN VALUE
 
-**vmar_allocate**() returns **ZX_OK**, the absolute base address of the
+`zx_vmar_allocate()` returns **ZX_OK**, the absolute base address of the
 subregion (via *child_addr*), and a handle to the new subregion (via
 *child_vmar*) on success.  The base address will be page-aligned and non-zero.
 In the event of failure, a negative error value is returned.
@@ -86,7 +86,7 @@
 ### Deallocation
 
 The address space occupied by a VMAR will remain allocated (within its
-parent VMAR) until the VMAR is destroyed by calling **vmar_destroy**().
+parent VMAR) until the VMAR is destroyed by calling [`zx_vmar_destroy()`].
 
 Note that just closing the VMAR's handle does not deallocate the address
 space occupied by the VMAR.
@@ -106,3 +106,7 @@
 [vmar_map](vmar_map.md),
 [vmar_protect](vmar_protect.md),
 [vmar_unmap](vmar_unmap.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_vmar_destroy()`]: vmar_destroy.md
diff --git a/docs/syscalls/vmar_destroy.md b/docs/syscalls/vmar_destroy.md
index 6743a73..4627f52 100644
--- a/docs/syscalls/vmar_destroy.md
+++ b/docs/syscalls/vmar_destroy.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**vmar_destroy**() unmaps all mappings within the given region, and destroys
+`zx_vmar_destroy()` unmaps all mappings within the given region, and destroys
 all sub-regions of the region.  Note that this operation is logically recursive.
 
 This operation does not close *handle*.  Any outstanding handles to this
@@ -32,7 +32,7 @@
 
 ## RETURN VALUE
 
-**vmar_destroy**() returns **ZX_OK** on success.
+`zx_vmar_destroy()` returns **ZX_OK** on success.
 
 ## ERRORS
 
diff --git a/docs/syscalls/vmar_map.md b/docs/syscalls/vmar_map.md
index c772b47..4c900c4 100644
--- a/docs/syscalls/vmar_map.md
+++ b/docs/syscalls/vmar_map.md
@@ -72,7 +72,7 @@
 
 ## RETURN VALUE
 
-**vmar_map**() returns **ZX_OK** and the absolute base address of the
+`zx_vmar_map()` returns **ZX_OK** and the absolute base address of the
 mapping (via *mapped_addr*) on success.  The base address will be page-aligned
 and non-zero.  In the event of failure, a negative error value is returned.
 
diff --git a/docs/syscalls/vmar_protect.md b/docs/syscalls/vmar_protect.md
index df753de..a1cbaf0 100644
--- a/docs/syscalls/vmar_protect.md
+++ b/docs/syscalls/vmar_protect.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**vmar_protect**() alters the access protections for the memory mappings
+`zx_vmar_protect()` alters the access protections for the memory mappings
 in the range of *len* bytes starting from *addr*. The *options* argument should
 be a bitwise-or of one or more of the following:
 - **ZX_VM_PERM_READ**  Map as readable.  It is an error if *handle*
@@ -51,7 +51,7 @@
 
 ## RETURN VALUE
 
-**vmar_protect**() returns **ZX_OK** on success.
+`zx_vmar_protect()` returns **ZX_OK** on success.
 
 ## ERRORS
 
diff --git a/docs/syscalls/vmar_unmap.md b/docs/syscalls/vmar_unmap.md
index 6855203..6e60218 100644
--- a/docs/syscalls/vmar_unmap.md
+++ b/docs/syscalls/vmar_unmap.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**vmar_unmap**() unmaps all VMO mappings and destroys (as if **vmar_destroy**
+`zx_vmar_unmap()` unmaps all VMO mappings and destroys (as if [`zx_vmar_destroy()`]
 were called) all sub-regions within the absolute range including *addr* and ending
 before exclusively at *addr* + *len*.  Any sub-region that is in the range must
 be fully in the range (i.e. partial overlaps are an error).  If a mapping is
@@ -35,7 +35,7 @@
 
 ## RETURN VALUE
 
-**vmar_unmap**() returns **ZX_OK** on success.
+`zx_vmar_unmap()` returns **ZX_OK** on success.
 
 ## ERRORS
 
@@ -58,3 +58,7 @@
 [vmar_destroy](vmar_destroy.md),
 [vmar_map](vmar_map.md),
 [vmar_protect](vmar_protect.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_vmar_destroy()`]: vmar_destroy.md
diff --git a/docs/syscalls/vmar_unmap_handle_close_thread_exit.md b/docs/syscalls/vmar_unmap_handle_close_thread_exit.md
index e85cfeb..f5c44da 100644
--- a/docs/syscalls/vmar_unmap_handle_close_thread_exit.md
+++ b/docs/syscalls/vmar_unmap_handle_close_thread_exit.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**vmar_unmap_handle_close_thread_exit**() does a sequence of three operations:
+`zx_vmar_unmap_handle_close_thread_exit()` does a sequence of three operations:
 1. `zx_vmar_unmap(vmar_handle, addr, size);`
 2. `zx_handle_close(close_handle);`
 3. `zx_thread_exit();`
@@ -43,7 +43,7 @@
 
 ## RETURN VALUE
 
-**vmar_unmap_handle_close_thread_exit**() does not return on success.
+`zx_vmar_unmap_handle_close_thread_exit()` does not return on success.
 
 ## ERRORS
 
diff --git a/docs/syscalls/vmo_clone.md b/docs/syscalls/vmo_clone.md
index 6f9d4ae..d723626 100644
--- a/docs/syscalls/vmo_clone.md
+++ b/docs/syscalls/vmo_clone.md
@@ -22,7 +22,7 @@
 
 ## DESCRIPTION
 
-**vmo_clone**() creates a new virtual memory object (VMO) that clones a range
+`zx_vmo_clone()` creates a new virtual memory object (VMO) that clones a range
 of an existing vmo.
 
 One handle is returned on success, representing an object with the requested
@@ -71,14 +71,14 @@
 VMOs produced by this mode will interact with the VMO syscalls in the following
 ways:
 
-- The DECOMMIT and COMMIT modes of **vmo_op_range**() on a clone will only affect pages
+- The DECOMMIT and COMMIT modes of [`zx_vmo_op_range()`] on a clone will only affect pages
   allocated to the clone, never its parent.
-- If a page in a clone is decommitted (e.g. with **vmo_op_range**()), the parent's page will
+- If a page in a clone is decommitted (e.g. with [`zx_vmo_op_range()`]), the parent's page will
   become visible once again, still with copy-on-write semantics.
-- If a page is committed to a clone using the **vmo_op_range**() COMMIT mode, a
+- If a page is committed to a clone using the [`zx_vmo_op_range()`] COMMIT mode, a
   the new page will have the same contents as the parent's corresponding page
   (or zero-filled if no such page exists).
-- If the **vmo_op_range**() LOOKUP mode is used, the parent's pages will be visible
+- If the [`zx_vmo_op_range()`] LOOKUP mode is used, the parent's pages will be visible
   where the clone has not modified them.
 
 ## RIGHTS
@@ -89,7 +89,7 @@
 
 ## RETURN VALUE
 
-**vmo_clone**() returns **ZX_OK** on success. In the event
+`zx_vmo_clone()` returns **ZX_OK** on success. In the event
 of failure, a negative error value is returned.
 
 ## ERRORS
@@ -116,3 +116,7 @@
 [vmo_get_size](vmo_get_size.md),
 [vmo_op_range](vmo_op_range.md),
 [vmar_map](vmar_map.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_vmo_op_range()`]: vmo_op_range.md
diff --git a/docs/syscalls/vmo_create.md b/docs/syscalls/vmo_create.md
index c972eea..a713bb7 100644
--- a/docs/syscalls/vmo_create.md
+++ b/docs/syscalls/vmo_create.md
@@ -18,12 +18,12 @@
 
 ## DESCRIPTION
 
-**vmo_create**() creates a new virtual memory object (VMO), which represents
+`zx_vmo_create()` creates a new virtual memory object (VMO), which represents
 a container of zero to *size* bytes of memory managed by the operating
 system.
 
 The size of the VMO will be rounded up to the next page size boundary.
-Use **vmo_get_size**() to return the current size of the VMO.
+Use [`zx_vmo_get_size()`] to return the current size of the VMO.
 
 One handle is returned on success, representing an object with the requested
 size.
@@ -64,7 +64,7 @@
 
 ## RETURN VALUE
 
-**vmo_create**() returns **ZX_OK** on success. In the event
+`zx_vmo_create()` returns **ZX_OK** on success. In the event
 of failure, a negative error value is returned.
 
 ## ERRORS
@@ -85,3 +85,7 @@
 [vmo_get_size](vmo_get_size.md),
 [vmo_op_range](vmo_op_range.md),
 [vmar_map](vmar_map.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_vmo_get_size()`]: vmo_get_size.md
diff --git a/docs/syscalls/vmo_create_physical.md b/docs/syscalls/vmo_create_physical.md
index 1054c83..93c807c 100644
--- a/docs/syscalls/vmo_create_physical.md
+++ b/docs/syscalls/vmo_create_physical.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**vmo_create_physical**() creates a new virtual memory object (VMO), which represents the
+`zx_vmo_create_physical()` creates a new virtual memory object (VMO), which represents the
 *size* bytes of physical memory beginning at physical address *paddr*.
 
 One handle is returned on success, representing an object with the requested
@@ -54,8 +54,8 @@
 
 ## NOTES
 
-The VMOs created by this syscall are not usable with **vmo_read**() and
-**vmo_write**().
+The VMOs created by this syscall are not usable with [`zx_vmo_read()`] and
+[`zx_vmo_write()`].
 
 ## RIGHTS
 
@@ -65,7 +65,7 @@
 
 ## RETURN VALUE
 
-**vmo_create_physical**() returns **ZX_OK** on success. In the event
+`zx_vmo_create_physical()` returns **ZX_OK** on success. In the event
 of failure, a negative error value is returned.
 
 ## ERRORS
@@ -85,3 +85,8 @@
 ## SEE ALSO
 
 [vmar_map](vmar_map.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_vmo_read()`]: vmo_read.md
+[`zx_vmo_write()`]: vmo_write.md
diff --git a/docs/syscalls/vmo_get_size.md b/docs/syscalls/vmo_get_size.md
index 1a98260..8669f33 100644
--- a/docs/syscalls/vmo_get_size.md
+++ b/docs/syscalls/vmo_get_size.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**vmo_get_size**() returns the current size of the VMO.
+`zx_vmo_get_size()` returns the current size of the VMO.
 
 ## RIGHTS
 
@@ -28,7 +28,7 @@
 
 ## RETURN VALUE
 
-**vmo_get_size**() returns **ZX_OK** on success. In the event
+`zx_vmo_get_size()` returns **ZX_OK** on success. In the event
 of failure, a negative error value is returned.
 
 ## ERRORS
diff --git a/docs/syscalls/vmo_op_range.md b/docs/syscalls/vmo_op_range.md
index 1ef0032..89a78f0 100644
--- a/docs/syscalls/vmo_op_range.md
+++ b/docs/syscalls/vmo_op_range.md
@@ -23,7 +23,7 @@
 
 ## DESCRIPTION
 
-**vmo_op_range()** performs cache and memory operations against pages held by the VMO.
+`zx_vmo_op_range()` performs cache and memory operations against pages held by the VMO.
 
 *offset* byte offset specifying the starting location for *op* in the VMO's held memory.
 
@@ -75,7 +75,7 @@
 
 ## RETURN VALUE
 
-**vmo_op_range**() returns **ZX_OK** on success. In the event of failure, a negative error
+`zx_vmo_op_range()` returns **ZX_OK** on success. In the event of failure, a negative error
 value is returned.
 
 ## ERRORS
diff --git a/docs/syscalls/vmo_read.md b/docs/syscalls/vmo_read.md
index af05553..feab4a9 100644
--- a/docs/syscalls/vmo_read.md
+++ b/docs/syscalls/vmo_read.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**vmo_read**() attempts to read exactly *buffer_size* bytes from a VMO at *offset*.
+`zx_vmo_read()` attempts to read exactly *buffer_size* bytes from a VMO at *offset*.
 
 *buffer* pointer to a user buffer to read bytes into.
 
@@ -36,7 +36,7 @@
 
 ## RETURN VALUE
 
-**zx_vmo_read**() returns **ZX_OK** on success, and exactly *buffer_size* bytes will
+`zx_vmo_read()` returns **ZX_OK** on success, and exactly *buffer_size* bytes will
 have been written to *buffer*.
 In the event of failure, a negative error value is returned, and the number of
 bytes written to *buffer* is undefined.
diff --git a/docs/syscalls/vmo_replace_as_executable.md b/docs/syscalls/vmo_replace_as_executable.md
index d436c52..d019edc 100644
--- a/docs/syscalls/vmo_replace_as_executable.md
+++ b/docs/syscalls/vmo_replace_as_executable.md
@@ -20,7 +20,7 @@
 
 ## DESCRIPTION
 
-**vmo_replace_as_executable**() creates a replacement for *handle*, referring
+`zx_vmo_replace_as_executable()` creates a replacement for *handle*, referring
 to the same underlying VM object, adding the right **ZX_RIGHT_EXECUTE**.
 
 *handle* is always invalidated.
@@ -38,7 +38,7 @@
 
 ## RETURN VALUE
 
-**vmo_replace_as_executable**() returns **ZX_OK** on success. In the event
+`zx_vmo_replace_as_executable()` returns **ZX_OK** on success. In the event
 of failure, a negative error value is returned.
 
 ## ERRORS
diff --git a/docs/syscalls/vmo_set_cache_policy.md b/docs/syscalls/vmo_set_cache_policy.md
index 73f0063..e1cbf14 100644
--- a/docs/syscalls/vmo_set_cache_policy.md
+++ b/docs/syscalls/vmo_set_cache_policy.md
@@ -18,7 +18,7 @@
 
 ## DESCRIPTION
 
-**vmo_set_cache_policy()** sets caching policy for a VMO. Generally used on VMOs
+`zx_vmo_set_cache_policy()` sets caching policy for a VMO. Generally used on VMOs
 that point directly at physical memory. Such VMOs are generally only handed to
 userspace via bus protocol interfaces, so this syscall will typically only be
 used by drivers dealing with device memory. This call can also be used on a
@@ -48,7 +48,7 @@
 
 ## RETURN VALUE
 
-**vmo_set_cache_policy()** returns **ZX_OK** on success. In the event of
+`zx_vmo_set_cache_policy()` returns **ZX_OK** on success. In the event of
 failure, a negative error value is returned.
 
 ## ERRORS
diff --git a/docs/syscalls/vmo_set_size.md b/docs/syscalls/vmo_set_size.md
index 2c6dacc..ef13b69 100644
--- a/docs/syscalls/vmo_set_size.md
+++ b/docs/syscalls/vmo_set_size.md
@@ -18,10 +18,10 @@
 
 ## DESCRIPTION
 
-**vmo_set_size**() sets the new size of a VMO object.
+`zx_vmo_set_size()` sets the new size of a VMO object.
 
 The size will be rounded up to the next page size boundary.
-Subsequent calls to **vmo_get_size**() will return the rounded up size.
+Subsequent calls to [`zx_vmo_get_size()`] will return the rounded up size.
 
 ## RIGHTS
 
@@ -31,7 +31,7 @@
 
 ## RETURN VALUE
 
-**vmo_set_size**() returns **ZX_OK** on success. In the event
+`zx_vmo_set_size()` returns **ZX_OK** on success. In the event
 of failure, a negative error value is returned.
 
 ## ERRORS
@@ -56,3 +56,7 @@
 [vmo_write](vmo_write.md),
 [vmo_get_size](vmo_get_size.md),
 [vmo_op_range](vmo_op_range.md).
+
+<!-- References updated by update-docs-from-abigen, do not edit. -->
+
+[`zx_vmo_get_size()`]: vmo_get_size.md
diff --git a/docs/syscalls/vmo_write.md b/docs/syscalls/vmo_write.md
index 6229e11..44cd704 100644
--- a/docs/syscalls/vmo_write.md
+++ b/docs/syscalls/vmo_write.md
@@ -21,7 +21,7 @@
 
 ## DESCRIPTION
 
-**vmo_write**() attempts to write exactly *buffer_size* bytes to a VMO at *offset*.
+`zx_vmo_write()` attempts to write exactly *buffer_size* bytes to a VMO at *offset*.
 
 *buffer* pointer to a user buffer to write bytes from.
 
@@ -35,7 +35,7 @@
 
 ## RETURN VALUE
 
-**zx_vmo_write**() returns **ZX_OK** on success, and exactly *buffer_size* bytes will
+`zx_vmo_write()` returns **ZX_OK** on success, and exactly *buffer_size* bytes will
 have been written from *buffer*.
 In the event of failure, a negative error value is returned, and the number of
 bytes written from *buffer* is undefined.
diff --git a/scripts/update-docs-from-abigen b/scripts/update-docs-from-abigen
index 8f3320a..bdb5bd9 100755
--- a/scripts/update-docs-from-abigen
+++ b/scripts/update-docs-from-abigen
@@ -13,13 +13,14 @@
 of what it does). So it should be run manually after updating syscalls.abigen
 and building zircon, followed by uploading the changes to docs/ as a CL.
 
-Currently, it only updates the rights annotations, but in the future it should
-update the signature, arguments, etc. too.
+It updates the signature, synopsis, and rights annotations, and corrects some
+formatting.
 """
 
 import argparse
 import json
 import os
+import re
 import subprocess
 import sys
 
@@ -29,6 +30,9 @@
     '', '<!-- Updated by update-docs-from-abigen, do not edit. -->', ''
 ]
 
+REFERENCES_COMMENT = \
+        '<!-- References updated by update-docs-from-abigen, do not edit. -->'
+
 
 def parse_args():
     parser = argparse.ArgumentParser(
@@ -50,6 +54,7 @@
         default=False,
         action="store_true",
         help='if set, generate stubs for any syscalls that are missing')
+    parser.add_argument('name', nargs='*', help='only generate these syscalls')
     return parser.parse_args()
 
 
@@ -93,8 +98,8 @@
             '.'
         ],
         [
-            'ARG', 'must', 'be', 'of', 'type', 'TYPE1', 'or', 'TYPE2', 'and', 'have', 'RIGHT',
-            '.'
+            'ARG', 'must', 'be', 'of', 'type', 'TYPE1', 'or', 'TYPE2', 'and',
+            'have', 'RIGHT', '.'
         ],
         [
             'If', 'ARG1', 'is', 'VALUE', ',', 'ARG2', 'must', 'have', 'RIGHT',
@@ -459,6 +464,57 @@
     return orphan_count
 
 
+SYSCALL_RE = {}
+
+
+def update_syscall_references(lines, syscall, all_syscall_names, warn):
+    """Attempts to update all syscall references to a canonical format, and
+    linkifies them to their corresponding syscall.
+
+    TODO(ZX-3106): It'd be nice to do the references from outside of
+    docs/syscalls/ into syscalls too, in a similar style.
+    """
+
+    text = '\n'.join(lines)
+
+    # Precompile these regexes as it takes measurable time.
+    if not SYSCALL_RE:
+        for sc in all_syscall_names:
+            # Look for **zx_stuff()** and [`zx_stuff()`], with both "zx_" and
+            # the () being optional.
+            SYSCALL_RE[sc] = re.compile(
+                r'\*{2}(?:zx_)?' + sc + r'(?:\(\))?\*{2}(?:\(\))?'
+                r'|'
+                r'(?:\[)`(?:zx_)?' + sc + r'(?:\(\))?`(?:\])?(\(\))?')
+
+    referred_to = set()
+    for sc in all_syscall_names:
+        scre = SYSCALL_RE[sc]
+        self = sc == syscall['name']
+        repl = '`zx_' + sc + '()`'
+        # Don't link to ourselves.
+        if not self:
+            repl = '[' + repl + ']'
+        text, count = scre.subn(repl, text)
+        if count and not self:
+            referred_to.add(sc)
+
+    lines[:] = text.splitlines()
+
+    if REFERENCES_COMMENT not in lines:
+        lines.extend(['', REFERENCES_COMMENT])
+    start_index = lines.index(REFERENCES_COMMENT)
+
+    references = []
+    for ref in sorted(referred_to):
+        references.append('[`zx_' + ref + '()`]: ' + ref + '.md')
+    lines[start_index:] = [REFERENCES_COMMENT, ''] + references
+
+    # Drop references section if it's empty to not be noisy.
+    if lines[-3:] == ['', REFERENCES_COMMENT, '']:
+        lines[:] = lines[:-3]
+
+
 def main():
     args = parse_args()
     inf = os.path.relpath(args.json)
@@ -466,8 +522,11 @@
     print 'using %s as input and updating %s...' % (inf, outf)
     data = json.loads(open(inf, 'rb').read())
     missing_count = 0
+    all_syscall_names = set(x['name'] for x in data['syscalls'])
     for syscall in data['syscalls']:
         name = syscall['name']
+        if args.name and name not in args.name:
+            continue
         md = os.path.join(outf, name + '.md')
 
         if not os.path.exists(md) and args.generate_missing:
@@ -490,6 +549,7 @@
             update_name(lines, syscall, warn)
             update_synopsis(lines, syscall, warn)
             update_rights(lines, syscall, warn)
+            update_syscall_references(lines, syscall, all_syscall_names, warn)
 
             with open(md, 'wb') as f:
                 f.write('\n'.join(lines) + '\n')
