OpenBIOS
Threads by month
- ----- 2025 -----
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2000 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1999 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1998 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1997 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1996 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1995 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1994 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1993 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1992 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1991 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1990 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1989 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1988 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1987 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1986 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1985 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1984 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1983 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1982 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1981 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1980 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1979 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1978 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1977 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1976 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1975 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1974 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1973 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1972 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1971 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1970 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1969 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1968 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1967 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1966 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1965 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1964 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1963 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1962 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1961 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1960 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1959 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1958 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1957 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1956 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1955 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1954 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1953 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1952 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1951 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1950 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1949 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1948 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1947 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1946 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1945 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1944 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1943 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1942 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1941 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1940 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1939 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1938 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1937 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1936 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1935 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1934 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1933 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1932 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1931 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1930 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1929 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1928 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1927 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1926 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1925 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1924 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1923 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1922 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1921 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1920 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1919 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1918 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1917 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1916 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1915 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1914 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1913 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1912 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1911 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1910 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1909 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1908 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1907 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1906 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1905 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1904 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
January 2011
- 10 participants
- 48 discussions
Author: mcayland
Date: Sun Jan 2 01:06:40 2011
New Revision: 1004
URL: http://tracker.coreboot.org/trac/openbios/changeset/1004
Log:
Switch SPARC32 over to use OFMEM's malloc()/free() internally rather than using it's own implementation.
Also juggle the memory to take into account that the allocations are coming from OFMEM, and remove
posix_memalign2() since it is no longer required.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland(a)siriusit.co.uk>
Tested-by: Blue Swirl <blauwirbel(a)gmail.com>
Reviewed-by: Blue Swirl <blauwirbel(a)gmail.com>
Modified:
trunk/openbios-devel/arch/sparc32/ldscript
trunk/openbios-devel/arch/sparc32/lib.c
trunk/openbios-devel/arch/sparc32/ofmem_sparc32.c
Modified: trunk/openbios-devel/arch/sparc32/ldscript
==============================================================================
--- trunk/openbios-devel/arch/sparc32/ldscript Sun Jan 2 01:06:34 2011 (r1003)
+++ trunk/openbios-devel/arch/sparc32/ldscript Sun Jan 2 01:06:40 2011 (r1004)
@@ -12,8 +12,7 @@
/* 16KB stack */
STACK_SIZE = 16384;
-/* 256k general alloc + 256k Forth dictionary + 16k Forth memory */
-VMEM_SIZE = (256 + 256 + 16) * 1024;
+VMEM_SIZE = 128 * 1024;
IOMEM_SIZE = 256 * 1024 + 768 * 1024;
SECTIONS
Modified: trunk/openbios-devel/arch/sparc32/lib.c
==============================================================================
--- trunk/openbios-devel/arch/sparc32/lib.c Sun Jan 2 01:06:34 2011 (r1003)
+++ trunk/openbios-devel/arch/sparc32/lib.c Sun Jan 2 01:06:40 2011 (r1004)
@@ -75,18 +75,6 @@
struct linux_mlist_v0 *ptmap;
struct linux_mlist_v0 *ptavail;
-static struct {
- char *next_malloc;
- int left;
- alloc_desc_t *mfree; /* list of free malloc blocks */
-
- range_t *phys_range;
- range_t *virt_range;
-
- translation_t *trans; /* this is really a translation_t */
-} ofmem;
-#define ALLOC_BLOCK (64 * 1024)
-
/* Private functions for mapping between physical/virtual addresses */
phys_addr_t
va2pa(unsigned long va)
@@ -108,112 +96,22 @@
return pa;
}
-// XXX should be posix_memalign
-static int
-posix_memalign2(void **memptr, size_t alignment, size_t size)
-{
- alloc_desc_t *d, **pp;
- char *ret;
-
- if( !size )
- return -1;
-
- size = (size + (alignment - 1)) & ~(alignment - 1);
- size += sizeof(alloc_desc_t);
-
- /* look in the freelist */
- for( pp=&ofmem.mfree; *pp && (**pp).size < size; pp = &(**pp).next )
- ;
-
- /* waste at most 4K by taking an entry from the freelist */
- if( *pp && (**pp).size < size + 0x1000 ) {
- ret = (char*)*pp + sizeof(alloc_desc_t);
- memset( ret, 0, (**pp).size - sizeof(alloc_desc_t) );
- *pp = (**pp).next;
- *memptr = ret;
- return 0;
- }
-
- if( !ofmem.next_malloc || ofmem.left < size) {
- unsigned long alloc_size = ALLOC_BLOCK;
- if (size > ALLOC_BLOCK)
- alloc_size = size;
- // Recover possible leftover
- if ((size_t)ofmem.left > sizeof(alloc_desc_t) + 4) {
- alloc_desc_t *d_leftover;
-
- d_leftover = (alloc_desc_t*)ofmem.next_malloc;
- d_leftover->size = ofmem.left - sizeof(alloc_desc_t);
- free((void *)((unsigned long)d_leftover +
- sizeof(alloc_desc_t)));
- }
-
- ofmem.next_malloc = mem_alloc(&cmem, alloc_size, 8);
- ofmem.left = alloc_size;
- }
-
- if( ofmem.left < size) {
- printk("out of malloc memory (%x)!\n", size );
- return -1;
- }
- d = (alloc_desc_t*) ofmem.next_malloc;
- ofmem.next_malloc += size;
- ofmem.left -= size;
-
- d->next = NULL;
- d->size = size;
-
- ret = (char*)d + sizeof(alloc_desc_t);
- memset( ret, 0, size - sizeof(alloc_desc_t) );
- *memptr = ret;
- return 0;
-}
-
-void *malloc(int size)
-{
- int ret;
- void *mem;
-
- ret = posix_memalign2(&mem, 8, size);
- if (ret != 0)
- return NULL;
- return mem;
-}
-
-void free(void *ptr)
+void *
+malloc(int size)
{
- alloc_desc_t **pp, *d;
-
- /* it is legal to free NULL pointers (size zero allocations) */
- if( !ptr )
- return;
-
- d = (alloc_desc_t*)((unsigned long)ptr - sizeof(alloc_desc_t));
- d->next = ofmem.mfree;
-
- /* insert in the (sorted) freelist */
- for( pp=&ofmem.mfree; *pp && (**pp).size < d->size ; pp = &(**pp).next )
- ;
- d->next = *pp;
- *pp = d;
+ return ofmem_malloc(size);
}
void *
realloc( void *ptr, size_t size )
{
- alloc_desc_t *d = (alloc_desc_t*)((unsigned long)ptr - sizeof(alloc_desc_t));
- char *p;
+ return ofmem_realloc(ptr, size);
+}
- if( !ptr )
- return malloc( size );
- if( !size ) {
- free( ptr );
- return NULL;
- }
- p = malloc( size );
- memcpy( p, ptr, MIN(d->size - sizeof(alloc_desc_t),size) );
- free( ptr );
- return p;
+void
+free(void *ptr)
+{
+ ofmem_free(ptr);
}
/*
Modified: trunk/openbios-devel/arch/sparc32/ofmem_sparc32.c
==============================================================================
--- trunk/openbios-devel/arch/sparc32/ofmem_sparc32.c Sun Jan 2 01:06:34 2011 (r1003)
+++ trunk/openbios-devel/arch/sparc32/ofmem_sparc32.c Sun Jan 2 01:06:40 2011 (r1004)
@@ -21,7 +21,7 @@
#define OF_MALLOC_BASE ((char*)OFMEM + ALIGN_SIZE(sizeof(ofmem_t), 8))
-#define MEMSIZE (256 * 1024)
+#define MEMSIZE (512 * 1024)
static union {
char memory[MEMSIZE];
ofmem_t ofmem;
1
0
Author: mcayland
Date: Sun Jan 2 01:06:34 2011
New Revision: 1003
URL: http://tracker.coreboot.org/trac/openbios/changeset/1003
Log:
Add ofmem_init() function to openbios.c taking into account that unlike SPARC64, OFMEM needs to be setup *before* the MMU so
that the page table allocation routines can use it.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland(a)siriusit.co.uk>
Tested-by: Blue Swirl <blauwirbel(a)gmail.com>
Reviewed-by: Blue Swirl <blauwirbel(a)gmail.com>
Modified:
trunk/openbios-devel/arch/sparc32/openbios.c
Modified: trunk/openbios-devel/arch/sparc32/openbios.c
==============================================================================
--- trunk/openbios-devel/arch/sparc32/openbios.c Sun Jan 2 01:06:12 2011 (r1002)
+++ trunk/openbios-devel/arch/sparc32/openbios.c Sun Jan 2 01:06:34 2011 (r1003)
@@ -25,6 +25,7 @@
#include "packages/video.h"
#define NO_QEMU_PROTOS
#include "arch/common/fw_cfg.h"
+#include "libopenbios/ofmem.h"
#define MEMORY_SIZE (16*1024) /* 16K ram for hosted system */
#define DICTIONARY_SIZE (256*1024) /* 256K for the dictionary */
@@ -946,6 +947,9 @@
if (!hwdef)
for(;;); // Internal inconsistency, hang
+ /* Make sure we setup OFMEM before the MMU as we need malloc() to setup page tables */
+ ofmem_init();
+
#ifdef CONFIG_DRIVER_SBUS
init_mmu_swift();
#endif
1
0

