mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-03 20:18:35 +02:00
+ introduced PtrInt and PtrUInt
* made strscan 64 bit safe
This commit is contained in:
parent
65cc0f990f
commit
021652683a
@ -43,11 +43,9 @@
|
||||
|
||||
|
||||
function strpos(str1,str2 : pchar) : pchar;
|
||||
|
||||
var
|
||||
p : pchar;
|
||||
lstr2 : longint;
|
||||
|
||||
lstr2 : SizeInt;
|
||||
begin
|
||||
strpos:=nil;
|
||||
p:=strscan(str1,str2^);
|
||||
@ -61,14 +59,18 @@
|
||||
strpos:=p;
|
||||
exit;
|
||||
end;
|
||||
inc(longint(p));
|
||||
inc(p);
|
||||
p:=strscan(p,str2^);
|
||||
end;
|
||||
end;
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.3 2002-09-07 15:07:46 peter
|
||||
Revision 1.4 2003-12-29 19:24:12 florian
|
||||
+ introduced PtrInt and PtrUInt
|
||||
* made strscan 64 bit safe
|
||||
|
||||
Revision 1.3 2002/09/07 15:07:46 peter
|
||||
* old logs removed and tabs fixed
|
||||
|
||||
}
|
||||
}
|
@ -177,12 +177,16 @@ Type
|
||||
StrLenInt = Int64;
|
||||
SizeInt = Int64;
|
||||
SizeUInt = QWord;
|
||||
PtrInt = Int64;
|
||||
PtrUInt = QWord;
|
||||
{$endif CPU64}
|
||||
|
||||
{$ifdef CPU32}
|
||||
StrLenInt = Longint;
|
||||
SizeInt = Longint;
|
||||
SizeUInt = DWord;
|
||||
PtrInt = Longint;
|
||||
PtrUInt = DWord;
|
||||
{$endif CPU32}
|
||||
|
||||
{ Zero - terminated strings }
|
||||
@ -531,12 +535,12 @@ procedure WideCharToStrVar(S : PWideChar;var Dest : AnsiString);
|
||||
Type
|
||||
TWide2AnsiMove=procedure(source:pwidechar;dest:pchar;len:longint);
|
||||
TAnsi2WideMove=procedure(source:pchar;dest:pwidechar;len:longint);
|
||||
|
||||
TWideStringManager = record
|
||||
|
||||
TWideStringManager = record
|
||||
Wide2AnsiMove : TWide2AnsiMove;
|
||||
Ansi2WideMove : TAnsi2WideMove;
|
||||
end;
|
||||
|
||||
|
||||
Procedure GetWideStringManager (Var Manager : TWideStringManager);
|
||||
Procedure SetWideStringManager (Const New : TWideStringManager);
|
||||
Procedure SetWideStringManager (Const New : TWideStringManager; Var Old: TWideStringManager);
|
||||
@ -713,7 +717,11 @@ const
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.80 2003-11-29 17:27:05 michael
|
||||
Revision 1.81 2003-12-29 19:24:12 florian
|
||||
+ introduced PtrInt and PtrUInt
|
||||
* made strscan 64 bit safe
|
||||
|
||||
Revision 1.80 2003/11/29 17:27:05 michael
|
||||
+ Added overloaded version of SetWideStringManager without old parameter
|
||||
|
||||
Revision 1.79 2003/11/28 20:36:13 michael
|
||||
@ -858,4 +866,4 @@ const
|
||||
instead of direct comparisons of low/high values of orddefs because
|
||||
qword is a special case
|
||||
|
||||
}
|
||||
}
|
@ -42,6 +42,7 @@ asm
|
||||
.LDone:
|
||||
end;
|
||||
|
||||
|
||||
function FpSysCall(sysnr,param1:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL1'];
|
||||
{
|
||||
This function puts the registers in place, does the call, and then
|
||||
@ -81,6 +82,7 @@ asm
|
||||
.LDone:
|
||||
end;
|
||||
|
||||
|
||||
function FpSysCall(sysnr,param1,param2,param3:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL3'];
|
||||
{
|
||||
This function puts the registers in place, does the call, and then
|
||||
@ -107,14 +109,44 @@ function FpSysCall(sysnr,param1,param2,param3,param4:TSysParam):TSysResult; asse
|
||||
copies back the registers as they are after the SysCall.
|
||||
}
|
||||
asm
|
||||
stmfd r13!,{r4}
|
||||
ldr r4,param4
|
||||
swi #0x900071
|
||||
cmn r0,#126
|
||||
bls .LDone
|
||||
ldr r1,.LErrno
|
||||
rsb r0,r0,#0
|
||||
str r0,[r1]
|
||||
mvn r0,#0
|
||||
b .LDone
|
||||
.LErrno:
|
||||
.word Errno
|
||||
.LDone:
|
||||
ldmfd r13!,{r4}
|
||||
end;
|
||||
|
||||
|
||||
function FpSysCall(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL5'];
|
||||
{
|
||||
This function puts the registers in place, does the call, and then
|
||||
copies back the registers as they are after the SysCall.
|
||||
}
|
||||
asm
|
||||
stmfd r13!,{r4-r5}
|
||||
ldr r5,param5
|
||||
ldr r4,param4
|
||||
swi #0x900071
|
||||
cmn r0,#126
|
||||
bls .LDone
|
||||
ldr r1,.LErrno
|
||||
rsb r0,r0,#0
|
||||
str r0,[r1]
|
||||
mvn r0,#0
|
||||
b .LDone
|
||||
.LErrno:
|
||||
.word Errno
|
||||
.LDone:
|
||||
ldmfd r13!,{r4-r5}
|
||||
end;
|
||||
|
||||
|
||||
@ -124,11 +156,27 @@ function FpSysCall(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TS
|
||||
copies back the registers as they are after the SysCall.
|
||||
}
|
||||
asm
|
||||
stmfd r13!,{r4-r6}
|
||||
ldr r6,param6
|
||||
ldr r5,param5
|
||||
ldr r4,param4
|
||||
swi #0x900071
|
||||
cmn r0,#126
|
||||
bls .LDone
|
||||
ldr r1,.LErrno
|
||||
rsb r0,r0,#0
|
||||
str r0,[r1]
|
||||
mvn r0,#0
|
||||
b .LDone
|
||||
.LErrno:
|
||||
.word Errno
|
||||
.LDone:
|
||||
ldmfd r13!,{r4-r6}
|
||||
end;
|
||||
|
||||
|
||||
// Old style syscall:
|
||||
// Better use ktrace/strace/gdb for debugging.
|
||||
|
||||
Procedure FpSysCall( callnr:longint;var regs : SysCallregs );assembler;
|
||||
{
|
||||
This function puts the registers in place, does the call, and then
|
||||
@ -193,7 +241,11 @@ end;
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.2 2003-12-03 17:34:12 florian
|
||||
Revision 1.3 2003-12-29 19:24:12 florian
|
||||
+ introduced PtrInt and PtrUInt
|
||||
* made strscan 64 bit safe
|
||||
|
||||
Revision 1.2 2003/12/03 17:34:12 florian
|
||||
+ started to implement arm syscalls
|
||||
|
||||
Revision 1.1 2003/08/28 00:08:29 florian
|
||||
|
Loading…
Reference in New Issue
Block a user