CACHE_LINE_SIZE
BUG_ON(start & (CACHE_LINE_SIZE - 1));
BUG_ON(end & (CACHE_LINE_SIZE - 1));
if (start & (CACHE_LINE_SIZE - 1)) {
l2_clean_inv_pa(start & ~(CACHE_LINE_SIZE - 1));
start = (start | (CACHE_LINE_SIZE - 1)) + 1;
if (start < end && end & (CACHE_LINE_SIZE - 1)) {
l2_clean_inv_pa(end & ~(CACHE_LINE_SIZE - 1));
end &= ~(CACHE_LINE_SIZE - 1);
l2_inv_pa_range(start, range_end - CACHE_LINE_SIZE);
start &= ~(CACHE_LINE_SIZE - 1);
end = (end + CACHE_LINE_SIZE - 1) & ~(CACHE_LINE_SIZE - 1);
l2_clean_pa_range(start, range_end - CACHE_LINE_SIZE);
start &= ~(CACHE_LINE_SIZE - 1);
end = (end + CACHE_LINE_SIZE - 1) & ~(CACHE_LINE_SIZE - 1);
l2_clean_pa_range(start, range_end - CACHE_LINE_SIZE);
l2_inv_pa_range(start, range_end - CACHE_LINE_SIZE);
start &= ~(CACHE_LINE_SIZE - 1);
end = ALIGN(end, CACHE_LINE_SIZE);
writel_relaxed(range_end - CACHE_LINE_SIZE, base + offset);
start += CACHE_LINE_SIZE;
if (start & (CACHE_LINE_SIZE - 1)) {
start &= ~(CACHE_LINE_SIZE - 1);
start += CACHE_LINE_SIZE;
if (end & (CACHE_LINE_SIZE - 1)) {
end &= ~(CACHE_LINE_SIZE - 1);
start &= ~(CACHE_LINE_SIZE - 1);
start &= ~(CACHE_LINE_SIZE - 1);
start += CACHE_LINE_SIZE;
if ((start | end) & (CACHE_LINE_SIZE - 1)) {
if (start & (CACHE_LINE_SIZE - 1)) {
start &= ~(CACHE_LINE_SIZE - 1);
start += CACHE_LINE_SIZE;
if (end & (CACHE_LINE_SIZE - 1)) {
end &= ~(CACHE_LINE_SIZE - 1);
start &= ~(CACHE_LINE_SIZE - 1);
start &= ~(CACHE_LINE_SIZE - 1);
if ((start | end) & (CACHE_LINE_SIZE - 1)) {
if (start & (CACHE_LINE_SIZE - 1)) {
start &= ~(CACHE_LINE_SIZE - 1);
start += CACHE_LINE_SIZE;
if (end & (CACHE_LINE_SIZE - 1)) {
end &= ~(CACHE_LINE_SIZE - 1);
start += CACHE_LINE_SIZE;
CACHE_LINE_SIZE);
line_size = CACHE_LINE_SIZE;
if (line_size != CACHE_LINE_SIZE)
CACHE_LINE_SIZE);
start += CACHE_LINE_SIZE;
start &= ~(CACHE_LINE_SIZE - 1);
start += CACHE_LINE_SIZE;
if (start & (CACHE_LINE_SIZE - 1)) {
tauros2_clean_inv_pa(start & ~(CACHE_LINE_SIZE - 1));
start = (start | (CACHE_LINE_SIZE - 1)) + 1;
if (end & (CACHE_LINE_SIZE - 1)) {
tauros2_clean_inv_pa(end & ~(CACHE_LINE_SIZE - 1));
end &= ~(CACHE_LINE_SIZE - 1);
start += CACHE_LINE_SIZE;
start &= ~(CACHE_LINE_SIZE - 1);
if (start & (CACHE_LINE_SIZE - 1)) {
vaddr = l2_map_va(start & ~(CACHE_LINE_SIZE - 1), vaddr);
start = (start | (CACHE_LINE_SIZE - 1)) + 1;
while (start < (end & ~(CACHE_LINE_SIZE - 1))) {
start += CACHE_LINE_SIZE;
start &= ~(CACHE_LINE_SIZE - 1);
start += CACHE_LINE_SIZE;
start &= ~(CACHE_LINE_SIZE - 1);
start += CACHE_LINE_SIZE;
: "i" (CACHE_LINE_SIZE),
static u8 buffer[CACHE_LINE_SIZE * 2] __aligned(CACHE_LINE_SIZE);
static atomic_t *val = (void *)&buffer[CACHE_LINE_SIZE - (sizeof(*val) / 2)];