Age | Commit message (Collapse) | Author |
|
Ensure that the trapframe in the PCB is the latest, upon kernel entry we
copy it so it isn't stale.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Improve naming to be less confusing
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
A lot of PCI(e) devices rely in MSI-X which pokes the Local APIC via
MMIO, we'll want the LAPIC up before PCI(e)
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
When a CPU core first starts up, it has no proceses to assign to itself.
This commit ensures that the processor will right away start trying to
find tasks to grab from its runqueue.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This implementation walks through the entire table of registered
interrupt handlers and calls each driver handler.
The driver is to return a value of 1 if the interrupt is theirs and has
been handled, otherwise it is to return 0. The handling core is to
respoond to a 1 by exiting the table walk early, and responds to a 0 by
continuing.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This commit reserves the first 64 vectors for the I/O APIC input lines.
During an IRQ, each handler will be called to see which one handles it.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
To ensure that all residual data does not remain for the mapping in its
table, we write a flat zero if prot is also zero i.e., no permissions
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Add function to halt all processor cores on the machine excluding self.
This may be used for emergency conditions on the system.
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 support for sending inter-processor interrupts on
the mainbus to other cores on the machine.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This commit adds support for page-level cacheability attributes. We have
added the pmap_set_cache() as well as some MMU_CACHE_* bits
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Use the current platform latch when selecting a syscall window from the
current domain.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
A syscall domain in the L5 kernel is a fixed list of "syscall windows",
each syscall window represents a specific platform and/or syscall model.
A platform latch within each domain determines which window / platform
should be visible. Since syscall domains are per-process, these changes
are local to their respective processes.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Introduce a new resource deallocation function that destroys a specified
virtual address space.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This commit introduces new functions that will be useful for
having multiple processes run on the system.
- Add md_proc_yield()
- Add md_proc_kick()
- Add md_sched_switch()
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
It is best to return NULL when there is no next CPU instead of wrapping
so we have an indicator at where the list ends.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This commit introduces a new cpu_get() function to acquire a specific
CPU by using a logical ID as an index.
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>
|
|
Condence the page table write into a single line and point the next
table as a virtual address
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This commit introduces a new mmu_write_vas() function to allow the
caller to change the virtual address space used by the current
processor.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This commit introduces the ability to create new virtual address spaces
for user programs and a zeroed lower half.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Verify the edge case where firmware may want to move/remap the Local APIC
MMIO base as we are making an assumption that the base starts at
0xFEE00000.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
If we update the GDTR after setting GS_BASE, we wont be referencing any
valid data anymore. Switch out the GDTR early on.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This commit implements the task state segment and splits up processor
initialization into two seperate stages. The cpu_conf() function is
apart of the first stage and sets up things that should be going by the
time the kernel is started / early init. The cpu_init() function runs
later functions that initialize further platform specific subsystems.
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>
|
|
Lunos's virtual memory system is split into two parts, the machine
dependent MMU layer and the machine independent layer. The MMU side
exposes a standard bridge header that allows the MI layer to interface
with the MD layer.
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 implements an interface to allow other parts of Lunos to
talk to the MMU:
- Added the 'vas' structure as the virtual address space
- Added MMU specific prot flags
- Added mmu_map_single() to map pages
- Added mmu_this_vas() to grab the current VAS
...
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>
|