Das ganze war für eine ältere FPC-Version. Aktuelle Versionen brauchen anscheinend etwas mehr Magie. In die system.pas folgendes zusätzlich in den interface-Teil einbauen:
type
hresult = longint;
Außerdem müssen noch zwei leere Units fpintres.pas und si_prc.pas angelegt werden (vielleicht kann man die auch deaktivieren, hab ich nicht geprüft). Also jeweils irgendwie sowas:
unit si_prc;
interface
implementation
end.
Am geschicktesten ist es aber wahrscheinlich, kernel.pas nicht als program, sondern als unit zu deklarieren und dann das Linken von Hand mit ld zu machen, so wie man es in C auch macht.