Changeset 272c219 in mainline for arch/ppc32/loader/ofw.c


Ignore:
Timestamp:
2006-03-13T18:42:58Z (19 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
eebd172
Parents:
8cbe350
Message:

cleanup and extend OFW code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/ppc32/loader/ofw.c

    r8cbe350 r272c219  
    2828 
    2929#include "ofw.h"
     30#include "printf.h"
    3031
    3132ofw_entry ofw;
    3233
    3334phandle ofw_chosen;
     35ihandle ofw_mmu;
    3436ihandle ofw_stdout;
    3537
     
    3941        ofw_chosen = ofw_find_device("/chosen");
    4042        if (ofw_chosen == -1)
    41                 ofw_call("exit", 0, 0);
     43                halt();
    4244       
    4345        if (ofw_get_property(ofw_chosen, "stdout",  &ofw_stdout, sizeof(ofw_stdout)) <= 0)     
    4446                ofw_stdout = 0;
     47       
     48        ofw_mmu = ofw_open("/mmu");
     49        if (ofw_mmu == -1) {
     50                puts("Unable to open /mmu node\n");
     51                halt();
     52        }
     53}
     54
     55void halt(void)
     56{
     57        ofw_call("exit", 0, 0);
    4558}
    4659
     
    6679        ofw(&args);
    6780       
    68         return args.args[nargs];
     81        if (nret > 0)
     82                return args.args[nargs + nret - 1];
     83        else
     84                return 0;
     85}
     86
     87
     88ihandle ofw_open(const char *name)
     89{
     90        return ofw_call("open", 1, 1, name);
    6991}
    7092
     
    7698       
    7799        ofw_call("write", 3, 1, ofw_stdout, str, len);
    78 }
    79 
    80 
    81 void ofw_puts(const char *str)
    82 {
    83         int len = 0;
    84        
    85         while (str[len] != 0)
    86                 len++;
    87        
    88         ofw_write(str, len);
    89100}
    90101
     
    106117        return (void *) ofw_call("claim", 3, 1, addr, size, align);
    107118}
     119
     120
     121void *ofw_translate(const void *virt)
     122{
     123        return (void *) ofw_call_method(ofw_mmu, "translate", 1, 5, virt);
     124}
Note: See TracChangeset for help on using the changeset viewer.