Closed Courtney3141 closed 7 months ago
For VSpace cache operations, can you use the APIs:
void microkit_arm_vspace_data_clean(uintptr_t start, uintptr_t end);
void microkit_arm_vspace_data_invalidate(uintptr_t start, uintptr_t end);
I added them recently to the my fork of Microkit.
I will update the CI to use the latest Microkit SDK which should hopefully let the CI pass.
Okay, added some fixes to get CI passing again.
This pull request is the result of concurrent work on different repositories over the course of 6-9 months.
The main updates include:
enqueue
/dequeue
/init
functions allowing ring buffers to take on different sizes depending on which protection domain they belong to, fixes to the ring buffer initialization process to avoid race conditions based on the order that protection domains are initializing, fixes to the enqueuing and dequeuing functions to avoid accessing stale ring buffer entries.printf.h
andprintf.c
.dprintf
is also defined inprintf.h
allowing components to print only in debug mode. Depending on whether a component must print in release mode or only in debug,printf
can be linked with a debugputchar
utilisingmicrokit_dbg_puts
, or a serialputchar
writing to the serial register directly. The serialputchar
will instead notify the serial subsystem (serial mux_tx/uart driver) in future commits.arp
component is always the first client - since thearp
component must always be a client, this reduces the number of changes required when decreasing or increasing the number of clients.ethernet_config
file which contains all the information that needs to be changed if a client is added or removed from the system, or configured differently (MAC address changed, ring buffer size changed, ...). This file is a temporary solution to the difficulties faced when altering a system file or network configuration, and is only intended to be used in the interim until an automatic header generator tool is created in the future.