Files
Toooba/Tests/isa/CPrograms/main.c
2026-03-19 16:37:49 +00:00

50 lines
1.0 KiB
C

#include <cheriintrin.h>
#include <stdint.h>
void test() {
void *__capability c1;
// Set address
c1 = (void *__capability)0x80001009;
c1 = cheri_bounds_set(c1, 8);
}
// Add delta value for TLB translation
static inline void * __capability add_delta(void * __capability cap, int offset) {
void * __capability result;
asm volatile (
"cincoffset %0, %1, %2"
: "=C" (result) // Output: %0 (result)
: "C" (cap), // Input: %1 (original cap)
"r" (offset) // Input: %2 (offset register)
: // No clobbered registers
);
return result;
}
int main(void) {
void *__capability csp1;
// Set address
csp1 = (void *__capability)0x80001000;
// Set bounds
csp1 = cheri_bounds_set(csp1, 1);
// Increment offset
// csp = cheri_offset_increment(csp, 10);
csp1 = add_delta(csp1, 10);
// uint64_t val = *(uint64_t * __capability)csp1;
// uint64_t val = *(uint64_t *__capability)csp1;
test();
return 0;
}