- Jul 17, 2018
-
-
Zong Li authored
Separate the function symbol address from .plt to .got.plt section. The original plt entry has trampoline code with symbol address, there is a 32-bit padding bwtween jar instruction and symbol address. Extract the symbol address to .got.plt to reduce the module size. Signed-off-by:
Zong Li <zong@andestech.com> Signed-off-by:
Palmer Dabbelt <palmer@sifive.com>
-
Zong Li authored
The address of external symbols will locate more than 32-bit offset in 64-bit kernel with sv39 or sv48 virtual addressing. Module loader emits the GOT and PLT entries for data symbols and function symbols respectively. The PLT entry is a trampoline code for jumping to the 64-bit real address. The GOT entry is just the data symbol address. Signed-off-by:
Zong Li <zong@andestech.com> Signed-off-by:
Palmer Dabbelt <palmer@sifive.com>
-
Zong Li authored
Signed-off-by:
Zong Li <zong@andestech.com> Signed-off-by:
Palmer Dabbelt <palmer@sifive.com>
-
Zong Li authored
Signed-off-by:
Zong Li <zong@andestech.com> Signed-off-by:
Palmer Dabbelt <palmer@sifive.com>
-
Andreas Schwab authored
With CONFIG_MODVERSIONS=y the R_RISCV_32 relocation is used by the __kcrctab section. Signed-off-by:
Andreas Schwab <schwab@suse.de> Signed-off-by:
Palmer Dabbelt <palmer@sifive.com>
-
Zong Li authored
Signed-off-by:
Zong Li <zong@andestech.com> Signed-off-by:
Palmer Dabbelt <palmer@sifive.com>
-
Zong Li authored
Signed-off-by:
Zong Li <zong@andestech.com> Signed-off-by:
Palmer Dabbelt <palmer@sifive.com>
-
Zong Li authored
Just fail on align type. Kernel modules loader didn't do relax like linker, it is difficult to remove or migrate the code, but the remnant nop instructions harm the performaace of module. We expect the building module with the no-relax option. Signed-off-by:
Zong Li <zong@andestech.com> Signed-off-by:
Palmer Dabbelt <palmer@sifive.com>
-
Zong Li authored
Signed-off-by:
Zong Li <zong@andestech.com> Signed-off-by:
Palmer Dabbelt <palmer@sifive.com>
-
Zong Li authored
HI20 and LO12_I/LO12_S relocate the absolute address, the range of offset must in 32-bit. Signed-off-by:
Zong Li <zong@andestech.com> Signed-off-by:
Palmer Dabbelt <palmer@sifive.com>
-
Zong Li authored
Signed-off-by:
Zong Li <zong@andestech.com> Signed-off-by:
Palmer Dabbelt <palmer@sifive.com>
-
Zong Li authored
For CALL_PLT, emit the plt entry only when offset is more than 32-bit. For PCREL_LO12, it uses the location of corresponding HI20 to get the address of external symbol. It should check the HI20 type is the PCREL_HI20 or GOT_HI20, because sometime the location will have two or more relocation types. For example: 0: 00000797 auipc a5,0x0 0: R_RISCV_ALIGN *ABS* 0: R_RISCV_GOT_HI20 SYMBOL 4: 0007b783 ld a5,0(a5) # 0 <SYMBOL> 4: R_RISCV_PCREL_LO12_I .L0 4: R_RISCV_RELAX *ABS* Signed-off-by:Zong Li <zong@andestech.com> Signed-off-by:
Palmer Dabbelt <palmer@sifive.com>
-
- Jul 11, 2018
-
-
Wesley W. Terpstra authored
-
- May 18, 2018
-
-
Wesley W. Terpstra authored
-
- Apr 27, 2018
-
-
Palmer Dabbelt authored
CC: Michael Clark <mjc@sifive.com>
-
- Apr 19, 2018
-
-
Wesley W. Terpstra authored
-
- Mar 18, 2018
-
-
Wesley W. Terpstra authored
-
Wesley W. Terpstra authored
-
Wesley W. Terpstra authored
-
Wesley W. Terpstra authored
-
Wesley W. Terpstra authored
-
Wesley W. Terpstra authored
-
Wesley W. Terpstra authored
-
Wesley W. Terpstra authored
Signed-off-by:Palmer Dabbelt <palmer@sifive.com>
-
Wesley W. Terpstra authored
Signed-off-by:Palmer Dabbelt <palmer@sifive.com>
-
Wesley W. Terpstra authored
-
Wesley W. Terpstra authored
Signed-off-by:Palmer Dabbelt <palmer@sifive.com>
-
- Mar 07, 2018
-
-
zongbox@gmail.com authored
Interrupt is allowed during exception handling. There are warning messages if the kernel enables the configuration 'CONFIG_DEBUG_ATOMIC_SLEEP=y'. BUG: sleeping function called from invalid context at kernel/locking/rwsem.c:23 in_atomic(): 0, irqs_disabled(): 1, pid: 43, name: ash CPU: 0 PID: 43 Comm: ash Tainted: G W 4.15.0-rc8-00089-g89ffdae-dirty #17 Call Trace: [<000000009abb1587>] walk_stackframe+0x0/0x7a [<00000000d4f3d088>] ___might_sleep+0x102/0x11a [<00000000b1fd792a>] down_read+0x18/0x28 [<000000000289ec01>] do_page_fault+0x86/0x2f6 [<00000000012441f6>] _do_fork+0x1b4/0x1e0 [<00000000f46c3e3b>] ret_from_syscall+0xa/0xe Reviewed-by:
Christoph Hellwig <hch@lst.de> Signed-off-by:
Zong Li <zong@andestech.com> Signed-off-by:
Palmer Dabbelt <palmer@dabbelt.com>
-
Palmer Dabbelt authored
There isn't a hard dependency of the Xilinx AXI-PCIe host bridge on any architecture. For example: at SiFive we map RISC-V cores to Xilinx FPGAs and connect the Xilinx IP via a TileLink adapter, so the RISC-V Linux port will need to be able to enable PCIE_XILINX in order to have PCIe support. This patch decouples the PCIE_XILINX support from ARCH. Instead it just depends on OF_PCI, which I believe is the only true dependency. Signed-off-by:Palmer Dabbelt <palmer@dabbelt.com>
-
Palmer Dabbelt authored
This isn't actually how I want to do it, I just needed something right now. Signed-off-by:Palmer Dabbelt <palmer@dabbelt.com>
-
Palmer Dabbelt authored
The RISC-V ISA defines a per-hart real-time clock and timer, which is present on all systems. The clock is accessed via the 'rdtime' pseudo-instruction (which reads a CSR), and the timer is set via an SBI call. This driver attempts to split out the RISC-V ISA specific mechanisms of accessing the hardware from the clocksource driver by taking a pair of function pointers to issue the actual RISC-V specific instructions. Signed-off-by:
Dmitriy Cherkasov <dmitriy@oss-tech.org> Signed-off-by:
Palmer Dabbelt <palmer@dabbelt.com>
-
Wesley W. Terpstra authored
This fixes: [ 0.010000] cpu cpu0: Error -2 creating of_node link ... which you get for every CPU on all architectures with a OF cpu/ node. This affects riscv, nios, etc. Signed-off-by:Palmer Dabbelt <palmer@dabbelt.com>
-
Palmer Dabbelt authored
This patch adds a driver for the Platform Level Interrupt Controller (PLIC) specified as part of the RISC-V supervisor level ISA manual. The PLIC connocts global interrupt sources to the local interrupt controller on each hart. A PLIC is present on all RISC-V systems. Signed-off-by:Palmer Dabbelt <palmer@dabbelt.com>
-
Palmer Dabbelt authored
This patch adds documentation for the platform-level interrupt controller (PLIC) found in all RISC-V systems. This interrupt controller routes interrupts from all the devices in the system to each hart-local interrupt controller. Note: the DTS bindings for the PLIC aren't set in stone yet, as we might want to change how we're specifying holes in the hart list. Signed-off-by:Palmer Dabbelt <palmer@dabbelt.com>
-
Palmer Dabbelt authored
This patch adds a driver that manages the local interrupts on each RISC-V hart, as specifiec by the RISC-V supervisor level ISA manual. The local interrupt controller manages software interrupts, timer interrupts, and hardware interrupts (which are routed via the platform level interrupt controller). Per-hart local interrupt controllers are found on all RISC-V systems. Signed-off-by:Palmer Dabbelt <palmer@dabbelt.com>
-
Palmer Dabbelt authored
This patch adds documentation on the RISC-V local interrupt controller, which is a per-hart interrupt controller that manages all interrupts entering a RISC-V hart. This interrupt controller is present on all RISC-V systems. Signed-off-by:Palmer Dabbelt <palmer@dabbelt.com>
-
Palmer Dabbelt authored
It appears that openrisc copied arm64's GENERIC_IRQ_MULTI_HANDLER code (which came from arm). I wanted to make this generic so I could use it in the RISC-V port. This patch converts the openrisc code to use the generic version. Acked-by:
Stafford Horne <shorne@gmail.com> Signed-off-by:
Palmer Dabbelt <palmer@sifive.com>
-
Palmer Dabbelt authored
It appears arm64 copied arm's GENERIC_IRQ_MULTI_HANDLER code, but made it unconditional. I wanted to make this generic so it could be used by the RISC-V port. This patch converts the arm64 code to use the new generic code, which simply consists of deleting the arm64 code and setting MULTI_IRQ_HANDLER instead. Reviewed-by:
Christoph Hellwig <hch@lst.de> Signed-off-by:
Palmer Dabbelt <palmer@sifive.com>
-
Palmer Dabbelt authored
This converts the ARM port to use the recently added GENERIC_IRQ_MULTI_HANDLER, which is essentially just a copy of ARM's existhing MULTI_IRQ_HANDLER. The only changes are: * handle_arch_irq is now defined in a generic C file instead of an arm-specific assembly file. * handle_arch_irq is not marked as __ro_after_init. Signed-off-by:Palmer Dabbelt <palmer@sifive.com>
-
Palmer Dabbelt authored
The old mechanism for handling IRQs on RISC-V was pretty ugly: the arch code looked at the Kconfig entry for our first-level irqchip driver and called into it directly. This patch uses the new generic IRQ handling infastructure, which essentially just deletes a bunch of code. This does add an additional load to the interrupt latency, but there's a lot of tuning left to be done there on RISC-V so I think it's OK for now. Reviewed-by:
Christoph Hellwig <hch@lst.de> Acked-by:
Stafford Horne <shorne@gmail.com> Signed-off-by:
Palmer Dabbelt <palmer@sifive.com>
-