Subversion Repositories HelenOS

Rev

Rev 3343 | Rev 3479 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3343 Rev 3467
Line 54... Line 54...
54
int ofw_translate_failed(ofw_arg_t flag)
54
int ofw_translate_failed(ofw_arg_t flag)
55
{
55
{
56
    return flag != -1;
56
    return flag != -1;
57
}
57
}
58
 
58
 
-
 
59
/*
-
 
60
 * Node among whose children the CPU nodes are located.
-
 
61
 */
-
 
62
#if defined (OPEN_BOOT)
-
 
63
#define CPUS_PARENT_NODE    ofw_root
-
 
64
#elif defined (SMART_FIRMWARE)
-
 
65
#define CPUS_PARENT_NODE    ofw_find_device("/ssm@0,0")
-
 
66
#endif
-
 
67
 
-
 
68
 
59
int ofw_cpu(void)
69
int ofw_cpu(void)
60
{
70
{
61
    char type_name[BUF_SIZE];
71
    char type_name[BUF_SIZE];
62
 
72
 
63
    phandle node;
73
    phandle node;
64
    node = ofw_get_child_node(ofw_root);
74
    node = ofw_get_child_node(CPUS_PARENT_NODE);
-
 
75
 
65
    if (node == 0 || node == -1) {
76
    if (node == 0 || node == -1) {
66
        printf("Could not find any child nodes of the root node.\n");
77
        printf("Could not find any child nodes of the root node.\n");
67
        return 0;
78
        return 0;
68
    }
79
    }
69
   
80
   
Line 82... Line 93...
82
        if (ofw_get_property(node, "device_type", type_name,
93
        if (ofw_get_property(node, "device_type", type_name,
83
            sizeof(type_name)) > 0) {
94
            sizeof(type_name)) > 0) {
84
            if (strcmp(type_name, "cpu") == 0) {
95
            if (strcmp(type_name, "cpu") == 0) {
85
                uint32_t mid;
96
                uint32_t mid;
86
               
97
               
-
 
98
                /*  "upa-portid" for US, "portid" for US-III */
-
 
99
                if (ofw_get_property(
-
 
100
                    node, "upa-portid",
-
 
101
                    &mid, sizeof(mid)) <= 0
87
                if (ofw_get_property(node, "upa-portid", &mid,
102
                    && ofw_get_property(node, "portid",
88
                    sizeof(mid)) <= 0)
103
                    &mid, sizeof(mid)) <= 0)
89
                    continue;
104
                    continue;
90
                   
105
                   
91
                if (current_mid != mid) {
106
                if (current_mid != mid) {
92
                    /*
107
                    /*
93
                     * Start secondary processor.
108
                     * Start secondary processor.