Skip to content

Commit

Permalink
sys: Retire CHERI_REVOKE_REG
Browse files Browse the repository at this point in the history
Just use vm_cheri_revoke_cap directly instead.
  • Loading branch information
bsdjhb committed Jul 29, 2024
1 parent 1b714b3 commit 109682d
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 81 deletions.
75 changes: 34 additions & 41 deletions sys/arm64/arm64/machdep.c
Original file line number Diff line number Diff line change
Expand Up @@ -1226,47 +1226,40 @@ void
cheri_revoke_td_frame(struct thread *td, const struct vm_cheri_revoke_cookie
*crc)
{
#define CHERI_REVOKE_REG(r) \
vm_cheri_revoke_cap(crc, &(r))

CHERI_REVOKE_REG(td->td_frame->tf_sp);
CHERI_REVOKE_REG(td->td_frame->tf_lr);
CHERI_REVOKE_REG(td->td_frame->tf_elr);
CHERI_REVOKE_REG(td->td_frame->tf_ddc);
CHERI_REVOKE_REG(td->td_frame->tf_x[0]);
CHERI_REVOKE_REG(td->td_frame->tf_x[1]);
CHERI_REVOKE_REG(td->td_frame->tf_x[2]);
CHERI_REVOKE_REG(td->td_frame->tf_x[3]);
CHERI_REVOKE_REG(td->td_frame->tf_x[4]);
CHERI_REVOKE_REG(td->td_frame->tf_x[5]);
CHERI_REVOKE_REG(td->td_frame->tf_x[6]);
CHERI_REVOKE_REG(td->td_frame->tf_x[7]);
CHERI_REVOKE_REG(td->td_frame->tf_x[8]);
CHERI_REVOKE_REG(td->td_frame->tf_x[9]);
CHERI_REVOKE_REG(td->td_frame->tf_x[10]);
CHERI_REVOKE_REG(td->td_frame->tf_x[11]);
CHERI_REVOKE_REG(td->td_frame->tf_x[12]);
CHERI_REVOKE_REG(td->td_frame->tf_x[13]);
CHERI_REVOKE_REG(td->td_frame->tf_x[14]);
CHERI_REVOKE_REG(td->td_frame->tf_x[15]);
CHERI_REVOKE_REG(td->td_frame->tf_x[16]);
CHERI_REVOKE_REG(td->td_frame->tf_x[17]);
CHERI_REVOKE_REG(td->td_frame->tf_x[18]);
CHERI_REVOKE_REG(td->td_frame->tf_x[19]);
CHERI_REVOKE_REG(td->td_frame->tf_x[20]);
CHERI_REVOKE_REG(td->td_frame->tf_x[21]);
CHERI_REVOKE_REG(td->td_frame->tf_x[22]);
CHERI_REVOKE_REG(td->td_frame->tf_x[23]);
CHERI_REVOKE_REG(td->td_frame->tf_x[24]);
CHERI_REVOKE_REG(td->td_frame->tf_x[25]);
CHERI_REVOKE_REG(td->td_frame->tf_x[26]);
CHERI_REVOKE_REG(td->td_frame->tf_x[27]);
CHERI_REVOKE_REG(td->td_frame->tf_x[28]);
CHERI_REVOKE_REG(td->td_frame->tf_x[29]);

#undef CHERI_REVOKE_REG

return;
vm_cheri_revoke_cap(crc, &td->td_frame->tf_sp);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_lr);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_elr);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_ddc);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[0]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[1]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[2]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[3]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[4]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[5]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[6]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[7]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[8]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[9]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[10]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[11]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[12]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[13]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[14]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[15]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[16]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[17]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[18]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[19]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[20]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[21]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[22]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[23]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[24]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[25]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[26]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[27]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[28]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_x[29]);
}
#endif
// CHERI CHANGES START
Expand Down
73 changes: 33 additions & 40 deletions sys/riscv/riscv/machdep.c
Original file line number Diff line number Diff line change
Expand Up @@ -710,46 +710,39 @@ void
cheri_revoke_td_frame(struct thread *td,
const struct vm_cheri_revoke_cookie *crc)
{
#define CHERI_REVOKE_REG(r) \
vm_cheri_revoke_cap(crc, &(r))

CHERI_REVOKE_REG(td->td_frame->tf_ra);
CHERI_REVOKE_REG(td->td_frame->tf_sp);
CHERI_REVOKE_REG(td->td_frame->tf_gp);
CHERI_REVOKE_REG(td->td_frame->tf_tp);
CHERI_REVOKE_REG(td->td_frame->tf_t[0]);
CHERI_REVOKE_REG(td->td_frame->tf_t[1]);
CHERI_REVOKE_REG(td->td_frame->tf_t[2]);
CHERI_REVOKE_REG(td->td_frame->tf_t[3]);
CHERI_REVOKE_REG(td->td_frame->tf_t[4]);
CHERI_REVOKE_REG(td->td_frame->tf_t[5]);
CHERI_REVOKE_REG(td->td_frame->tf_t[6]);
CHERI_REVOKE_REG(td->td_frame->tf_s[0]);
CHERI_REVOKE_REG(td->td_frame->tf_s[1]);
CHERI_REVOKE_REG(td->td_frame->tf_s[2]);
CHERI_REVOKE_REG(td->td_frame->tf_s[3]);
CHERI_REVOKE_REG(td->td_frame->tf_s[4]);
CHERI_REVOKE_REG(td->td_frame->tf_s[5]);
CHERI_REVOKE_REG(td->td_frame->tf_s[6]);
CHERI_REVOKE_REG(td->td_frame->tf_s[7]);
CHERI_REVOKE_REG(td->td_frame->tf_s[8]);
CHERI_REVOKE_REG(td->td_frame->tf_s[9]);
CHERI_REVOKE_REG(td->td_frame->tf_s[10]);
CHERI_REVOKE_REG(td->td_frame->tf_s[11]);
CHERI_REVOKE_REG(td->td_frame->tf_a[0]);
CHERI_REVOKE_REG(td->td_frame->tf_a[1]);
CHERI_REVOKE_REG(td->td_frame->tf_a[2]);
CHERI_REVOKE_REG(td->td_frame->tf_a[3]);
CHERI_REVOKE_REG(td->td_frame->tf_a[4]);
CHERI_REVOKE_REG(td->td_frame->tf_a[5]);
CHERI_REVOKE_REG(td->td_frame->tf_a[6]);
CHERI_REVOKE_REG(td->td_frame->tf_a[7]);
CHERI_REVOKE_REG(td->td_frame->tf_sepc); /* This could be real exciting! */
CHERI_REVOKE_REG(td->td_frame->tf_ddc);

#undef CHERI_REVOKE_REG

return;
vm_cheri_revoke_cap(crc, &td->td_frame->tf_ra);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_sp);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_gp);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_tp);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_t[0]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_t[1]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_t[2]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_t[3]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_t[4]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_t[5]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_t[6]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_s[0]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_s[1]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_s[2]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_s[3]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_s[4]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_s[5]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_s[6]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_s[7]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_s[8]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_s[9]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_s[10]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_s[11]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_a[0]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_a[1]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_a[2]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_a[3]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_a[4]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_a[5]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_a[6]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_a[7]);
vm_cheri_revoke_cap(crc, &td->td_frame->tf_sepc); /* This could be real exciting! */
vm_cheri_revoke_cap(crc, &td->td_frame->tf_ddc);
}
#endif

Expand Down

0 comments on commit 109682d

Please sign in to comment.