callbacks.c 633 B

12345678910111213141516171819202122
  1. /*
  2. * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #include <stdint.h>
  7. #include "callbacks.h"
  8. void get_mstatus_other_cpu(void *arg) {
  9. uint32_t mstatus_value;
  10. asm volatile ("csrr %0, mstatus" : "=r" (mstatus_value));
  11. *(volatile uint32_t*)arg = mstatus_value;
  12. }
  13. void extended_ipc_isr_func(void* arg) {
  14. arg_data_t *a = (arg_data_t *)arg;
  15. a->out[0] = a->in[0] | a->in[1] | a->in[2];
  16. a->out[1] = a->in[0] + a->in[1] + a->in[2];
  17. asm volatile ("csrr %0, mcause" : "=r" (a->out[2]));
  18. asm volatile ("csrr %0, mstatus" : "=r" (a->out[3]));
  19. }