On Mon, Nov 27, 2017 at 1:28 PM, Greentime Hu <green.hu@xxxxxxxxx> wrote: > + > +#define L2C_R_REG(offset) __raw_readl(atl2c_base + offset) > +#define L2C_W_REG(offset, value) __raw_writel(value, atl2c_base + offset) __raw_readl() is generally not endian-safe, and might not have the barriers you require here. Could you use readl/writel here, and only fall back to readl_relaxed()/writel_relaxed() when you absolutely must avoid the barriers? > diff --git a/arch/nds32/kernel/atl2c.c b/arch/nds32/kernel/atl2c.c > new file mode 100644 > index 0000000..dd87fc9 > --- /dev/null > +++ b/arch/nds32/kernel/atl2c.c > +#include <linux/compiler.h> > +#include <linux/of_address.h> > +#include <linux/of_fdt.h> > +#include <linux/of_platform.h> > +#include <asm/l2_cache.h> If this is the only file that includes asm/l2_cache.h, then I'd simply move the entire contents in here, rather than having a separate file in the global namespace. Arnd -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html