76 lines
No EOL
1.4 KiB
NASM
76 lines
No EOL
1.4 KiB
NASM
/*
|
|
* Title: arm-ifconfig
|
|
* Brief: Bring up eth0 and assign it the address 192.168.0.2
|
|
* Author: Daniel Godas-Lopez <gmail account dgodas>
|
|
*/
|
|
|
|
/*
|
|
soc_des = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
|
|
*/
|
|
|
|
mov %r0, $2 /* AF_INET */
|
|
mov %r1, $2 /* SOCK_DGRAM */
|
|
mov %r2, $0 /* IPPRTOTO_IP */
|
|
push {%r0, %r1, %r2}
|
|
mov %r0, $1 /* socket */
|
|
mov %r1, %sp
|
|
svc 0x00900066
|
|
add %sp, %sp, $12
|
|
|
|
mov %r6, %r0 /* r6 = soc_des */
|
|
|
|
/*
|
|
ioctl(soc_des, SIOCSIFADDR, &req);
|
|
*/
|
|
|
|
.if 0 /* r0 == r6 already */
|
|
mov %r0, %r6 /* soc_des */
|
|
.endif
|
|
|
|
sub %r1, %r1, %r1
|
|
sub %r2, %r2, %r2
|
|
push { %r1, %r2 }
|
|
mov %r2, $2 /* AF_INET */
|
|
mov %r3, $0x2000000
|
|
add %r3, %r3, $0xa800
|
|
add %r3, $0xc0 /* addr = 192.168.0.2 */
|
|
push { %r2, %r3 }
|
|
sub %r2, %r2, %r2
|
|
sub %r3, %r3, %r3
|
|
push { %r1, %r2, %r3 }
|
|
mov %r3, $0x7400
|
|
add %r3, $0x0065
|
|
mov %r4, $0x3000
|
|
add %r4, $0x0068
|
|
add %r3, %r4, lsl $16 /* "eth0" */
|
|
push { %r3 }
|
|
mov %r2, %sp /* struct __kernel_ifreq */
|
|
add %sp, $32
|
|
|
|
mov %r1, $0x8900
|
|
add %r1, %r1, $0x16 /* SIOCSIFADDR */
|
|
svc 0x00900036
|
|
|
|
/*
|
|
ioctl(soc_des, SIOCGIFFLAGS, &req);
|
|
*/
|
|
|
|
mov %r0, %r6 /* soc_des */
|
|
|
|
mov %r1, $0x8900
|
|
add %r1, %r1, $0x13 /* SIOCGIFFLAGS */
|
|
svc 0x00900036
|
|
|
|
ldr %r3, [%r2, $16]
|
|
orr %r3, %r3, $1
|
|
str %r3, [%r2, $16] /* ifr_flags |= IFF_UP */
|
|
|
|
/*
|
|
ioctl(soc_des, SIOCSIFFLAGS, &req);
|
|
*/
|
|
|
|
mov %r0, %r6 /* soc_des */
|
|
|
|
mov %r1, $0x8900
|
|
add %r1, %r1, $0x14 /* SIOCSIFFLAGS */
|
|
svc 0x00900036 |