Commit Graph

24 Commits

Author SHA1 Message Date
Mark Cave-Ayland
0fcbe4e047 Replace hardcoded value with the correct constant from spitfire.h.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>


git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@897 f158a5a8-5612-0410-a976-696ce0be7e32
2010-10-16 14:13:15 +00:00
Mark Cave-Ayland
44af623113 Implement va>tte-data defer word for the MMU TLB miss handlers.
As used by OpenSolaris. This enables OpenSolaris boot to proceed further by allowing the kernel to correctly manage its own TLB 
misses.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>


git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@886 f158a5a8-5612-0410-a976-696ce0be7e32
2010-10-03 20:28:27 +00:00
Mark Cave-Ayland
630c56c162 Implement pgmap@ for SPARC64 since it is required for OpenSolaris.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>


git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@877 f158a5a8-5612-0410-a976-696ce0be7e32
2010-10-03 09:37:13 +00:00
Mark Cave-Ayland
6d590534bb Allow context-switching within the MMU TLB miss handlers on SPARC64, and use this to implement MMU miss handlers in C rather
than assembler.

In order to allow OpenSolaris to boot under OpenBIOS, it is necessary to be able to invoke Forth words from within the MMU 
I/D-TLB miss handlers, since Solaris 10 kernels hook into the virtual to physical address translation process via va>tte-data at 
boot time. Hence this patch implements two macros: SAVE_CPU_STATE and RESTORE_CPU_STATE which enable a context switch to occur 
from within these trap handlers.

Things are more complicated from within the MMU miss handlers because we can't use flushw to flush the processor registers to 
stack. This is because the memory pointed to by the stack pointer may not be in the TLB either, and so we'd end up in a 
recursive MMU trap. Hence we solve this by creating a static stack within OpenBIOS which is guaranteed to be locked in the TLB 
and storing all of our state there.

Once the ability to switch context has been implemented, it is possible to invoke C functions as per normal from within the MMU 
miss handlers. Hence as a proof of concept I've migrated the MMU miss handling code from ASM to C with a view of making the 
relevant changes to invoke the relevant Forth functions at a later date.

I'd also like to say thank you to Blue Swirl who took the time to answer all my questions and generally point out the 
shortcomings in my first attempts at SPARC assembler.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>


git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@874 f158a5a8-5612-0410-a976-696ce0be7e32
2010-10-02 12:10:45 +00:00
Mark Cave-Ayland
28fed458ff Alter the MMU properties as suggested by the UltraSPARC-II device tree prtconf output in the Debian sparc-utils package and
Solaris 9 boot; i.e. remove the /CPU/mmu device, relocate its methods to /virtual-memory, and alter the /chosen mmu property so 
that it now points to /virtual-memory. This helps both Solaris 9 and OpenSolaris boot further along the way.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>


git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@859 f158a5a8-5612-0410-a976-696ce0be7e32
2010-08-25 16:58:55 +00:00
Mark Cave-Ayland
bb488d3045 Fix bug in SPARC64 CIF claim function - previously we were just allocating virtual memory rather than allocating both virtual
and physical memory and setting up an MMU mapping.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>


git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@856 f158a5a8-5612-0410-a976-696ce0be7e32
2010-08-22 21:23:19 +00:00
Mark Cave-Ayland
ca0f9c5a03 Commit partial implementation of SUNW,retain for SPARC64 based upon the existing physical allocation routines. I've been unable
to finish the code and test retention after a restart since the OpenBIOS words reset and reset-all don't seem to work at the 
moment. However, it enables OpenSolaris boot to get further in the meantime.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>


git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@766 f158a5a8-5612-0410-a976-696ce0be7e32
2010-05-02 19:26:29 +00:00
Mark Cave-Ayland
ce38a05886 According to the OF spec, any calls to claim made through the /memory node should not attempt to add a memory translation. This
solves a problem in Milax boot whereby the boot loader was attempting to map the address after it had already been done.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>


git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@737 f158a5a8-5612-0410-a976-696ce0be7e32
2010-04-08 21:22:39 +00:00
Mark Cave-Ayland
1dbe55b8e4 Move the basic OpenBIOS configuration header files from include/openbios to include/.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>


git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@695 f158a5a8-5612-0410-a976-696ce0be7e32
2010-03-14 17:19:58 +00:00
Mark Cave-Ayland
f84dd73af4 Fix the sys_info.h header file so it doesn't reference functions both inside and outside of libopenbios, and move the firmware
configuration header file to include/arch/common. Following through the code showed that elfnote.c and linuxbios.c were being 
used by sys_info and so these are also renamed to elf_info.c and linuxbios_info.c for clarity.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>


