Skip to content

Commit 42bf422

Browse files
Changed default value for page size to match output of PAGE_SIZE_SHIFT
1 parent 37530b3 commit 42bf422

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

flash/flash_device.cpp

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,42 @@ extern "C" {
6565
volatile int PRGDATA_StartMarker __attribute__ ((section ("PrgData"), __used__));
6666
}
6767

68+
/**
69+
* @brief Generic pow function.
70+
*
71+
* @warning This function is recursive.
72+
*
73+
* @tparam T
74+
* @param base
75+
* @param exponent
76+
* @return
77+
*/
78+
template <typename T>
79+
consteval T pow(const T base, const uint32_t exponent) {
80+
if (exponent == 0) [[unlikely]] {
81+
return 1;
82+
}
83+
84+
if (exponent == 1) [[unlikely]] {
85+
return base;
86+
}
87+
88+
if ((exponent & 1) == 0) {
89+
T rest = pow(base, exponent / 2);
90+
return rest * rest;
91+
}
92+
93+
return base * pow(base, exponent - 1);
94+
}
95+
6896
// definition for the flash device
6997
const __attribute__ ((section("DevDscr"), __used__)) flash_device FlashDevice = {
7098
flash_drv_version, // driver version
7199
"test device", // device name
72100
device_type::on_chip, // device type
73101
0xA0000000, // base address
74102
0x00000400, // flash size
75-
4, // page size
103+
pow(2, PAGE_SIZE_SHIFT), // page size
76104
0, // reserved
77105
0xff, // blank value
78106
100, // page program timeout

0 commit comments

Comments
 (0)