blob: e7a8a0a7ef21ce77d507a1e97fd222918c911db6 [file] [log] [blame]
#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