source: trunk/processor_enable.c @ 1352

Revision 1352, 2.5 KB checked in by hailfinger, 11 months ago (diff)

Replace sizeof("string")-1 with strlen("string")

We want to avoid calls to strlen at runtime if the string is already
known at compile time.
Turns out that gcc and clang will recognize constant strings and compute
the strlen result already at compile time, so trickery with sizeof only
reduces readability but does not improve the code.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@…>
Acked-by: Sean Nelson <audiohacked@…>
Acked-by: Uwe Hermann <uwe@…>

Line 
1/*
2 * This file is part of the flashrom project.
3 *
4 * Copyright (C) 2010 Carl-Daniel Hailfinger
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; version 2 of the License.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
18 */
19
20/*
21 * Contains the processor specific flash enables and system settings.
22 */
23
24#include "flash.h"
25#include "programmer.h"
26
27#if defined(__i386__) || defined(__x86_64__)
28
29int processor_flash_enable(void)
30{
31        /* On x86, flash access is not processor specific except on
32         * AMD Elan SC520, AMD Geode and maybe other SoC-style CPUs.
33         * FIXME: Move enable_flash_cs5536 and get_flashbase_sc520 here.
34         */
35        return 0;
36}
37
38#else
39
40#if defined (__MIPSEL__) && defined (__linux)
41#include <stdio.h>
42#include <string.h>
43#include <ctype.h>
44
45static int is_loongson(void)
46{
47        FILE *cpuinfo;
48        cpuinfo = fopen("/proc/cpuinfo", "rb");
49        if (!cpuinfo)
50                return 0;
51        while (!feof(cpuinfo)) {
52                char line[512], *ptr;
53                if (fgets(line, sizeof(line), cpuinfo) == NULL)
54                        break;
55                ptr = line;
56                while (*ptr && isspace((unsigned char)*ptr))
57                        ptr++;
58                /* "cpu" part appears only with some Linux versions.  */
59                if (strncmp(ptr, "cpu", strlen("cpu")) == 0)
60                        ptr += strlen("cpu");
61                while (*ptr && isspace((unsigned char)*ptr))
62                        ptr++;
63                if (strncmp(ptr, "model", strlen("model")) != 0)
64                        continue;
65                ptr += strlen("model");
66                while (*ptr && isspace((unsigned char)*ptr))
67                        ptr++;
68                if (*ptr != ':')
69                        continue;
70                ptr++;
71                while (*ptr && isspace((unsigned char)*ptr))
72                        ptr++;
73                fclose(cpuinfo);
74                return (strncmp(ptr, "ICT Loongson-2 V0.3",
75                                strlen("ICT Loongson-2 V0.3")) == 0)
76                    || (strncmp(ptr, "Godson2 V0.3  FPU V0.1",
77                                strlen("Godson2 V0.3  FPU V0.1")) == 0);
78        }
79        fclose(cpuinfo);
80        return 0;
81}
82#endif
83
84int processor_flash_enable(void)
85{
86        /* FIXME: detect loongson on FreeBSD and OpenBSD as well.  */
87#if defined (__MIPSEL__) && defined (__linux)
88        if (is_loongson()) {
89                flashbase = 0x1fc00000;
90                return 0;
91        }
92#endif
93        /* Not implemented yet. Oh well. */
94        return 1;
95}
96
97#endif
Note: See TracBrowser for help on using the repository browser.