mirror of
https://github.com/memtest86plus/memtest86plus.git
synced 2025-02-25 18:55:23 -06:00
Add a file containing useful macro definitions, currently a single top-level macro for obtaining the size of an array; use it to replace a sizeof(x) / sizeof(x[0]) construct in system/smbus.c . This requires switching the GCC build mode from C11 to C11 with GCC extensions.
This commit is contained in:
parent
20fca09752
commit
ea2cf16f55
30
boot/macros.h
Normal file
30
boot/macros.h
Normal file
@ -0,0 +1,30 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#ifndef MACROS_H
|
||||
#define MACROS_H
|
||||
/**
|
||||
* \file
|
||||
*
|
||||
* Provides miscellaneous useful definitions.
|
||||
*
|
||||
*//*
|
||||
* Copyright (C) 2024 Lionel Debroux.
|
||||
*/
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#ifdef __GNUC__
|
||||
// Enhanced definitions under GCC and compatible, e.g. Clang.
|
||||
|
||||
// These are from GPLv2 Linux 6.7, for erroring out when the argument isn't an array type.
|
||||
#define BUILD_BUG_ON_ZERO(e) ((int)(sizeof(struct { int:(-!!(e)); })))
|
||||
#define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
|
||||
#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
|
||||
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
|
||||
#else
|
||||
// Fallback definitions.
|
||||
#define ARRAY_SIZE(var_) (sizeof(var_) / sizeof((var_)[0]))
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
@ -10,7 +10,7 @@ else
|
||||
GIT_AVAILABLE = true
|
||||
endif
|
||||
|
||||
CFLAGS = -std=c11 -Wall -Wextra -Wshadow -m32 -march=i586 -fpic -fno-builtin \
|
||||
CFLAGS = -std=gnu11 -Wall -Wextra -Wshadow -m32 -march=i586 -fpic -fno-builtin \
|
||||
-ffreestanding -fomit-frame-pointer -fno-stack-protector
|
||||
|
||||
ifeq ($(DEBUG), 1)
|
||||
|
@ -10,7 +10,7 @@ else
|
||||
GIT_AVAILABLE = true
|
||||
endif
|
||||
|
||||
CFLAGS = -std=c11 -Wall -Wextra -Wshadow -m64 -march=x86-64 -mno-mmx -mno-sse -mno-sse2 \
|
||||
CFLAGS = -std=gnu11 -Wall -Wextra -Wshadow -m64 -march=x86-64 -mno-mmx -mno-sse -mno-sse2 \
|
||||
-fpic -fno-builtin -ffreestanding -fomit-frame-pointer -fno-stack-protector
|
||||
|
||||
ifeq ($(DEBUG), 1)
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include "pci.h"
|
||||
#include "unistd.h"
|
||||
#include "string.h"
|
||||
#include "macros.h"
|
||||
|
||||
#include "cpuinfo.h"
|
||||
#include "memctrl.h"
|
||||
@ -1158,7 +1159,7 @@ static bool find_smb_controller(uint16_t vid, uint16_t did)
|
||||
{
|
||||
case PCI_VID_INTEL:
|
||||
{
|
||||
if (find_in_did_array(did, intel_ich5_dids, sizeof(intel_ich5_dids) / sizeof(intel_ich5_dids[0]))) {
|
||||
if (find_in_did_array(did, intel_ich5_dids, ARRAY_SIZE(intel_ich5_dids))) {
|
||||
return ich5_get_smb();
|
||||
}
|
||||
if (did == 0x7113) { // 82371AB/EB/MB PIIX4
|
||||
|
Loading…
Reference in New Issue
Block a user