Subversion Repositories HelenOS

Rev

Go to most recent revision | Show changed files | Details | Compare with Previous | Blame | RSS feed

Filtering Options

Rev Age Author Path Log message Diff
3743 5608 d 11 h rimsky /branches/sparc/ Started to implement support for sun4v. Bootloader adapted to autodetect the architecture (sun4u, sun4v). Some generic sparc64 kernel files split into sun4u and sun4v versions (but the sun4u is still the default in many cases - in order to keep the code compilable). Implemented taking over the MMU. Implemented routines for performing the hypervisor API calls. Implemented a trivial standard output driver. HelenOS banner can now be printed from the kernel on Niagara.  
3742 5608 d 11 h rimsky /branches/sparc/ The sparc branch synchronized with trunk at revision 3722 (trunk@3722).  
3618 5642 d 1 h rimsky /branches/sparc/ Support for framebuffers, where the first pixel is mapped to a different address than the OBP 'reg' property claims. Cleanup, comments, C-style.  
3607 5643 d 0 h rimsky /branches/sparc/ Cleanup and minor fixes.  
3591 5647 d 9 h rimsky /branches/sparc/ Making the code compatible also with US-IV (US-IV+) - TLB size based on CPU autodetection, cleanup of code waking up APs. General cleanup.  
3493 5678 d 3 h rimsky /branches/sparc/ More changes making the code US-III-conformant (mainly in mm).  
3450 5707 d 3 h rimsky /branches/sparc/kernel/arch/sparc64/ Made tlb.h conform US-III specification.  
3440 5708 d 11 h rimsky /branches/sparc/kernel/arch/sparc64/ TLB modifications in order to make functions tlb_print and tlb_invalidate_all work correctly in US-III.  
3343 5737 d 7 h decky /branches/sparc/ add sparc branch  
3145 5802 d 15 h jermar /trunk/kernel/arch/sparc64/include/ On sparc64, when the operand to the FLUSH instruction doesn't matter, the
instruction's semantics is to flush the pipeline.
 
3133 5804 d 3 h jermar /trunk/kernel/arch/ Add smc_coherence() macro to all architectures.
So far, only amd64, ia32, ia64 and sparc64 are implemented.
 
2231 6235 d 7 h jermar /trunk/kernel/arch/sparc64/ Fix a nasty bug in the TLB miss handlers on sparc64.
After we no longer lock the kernel stack in the DTLB,
there is a real danger of nested DTLB misses. The nested
miss can very easily clobber the DTLB Tag Access register.
Therefore, the original miss may not read this register, but
it has to receive its value as an argument. The argument
value is saved in the trap table when it is guaranteed that
the nested TLB miss will not occur.
 
2089 6306 d 10 h decky /trunk/ huge type system cleanup
remove cyclical type dependencies across multiple header files
many minor coding style fixes
 
2071 6317 d 3 h jermar /trunk/ (c) versus (C)  
2054 6345 d 2 h jermar /trunk/kernel/ Fix important comment in kernel/arch/sparc64/src/proc/scheduler.c.

Improve framebuffer code.

Formatting and indentation fixes.
 
1946 6407 d 1 h jermar /trunk/kernel/arch/sparc64/ sparc64 work.
- Improve panic screen on data_access_exception
by dumping contents of DSFSR and DSFAR.
- Change the FHC enable interrupt code to only
set the IMAP_V bit.
 
1864 6453 d 0 h jermar /trunk/ sparc64 update.
- Prototype userspace layer implementation that
at least relates to sparc64 and compiles cleanly.
- Fixes for kernel's preemptible_handler and code
related to running userspace.
- Enable userspace. Several dozen instructions
are now run in userspace! We are pretty near
the userspace milestone for sparc64.
 
1860 6456 d 5 h jermar /trunk/kernel/ A lot of untested sparc64 stuff:
- Write ASID to hardware when a thread is about to run in userspace.
- Add userspace() and switch_to_userspace() functions.
- Handle special cases when the userspace spill/fill handler causes MMU trap.
- Resolve some TODOs in the existing sparc64 code.
- sparc64 has now C99 compliant header guards.
- Formatting and indentation fixes.
 
1851 6466 d 10 h jermar /trunk/kernel/ sparc64 work.
Define the istate structure.
Move the identity-mapping handler to assembly.
Make the preemptible handler more general so that TL=1 MMU exceptions can make use of it.

