text: /* Copyright 2019 SiFive, Inc */
  /* SPDX-License-Identifier: Apache-2.0 */
  /* ----------------------------------- */
  /* ----------------------------------- */
  
  #ifndef ASSEMBLY
  
  #ifndef METAL_INLINE_H
  #define METAL_INLINE_H
  
  #include <metal/machine.h>
  
  
  /* --------------------- fixed_clock ------------ */
  
  
  /* --------------------- fixed_factor_clock ------------ */
  
  
  /* --------------------- sifive_clint0 ------------ */
  extern __inline__ unsigned long __metal_driver_sifive_clint0_control_base(struct metal_interrupt *controller);
  extern __inline__ unsigned long __metal_driver_sifive_clint0_control_size(struct metal_interrupt *controller);
  extern __inline__ int __metal_driver_sifive_clint0_num_interrupts(struct metal_interrupt *controller);
  extern __inline__ struct metal_interrupt * __metal_driver_sifive_clint0_interrupt_parents(struct metal_interrupt *controller, int idx);
  extern __inline__ int __metal_driver_sifive_clint0_interrupt_lines(struct metal_interrupt *controller, int idx);
  
  
  /* --------------------- cpu ------------ */
  extern __inline__ int __metal_driver_cpu_hartid(struct metal_cpu *cpu);
  extern __inline__ int __metal_driver_cpu_timebase(struct metal_cpu *cpu);
  extern __inline__ struct metal_interrupt * __metal_driver_cpu_interrupt_controller(struct metal_cpu *cpu);
  extern __inline__ int __metal_driver_cpu_num_pmp_regions(struct metal_cpu *cpu);
  extern __inline__ struct metal_buserror * __metal_driver_cpu_buserror(struct metal_cpu *cpu);
  
  
  /* --------------------- sifive_plic0 ------------ */
  
  
  /* --------------------- sifive_buserror0 ------------ */
  
  
  /* --------------------- sifive_ccache0 ------------ */
  
  
  /* --------------------- sifive_clic0 ------------ */
  
  
  /* --------------------- sifive_local_external_interrupts0 ------------ */
  
  
  /* --------------------- sifive_global_external_interrupts0 ------------ */
  
  
  /* --------------------- sifive_gpio0 ------------ */
  
  
  /* --------------------- sifive_gpio_button ------------ */
  
  
  /* --------------------- sifive_gpio_led ------------ */
  
  
  /* --------------------- sifive_gpio_switch ------------ */
  
  
  /* --------------------- sifive_i2c0 ------------ */
  
  
  /* --------------------- sifive_pwm0 ------------ */
  
  
  /* --------------------- sifive_rtc0 ------------ */
  
  
  /* --------------------- sifive_spi0 ------------ */
  
  
  /* --------------------- sifive_test0 ------------ */
  
  
  /* --------------------- sifive_trace ------------ */
  
  /* --------------------- sifive_uart0 ------------ */
  
  
  /* --------------------- sifive_simuart0 ------------ */
  
  
  /* --------------------- sifive_wdog0 ------------ */
  
  
  /* --------------------- sifive_fe310_g000_hfrosc ------------ */
  
  
  /* --------------------- sifive_fe310_g000_hfxosc ------------ */
  
  
  /* --------------------- sifive_fe310_g000_lfrosc ------------ */
  
  
  /* --------------------- sifive_fe310_g000_pll ------------ */
  
  
  /* --------------------- fe310_g000_prci ------------ */
  
  
  /* --------------------- sifive_fu540_c000_l2 ------------ */
  
  
  struct metal_memory __metal_dt_mem_memory_80000000 = {
      ._base_address = 2147483648UL,
      ._size = 2147483648UL,
      ._attrs = {
          .R = 1,
          .W = 1,
          .X = 1,
          .C = 1,
          .A = 1},
  };
  
  /* From clint@2000000 */
  struct __metal_driver_riscv_clint0 __metal_dt_clint_2000000 = {
      .controller.vtable = &__metal_driver_vtable_riscv_clint0.clint_vtable,
      .init_done = 0,
  };
  
  /* From cpu@0 */
  struct __metal_driver_cpu __metal_dt_cpu_0 = {
      .cpu.vtable = &__metal_driver_vtable_cpu.cpu_vtable,
      .hpm_count = 0,
  };
  
  /* From interrupt_controller */
  struct __metal_driver_riscv_cpu_intc __metal_dt_cpu_0_interrupt_controller = {
      .controller.vtable = &__metal_driver_vtable_riscv_cpu_intc.controller_vtable,
      .init_done = 0,
  };
  
  /* From htif */
  struct __metal_driver_ucb_htif0_shutdown __metal_dt_htif_shutdown = {
      .vtable = &__metal_driver_vtable_ucb_htif0_shutdown,
      .shutdown.vtable = &__metal_driver_vtable_ucb_htif0_shutdown.shutdown,
  };
  
  /* From htif */
  struct __metal_driver_ucb_htif0_uart __metal_dt_htif_uart = {
      .vtable = &__metal_driver_vtable_ucb_htif0_uart,
      .uart.vtable = &__metal_driver_vtable_ucb_htif0_uart.uart,
  };
  
  
  #endif /* METAL_INLINE_H*/
  #endif /* ! ASSEMBLY */
  