Idle спасибо вам за помощь.
Ну опубликую для истории, куда двинулся дальше.
get_irqnr_preamble и т.д. в действительности не хватало в mach части. Я уже писал их для ядра 2.6.31
по этому просто добавил в /mach/include/entry-macro.S строки
Код
#include <mach/hardware.h>
#include <mach/irqs.h>
#include <mach/platform.h>
<-----><------>.macro<>disable_fiq
<------><------>.endm
<------><------>.macro get_irqnr_preamble, base, tmp
<------><------>.endm
<------><------>.macro arch_ret_to_user, tmp1, tmp2
<------><------>.endm
<------><------>.macro<>get_irqnr_and_base, irqnr, irqstat, base, tmp
<------><------>.endm
и создал там же файл platform.h
Код
#ifndef __PLATFORM_H__
#define __PLATFORM_H__
#define>SPMP8K_IO_BASE<><------>0x90000000
#define>SPMP8K_UART0_BASE<----->0x92B04000
#define>SPMP8K_UART0_DATA<----->0x00
#define>SPMP8K_UART0_STAT1<---->0x14<-->// 0x92B04014
#define>SPMP8K_UART0_STAT2<---->0x18<-->// 0x92B04018
#define>SPMP8K_UART0_STAT3<---->0x20<-->//
Эта ошибка пропала. Компиляция двинулась чуть дальше и стала появляться ошибка
/home/armkernel/source/patchtest/linux-3.2.28/arch/arm/kernel/debug.S: Assembler messages:
/home/armkernel/source/patchtest/linux-3.2.28/arch/arm/kernel/debug.S:159: Error: too many positional arguments
/home/armkernel/source/patchtest/linux-3.2.28/arch/arm/kernel/debug.S:175: Error: too many positional arguments
Ну тут более менее понятно в чем причина, видимо в более старых (или наоборот новых) версиях ядра, передавались два параметра в addruart и именно это и объявленно в
/arch/arm/mach-spmp8000/include/mach/debug-macro.S
Код
<------>.macro addruart, rp, rv
<------>mov \rp, #0x92000000
<------>add<--->\rp, #0x00B00000
<------>add<--->\rp, #0x00004000
<------>orr<--->\rv, \rp, #0xF0000000
<------>.endm
#define UART_SHIFT 2
#include <asm/hardware/debug-8250.S>
а в /arch/arm/kernel/debug.S вызов идет с тремя параметрами
Код
<------><------>addruart_current r3, r1, r2
На данный моммент я решил не вникать, что там такое изменили и решил проблему самым простым и не правильным образом (только для теста)
в /arch/arm/mach-spmp8000/include/mach/debug-macro.S
Код
<------>.macro addruart, rp, rv, rb
и встретил новую ошибку компиляции
CC arch/arm/mach-spmp8000/core.o
/home/armkernel/source/patchtest/linux-3.2.28/arch/arm/mach-spmp8000/core.c: In function ‘spmp8000_init_irq’:
/home/armkernel/source/patchtest/linux-3.2.28/arch/arm/mach-spmp8000/core.c:90:2: error: implicit declaration of function ‘vic_of_init’
а вот такие ошибки всегда ставят меня в полный тупик.
неявное объявление функции "vic_of_init" , как его сделать явным?
у меня есть подозрение, что функция vic_of_init вызывается, но не где не объявлена. Или объявлена но не инклудится.
Ход моих мыслей верный?