Little bit of formatting and indentation.
 
1823 6486 d 8 h jermar /trunk/kernel/arch/sparc64/ sparc64 work.
Dump take_over_tlb_and_tt() and add its assembly language replacement.
 
1822 6486 d 12 h jermar /trunk/ sparc64 work.
1. Formatting fixes.
2. When writing to DMMU ASI's, simple membar() can be used in place of flush().
3. Substantial changes in the way the TLB is taken over.
4. Remove unneeded functions.

This is the first revision that also runs on a real world Ultra 5 with UltraSPARC IIi
processor.

Note that 3. needs further work as the current implementation depends on the fact
that the compiler will use registers for local variables in take_over_tlb_and_tt().
Rewrite of that function into assembly is to follow.
 
1787 6507 d 5 h decky / move kernel/trunk, uspace/trunk and boot/trunk to trunk/kernel, trunk/uspace and trunk/boot  
1780 6514 d 6 h jermar /kernel/trunk/ Replace old __u?? types with respective C99 variants (e.g. uint32_t, int64_t, uintptr_t etc.).  
1702 6535 d 9 h cejka /kernel/trunk/ Kernel doxygen comments updated.  
901 6639 d 13 h jermar /kernel/trunk/arch/ ia64 work.
Provide PA2KA(identity) mapping for kernel data references via Alternate Data TLB Fault handler.
Add before_thread_runs_arch() that maps kstack, if necessary.
Add easy to use dtlb_mapping_insert() for comfortable insertion of kernel data mappings.
 
897 6641 d 0 h jermar /kernel/trunk/ sparc64 work.
Fix KBD_VIRT_ADDRESS.
Call before_thread_runs() prior to the switch to the thread's stack. Add comment why this is crucial.
Add after_thread_ran() to the scheduler.
Add before_thread_runs_arch() and after_thread_ran_arch() for sparc64, mapping/demapping thread's kernel stack.
Add dummy after_thread_ran_arch() to all other architectures.
Add dtlb_insert_mapping() to promote code reuse.
 
877 6644 d 4 h jermar /kernel/trunk/arch/sparc64/ Fixes in sparc64 preliminary TLB miss handler.
Compute and insert identity mapping for kernel on the fly.
 
873 6644 d 12 h jermar /kernel/trunk/arch/sparc64/ sparc64 work.
Add more MMU helper functions and make data TLB miss handler more verbose.
 
863 6647 d 0 h jermar /kernel/trunk/arch/sparc64/ sparc64 work.
Add initial TLB miss handlers.
 
658 6708 d 13 h jermar /kernel/trunk/arch/sparc64/include/ sparc64 work.
Add functions to read and write TICK and TICK_compare registers.
Add types describing TICK and TICK_compare registers.
 
619 6716 d 22 h jermar /kernel/trunk/arch/sparc64/ sparc64 work.
Functions for disabling/enabling MMU.
TLB initialization.
Identity mapping of first 4M for kernel.
Switch to kernel copy of trap table.
 
617 6717 d 1 h jermar /kernel/trunk/arch/sparc64/ sparc64 work.
Support for TLB Demap operations.
Add tlb_invalidate(), tlb_invalidate_asid() and tlb_invalidate_page() (latter two are broken as they ignore asid).
 
613 6718 d 0 h jermar /kernel/trunk/arch/sparc64/ sparc64 work.
More ITLB and DTLB controlling functions.
 
569 6722 d 1 h jermar /kernel/trunk/ sparc64 work.
Implement functions for reading IMMU and DMMU TLBs.
 
534 6726 d 4 h jermar / Rename HelenOS/SPARTAN to HelenOS/kernel again.  
532 6726 d 4 h jermar / Revert renaming of HelenOS/SPARTAN to HelenOS/kernel because of important pending patch.  
531 6727 d 3 h jermar /kernel/trunk/arch/sparc64/include/mm/ sparc64 work.
MMU ASI & virtual addresses definitions.
 
530 6727 d 13 h jermar /kernel/trunk/arch/sparc64/include/mm/ sparc64 work.
TTE (Translation Table Entry) type definitions.
 
501 6738 d 9 h jermar / Rename HelenOS/SPARTAN to HelenOS/kernel.  
418 6769 d 3 h jermar /SPARTAN/trunk/ sparc64 infrastructure.