[commit] r1002 - in trunk/openbios-devel: arch/sparc32 drivers include/libc
by repository service Jan. 2, 2011
by repository service Jan. 2, 2011
Jan. 2, 2011
Author: mcayland
Date: Sun Jan 2 01:06:12 2011
New Revision: 1002
URL: http://tracker.coreboot.org/trac/openbios/changeset/1002
Log:
Switch IOMMU posix_memalign() calls over to ofmem_posix_memalign(), and then remove the private SPARC32 posix_memalign() implementation since it is no longer required.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland(a)siriusit.co.uk>
Tested-by: Blue Swirl <blauwirbel(a)gmail.com>
Reviewed-by: Blue Swirl <blauwirbel(a)gmail.com>
Modified:
trunk/openbios-devel/arch/sparc32/lib.c
trunk/openbios-devel/drivers/iommu.c
trunk/openbios-devel/include/libc/stdlib.h
Modified: trunk/openbios-devel/arch/sparc32/lib.c
==============================================================================
--- trunk/openbios-devel/arch/sparc32/lib.c Sun Jan 2 01:06:03 2011 (r1001)
+++ trunk/openbios-devel/arch/sparc32/lib.c Sun Jan 2 01:06:12 2011 (r1002)
@@ -216,21 +216,6 @@
return p;
}
-// XXX should be removed
-int
-posix_memalign(void **memptr, size_t alignment, size_t size)
-{
- void *block;
-
- block = mem_alloc(&cmem, size, alignment);
-
- if (!block)
- return -1;
-
- *memptr = block;
- return 0;
-}
-
/*
* Allocate memory. This is reusable.
*/
Modified: trunk/openbios-devel/drivers/iommu.c
==============================================================================
--- trunk/openbios-devel/drivers/iommu.c Sun Jan 2 01:06:03 2011 (r1001)
+++ trunk/openbios-devel/drivers/iommu.c Sun Jan 2 01:06:12 2011 (r1002)
@@ -53,7 +53,7 @@
int ret;
npages = (size + (PAGE_SIZE-1)) / PAGE_SIZE;
- ret = posix_memalign(&va, npages * PAGE_SIZE, PAGE_SIZE);
+ ret = ofmem_posix_memalign(&va, npages * PAGE_SIZE, PAGE_SIZE);
if (ret != 0)
return NULL;
@@ -132,7 +132,7 @@
/* Allocate IOMMU page table */
/* Tremendous alignment causes great waste... */
ptsize = (vasize / PAGE_SIZE) * sizeof(int);
- ret = posix_memalign((void *)&ptab, ptsize, ptsize);
+ ret = ofmem_posix_memalign((void *)&ptab, ptsize, ptsize);
if (ret != 0) {
DPRINTF("Cannot allocate IOMMU table [0x%x]\n", ptsize);
for (;;) { }
Modified: trunk/openbios-devel/include/libc/stdlib.h
==============================================================================
--- trunk/openbios-devel/include/libc/stdlib.h Sun Jan 2 01:06:03 2011 (r1001)
+++ trunk/openbios-devel/include/libc/stdlib.h Sun Jan 2 01:06:12 2011 (r1002)
@@ -19,7 +19,6 @@
extern void *malloc( int size );
extern void free( void *ptr );
extern void *realloc( void *ptr, size_t size );
-extern int posix_memalign(void **memptr, size_t alignment, size_t size);
/* should perhaps go somewhere else... */
extern void qsort( void *base, size_t nmemb, size_t size, int (*compar)(const void*, const void*));
1
0
Author: mcayland
Date: Sun Jan 2 01:06:03 2011
New Revision: 1001
URL: http://tracker.coreboot.org/trac/openbios/changeset/1001
Log:
Switch SPARC32 page tables over to use OFMEM's ofmem_posix_memalign() rather than its internal posix_memalign() function.
This requires a corresponding increase in the memory allocated to OFMEM in order to store the page tables.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland(a)siriusit.co.uk>
Tested-by: Blue Swirl <blauwirbel(a)gmail.com>
Reviewed-by: Blue Swirl <blauwirbel(a)gmail.com>
Modified:
trunk/openbios-devel/arch/sparc32/lib.c
trunk/openbios-devel/arch/sparc32/ofmem_sparc32.c
Modified: trunk/openbios-devel/arch/sparc32/lib.c
==============================================================================
--- trunk/openbios-devel/arch/sparc32/lib.c Sun Jan 2 01:05:56 2011 (r1000)
+++ trunk/openbios-devel/arch/sparc32/lib.c Sun Jan 2 01:06:03 2011 (r1001)
@@ -273,7 +273,7 @@
pte = l1[(va >> SRMMU_PGDIR_SHIFT) & (SRMMU_PTRS_PER_PGD - 1)];
if ((pte & SRMMU_ET_MASK) == SRMMU_ET_INVALID) {
if (alloc) {
- ret = posix_memalign(&p, SRMMU_PTRS_PER_PMD * sizeof(int),
+ ret = ofmem_posix_memalign(&p, SRMMU_PTRS_PER_PMD * sizeof(int),
SRMMU_PTRS_PER_PMD * sizeof(int));
if (ret != 0)
return ret;
@@ -290,7 +290,7 @@
pte = *(uint32_t *)pa2va(pa);
if ((pte & SRMMU_ET_MASK) == SRMMU_ET_INVALID) {
if (alloc) {
- ret = posix_memalign(&p, SRMMU_PTRS_PER_PTE * sizeof(void *),
+ ret = ofmem_posix_memalign(&p, SRMMU_PTRS_PER_PTE * sizeof(void *),
SRMMU_PTRS_PER_PTE * sizeof(void *));
if (ret != 0)
return ret;
@@ -602,9 +602,9 @@
mem_init(&cmem, (char *) &_vmem, (char *)&_evmem);
mem_init(&cio, (char *)&_end, (char *)&_iomem);
- posix_memalign((void *)&context_table, NCTX_SWIFT * sizeof(int),
+ ofmem_posix_memalign((void *)&context_table, NCTX_SWIFT * sizeof(int),
NCTX_SWIFT * sizeof(int));
- posix_memalign((void *)&l1, 256 * sizeof(int), 256 * sizeof(int));
+ ofmem_posix_memalign((void *)&l1, 256 * sizeof(int), 256 * sizeof(int));
context_table[0] = (((unsigned long)va2pa((unsigned long)l1)) >> 4) |
SRMMU_ET_PTD;
Modified: trunk/openbios-devel/arch/sparc32/ofmem_sparc32.c
==============================================================================
--- trunk/openbios-devel/arch/sparc32/ofmem_sparc32.c Sun Jan 2 01:05:56 2011 (r1000)
+++ trunk/openbios-devel/arch/sparc32/ofmem_sparc32.c Sun Jan 2 01:06:03 2011 (r1001)
@@ -21,8 +21,7 @@
#define OF_MALLOC_BASE ((char*)OFMEM + ALIGN_SIZE(sizeof(ofmem_t), 8))
-/* Temporarily very small */
-#define MEMSIZE (1 * 1024)
+#define MEMSIZE (256 * 1024)
static union {
char memory[MEMSIZE];
ofmem_t ofmem;
1
0
Author: mcayland
Date: Sun Jan 2 01:05:56 2011
New Revision: 1000
URL: http://tracker.coreboot.org/trac/openbios/changeset/1000
Log:
Alter the SPARC32 entry.S file to allow extra space for the page tables to handle OpenBIOS images up to 2MB.
Currently the page tables only allow enough space for a 1.5MB image; however during testing/development it was
useful to temporarily allow larger images for debugging. Note that if larger ROM sizes are required for
testing, it is necessary to patch qemu to raise the hardcoded limit there too.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland(a)siriusit.co.uk>
Tested-by: Blue Swirl <blauwirbel(a)gmail.com>
Reviewed-by: Blue Swirl <blauwirbel(a)gmail.com>
Modified:
trunk/openbios-devel/arch/sparc32/entry.S
Modified: trunk/openbios-devel/arch/sparc32/entry.S
==============================================================================
--- trunk/openbios-devel/arch/sparc32/entry.S Sun Jan 2 01:05:51 2011 (r999)
+++ trunk/openbios-devel/arch/sparc32/entry.S Sun Jan 2 01:05:56 2011 (r1000)
@@ -38,15 +38,15 @@
*
* Top +-------------------------+
* | SMP CPU table |
- * | s + 0xf00 ... 0xf0f |
- * | s + 0xf0c valid |
- * | s + 0xf08 entry |
- * | s + 0xf04 ctxtbl |
- * | s + 0xf00 ctx |
+ * | s + 0x1f00 ... 0x1f0f |
+ * | s + 0x1f0c valid |
+ * | s + 0x1f08 entry |
+ * | s + 0x1f04 ctxtbl |
+ * | s + 0x1f00 ctx |
* +-------------------------+
* | Bootstrap |
- * | MMU L3 tables 5 * 0x100 |
- * | s + 0xa00 ... 0xeff |
+ * | MMU L3 tables 8 * 0x100 |
+ * | s + 0xa00 ... 0x11ff |
* +-------------------------+
* | Bootstrap |
* | MMU L2 tables 2 * 0x100 |
@@ -123,11 +123,12 @@
! Start of private memory in %g6
- set 0x1000, %g3
+ set 0x2000, %g3
sub %g1, %g3, %g6
! Calculate SMP table location
- add %g6, 0xf0c, %g2 ! valid?
+ set 0x1f0c, %g2
+ add %g6, %g2, %g2 ! valid?
lda [%g2] ASI_M_BYPASS, %g7
sta %g0, [%g2] ASI_M_BYPASS
@@ -168,17 +169,20 @@
load_ctx:
! SMP init, jump to user specified address
- add %g6, 0xf04, %g5 ! ctxtbl
+ set 0x1f04, %g5
+ add %g6, %g5, %g5 ! ctxtbl
lda [%g5] ASI_M_BYPASS, %g2
sta %g0, [%g5] ASI_M_BYPASS
set AC_M_CTPR, %g1
sta %g2, [%g1] ASI_M_MMUREGS ! set ctx table ptr
- add %g6, 0xf00, %g5 ! ctx
+ set 0x1f00, %g5
+ add %g6, %g5, %g5 ! ctx
lda [%g5] ASI_M_BYPASS, %g2
sta %g0, [%g5] ASI_M_BYPASS
set AC_M_CXR, %g1
sta %g2, [%g1] ASI_M_MMUREGS ! set context
- add %g6, 0xf08, %g5 ! entry
+ set 0x1f08, %g5
+ add %g6, %g5, %g5 ! entry
lda [%g5] ASI_M_BYPASS, %g2
sta %g0, [%g5] ASI_M_BYPASS
set 1, %g1
@@ -217,7 +221,7 @@
/* Create temporary page tables and map the ROM area to end of
RAM. This will be done properly in iommu.c later. */
! Calculate start of page tables etc. to %g6
- set 0x1000, %g4
+ set 0x2000, %g4
sub %g1, %g4, %g6 ! start of private memory
mov %g6, %g2 ! ctx table at s+0x0
@@ -273,7 +277,22 @@
srl %g3, 0x4, %g3
or %g3, 0x1, %g3
sta %g3, [%g2] ASI_M_BYPASS
- add %g2, 0xa00-0x9e0, %g2 ! s+0xa00
+ add %g2, 4, %g2 ! s+0x9e4
+ add %g2, 0xf00 - 0x9e4, %g3 ! 6th l3 table for rom at s+0xf00
+ srl %g3, 0x4, %g3
+ or %g3, 0x1, %g3
+ sta %g3, [%g2] ASI_M_BYPASS
+ add %g2, 4, %g2 ! s+0x9e8
+ add %g2, 0x1000 - 0x9e8, %g3 ! 7th l3 table for rom at s+0x1000
+ srl %g3, 0x4, %g3
+ or %g3, 0x1, %g3
+ sta %g3, [%g2] ASI_M_BYPASS
+ add %g2, 4, %g2 ! s+0x9ec
+ add %g2, 0x1100 - 0x9ec, %g3 ! 8th l3 table for rom at s+0x1100
+ srl %g3, 0x4, %g3
+ or %g3, 0x1, %g3
+ sta %g3, [%g2] ASI_M_BYPASS
+ add %g2, 0xa00-0x9ec, %g2 ! s+0xa00
/* Use end of ram for code, rodata, data, and bss
sections. SunOS wants to write to trap table... */
@@ -282,6 +301,7 @@
sub %g6, %g4, %g6
sub %g1, %g6, %g3
set 0x1000, %g5
+ sub %g3, %g5, %g3
sub %g3, %g5, %g3 ! start of ROM copy
mov %g3, %g7 ! save in %g7
srl %g6, 12, %g6 ! # of all pages
@@ -311,7 +331,7 @@
bl 1b
add %g4, 0x4, %g4
- set 0x1000, %g3
+ set 0x2000, %g3
sub %g6, %g3, %g7 ! ctx table at s+0x0
set AC_M_CTPR, %g2
srl %g7, 4, %g7
@@ -360,7 +380,7 @@
set _start, %o2
sub %o0, %o2, %o0
sub %g6, %o0, %o0
- set 0x1000, %o1
+ set 0x2000, %o1
sub %o0, %o1, %o0 ! start of ROM copy
sub %o2, %o0, %o0 ! start of ROM copy
set va_shift, %g1
1
0
Author: mcayland
Date: Sun Jan 2 01:05:51 2011
New Revision: 999
URL: http://tracker.coreboot.org/trac/openbios/changeset/999
Log:
Reduce memory of the Forth machine to 16k.
Since this memory is only being used by alloc-mem and free-mem then the majority of memory allocations will not actually be
taken from this pool but from the C malloc()/free() implementations instead.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland(a)siriusit.co.uk>
Tested-by: Blue Swirl <blauwirbel(a)gmail.com>
Reviewed-by: Blue Swirl <blauwirbel(a)gmail.com>
Modified:
trunk/openbios-devel/arch/sparc32/ldscript
trunk/openbios-devel/arch/sparc32/openbios.c
Modified: trunk/openbios-devel/arch/sparc32/ldscript
==============================================================================
--- trunk/openbios-devel/arch/sparc32/ldscript Sun Jan 2 01:05:44 2011 (r998)
+++ trunk/openbios-devel/arch/sparc32/ldscript Sun Jan 2 01:05:51 2011 (r999)
@@ -12,8 +12,8 @@
/* 16KB stack */
STACK_SIZE = 16384;
-/* 256k general alloc + 256k Forth dictionary + 128k Forth memory */
-VMEM_SIZE = (256 + 256 + 128) * 1024;
+/* 256k general alloc + 256k Forth dictionary + 16k Forth memory */
+VMEM_SIZE = (256 + 256 + 16) * 1024;
IOMEM_SIZE = 256 * 1024 + 768 * 1024;
SECTIONS
Modified: trunk/openbios-devel/arch/sparc32/openbios.c
==============================================================================
--- trunk/openbios-devel/arch/sparc32/openbios.c Sun Jan 2 01:05:44 2011 (r998)
+++ trunk/openbios-devel/arch/sparc32/openbios.c Sun Jan 2 01:05:51 2011 (r999)
@@ -26,7 +26,7 @@
#define NO_QEMU_PROTOS
#include "arch/common/fw_cfg.h"
-#define MEMORY_SIZE (128*1024) /* 16K ram for hosted system */
+#define MEMORY_SIZE (16*1024) /* 16K ram for hosted system */
#define DICTIONARY_SIZE (256*1024) /* 256K for the dictionary */
#define UUID_FMT "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x"
#define FW_CFG_SUN4M_DEPTH (FW_CFG_ARCH_LOCAL + 0x00)
1
0

[commit] r998 - in trunk/openbios-devel: arch/sparc32 config/examples
by repository service Jan. 2, 2011
by repository service Jan. 2, 2011
Jan. 2, 2011
Author: mcayland
Date: Sun Jan 2 01:05:44 2011
New Revision: 998
URL: http://tracker.coreboot.org/trac/openbios/changeset/998
Log:
Change the SPARC32 build system so that OFMEM is now included within SPARC32 builds.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland(a)siriusit.co.uk>
Tested-by: Blue Swirl <blauwirbel(a)gmail.com>
Reviewed-by: Blue Swirl <blauwirbel(a)gmail.com>
Added:
trunk/openbios-devel/arch/sparc32/ofmem_sparc32.c
Modified:
trunk/openbios-devel/arch/sparc32/build.xml
trunk/openbios-devel/arch/sparc32/lib.c
trunk/openbios-devel/config/examples/sparc32_config.xml
Modified: trunk/openbios-devel/arch/sparc32/build.xml
==============================================================================
--- trunk/openbios-devel/arch/sparc32/build.xml Thu Dec 30 23:02:09 2010 (r997)
+++ trunk/openbios-devel/arch/sparc32/build.xml Sun Jan 2 01:05:44 2011 (r998)
@@ -15,6 +15,7 @@
<object source="udiv.S"/>
<object source="linux_load.c"/>
<object source="sys_info.c"/>
+ <object source="ofmem_sparc32.c"/>
<object source="romvec.c"/>
<object source="call-romvec.S"/>
<object source="entry.S"/>
Modified: trunk/openbios-devel/arch/sparc32/lib.c
==============================================================================
--- trunk/openbios-devel/arch/sparc32/lib.c Thu Dec 30 23:02:09 2010 (r997)
+++ trunk/openbios-devel/arch/sparc32/lib.c Sun Jan 2 01:05:44 2011 (r998)
@@ -497,6 +497,16 @@
DPRINTF("obp_dumb_munmap: virta 0x%x, sz %d\n", (unsigned int)va, size);
}
+void ofmem_arch_unmap_pages(ucell virt, ucell size)
+{
+ /* Currently do nothing */
+}
+
+void ofmem_arch_early_map_pages(phys_addr_t phys, ucell virt, ucell size, ucell mode)
+{
+ /* Currently do nothing */
+}
+
char *obp_dumb_memalloc(char *va, unsigned int size)
{
size = (size + 7) & ~7;
Added: trunk/openbios-devel/arch/sparc32/ofmem_sparc32.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ trunk/openbios-devel/arch/sparc32/ofmem_sparc32.c Sun Jan 2 01:05:44 2011 (r998)
@@ -0,0 +1,135 @@
+/*
+ * <ofmem_sparc32.c>
+ *
+ * OF Memory manager
+ *
+ * Copyright (C) 1999-2004 Samuel Rydh (samuel(a)ibrium.se)
+ * Copyright (C) 2004 Stefan Reinauer
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation
+ *
+ */
+
+#include "config.h"
+#include "libopenbios/bindings.h"
+#include "libc/string.h"
+#include "libopenbios/ofmem.h"
+#include "asm/asi.h"
+#include "pgtsrmmu.h"
+
+#define OF_MALLOC_BASE ((char*)OFMEM + ALIGN_SIZE(sizeof(ofmem_t), 8))
+
+/* Temporarily very small */
+#define MEMSIZE (1 * 1024)
+static union {
+ char memory[MEMSIZE];
+ ofmem_t ofmem;
+} s_ofmem_data;
+
+#define OFMEM (&s_ofmem_data.ofmem)
+#define TOP_OF_RAM (s_ofmem_data.memory + MEMSIZE)
+
+translation_t **g_ofmem_translations = &s_ofmem_data.ofmem.trans;
+
+extern uint32_t qemu_mem_size;
+
+static inline size_t ALIGN_SIZE(size_t x, size_t a)
+{
+ return (x + a - 1) & ~(a-1);
+}
+
+static ucell get_heap_top( void )
+{
+ return (ucell)TOP_OF_RAM;
+}
+
+ofmem_t* ofmem_arch_get_private(void)
+{
+ return OFMEM;
+}
+
+void* ofmem_arch_get_malloc_base(void)
+{
+ return OF_MALLOC_BASE;
+}
+
+ucell ofmem_arch_get_heap_top(void)
+{
+ return get_heap_top();
+}
+
+ucell ofmem_arch_get_virt_top(void)
+{
+ return (ucell)TOP_OF_RAM;
+}
+
+phys_addr_t ofmem_arch_get_phys_top(void)
+{
+ ofmem_t *ofmem = ofmem_arch_get_private();
+
+ return (uintptr_t)ofmem->ramsize - 0x1000000;
+}
+
+retain_t *ofmem_arch_get_retained(void)
+{
+ /* Not used */
+ return 0;
+}
+
+int ofmem_arch_get_physaddr_cellsize(void)
+{
+ return 2;
+}
+
+int ofmem_arch_encode_physaddr(ucell *p, phys_addr_t value)
+{
+ int n = 0;
+
+ p[n++] = value >> 32;
+ p[n++] = value;
+
+ return n;
+}
+
+int ofmem_arch_get_translation_entry_size(void)
+{
+ /* Return size of a single MMU package translation property entry in cells */
+ return 3;
+}
+
+void ofmem_arch_create_translation_entry(ucell *transentry, translation_t *t)
+{
+ /* Generate translation property entry for SPARC. While there is no
+ formal documentation for this, both Linux kernel and OpenSolaris sources
+ expect a translation property entry to have the following layout:
+
+ virtual address
+ length
+ mode
+ */
+
+ transentry[0] = t->virt;
+ transentry[1] = t->size;
+ transentry[2] = t->mode;
+}
+
+/************************************************************************/
+/* misc */
+/************************************************************************/
+
+ucell ofmem_arch_default_translation_mode( phys_addr_t phys )
+{
+ return SRMMU_REF | SRMMU_CACHE | SRMMU_PRIV;
+}
+
+/************************************************************************/
+/* init / cleanup */
+/************************************************************************/
+
+void ofmem_init( void )
+{
+ memset(&s_ofmem_data, 0, sizeof(s_ofmem_data));
+ s_ofmem_data.ofmem.ramsize = qemu_mem_size;
+}
Modified: trunk/openbios-devel/config/examples/sparc32_config.xml
==============================================================================
--- trunk/openbios-devel/config/examples/sparc32_config.xml Thu Dec 30 23:02:09 2010 (r997)
+++ trunk/openbios-devel/config/examples/sparc32_config.xml Sun Jan 2 01:05:44 2011 (r998)
@@ -26,6 +26,8 @@
<option name="CONFIG_DEBLOCKER" type="boolean" value="true"/>
<option name="CONFIG_FONT_8X8" type="boolean" value="true"/>
<option name="CONFIG_FONT_8X16" type="boolean" value="false"/>
+ <option name="CONFIG_OFMEM" type="boolean" value="true"/>
+ <option name="CONFIG_OFMEM_MALLOC_ALIGN" type="integer" value="8"/>
<option name="CONFIG_LOADER_AOUT" type="boolean" value="true"/>
<option name="CONFIG_LOADER_BOOTINFO" type="boolean" value="false"/>
<option name="CONFIG_LOADER_ELF" type="boolean" value="true"/>
1
0

Re: [OpenBIOS] [PATCH 3/6] Introduce va2pa() and pa2va() functions for PPC for subsequent use by OFMEM.
by Andreas Färber Jan. 1, 2011
by Andreas Färber Jan. 1, 2011
Jan. 1, 2011
Mark,
Am 29.12.2010 um 12:07 schrieb Mark Cave-Ayland:
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland(a)siriusit.co.uk>
This does not really address my comments...
> ---
> openbios-devel/arch/ppc/qemu/ofmem.c | 21 +++++++++++++++++++++
> 1 files changed, 21 insertions(+), 0 deletions(-)
>
> diff --git a/openbios-devel/arch/ppc/qemu/ofmem.c b/openbios-devel/
> arch/ppc/qemu/ofmem.c
> index c21a112..44b5ef4 100644
> --- a/openbios-devel/arch/ppc/qemu/ofmem.c
> +++ b/openbios-devel/arch/ppc/qemu/ofmem.c
> @@ -180,6 +180,27 @@ void ofmem_arch_create_translation_entry(ucell
> *transentry, translation_t *t)
> /* OF private allocations */
> /
> ************************************************************************/
>
> +/* Private functions for mapping between physical/virtual addresses
> */
> +inline phys_addr_t
> +va2pa(unsigned long va)
> +{
> + if (va >= OF_CODE_START && va < OF_CODE_START + OF_CODE_SIZE) {
The latter will overflow on 32-bit ppc, and (va < 0) == 0 so that
branch would never be taken. Is there no compiler warning?
> + return (phys_addr_t)get_rom_base() - OF_CODE_START + va;
Again, what's the reason for duplicating this calculation?
> + } else {
> + return (phys_addr_t)va;
> + }
> +}
What about the following trivial implementation instead?
phys_addr_t va2pa(unsigned long va)
{
ucell mode;
return ea_to_phys(va, &mode); // calls ofmem_translate() internally
for the 'else' case
}
> +
> +inline unsigned long
> +pa2va(phys_addr_t pa)
> +{
> + if ((pa - get_rom_base() + OF_CODE_START >= OF_CODE_START) &&
> + (pa - get_rom_base() + OF_CODE_START < OF_CODE_START +
> OF_CODE_SIZE))
> + return (unsigned long)pa - get_rom_base() + OF_CODE_START;
> + else
> + return (unsigned long)pa;
> +}
Trailing whitespace?
Missing braces for QEMU style.
BR,
Andreas
> +
> void *
> malloc(int size)
> {
> --
> 1.7.2.3
>
>
> --
> OpenBIOS http://openbios.org/
> Mailinglist: http://lists.openbios.org/mailman/listinfo
> Free your System - May the Forth be with you
2
7