1+ # REQUIRES: riscv
2+ # RUN: llvm-mc -triple=riscv32cheriot-unknown-cheriotrtos -mcpu=cheriot -mattr=+c,+xcheri,+xcheriot -filetype=obj %s -o %t.o
3+ # RUN: ld.lld %t.o -o %t.exe
4+ # RUN: llvm-objdump -d %t.exe | FileCheck %s
5+
6+ .attribute 4 , 16
7+ .attribute 5 , "rv32e2p0_m2p0_c2p0_zmmul1p0_xcheri0p0_xcheriot1p0"
8+ .section .text ,"ax" ,@progbits
9+ .globl _start
10+ .p2align 1
11+ .type _start,@function
12+ _start: # @_Z5entryv
13+ ct.auipcc ct1, %cheriot_compartment_hi(near)
14+ ct.clc ct1, %cheriot_compartment_lo_i(_start)(ct1)
15+ .MID_BLOCK:
16+ ct.auipcc ct1, %cheriot_compartment_hi(mid)
17+ ct.clc ct1, %cheriot_compartment_lo_i(.MID_BLOCK)(ct1)
18+ .CGP_BLOCK:
19+ ct.auipcc ct1, %cheriot_compartment_hi(cgp)
20+ ct.clw ra, %cheriot_compartment_lo_i(.CGP_BLOCK)(ct1)
21+ .CGP_FAR_BLOCK:
22+ ct.auipcc ct1, %cheriot_compartment_hi(cgp_far)
23+ ct.clw ra, %cheriot_compartment_lo_i(.CGP_FAR_BLOCK)(ct1)
24+
25+ # CHECK: 00012000 <_start>:
26+ # CHECK-NEXT: 12000: 00000317 ct.auipcc ct1, 0x0
27+ # CHECK-NEXT: 12004: 02033303 ct.clc ct1, 0x20(ct1)
28+
29+ # CHECK: 00012008 <.MID_BLOCK>:
30+ # CHECK-NEXT: 12008: 00001317 ct.auipcc ct1, 0x1
31+ # CHECK-NEXT: 1200c: 7f833303 ct.clc ct1, 0x7f8(ct1)
32+
33+ # CHECK: 00012010 <.CGP_BLOCK>:
34+ # CHECK-NEXT: 12010: ffffe37b ct.auicgp ct1, 0xffffe
35+ # CHECK-NEXT: 12014: ffc32083 ct.clw ra, -0x4(ct1)
36+
37+ # CHECK: 00012018 <.CGP_FAR_BLOCK>:
38+ # CHECK-NEXT: 12018: 0000237b ct.auicgp ct1, 0x2
39+ # CHECK-NEXT: 1201c: 00032083 ct.clw ra, 0x0(ct1)
40+
41+ .type near,@object
42+ .p2align 3 , 0x0
43+ near:
44+ .word 1
45+
46+ # CHECK: 00012010 <near>:
47+ # CHECK-NEXT: 12010: 01 00 00 00 00 00 00 00
48+
49+ .type mid,@object
50+ .p2align 12 , 0x0
51+ mid:
52+ .word 1
53+
54+ # CHECK: 00013000 <mid>:
55+ # CHECK-NEXT: 13000: 01 00 00 00
56+
57+ .section .data ,"aw" ,@progbits
58+ .type cgp,@object
59+ .globl cgp
60+ .p2align 4 , 0x0
61+ cgp:
62+ .word 2
63+ .zero 8192
64+ cgp_far:
65+ .word 3
0 commit comments