projects
/
b43-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
b43-asm, b43-dasm: Add 5 new instructions.
[b43-tools.git]
/
fwcutter
/
fwcutter.c
diff --git
a/fwcutter/fwcutter.c
b/fwcutter/fwcutter.c
index 5d5aa80d1785bde0335d42afd76b69dec63c564c..20337589192761ae17b351f9bbd4d488d242f85e 100644
(file)
--- a/
fwcutter/fwcutter.c
+++ b/
fwcutter/fwcutter.c
@@
-2,7
+2,7
@@
* firmware cutter for broadcom 43xx wireless driver files
*
* Copyright (c) 2005 Martin Langer <martin-langer@gmx.de>,
* firmware cutter for broadcom 43xx wireless driver files
*
* Copyright (c) 2005 Martin Langer <martin-langer@gmx.de>,
- * 2005-2007 Michael Buesch <m
b@bu3sch.de
>
+ * 2005-2007 Michael Buesch <m
@bues.ch
>
* 2005 Alex Beregszaszi
* 2007 Johannes Berg <johannes@sipsolutions.net>
*
* 2005 Alex Beregszaszi
* 2007 Johannes Berg <johannes@sipsolutions.net>
*
@@
-38,7
+38,7
@@
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/types.h>
-#if
def __DragonFly__
+#if
defined(__DragonFly__) || defined(__FreeBSD__)
#include <sys/endian.h>
#else
#include <byteswap.h>
#include <sys/endian.h>
#else
#include <byteswap.h>
@@
-48,7
+48,7
@@
#include "fwcutter.h"
#include "fwcutter_list.h"
#include "fwcutter.h"
#include "fwcutter_list.h"
-#if
def __DragonFly__
+#if
defined(__DragonFly__) || defined(__FreeBSD__)
#define V3_FW_DIRNAME "v3"
#define V4_FW_DIRNAME "v4"
#else
#define V3_FW_DIRNAME "v3"
#define V4_FW_DIRNAME "v4"
#else
@@
-65,18
+65,6
@@
static int file_ok(const struct file *f)
return !(f->flags & FW_FLAG_UNSUPPORTED) || cmdargs.unsupported;
}
return !(f->flags & FW_FLAG_UNSUPPORTED) || cmdargs.unsupported;
}
-/* Convert a CPU-endian 16bit integer to Big-Endian */
-static be16_t to_be16(uint16_t v)
-{
- uint8_t ret[2];
-
- ret[0] = (v & 0xFF00) >> 8;
- ret[1] = (v & 0x00FF);
-
- return *((be16_t *)ret);
-}
-
-#if 0
/* Convert a Big-Endian 16bit integer to CPU-endian */
static uint16_t from_be16(be16_t v)
{
/* Convert a Big-Endian 16bit integer to CPU-endian */
static uint16_t from_be16(be16_t v)
{
@@
-87,19
+75,11
@@
static uint16_t from_be16(be16_t v)
return ret;
}
return ret;
}
-#endif
-/* Convert a CPU-endian
32
bit integer to Big-Endian */
-static be
32_t to_be32(uint32
_t v)
+/* Convert a CPU-endian
16
bit integer to Big-Endian */
+static be
16_t to_be16(uint16
_t v)
{
{
- uint8_t ret[4];
-
- ret[0] = (v & 0xFF000000) >> 24;
- ret[1] = (v & 0x00FF0000) >> 16;
- ret[2] = (v & 0x0000FF00) >> 8;
- ret[3] = (v & 0x000000FF);
-
- return *((be32_t *)ret);
+ return (be16_t)from_be16((be16_t)v);
}
/* Convert a Big-Endian 32bit integer to CPU-endian */
}
/* Convert a Big-Endian 32bit integer to CPU-endian */
@@
-115,6
+95,12
@@
static uint32_t from_be32(be32_t v)
return ret;
}
return ret;
}
+/* Convert a CPU-endian 32bit integer to Big-Endian */
+static be32_t to_be32(uint32_t v)
+{
+ return (be32_t)from_be32((be32_t)v);
+}
+
/* tiny disassembler */
static void print_ucode_version(struct insn *insn)
{
/* tiny disassembler */
static void print_ucode_version(struct insn *insn)
{
@@
-439,8
+425,6
@@
static void print_file(const struct file *file)
printf("%s\t", file->ucode_version);
if (strlen(file->ucode_version) < 8) printf("\t");
printf("%s\t", file->ucode_version);
if (strlen(file->ucode_version) < 8) printf("\t");
- printf("%s\t", file->id);
-
printf("%s\n", file->md5);
}
printf("%s\n", file->md5);
}
@@
-451,21
+435,16
@@
static void print_supported_files(void)
print_banner();
printf("\nExtracting firmware is possible "
"from these binary driver files.\n"
print_banner();
printf("\nExtracting firmware is possible "
"from these binary driver files.\n"
- "The <ID> column shows the unique identifier string "
- "for your firmware.\nYou must select the firmware with the "
- "same ID as printed by the kernel driver on modprobe.\n"
- "Note that only recent drivers print such a message on modprobe.\n"
"Please read http://linuxwireless.org/en/users/Drivers/b43#devicefirmware\n\n");
printf("<driver>\t"
"<filename>\t\t"
"<microcode>\t"
"Please read http://linuxwireless.org/en/users/Drivers/b43#devicefirmware\n\n");
printf("<driver>\t"
"<filename>\t\t"
"<microcode>\t"
- "<ID>\t"
"<MD5 checksum>\n\n");
/* print for legacy driver first */
"<MD5 checksum>\n\n");
/* print for legacy driver first */
- for (i = 0; i <
FILES
; i++)
+ for (i = 0; i <
ARRAY_SIZE(files)
; i++)
if (file_ok(&files[i]) && !(files[i].flags & FW_FLAG_V4))
print_file(&files[i]);
if (file_ok(&files[i]) && !(files[i].flags & FW_FLAG_V4))
print_file(&files[i]);
- for (i = 0; i <
FILES
; i++)
+ for (i = 0; i <
ARRAY_SIZE(files)
; i++)
if (file_ok(&files[i]) && files[i].flags & FW_FLAG_V4)
print_file(&files[i]);
printf("\n");
if (file_ok(&files[i]) && files[i].flags & FW_FLAG_V4)
print_file(&files[i]);
printf("\n");
@@
-491,11
+470,10
@@
static const struct file *find_file(FILE *fd)
signature[8], signature[9], signature[10], signature[11],
signature[12], signature[13], signature[14], signature[15]);
signature[8], signature[9], signature[10], signature[11],
signature[12], signature[13], signature[14], signature[15]);
- for (i = 0; i <
FILES; ++i
) {
+ for (i = 0; i <
ARRAY_SIZE(files); i++
) {
if (file_ok(&files[i]) &&
strcasecmp(md5sig, files[i].md5) == 0) {
printf("This file is recognised as:\n");
if (file_ok(&files[i]) &&
strcasecmp(md5sig, files[i].md5) == 0) {
printf("This file is recognised as:\n");
- printf(" ID : %s\n", files[i].id);
printf(" filename : %s\n", files[i].name);
printf(" version : %s\n", files[i].ucode_version);
printf(" MD5 : %s\n", files[i].md5);
printf(" filename : %s\n", files[i].name);
printf(" version : %s\n", files[i].ucode_version);
printf(" MD5 : %s\n", files[i].md5);