| #pragma once | 
 |  | 
 | /** | 
 |  * Manually build an export table with the given prefix.  Internal use only; | 
 |  * please use one of the macros below instead. | 
 |  */ | 
 | .macro CHERIOT_EXPORT_FUNCTION_INTERNAL prefix, function_name, \ | 
 |   minimum_stack, flags | 
 |  | 
 | 	.section .compartment_exports,"awR",@progbits | 
 | 	.type    \prefix\()_\function_name\(),@object | 
 | 	.global  \prefix\()_\function_name\() | 
 |     .p2align 2 | 
 |   \prefix\()_\function_name\(): | 
 | 	.half \function_name - __compartment_pcc_start | 
 | 	.byte \minimum_stack | 
 | 	.byte \flags | 
 | 	.size \prefix\()_\function_name, 4 | 
 | 	.previous | 
 | .endm | 
 |  | 
 | /** | 
 |  * Manually build an export table entry in the named compartment. | 
 |  */ | 
 | .macro CHERIOT_COMPARTMENT_EXPORT_FUNCTION compartment_name, function_name, \ | 
 |   minimum_stack, flags | 
 | 	CHERIOT_EXPORT_FUNCTION_INTERNAL __export_\compartment_name\(), \ | 
 | 	  \function_name, \minimum_stack, \flags | 
 | .endm | 
 |  | 
 | /** | 
 |  * Manually build an export table entry in the current compartment. | 
 |  */ | 
 | .macro CHERIOT_EXPORT_FUNCTION function_name, minimum_stack, flags | 
 | 	CHERIOT_COMPARTMENT_EXPORT_FUNCTION \ | 
 | 	  __CHERI_COMPARTMENT__, \function_name, \minimum_stack, \flags | 
 | .endm | 
 |  | 
 | /** | 
 |  * Manually build a libcall export table entry | 
 |  */ | 
 | .macro CHERIOT_EXPORT_LIBCALL function_name, minimum_stack, flags | 
 | 	CHERIOT_EXPORT_FUNCTION_INTERNAL __library_export_libcalls, \ | 
 | 	  \function_name, \minimum_stack, \flags | 
 | .endm |