summaryrefslogtreecommitdiff
path: root/share/man/man9
diff options
context:
space:
mode:
Diffstat (limited to 'share/man/man9')
-rw-r--r--share/man/man9/arch.973
-rw-r--r--share/man/man9/mmio.960
2 files changed, 133 insertions, 0 deletions
diff --git a/share/man/man9/arch.9 b/share/man/man9/arch.9
new file mode 100644
index 0000000..dca490b
--- /dev/null
+++ b/share/man/man9/arch.9
@@ -0,0 +1,73 @@
+.\" Copyright (c) 2023 Ian Marco Moffett and the VegaOS team.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are met:
+.\"
+.\" 1. Redistributions of source code must retain the above copyright notice,
+.\" this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of VegaOS nor the names of its
+.\" contributors may be used to endorse or promote products derived from
+.\" this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.Dd October 4, 2023
+.Dt ARCH 9
+.Os
+.Sh NAME
+.Nm arch - vega arch information
+.Sh SYNOPSIS
+.In sys/machdep.h
+.In machine/cpu.h
+.Sh DESCRIPTION
+NOTE: All examples will be for x86_64 but can be applied to others
+
+
+Information about how Vega and architectures work together. This
+will describe headers and .c files that need to exist for all
+architectures and things they should include. The
+.Ft machine/cpu.h
+file contains information about the CPU for the specific
+architecture. Required structures in this header include the
+.Ft cpu_info
+struct which contains CPU specific fields.
+
+Example
+.Ft cpu_info
+structure for x86_64 is shown below:
+
+.Bd -literal
+struct cpu_info {
+ void *pmap; /* Current pmap */
+ volatile uint32_t lapic_freq;
+ ...
+};
+.Ed
+
+The macro
+.Ft this_cpu()
+calls an internal function that fetches the
+cpu_info structure for the current CPU.
+
+The macro
+.Ft get_bsp()
+calls an internal function that fetches the
+cpu_info structure for the BSP.
+
+The function these macros call must return a pointer
+to a
+.Ft cpu_info
+structure.
diff --git a/share/man/man9/mmio.9 b/share/man/man9/mmio.9
new file mode 100644
index 0000000..d960c8c
--- /dev/null
+++ b/share/man/man9/mmio.9
@@ -0,0 +1,60 @@
+.\" Copyright (c) 2023 Ian Marco Moffett and the VegaOS team.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are met:
+.\"
+.\" 1. Redistributions of source code must retain the above copyright notice,
+.\" this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of VegaOS nor the names of its
+.\" contributors may be used to endorse or promote products derived from
+.\" this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.Dd October 4, 2023
+.Dt MMIO 9
+.Os
+.Sh NAME
+.Nm mmio - vega MMIO interface
+.Sh SYNOPSIS
+.In sys/mmio.h
+
+.Bd -literal
+static inline void mmio_write8(void *addr, uint8_t val);
+static inline void mmio_write16(void *addr, uint16_t val);
+static inline void mmio_write32(void *addr, uint32_t val);
+#if __SIZEOF_SIZE_T__ == 8
+static inline void mmio_write64(void *addr, uint64_t val);
+#endif
+__extension__
+.Ed
+
+.Sh DESCRIPTION
+In short, MMIO is a method of writing to registers
+of an I/O device via a mapped porition of memory. MMIO
+should NOT be done on your own when doing Vega kernel programming.
+Instead, rely on Vega's MMIO interface and use
+.Ft mmio_read<n>()
+and
+.Ft mmio_write<n>()
+functions. Where `n` is 8 to 32 on 32-bit machines, and to 64
+on 64-bit machines.
+
+The
+.Ft addr
+argument can be either a physical address or virtual
+address; however, it is recommended to use virtual addresses
+for the sake of consistency.