include/kernel.h 파일내에서

아래와 같이 주소가 정의가 되어 있었습니다.

//
// arm kernel 과 관련된 내용
//

#define ATAG_NONE       0x00000000 // 태그 리스트의 끝
#define ATAG_CORE       0x54410001 // 태그 리스트의 시작
#define ATAG_MEM        0x54410002 // 물리적 메모리 영역 정보
#define ATAG_VIDEOTEXT  0x54410003 // VGA TEXT 디스플레이 정보
#define ATAG_RAMDISK    0x54410004 // 램디스크 정보
#define ATAG_INITRD2    0x54420005 // 램디스크 정보
#define ATAG_SERIAL     0x54410006 // 64 비트 길이의 보드 고유 번호
#define ATAG_REVISION   0x54410007 // 32 비트 길이의 보드 개정 번호
#define ATAG_VIDEOLFB   0x54410008 // VESA 프레임 버퍼 타입의 초기화 정보
#define ATAG_CMDLINE    0x54410009 // 커널 커맨드



제가 궁금한 점은 위와 같이 정의된 주소가 s3c2440 데이터 시트에도 정의되지 않은 메모리 공간이었습니다.
그리고, sdram 영역도 벗어났구요... 그래서, 어떻게 위와 같은 주소정의가 가능한지 알고 싶어 질문드립니다.
그리고, 이 주소들은 고정된 영역인지도 알고 싶구, 또 리눅스 커널 파일소스에서 정의되는 부분이 있는지 알고 싶습니다.
그리고, 혹시 정의된다면 어느곳에 정의되는지 등... 자세히 알려주시면 정말 감사하겠습니다.