Age | Commit message (Collapse) | Author |
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Reports the CPU online percentage given how many cores are online and
how many cores are offline.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Introduce reporting of the number of halted cores for the scheduler
accounting logic.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Give each core a bit that indicates whether the core is online or
halted. We also provide a cpu_halt() which marks the core as offline.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
The NOP (no operation) instruction simply tells the processor to do nothing.
This can be useful for various things such as padding, timing, etc.
--
nop
nop
nop
...
--
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Ensure that after every instruction, we undo any potential side effects
or operations upon the X0 register. The "Registers" section of the
OSMX64 spec states that X0 is a 64-bit, always-zero and readonly
register. All writes to this register are to be ignored by the
processor.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Implement a hash table used to store a maximum of 128 labels.
This commit adds functions such as label_enter() to add labels
to the table, label_lookup() to lookup labels as well as various
utility functions used internally by the assembler.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This commit introduces encoding logic for 4 additional instructions:
- MROB (Mask Register Over [byte])
- MROW (Mask Register Over [word])
- MROD (Mask Register Over [dword])
- MROQ (Mask Register Over [qword])
This instruction is used to fill a register with a specific length of
zeros or ones. For example, to fill a register (e.g., x2) with 16-bits
of 1s:
--
!!
!! Clear bits x2[7:0]... Mrrp,,
!! mrow!!
!!
mrow x2, #1
--
Similarly, an operand of zero sets it to zero. For example, to clear an
entire 64-bit register with zeros. Something like this can be done:
--
mroq x1, #0
--
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
A label is like a pin on a map with a number attached to it. OASM keeps track
of a number referred to as the psuedo instruction pointer (PIP). This value is
initially zero by default and is incremented every instruction. The purpose of
this value is to pin a location in the code and mark it to be at a specific address
so that further references to that label would be translated to the previous PIP value
at the time of encountering the label.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Introduce comments, example usage:
--
!!
!! Double the X5 register by using the
!! MUL instruction.
!!
mul x5, 2 !! wow
--
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Add support for interpreting the BR (branch) instruction. This
instruction takes in a single register operand containing an address to
reassign the instruction pointer to.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
The addr_t type represents any kind of memory address. We also assign
paddr_t to addr_t.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
- [kernel]: Avoid make panic screen configurable [0]
- [kernel]: Avoid using kprintf() during panic [1]
- [kernel]: Add sys/crypto/* [2]
- [kernel/amd64]: Get CPU family and model number [3]
- [kernel/amd64]: Track interrupt count [4]
- [usr: libc]: Add math.h + musl math impl port [5]
- [sys]: Add 64-bit atomic operations in sys/atomic.h [6]
- [kernel: sched]: Sort out MI/MD context switch logic [7]
- [kernel]: Add kernel accounting information [8]
- [usr]: Add 'kstat' program [9]
- [kernel: sched]: Add support for CPU pinning [10]
Commits referenced:
[0]: 85ddd63bddfa20bedce3a387c69dcf66f882a8ea
[1]: a789a2d36560f64952dcfc25d330f1ac04206c14
[2]: 2a93cf52e5386eb1b3586565af6a06ade4d32a66
[3]: 2f1902f6e554f6bc36b5a3e4cf8add8c3e5197cc
[4]: 25d4aca4bf49bdbee6a7a35ef5d63ae45138ddf5
[5]: 30634165980deaeead9f4e71e0ff6a5c9d897776
[6]: a66c3f8d3d1f70beb3147999db21229803eb7021
[7]: f6900b5c3b4832f48359fd761b80f8693a6735e8
[8]: 8a3973e46941b6a8c88a49594364a04ee4b1d84e
[9]: d6bd4640721867f59d89c68fddb15098524c56c8
[10]: 3c9e0969840d47a812f5e65fa43f694f2e7f3ff3
...
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Implement the initial encoding logic for INC/DEC instructions.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
In order to have more control over the flow at which we grab the next
tokens, we should roll our own loop by hand using TAILQ_FIRST() and
TAILQ_NEXT()
Signed-off-by: Ian Moffett <ian@osmora.org>
|