diff options
Diffstat (limited to 'lib/check_signature.c')
-rw-r--r-- | lib/check_signature.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/check_signature.c b/lib/check_signature.c new file mode 100644 index 000000000000..fd6af199247b --- /dev/null +++ b/lib/check_signature.c | |||
@@ -0,0 +1,26 @@ | |||
1 | #include <linux/io.h> | ||
2 | #include <linux/module.h> | ||
3 | |||
4 | /** | ||
5 | * check_signature - find BIOS signatures | ||
6 | * @io_addr: mmio address to check | ||
7 | * @signature: signature block | ||
8 | * @length: length of signature | ||
9 | * | ||
10 | * Perform a signature comparison with the mmio address io_addr. This | ||
11 | * address should have been obtained by ioremap. | ||
12 | * Returns 1 on a match. | ||
13 | */ | ||
14 | |||
15 | int check_signature(const volatile void __iomem *io_addr, | ||
16 | const unsigned char *signature, int length) | ||
17 | { | ||
18 | while (length--) { | ||
19 | if (readb(io_addr) != *signature) | ||
20 | return 0; | ||
21 | io_addr++; | ||
22 | signature++; | ||
23 | } | ||
24 | return 1; | ||
25 | } | ||
26 | EXPORT_SYMBOL(check_signature); | ||