mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-05-31 11:45:35 +08:00
refactor(core): Move __rt_fls to kservice
ToolsCI / Tools (push) Has been cancelled
RT-Thread BSP Static Build Check / 🔍 Summary of Git Diff Changes (push) Has been cancelled
doc_doxygen / doxygen_doc generate (push) Has been cancelled
pkgs_test / change (push) Has been cancelled
utest_auto_run / A9 :components/dfs.cfg (push) Has been cancelled
utest_auto_run / A9 :components/lwip.cfg (push) Has been cancelled
utest_auto_run / A9 :components/netdev.cfg (push) Has been cancelled
utest_auto_run / A9 :components/sal.cfg (push) Has been cancelled
utest_auto_run / A9 :cpp11/cpp11.cfg (push) Has been cancelled
utest_auto_run / AARCH64-rtsmart :default.cfg (push) Has been cancelled
utest_auto_run / A9-rtsmart :default.cfg (push) Has been cancelled
utest_auto_run / RISCV-rtsmart :default.cfg (push) Has been cancelled
utest_auto_run / XUANTIE-rtsmart :default.cfg (push) Has been cancelled
utest_auto_run / AARCH64 :default.cfg (push) Has been cancelled
utest_auto_run / AARCH64-smp :default.cfg (push) Has been cancelled
utest_auto_run / A9 :default.cfg (push) Has been cancelled
utest_auto_run / A9-smp :default.cfg (push) Has been cancelled
utest_auto_run / RISCV :default.cfg (push) Has been cancelled
utest_auto_run / RISCV-smp :default.cfg (push) Has been cancelled
utest_auto_run / A9 :kernel/atomic_c11.cfg (push) Has been cancelled
utest_auto_run / RISCV :kernel/atomic_c11.cfg (push) Has been cancelled
utest_auto_run / A9 :kernel/ipc.cfg (push) Has been cancelled
utest_auto_run / A9 :kernel/kernel_basic.cfg (push) Has been cancelled
utest_auto_run / A9 :kernel/mem.cfg (push) Has been cancelled
RT-Thread BSP Static Build Check / ${{ matrix.legs.RTT_BSP }} (push) Has been cancelled
RT-Thread BSP Static Build Check / collect-artifacts (push) Has been cancelled
doc_doxygen / deploy (push) Has been cancelled
Weekly CI Scheduler / Trigger and Monitor CIs (push) Has been cancelled
Weekly CI Scheduler / Create Discussion Report (push) Has been cancelled
ToolsCI / Tools (push) Has been cancelled
RT-Thread BSP Static Build Check / 🔍 Summary of Git Diff Changes (push) Has been cancelled
doc_doxygen / doxygen_doc generate (push) Has been cancelled
pkgs_test / change (push) Has been cancelled
utest_auto_run / A9 :components/dfs.cfg (push) Has been cancelled
utest_auto_run / A9 :components/lwip.cfg (push) Has been cancelled
utest_auto_run / A9 :components/netdev.cfg (push) Has been cancelled
utest_auto_run / A9 :components/sal.cfg (push) Has been cancelled
utest_auto_run / A9 :cpp11/cpp11.cfg (push) Has been cancelled
utest_auto_run / AARCH64-rtsmart :default.cfg (push) Has been cancelled
utest_auto_run / A9-rtsmart :default.cfg (push) Has been cancelled
utest_auto_run / RISCV-rtsmart :default.cfg (push) Has been cancelled
utest_auto_run / XUANTIE-rtsmart :default.cfg (push) Has been cancelled
utest_auto_run / AARCH64 :default.cfg (push) Has been cancelled
utest_auto_run / AARCH64-smp :default.cfg (push) Has been cancelled
utest_auto_run / A9 :default.cfg (push) Has been cancelled
utest_auto_run / A9-smp :default.cfg (push) Has been cancelled
utest_auto_run / RISCV :default.cfg (push) Has been cancelled
utest_auto_run / RISCV-smp :default.cfg (push) Has been cancelled
utest_auto_run / A9 :kernel/atomic_c11.cfg (push) Has been cancelled
utest_auto_run / RISCV :kernel/atomic_c11.cfg (push) Has been cancelled
utest_auto_run / A9 :kernel/ipc.cfg (push) Has been cancelled
utest_auto_run / A9 :kernel/kernel_basic.cfg (push) Has been cancelled
utest_auto_run / A9 :kernel/mem.cfg (push) Has been cancelled
RT-Thread BSP Static Build Check / ${{ matrix.legs.RTT_BSP }} (push) Has been cancelled
RT-Thread BSP Static Build Check / collect-artifacts (push) Has been cancelled
doc_doxygen / deploy (push) Has been cancelled
Weekly CI Scheduler / Trigger and Monitor CIs (push) Has been cancelled
Weekly CI Scheduler / Create Discussion Report (push) Has been cancelled
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2006-2023, RT-Thread Development Team
|
* Copyright (c) 2006-2026 RT-Thread Development Team
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*
|
*
|
||||||
@@ -175,50 +175,6 @@ struct rt_mmcsd_req
|
|||||||
#define R5_STATUS(x) (x & 0xCB00)
|
#define R5_STATUS(x) (x & 0xCB00)
|
||||||
#define R5_IO_CURRENT_STATE(x) ((x & 0x3000) >> 12)
|
#define R5_IO_CURRENT_STATE(x) ((x & 0x3000) >> 12)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* fls - find last (most-significant) bit set
|
|
||||||
* @x: the word to search
|
|
||||||
*
|
|
||||||
* This is defined the same way as ffs.
|
|
||||||
* Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32.
|
|
||||||
*/
|
|
||||||
|
|
||||||
rt_inline rt_uint32_t __rt_fls(rt_uint32_t val)
|
|
||||||
{
|
|
||||||
rt_uint32_t bit = 32;
|
|
||||||
|
|
||||||
if (!val)
|
|
||||||
return 0;
|
|
||||||
if (!(val & 0xffff0000u))
|
|
||||||
{
|
|
||||||
val <<= 16;
|
|
||||||
bit -= 16;
|
|
||||||
}
|
|
||||||
if (!(val & 0xff000000u))
|
|
||||||
{
|
|
||||||
val <<= 8;
|
|
||||||
bit -= 8;
|
|
||||||
}
|
|
||||||
if (!(val & 0xf0000000u))
|
|
||||||
{
|
|
||||||
val <<= 4;
|
|
||||||
bit -= 4;
|
|
||||||
}
|
|
||||||
if (!(val & 0xc0000000u))
|
|
||||||
{
|
|
||||||
val <<= 2;
|
|
||||||
bit -= 2;
|
|
||||||
}
|
|
||||||
if (!(val & 0x80000000u))
|
|
||||||
{
|
|
||||||
bit -= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return bit;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define MMCSD_HOST_PLUGED 0
|
#define MMCSD_HOST_PLUGED 0
|
||||||
#define MMCSD_HOST_UNPLUGED 1
|
#define MMCSD_HOST_UNPLUGED 1
|
||||||
|
|
||||||
|
|||||||
@@ -809,6 +809,7 @@ rt_device_t rt_console_get_device(void);
|
|||||||
#endif /* RT_USING_THREADSAFE_PRINTF */
|
#endif /* RT_USING_THREADSAFE_PRINTF */
|
||||||
#endif /* defined(RT_USING_DEVICE) && defined(RT_USING_CONSOLE) */
|
#endif /* defined(RT_USING_DEVICE) && defined(RT_USING_CONSOLE) */
|
||||||
|
|
||||||
|
int __rt_fls(int val);
|
||||||
int __rt_ffs(int value);
|
int __rt_ffs(int value);
|
||||||
unsigned long __rt_ffsl(unsigned long value);
|
unsigned long __rt_ffsl(unsigned long value);
|
||||||
unsigned long __rt_clz(unsigned long value);
|
unsigned long __rt_clz(unsigned long value);
|
||||||
|
|||||||
@@ -1103,6 +1103,50 @@ rt_weak void rt_free_align(void *ptr)
|
|||||||
RTM_EXPORT(rt_free_align);
|
RTM_EXPORT(rt_free_align);
|
||||||
#endif /* RT_USING_HEAP */
|
#endif /* RT_USING_HEAP */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fls - find last (most-significant) bit set
|
||||||
|
* @x: the word to search
|
||||||
|
*
|
||||||
|
* This is defined the same way as ffs.
|
||||||
|
* Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int __rt_fls(int val)
|
||||||
|
{
|
||||||
|
int bit = 32;
|
||||||
|
|
||||||
|
if (!val)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (!(val & 0xffff0000u))
|
||||||
|
{
|
||||||
|
val <<= 16;
|
||||||
|
bit -= 16;
|
||||||
|
}
|
||||||
|
if (!(val & 0xff000000u))
|
||||||
|
{
|
||||||
|
val <<= 8;
|
||||||
|
bit -= 8;
|
||||||
|
}
|
||||||
|
if (!(val & 0xf0000000u))
|
||||||
|
{
|
||||||
|
val <<= 4;
|
||||||
|
bit -= 4;
|
||||||
|
}
|
||||||
|
if (!(val & 0xc0000000u))
|
||||||
|
{
|
||||||
|
val <<= 2;
|
||||||
|
bit -= 2;
|
||||||
|
}
|
||||||
|
if (!(val & 0x80000000u))
|
||||||
|
{
|
||||||
|
bit -= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return bit;
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef RT_USING_CPU_FFS
|
#ifndef RT_USING_CPU_FFS
|
||||||
#ifdef RT_USING_TINY_FFS
|
#ifdef RT_USING_TINY_FFS
|
||||||
const rt_uint8_t __lowest_bit_bitmap[] =
|
const rt_uint8_t __lowest_bit_bitmap[] =
|
||||||
|
|||||||
Reference in New Issue
Block a user