On Tue, Mar 27, 2018 at 4:39 AM, Guo Ren <ren_guo@xxxxxxxxx> wrote: > On Mon, Mar 26, 2018 at 03:00:00PM +0200, Arnd Bergmann wrote: >> Ok, I understand the part about ck610 being incompatible, but I'm >> still not sure about the 8xx ones: Do you mean it's impossible to >> have one kernel that runs across all of them for some other reason, >> or is it something you haven't allowed because you see no use for it? > > Sorry, Csky gcc need "-mcpu=ck807" or "-mcpu=ck810" or "-mcpu=ck860" to > determine the back-end policy. So I must seperate them with different vmlinux. Usually the way gcc handles this, either each CPU is a strict superset of another one, so you just need to specify the one with the smallest instruction set, or you have an option like -mcpu=generic that produces the common subset. >> This is basically the same question as above: For c610, using the fixed >> value is sufficient, because it's incompatible with the others. But if you want >> to run the same kernel on both ck810 and ck860, then it needs some form >> of runtime detection. > Sorry, currently no runtime detection. > But I agree with you that one vmlinux for all cpus is a good design for compat. > >> On other architectures, the L1_CACHE_BYTES constant is the maximum >> possible cache line size, and the cache flush function uses the actual size > The same with above, we don't detect cpus on runtime. So we just make it > simple here. Ok, fair enough. It's something that can always be added later, as long as we keep this in mind early on. Arnd