Changeset 94d614e in mainline for boot/arch


Ignore:
Timestamp:
2006-07-13T17:32:38Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
a5f76758
Parents:
63cda71
Message:

Remove OpenFirmware calls from kernel/ entirely.

Switch the sparc64 port to use bootinfo.

Copy memcpy from boot/ to sparc64 kernel/ and
adjust it for memcpy_from/to_uspace.

Location:
boot/arch/sparc64/loader
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • boot/arch/sparc64/loader/asm.S

    r63cda71 r94d614e  
    9999
    100100jump_to_kernel:
    101         set ofw_cif, %l0
    102         jmp %o0                         ! jump to kernel
    103         ldx [%l0], %o4                  ! pass OpenFirmware address in %o4
     101        mov %o0, %l1
     102        mov %o1, %o0
     103        mov %o2, %o1
     104        jmp %l1                         ! jump to kernel
     105        nop
    104106
    105107.global ofw
  • boot/arch/sparc64/loader/main.c

    r63cda71 r94d614e  
    8181        printf("\nCopying components\n");
    8282        unsigned int top = 0;
    83         bootinfo.cnt = 0;
     83        bootinfo.taskmap.count = 0;
    8484        for (i = 0; i < COMPONENTS; i++) {
     85                void * base = (void *) KERNEL_VIRTUAL_ADDRESS;
     86       
    8587                printf(" %s...", components[i].name);
    8688                top = ALIGN_UP(top, PAGE_SIZE);
    87                 memcpy(((void *) KERNEL_VIRTUAL_ADDRESS) + top, components[i].start, components[i].size);
     89                memcpy(base + top, components[i].start, components[i].size);
    8890                if (i > 0) {
    89                         bootinfo.tasks[bootinfo.cnt].addr = ((void *) KERNEL_VIRTUAL_ADDRESS) + top;
    90                         bootinfo.tasks[bootinfo.cnt].size = components[i].size;
    91                         bootinfo.cnt++;
     91                        bootinfo.taskmap.tasks[bootinfo.taskmap.count].addr = base + top;
     92                        bootinfo.taskmap.tasks[bootinfo.taskmap.count].size = components[i].size;
     93                        bootinfo.taskmap.count++;
    9294                }
    9395                top += components[i].size;
  • boot/arch/sparc64/loader/main.h

    r63cda71 r94d614e  
    3131
    3232#include <ofw.h>
     33#include <types.h>
    3334
    3435#define TASKMAP_MAX_RECORDS 32
     
    3637typedef struct {
    3738        void *addr;
    38         unsigned int size;
     39        uint32_t size;
    3940} task_t;
    4041
    4142typedef struct {
    42         unsigned int cnt;
     43        uint32_t count;
    4344        task_t tasks[TASKMAP_MAX_RECORDS];
     45} taskmap_t;
     46
     47typedef struct {
     48        taskmap_t taskmap;
    4449        memmap_t memmap;
    4550        screen_t screen;
Note: See TracChangeset for help on using the changeset viewer.