git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@693 f158a5a8-5612-0410-a976-696ce0be7e32
2010-03-14 16:09:44 +00:00
Mark Cave-Ayland
4a2c065e4f Move the libopenbios header files into include/libopenbios to synchronise with the code directory structure.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>


git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@691 f158a5a8-5612-0410-a976-696ce0be7e32
2010-03-14 15:05:53 +00:00
igor.v.kovalenko
384b8c7614 Revert r639, fix mem_claim (Igor Kovalenko) and mem_release
Signed-off-by: igor.v.kovalenko@gmail.com
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>

git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@640 f158a5a8-5612-0410-a976-696ce0be7e32
2009-12-05 10:13:17 +00:00
Blue Swirl
3068b8763d Sparc64: fix mmu_map
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>

git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@639 f158a5a8-5612-0410-a976-696ce0be7e32
2009-12-04 22:01:12 +00:00
Mark Cave-Ayland
ba52470cce In the IEEE 1275-1994 specification the parameters for Client Interface calls
are not in forth stack order but in reversed (heh!) order. Our implementation
confused this.

This second patch is fairly straightforward; probably the only unexpected part is
the need to rename the existing /openprom/client-services "claim" and
"release" words to "cif-claim" and "cif-release" respectively. This is
because we need to use the "claim" and "release" words in
forth/system/ciface.fs to reverse the argument order before calling the real
underlying words.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>



git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@637 f158a5a8-5612-0410-a976-696ce0be7e32
2009-12-02 10:44:35 +00:00
Blue Swirl
44ede105c1 switch sparc64 to ofmem module implementation (Igor Kovalenko)
git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@528 f158a5a8-5612-0410-a976-696ce0be7e32
2009-08-02 11:08:01 +00:00
Blue Swirl
ffd20b950d Switch sparc64 to ofmem (Igor Kovalenko)
Initialize ofmem at startup.
Switch malloc/realloc/free to use ofmem.
Implement runtime migration of startup mappings to ofmem.
Implement mmu miss handlers to install tlb entries based on ofmem
translations list.


git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@517 f158a5a8-5612-0410-a976-696ce0be7e32
2009-07-31 11:16:24 +00:00
Blue Swirl
e5b34330ee Sparc64 ofmem implementation (Igor Kovalenko)
Add sparc64 ofmem implementation.


git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@516 f158a5a8-5612-0410-a976-696ce0be7e32
2009-07-31 11:15:30 +00:00
Blue Swirl
047609e0fa Add claim and release client methods
git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@496 f158a5a8-5612-0410-a976-696ce0be7e32
2009-05-23 16:03:20 +00:00
Blue Swirl
a767eeb2d4 Allocate Forth memory and dictionary using malloc like PPC (cf. r345)
git-svn-id: svn://coreboot.org/openbios/openbios-devel@347 f158a5a8-5612-0410-a976-696ce0be7e32
2009-01-04 14:47:11 +00:00
Blue Swirl
b700809e7f Clean up Sparc64 memory management
Concentrate memory and MMU management (lib.c malloc, OF /memory) to lib.c.


git-svn-id: svn://coreboot.org/openbios/openbios-devel@346 f158a5a8-5612-0410-a976-696ce0be7e32
2009-01-04 12:53:26 +00:00
Blue Swirl
c77259ec3a Change uses of sprintf to snprintf
git-svn-id: svn://coreboot.org/openbios/openbios-devel@277 f158a5a8-5612-0410-a976-696ce0be7e32
2008-11-30 13:44:38 +00:00
Blue Swirl
3409ec8b13 Fix some Sparc64 compile warnings
git-svn-id: svn://coreboot.org/openbios/openbios-devel@190 f158a5a8-5612-0410-a976-696ce0be7e32
2008-07-07 18:36:16 +00:00
Blue Swirl
84659172f1 Enforce malloc alignment
git-svn-id: svn://coreboot.org/openbios/openbios-devel@184 f158a5a8-5612-0410-a976-696ce0be7e32
2008-02-01 19:55:39 +00:00
Stefan Reinauer
ad26a9b752 initial sparc64 version
git-svn-id: svn://coreboot.org/openbios/openbios-devel@58 f158a5a8-5612-0410-a976-696ce0be7e32
2006-06-10 01:37:53 +00:00