Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 1131 → Rev 1132

/kernel/trunk/arch/ppc32/include/boot/memmap.h
File deleted
/kernel/trunk/arch/ppc32/include/boot/boot.h
34,4 → 34,38
/* Temporary stack size for boot process */
#define TEMP_STACK_SIZE 0x100
 
#define MEMMAP_MAX_RECORDS 32
 
#ifndef __ASM__
 
#include <arch/types.h>
 
typedef struct {
__address start;
__u32 size;
} memzone_t;
 
typedef struct {
__u32 total;
__u32 count;
memzone_t zones[MEMMAP_MAX_RECORDS];
} memmap_t;
 
typedef struct {
unsigned int addr;
unsigned int width;
unsigned int height;
unsigned int bpp;
unsigned int scanline;
} screen_t;
 
typedef struct {
memmap_t memmap;
screen_t screen;
} bootinfo_t;
 
extern bootinfo_t bootinfo;
 
#endif
 
#endif
/kernel/trunk/arch/ppc32/src/boot/boot.S
28,7 → 28,6
 
#include <arch/asm/regname.h>
#include <arch/boot/boot.h>
#include <arch/boot/memmap.h>
 
.section K_TEXT_START, "ax"
 
40,8 → 39,8
lis sp, end_stack@ha
addi sp, sp, end_stack@l
# r10 contains physical address to memmap_t
# from boot loader
# r3 contains physical address of bootinfo_t
# r4 contains size of bootinfo_t
lis r31, 0x80000000@ha
addi r31, r31, 0x80000000@l
48,30 → 47,26
add r3, r3, r31
 
lis r31, memmap@ha
addi r31, r31, memmap@l # r31 = memmap
lis r31, bootinfo@ha
addi r31, r31, bootinfo@l # r31 = bootinfo
lwz r30, 0(r3) # memmap->total
stw r30, 0(r31)
cmpwi r4, 0
beq bootinfo_end
lwzu r30, 4(r3) # memmap->count
stwu r30, 4(r31)
cmpwi r30, 0
beq memmap_end
mtctr r30
memmap_loop:
lwzu r30, 4(r3) # memmap->zones[i].start
stwu r30, 4(r31)
bootinfo_loop:
lwzu r30, 4(r3) # memmap->zones[i].size
stwu r30, 4(r31)
lwz r30, 0(r3)
stw r30, 0(r31)
addi r3, r3, 4
addi r31, r31, 4
subi r4, r4, 4
cmpwi r4, 0
bgt bootinfo_loop
bootinfo_end:
bdnz memmap_loop
memmap_end:
b main_bsp
 
.section K_DATA_START, "aw", @progbits
/kernel/trunk/arch/ppc32/src/ppc32.c
27,11 → 27,14
*/
 
#include <arch.h>
#include <arch/boot/boot.h>
#include <arch/console.h>
#include <arch/drivers/cuda.h>
#include <arch/mm/memory_init.h>
#include <arch/interrupt.h>
 
bootinfo_t bootinfo;
 
void arch_pre_mm_init(void)
{
/* Initialize dispatch table */
/kernel/trunk/arch/ppc32/src/mm/frame.c
26,8 → 26,8
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
#include <arch/boot/boot.h>
#include <arch/mm/frame.h>
#include <arch/boot/memmap.h>
#include <arch/mm/memory_init.h>
#include <mm/frame.h>
#include <align.h>
42,9 → 42,9
pfn_t start, conf;
size_t size;
for (i = 0; i < memmap.count; i++) {
start = ADDR2PFN(ALIGN_UP(memmap.zones[i].start, FRAME_SIZE));
size = SIZE2FRAMES(ALIGN_DOWN(memmap.zones[i].size, FRAME_SIZE));
for (i = 0; i < bootinfo.memmap.count; i++) {
start = ADDR2PFN(ALIGN_UP(bootinfo.memmap.zones[i].start, FRAME_SIZE));
size = SIZE2FRAMES(ALIGN_DOWN(bootinfo.memmap.zones[i].size, FRAME_SIZE));
if ((minconf < start) || (minconf >= start + size))
conf = start;
52,8 → 52,8
conf = minconf;
zone_create(start, size, conf, 0);
if (last_frame < ALIGN_UP(memmap.zones[i].start + memmap.zones[i].size, FRAME_SIZE))
last_frame = ALIGN_UP(memmap.zones[i].start + memmap.zones[i].size, FRAME_SIZE);
if (last_frame < ALIGN_UP(bootinfo.memmap.zones[i].start + bootinfo.memmap.zones[i].size, FRAME_SIZE))
last_frame = ALIGN_UP(bootinfo.memmap.zones[i].start + bootinfo.memmap.zones[i].size, FRAME_SIZE);
}
 
/* First is exception vector, second is 'implementation specific' */
/kernel/trunk/arch/ppc32/src/mm/memory_init.c
26,17 → 26,15
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
 
#include <arch/boot/memmap.h>
#include <arch/boot/boot.h>
#include <arch/mm/memory_init.h>
#include <typedefs.h>
#include <print.h>
 
memmap_t memmap;
 
 
size_t get_memory_size(void)
{
return memmap.total;
return bootinfo.memmap.total;
}
 
 
44,6 → 42,6
{
count_t i;
for (i = 0; i < memmap.count; i++)
printf("base: %L size: %L\n", memmap.zones[i].start, memmap.zones[i].size);
for (i = 0; i < bootinfo.memmap.count; i++)
printf("base: %L size: %L\n", bootinfo.memmap.zones[i].start, bootinfo.memmap.zones[i].size);
}