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
3493 5681 d 15 h rimsky /branches/sparc/ More changes making the code US-III-conformant (mainly in mm).  
3489 5688 d 18 h rimsky /branches/sparc/ More files made conform the US-III specification. (Changes concern mainly TSB.)  
3343 5740 d 20 h decky /branches/sparc/ add sparc branch  
2089 6309 d 23 h decky /trunk/ huge type system cleanup
remove cyclical type dependencies across multiple header files
many minor coding style fixes
 
2071 6320 d 16 h jermar /trunk/ (c) versus (C)  
1891 6441 d 15 h jermar /trunk/kernel/ sparc64 work:
- Experimental support for TSB (Translation Storage Buffer).
 
1860 6459 d 18 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.
 
1849 6474 d 1 h jermar /trunk/kernel/ sparc64 work.
interrupt_vector trap experimental handling.
Minimal reverse-engineered FireHose Controller driver (documentation needed!).
Keyboard on Sun Enterprise is now interrupt driven. Keyboard on Sun Ultra
is still polled.
 
1823 6489 d 21 h jermar /trunk/kernel/arch/sparc64/ sparc64 work.
Dump take_over_tlb_and_tt() and add its assembly language replacement.
 
1822 6490 d 1 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 6510 d 18 h decky / move kernel/trunk, uspace/trunk and boot/trunk to trunk/kernel, trunk/uspace and trunk/boot  
1780 6517 d 19 h jermar /kernel/trunk/ Replace old __u?? types with respective C99 variants (e.g. uint32_t, int64_t, uintptr_t etc.).  
1702 6538 d 22 h cejka /kernel/trunk/ Kernel doxygen comments updated.  
758 6670 d 14 h jermar /kernel/trunk/arch/ sparc64 bugfix.
When disabling IMMU and DMMU the kernel has to perform synchronization operation
(e.g flush %r or membar #Sync instruction). There is no guarantee that the address
contained in %r is in DTLB and therefore the flush instruction can fault. Normally
this would be recognized and fixed by the OpenFirmware Fast Data MMU fault handler.
However, this handler lives in virtually mapped memory and an attempt to execute
there while the MMUs are disabled would result in a nested trap leading to error state.
Replacing flush %r instruction with membar #Sync, wich is sufficient in this case,
fixes this problem.
 
658 6712 d 2 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 6720 d 11 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.