UniCore32 Port for Linux
Maintained by Guan Xuetao <gxt@mprc.pku.edu.cn>
UniCore ISA is defined and developed by Micro-Processor R&D Center
of Peking University, and over the years, the CPUs and SoCs using
UniCore ISA have been successfully applied in a variety of products in
China.
The operating system upon UniCore ISA and PKUnity SoC is linux all the
time, from linux-2.4.17 in 2001 to linux-3.0.x.y at present.
Repo for UniCore32 Linux:
x86-unicore32 cross toolchain:
TODO list
Necessary drivers submit: mac
generic parts
- delay.h
- tlb.h
- splitting asm-generic/io.h into io.h and ioremap.h
- memblock.h
- void init_IRQ(void); could be inserted into linux/irq.h and remove it from init/main.c
- boot/compressed/misc.c: could be moved into the global lib/ directory
signal (new abi, need verification)
- OLD codes implement both legacy and rt signals, where new architectures should generally only need the rt variant.
- using the "exception-trace" sysctl and the show_unhandled_signals variable
memory management
- using only memblock and not also bootmem, by unconditionally setting CONFIG_NO_BOOTMEM
- auto detect memory size if no bootloader parameters
- mach/map.h: The code using map_desc can probably be simplified significantly by making it less general and directly
manipulating the page tables
- create_mapping(): You only have three users of create_mapping() anyway, and they are all special cases
- the interrupt vectors are a single page, which you can directly put in the page table
- the unigfx might not need a fixmap, just use ioremap
- the linar mapping probably wants to use large pages if you have those
Others
- asm/fpstate.h: You use the fp_state with an alignment of eight bytes, but the contents
are just four byte aligned, which does not seem to make much sense.
- BUG and BUG_ON (for UniCore64): It would be even better if you had a conditional trap instruction that
you could use to implement BUG_ON as a single assembly statement like mips or powerpc.
- CONFIG_CMDLINE
- never pass the memory size in the command line
- using flattened device tree in the way that microblaze, powerpc, and sparc are using.
Mailing list: devicetree-discuss@lists.ozlabs.org
- the frame buffer size should ideally be autodetected using hardware or the boot protocol
- decompress_kernel function: pass a pointer to a flattened device tree like powerpc and microblaze
- core.c: Please have a look at the flattened device tree format as a way to define the SoC components.
- clock.c: There are currently patches under discussion for the ARM architecture that unify the
various struct clk definitions.